mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
User-defined literal suffixes: AST
This commit is contained in:
parent
e9197ff30f
commit
0debb30a4d
@ -2171,9 +2171,15 @@ public:
|
|||||||
ASTPointer<Expression> _expression,
|
ASTPointer<Expression> _expression,
|
||||||
std::vector<ASTPointer<Expression>> _arguments,
|
std::vector<ASTPointer<Expression>> _arguments,
|
||||||
std::vector<ASTPointer<ASTString>> _names,
|
std::vector<ASTPointer<ASTString>> _names,
|
||||||
std::vector<SourceLocation> _nameLocations
|
std::vector<SourceLocation> _nameLocations,
|
||||||
|
bool _isSuffixCall = false
|
||||||
):
|
):
|
||||||
Expression(_id, _location), m_expression(std::move(_expression)), m_arguments(std::move(_arguments)), m_names(std::move(_names)), m_nameLocations(std::move(_nameLocations))
|
Expression(_id, _location),
|
||||||
|
m_expression(std::move(_expression)),
|
||||||
|
m_arguments(std::move(_arguments)),
|
||||||
|
m_names(std::move(_names)),
|
||||||
|
m_nameLocations(std::move(_nameLocations)),
|
||||||
|
m_isSuffixCall(_isSuffixCall)
|
||||||
{
|
{
|
||||||
solAssert(m_nameLocations.size() == m_names.size());
|
solAssert(m_nameLocations.size() == m_names.size());
|
||||||
}
|
}
|
||||||
@ -2191,6 +2197,7 @@ public:
|
|||||||
/// If this is not a named call, this is empty.
|
/// If this is not a named call, this is empty.
|
||||||
std::vector<ASTPointer<ASTString>> const& names() const { return m_names; }
|
std::vector<ASTPointer<ASTString>> const& names() const { return m_names; }
|
||||||
std::vector<SourceLocation> const& nameLocations() const { return m_nameLocations; }
|
std::vector<SourceLocation> const& nameLocations() const { return m_nameLocations; }
|
||||||
|
bool isSuffixCall() const { return m_isSuffixCall; }
|
||||||
|
|
||||||
FunctionCallAnnotation& annotation() const override;
|
FunctionCallAnnotation& annotation() const override;
|
||||||
|
|
||||||
@ -2199,6 +2206,7 @@ private:
|
|||||||
std::vector<ASTPointer<Expression>> m_arguments;
|
std::vector<ASTPointer<Expression>> m_arguments;
|
||||||
std::vector<ASTPointer<ASTString>> m_names;
|
std::vector<ASTPointer<ASTString>> m_names;
|
||||||
std::vector<SourceLocation> m_nameLocations;
|
std::vector<SourceLocation> m_nameLocations;
|
||||||
|
bool m_isSuffixCall{};
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -893,7 +893,8 @@ bool ASTJsonExporter::visit(FunctionCall const& _node)
|
|||||||
make_pair("names", std::move(names)),
|
make_pair("names", std::move(names)),
|
||||||
make_pair("nameLocations", sourceLocationsToJson(_node.nameLocations())),
|
make_pair("nameLocations", sourceLocationsToJson(_node.nameLocations())),
|
||||||
make_pair("arguments", toJson(_node.arguments())),
|
make_pair("arguments", toJson(_node.arguments())),
|
||||||
make_pair("tryCall", _node.annotation().tryCall)
|
make_pair("tryCall", _node.annotation().tryCall),
|
||||||
|
make_pair("isSuffixCall", _node.isSuffixCall())
|
||||||
};
|
};
|
||||||
|
|
||||||
if (_node.annotation().kind.set())
|
if (_node.annotation().kind.set())
|
||||||
|
@ -970,7 +970,8 @@ ASTPointer<FunctionCall> ASTJsonImporter::createFunctionCall(Json::Value const&
|
|||||||
names,
|
names,
|
||||||
sourceLocations ?
|
sourceLocations ?
|
||||||
*sourceLocations :
|
*sourceLocations :
|
||||||
vector<SourceLocation>(names.size())
|
vector<SourceLocation>(names.size()),
|
||||||
|
memberAsBool(_node, "isSuffixCall")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -322,6 +322,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "typeConversion",
|
"kind": "typeConversion",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -448,6 +449,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": true,
|
"isPure": true,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "typeConversion",
|
"kind": "typeConversion",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
|
@ -214,6 +214,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"id": 26,
|
"id": 26,
|
||||||
|
"isSuffixCall": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
"names": [],
|
"names": [],
|
||||||
"nodeType": "FunctionCall",
|
"nodeType": "FunctionCall",
|
||||||
@ -286,6 +287,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"id": 34,
|
"id": 34,
|
||||||
|
"isSuffixCall": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
"names": [],
|
"names": [],
|
||||||
"nodeType": "FunctionCall",
|
"nodeType": "FunctionCall",
|
||||||
|
@ -321,6 +321,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -379,6 +380,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -455,6 +457,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -598,6 +601,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -656,6 +660,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -840,6 +845,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -898,6 +904,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -974,6 +981,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
|
@ -471,6 +471,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -529,6 +530,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -1083,6 +1085,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -1141,6 +1144,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -1199,6 +1203,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -1275,6 +1280,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -1351,6 +1357,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -1482,6 +1489,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -1522,6 +1530,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
|
@ -79,6 +79,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -277,6 +278,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -342,6 +344,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
|
@ -185,6 +185,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
|
@ -150,6 +150,7 @@
|
|||||||
"typeDescriptions": {}
|
"typeDescriptions": {}
|
||||||
},
|
},
|
||||||
"id": 18,
|
"id": 18,
|
||||||
|
"isSuffixCall": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
"names": [],
|
"names": [],
|
||||||
"nodeType": "FunctionCall",
|
"nodeType": "FunctionCall",
|
||||||
|
@ -80,6 +80,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -218,6 +219,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -258,6 +260,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
|
@ -53,6 +53,7 @@
|
|||||||
"typeDescriptions": {}
|
"typeDescriptions": {}
|
||||||
},
|
},
|
||||||
"id": 6,
|
"id": 6,
|
||||||
|
"isSuffixCall": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
"names": [],
|
"names": [],
|
||||||
"nodeType": "FunctionCall",
|
"nodeType": "FunctionCall",
|
||||||
@ -155,6 +156,7 @@
|
|||||||
"typeDescriptions": {}
|
"typeDescriptions": {}
|
||||||
},
|
},
|
||||||
"id": 18,
|
"id": 18,
|
||||||
|
"isSuffixCall": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
"names": [],
|
"names": [],
|
||||||
"nodeType": "FunctionCall",
|
"nodeType": "FunctionCall",
|
||||||
@ -180,6 +182,7 @@
|
|||||||
"typeDescriptions": {}
|
"typeDescriptions": {}
|
||||||
},
|
},
|
||||||
"id": 21,
|
"id": 21,
|
||||||
|
"isSuffixCall": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
"names": [],
|
"names": [],
|
||||||
"nodeType": "FunctionCall",
|
"nodeType": "FunctionCall",
|
||||||
|
@ -133,6 +133,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": true,
|
"isPure": true,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "typeConversion",
|
"kind": "typeConversion",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -181,6 +182,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": true,
|
"isPure": true,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "typeConversion",
|
"kind": "typeConversion",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
|
@ -85,6 +85,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"id": 10,
|
"id": 10,
|
||||||
|
"isSuffixCall": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
"names": [],
|
"names": [],
|
||||||
"nodeType": "FunctionCall",
|
"nodeType": "FunctionCall",
|
||||||
@ -109,6 +110,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"id": 11,
|
"id": 11,
|
||||||
|
"isSuffixCall": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
"names": [],
|
"names": [],
|
||||||
"nodeType": "FunctionCall",
|
"nodeType": "FunctionCall",
|
||||||
|
@ -65,6 +65,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
@ -175,6 +176,7 @@
|
|||||||
"isConstant": false,
|
"isConstant": false,
|
||||||
"isLValue": false,
|
"isLValue": false,
|
||||||
"isPure": false,
|
"isPure": false,
|
||||||
|
"isSuffixCall": false,
|
||||||
"kind": "functionCall",
|
"kind": "functionCall",
|
||||||
"lValueRequested": false,
|
"lValueRequested": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
"typeDescriptions": {}
|
"typeDescriptions": {}
|
||||||
},
|
},
|
||||||
"id": 6,
|
"id": 6,
|
||||||
|
"isSuffixCall": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
"names": [],
|
"names": [],
|
||||||
"nodeType": "FunctionCall",
|
"nodeType": "FunctionCall",
|
||||||
@ -127,6 +128,7 @@
|
|||||||
"typeDescriptions": {}
|
"typeDescriptions": {}
|
||||||
},
|
},
|
||||||
"id": 15,
|
"id": 15,
|
||||||
|
"isSuffixCall": false,
|
||||||
"nameLocations": [],
|
"nameLocations": [],
|
||||||
"names": [],
|
"names": [],
|
||||||
"nodeType": "FunctionCall",
|
"nodeType": "FunctionCall",
|
||||||
|
Loading…
Reference in New Issue
Block a user