diff --git a/libsolidity/ast/ASTJsonExporter.cpp b/libsolidity/ast/ASTJsonExporter.cpp index f2b6ff48e..5e86cc70e 100644 --- a/libsolidity/ast/ASTJsonExporter.cpp +++ b/libsolidity/ast/ASTJsonExporter.cpp @@ -344,7 +344,12 @@ bool ASTJsonExporter::visit(UsingForDirective const& _node) attributes.emplace_back("functionList", std::move(functionList)); } else - attributes.emplace_back("libraryName", toJson(*_node.functionsOrLibrary().front())); + { + solAssert(_node.functionsAndOperators().size() == 1); + auto const& functionAndOperator = _node.functionsAndOperators().front(); + solAssert(!functionAndOperator.second.has_value()); + attributes.emplace_back("libraryName", toJson(*(functionAndOperator.first))); + } attributes.emplace_back("global", _node.global()); setJsonNode(_node, "UsingForDirective", std::move(attributes)); diff --git a/test/libsolidity/syntaxTests/operators/custom/operator_with_calldata_parameters.sol b/test/libsolidity/syntaxTests/operators/custom/operator_with_calldata_parameters.sol index 081291ece..7b33b691b 100644 --- a/test/libsolidity/syntaxTests/operators/custom/operator_with_calldata_parameters.sol +++ b/test/libsolidity/syntaxTests/operators/custom/operator_with_calldata_parameters.sol @@ -2,7 +2,7 @@ using {add as +} for S; struct S { uint x; -} +} function add(S calldata, S calldata) pure returns (S calldata r) { assembly {