mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
OperationAnnotation::userDefinedFunction can be set only once
This commit is contained in:
@@ -314,7 +314,7 @@ struct MemberAccessAnnotation: ExpressionAnnotation
|
||||
|
||||
struct OperationAnnotation: ExpressionAnnotation
|
||||
{
|
||||
FunctionDefinition const* userDefinedFunction = nullptr;
|
||||
util::SetOnce<FunctionDefinition const*> userDefinedFunction;
|
||||
};
|
||||
|
||||
struct BinaryOperationAnnotation: OperationAnnotation
|
||||
|
||||
@@ -833,8 +833,8 @@ bool ASTJsonExporter::visit(UnaryOperation const& _node)
|
||||
make_pair("operator", TokenTraits::toString(_node.getOperator())),
|
||||
make_pair("subExpression", toJson(_node.subExpression()))
|
||||
};
|
||||
if (FunctionDefinition const* referencedDeclaration = _node.annotation().userDefinedFunction)
|
||||
attributes.emplace_back("function", nodeId(*referencedDeclaration));
|
||||
if (_node.annotation().userDefinedFunction.set())
|
||||
attributes.emplace_back("function", nodeId(**_node.annotation().userDefinedFunction));
|
||||
appendExpressionAttributes(attributes, _node.annotation());
|
||||
setJsonNode(_node, "UnaryOperation", std::move(attributes));
|
||||
return false;
|
||||
@@ -848,8 +848,8 @@ bool ASTJsonExporter::visit(BinaryOperation const& _node)
|
||||
make_pair("rightExpression", toJson(_node.rightExpression())),
|
||||
make_pair("commonType", typePointerToJson(_node.annotation().commonType)),
|
||||
};
|
||||
if (FunctionDefinition const* function = _node.annotation().userDefinedFunction)
|
||||
attributes.emplace_back("function", nodeId(*function));
|
||||
if (_node.annotation().userDefinedFunction.set())
|
||||
attributes.emplace_back("function", nodeId(**_node.annotation().userDefinedFunction));
|
||||
appendExpressionAttributes(attributes, _node.annotation());
|
||||
setJsonNode(_node, "BinaryOperation", std::move(attributes));
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user