From e3f5c4c1b5d86cec9f85ddbe3eace1e163f2a198 Mon Sep 17 00:00:00 2001 From: wechman Date: Tue, 2 Aug 2022 14:44:38 +0200 Subject: [PATCH] An extra assert for no operator for libraries in ASTJsonExporter::visit --- libsolidity/ast/ASTJsonExporter.cpp | 7 ++++++- .../operators/custom/operator_with_calldata_parameters.sol | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) 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 {