From 9af3439ff720d4f2dba7cbbe6b5a314134037c3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20=C5=9Aliwak?= Date: Fri, 24 Feb 2023 19:35:45 +0100 Subject: [PATCH] Allow marking free functions as suffixes --- Changelog.md | 6 ++ libsolidity/analysis/TypeChecker.cpp | 98 +++++++++++++++++++ libsolidity/ast/AST.h | 6 ++ libsolidity/ast/ASTJsonExporter.cpp | 1 + libsolidity/ast/ASTJsonImporter.cpp | 1 + libsolidity/parsing/Parser.cpp | 20 +++- libsolidity/parsing/Parser.h | 3 +- .../input.sol | 1 + .../recovery_ast_constructor/output | 2 + .../standard_only_ast_requested/output.json | 1 + .../ASTJSON/abstract_contract.json | 1 + .../ASTJSON/abstract_contract_parseOnly.json | 1 + test/libsolidity/ASTJSON/address_payable.json | 1 + .../ASTJSON/address_payable_parseOnly.json | 1 + test/libsolidity/ASTJSON/assembly/call.json | 1 + .../ASTJSON/assembly/call_parseOnly.json | 1 + .../ASTJSON/assembly/empty_block.json | 1 + .../assembly/empty_block_parseOnly.json | 1 + .../ASTJSON/assembly/function.json | 1 + .../ASTJSON/assembly/function_parseOnly.json | 1 + test/libsolidity/ASTJSON/assembly/leave.json | 1 + .../ASTJSON/assembly/leave_parseOnly.json | 1 + test/libsolidity/ASTJSON/assembly/loop.json | 1 + .../ASTJSON/assembly/loop_parseOnly.json | 1 + .../ASTJSON/assembly/nested_functions.json | 1 + .../assembly/nested_functions_parseOnly.json | 1 + .../ASTJSON/assembly/slot_offset.json | 1 + .../assembly/slot_offset_parseOnly.json | 1 + .../ASTJSON/assembly/stringlit.json | 1 + .../ASTJSON/assembly/stringlit_parseOnly.json | 1 + test/libsolidity/ASTJSON/assembly/switch.json | 1 + .../ASTJSON/assembly/switch_default.json | 1 + .../assembly/switch_default_parseOnly.json | 1 + .../ASTJSON/assembly/switch_parseOnly.json | 1 + .../ASTJSON/assembly/var_access.json | 1 + .../assembly/var_access_parseOnly.json | 1 + .../ASTJSON/base_constructor_call.json | 2 + .../base_constructor_call_parseOnly.json | 2 + test/libsolidity/ASTJSON/constructor.json | 1 + .../ASTJSON/constructor_parseOnly.json | 1 + test/libsolidity/ASTJSON/documentation.json | 1 + .../ASTJSON/documentation_local_variable.json | 2 + ...ocumentation_local_variable_parseOnly.json | 2 + .../ASTJSON/documentation_on_statements.json | 1 + ...documentation_on_statements_parseOnly.json | 1 + .../ASTJSON/documentation_parseOnly.json | 1 + .../ASTJSON/documentation_triple.json | 1 + .../documentation_triple_parseOnly.json | 1 + .../ASTJSON/enum_value_declaration.json | 1 + .../enum_value_declaration_parseOnly.json | 1 + .../ASTJSON/fail_after_parsing_parseOnly.json | 2 + test/libsolidity/ASTJSON/fallback.json | 1 + .../ASTJSON/fallback_and_reveice_ether.json | 2 + .../fallback_and_reveice_ether_parseOnly.json | 2 + .../ASTJSON/fallback_parseOnly.json | 1 + .../libsolidity/ASTJSON/fallback_payable.json | 1 + .../ASTJSON/fallback_payable_parseOnly.json | 1 + test/libsolidity/ASTJSON/function_type.json | 1 + .../ASTJSON/function_type_parseOnly.json | 1 + .../long_type_name_binary_operation.json | 1 + ..._type_name_binary_operation_parseOnly.json | 1 + .../ASTJSON/long_type_name_identifier.json | 1 + .../long_type_name_identifier_parseOnly.json | 1 + .../ASTJSON/modifier_definition.json | 1 + .../modifier_definition_parseOnly.json | 1 + .../ASTJSON/modifier_invocation.json | 1 + .../modifier_invocation_parseOnly.json | 1 + test/libsolidity/ASTJSON/non_utf8.json | 1 + .../ASTJSON/non_utf8_parseOnly.json | 1 + .../not_existing_import_parseOnly.json | 1 + test/libsolidity/ASTJSON/override.json | 5 + .../ASTJSON/override_parseOnly.json | 5 + test/libsolidity/ASTJSON/receive_ether.json | 1 + .../ASTJSON/receive_ether_parseOnly.json | 1 + test/libsolidity/ASTJSON/short_type_name.json | 1 + .../ASTJSON/short_type_name_parseOnly.json | 1 + .../ASTJSON/short_type_name_ref.json | 1 + .../short_type_name_ref_parseOnly.json | 1 + test/libsolidity/ASTJSON/source_location.json | 1 + .../ASTJSON/source_location_parseOnly.json | 1 + test/libsolidity/ASTJSON/string.json | 1 + .../libsolidity/ASTJSON/string_parseOnly.json | 1 + .../ASTJSON/two_base_functions.json | 3 + .../ASTJSON/two_base_functions_parseOnly.json | 3 + test/libsolidity/ASTJSON/unicode.json | 1 + .../ASTJSON/unicode_parseOnly.json | 1 + test/libsolidity/ASTJSON/used_errors.json | 2 + .../ASTJSON/used_errors_parseOnly.json | 2 + .../ASTJSON/userDefinedValueType.json | 1 + .../userDefinedValueType_parseOnly.json | 1 + .../ASTJSON/user_defined_operator.json | 3 + .../ASTJSON/using_for_directive.json | 1 + .../using_for_directive_parseOnly.json | 1 + test/libsolidity/ASTJSON/yul_hex_literal.json | 1 + .../ASTJSON/yul_hex_literal_parseOnly.json | 1 + 95 files changed, 242 insertions(+), 5 deletions(-) diff --git a/Changelog.md b/Changelog.md index e43d0a835..b28377bec 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,6 +1,7 @@ ## 0.8.20 (unreleased) Language Features: +* General: Introduce literal suffix functions. Free functions can now be marked as suffixes and applied to literals using a new suffix call syntax. Compiler Features: @@ -18,6 +19,11 @@ Bugfixes: * Antlr Grammar: Stricter rules for function definitions. The grammar will no longer accept as valid free functions having specifiers which are exclusive to contract functions. +AST Changes: + * AST: Add ``suffix`` field to ``FunctionDefinition`` AST node, which is ``true`` for free function definitions using the ``suffix`` modifier. + * AST: Add ``isSuffixCall`` field to ``FunctionCall`` AST node, which is ``true`` for calls resulting from applying a literal suffix. + + ### 0.8.19 (2023-02-22) Language Features: diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp index efbbc5741..a202055c3 100644 --- a/libsolidity/analysis/TypeChecker.cpp +++ b/libsolidity/analysis/TypeChecker.cpp @@ -426,6 +426,104 @@ bool TypeChecker::visit(FunctionDefinition const& _function) else if (_function.libraryFunction()) m_errorReporter.typeError(7801_error, _function.location(), "Library functions cannot be \"virtual\"."); } + if (_function.usableAsSuffix()) + { + if (_function.stateMutability() != StateMutability::Pure) + m_errorReporter.typeError( + 1716_error, + _function.location(), + "Only pure functions can be used as literal suffixes" + ); + + optional parameterCountMessage; + if (_function.parameterList().parameters().size() == 0) + parameterCountMessage = "Functions that take no arguments cannot be used as literal suffixes."; + else if (_function.parameterList().parameters().size() >= 3) + parameterCountMessage = "Functions that take 3 or more arguments cannot be used as literal suffixes."; + + if (parameterCountMessage.has_value()) + m_errorReporter.typeError(9128_error, _function.parameterList().location(), parameterCountMessage.value()); + else if (_function.parameterList().parameters().size() == 2) + { + auto const* mantissaType = dynamic_cast(_function.parameterList().parameters()[0]->type()); + auto const* exponentType = dynamic_cast(_function.parameterList().parameters()[1]->type()); + + vector mantissaOrExponentTypeErrorMessages; + if (!mantissaType) + mantissaOrExponentTypeErrorMessages.emplace_back("The mantissa parameter must be an integer."); + if (!exponentType) + mantissaOrExponentTypeErrorMessages.emplace_back("The exponent parameter must be an unsigned integer."); + + if (!mantissaOrExponentTypeErrorMessages.empty()) + m_errorReporter.typeError( + 1587_error, + _function.parameterList().location(), + "Literal suffix function has invalid parameter types. " + + joinHumanReadable(mantissaOrExponentTypeErrorMessages, " ") + ); + + if (exponentType && exponentType->isSigned()) + m_errorReporter.typeError( + 3123_error, + _function.parameterList().parameters()[1]->typeName().location(), + "The exponent parameter of a literal suffix function must be unsigned. " + "Exponent is always either zero or a negative power of 10 but the parameter represents its absolute value." + ); + } + else if (_function.parameterList().parameters().size() == 1) + { + auto const* parameterType = _function.parameterList().parameters()[0]->type(); + + if (dynamic_cast(parameterType)) + m_errorReporter.typeError( + 2699_error, + _function.parameterList().parameters()[0]->location(), + "Parameters of fixed-point types are not allowed in literal suffix functions. " + "To support fractional literals the suffix function must accept two integer arguments " + "(mantissa and exponent) that such literals can be decomposed into." + ); + + if ( + !TypeProvider::boolean()->isImplicitlyConvertibleTo(*parameterType) && + // ASSUMPTION: There are no address payable literals. + !TypeProvider::address()->isImplicitlyConvertibleTo(*parameterType) && + // ASSUMPTION: Literal 1 is implicitly convertible to any integer type. + !TypeProvider::rationalNumber(1)->isImplicitlyConvertibleTo(*parameterType) && + // ASSUMPTION: bytes1 is implicitly convertible to any fixed-bytes type. + !TypeProvider::fixedBytes(1)->isImplicitlyConvertibleTo(*parameterType) && + !TypeProvider::stringLiteral("a")->isImplicitlyConvertibleTo(*parameterType) + ) + m_errorReporter.typeError( + 2998_error, + _function.parameterList().parameters()[0]->location(), + "This literal suffix function is not usable as a suffix because no literal is " + "implicitly convertible to its parameter type." + ); + } + + solAssert(_function.returnParameterList()); + if (_function.returnParameterList()->parameters().size() != 1) + { + m_errorReporter.typeError( + 7848_error, + _function.returnParameterList()->location(), + "Literal suffix functions must return exactly one value." + ); + } + + for (ASTPointer returnParameter: _function.returnParameterList()->parameters()) + { + solAssert(returnParameter); + auto referenceType = dynamic_cast(returnParameter->type()); + auto mappingType = dynamic_cast(returnParameter->type()); + if (mappingType || (referenceType && !referenceType->dataStoredIn(DataLocation::Memory))) + m_errorReporter.typeError( + 7251_error, + returnParameter->location(), + "Literal suffix functions can only return value types and reference types stored in memory." + ); + } + } if (_function.overrides() && _function.isFree()) m_errorReporter.syntaxError(1750_error, _function.location(), "Free functions cannot override."); diff --git a/libsolidity/ast/AST.h b/libsolidity/ast/AST.h index 631e93c45..b4fc0599e 100644 --- a/libsolidity/ast/AST.h +++ b/libsolidity/ast/AST.h @@ -936,6 +936,7 @@ public: bool _free, Token _kind, bool _isVirtual, + bool _usableAsSuffix, ASTPointer const& _overrides, ASTPointer const& _documentation, ASTPointer const& _parameters, @@ -949,11 +950,14 @@ public: m_stateMutability(_stateMutability), m_free(_free), m_kind(_kind), + m_usableAsSuffix(_usableAsSuffix), m_functionModifiers(std::move(_modifiers)), m_body(_body) { solAssert(_kind == Token::Constructor || _kind == Token::Function || _kind == Token::Fallback || _kind == Token::Receive, ""); solAssert(isOrdinary() == !name().empty(), ""); + if (_usableAsSuffix) + solAssert(_free); } void accept(ASTVisitor& _visitor) override; @@ -966,6 +970,7 @@ public: bool isFallback() const { return m_kind == Token::Fallback; } bool isReceive() const { return m_kind == Token::Receive; } bool isFree() const { return m_free; } + bool usableAsSuffix() const { return m_usableAsSuffix; } Token kind() const { return m_kind; } bool isPayable() const { return m_stateMutability == StateMutability::Payable; } std::vector> const& modifiers() const { return m_functionModifiers; } @@ -1015,6 +1020,7 @@ private: StateMutability m_stateMutability; bool m_free; Token const m_kind; + bool m_usableAsSuffix; std::vector> m_functionModifiers; ASTPointer m_body; }; diff --git a/libsolidity/ast/ASTJsonExporter.cpp b/libsolidity/ast/ASTJsonExporter.cpp index 6106bce14..d8810ae6b 100644 --- a/libsolidity/ast/ASTJsonExporter.cpp +++ b/libsolidity/ast/ASTJsonExporter.cpp @@ -444,6 +444,7 @@ bool ASTJsonExporter::visit(FunctionDefinition const& _node) make_pair("kind", _node.isFree() ? "freeFunction" : TokenTraits::toString(_node.kind())), make_pair("stateMutability", stateMutabilityToString(_node.stateMutability())), make_pair("virtual", _node.markedVirtual()), + make_pair("suffix", _node.usableAsSuffix()), make_pair("overrides", _node.overrides() ? toJson(*_node.overrides()) : Json::nullValue), make_pair("parameters", toJson(_node.parameterList())), make_pair("returnParameters", toJson(*_node.returnParameterList())), diff --git a/libsolidity/ast/ASTJsonImporter.cpp b/libsolidity/ast/ASTJsonImporter.cpp index f63545fac..9d9e795f0 100644 --- a/libsolidity/ast/ASTJsonImporter.cpp +++ b/libsolidity/ast/ASTJsonImporter.cpp @@ -552,6 +552,7 @@ ASTPointer ASTJsonImporter::createFunctionDefinition(Json::V freeFunction, kind, memberAsBool(_node, "virtual"), + memberAsBool(_node, "suffix"), _node["overrides"].isNull() ? nullptr : createOverrideSpecifier(member(_node, "overrides")), _node["documentation"].isNull() ? nullptr : createDocumentation(member(_node, "documentation")), createParameterList(member(_node, "parameters")), diff --git a/libsolidity/parsing/Parser.cpp b/libsolidity/parsing/Parser.cpp index 257b8bea9..84ecec329 100644 --- a/libsolidity/parsing/Parser.cpp +++ b/libsolidity/parsing/Parser.cpp @@ -528,7 +528,7 @@ StateMutability Parser::parseStateMutability() return stateMutability; } -Parser::FunctionHeaderParserResult Parser::parseFunctionHeader(bool _isStateVariable) +Parser::FunctionHeaderParserResult Parser::parseFunctionHeader(bool _isStateVariable, bool _freeFunction) { RecursionGuard recursionGuard(*this); FunctionHeaderParserResult result; @@ -540,7 +540,18 @@ Parser::FunctionHeaderParserResult Parser::parseFunctionHeader(bool _isStateVari { Token token = m_scanner->currentToken(); if (!_isStateVariable && token == Token::Identifier) - result.modifiers.push_back(parseModifierInvocation()); + { + if (_freeFunction && currentLiteral() == "suffix") + { + if (result.usableAsSuffix) + parserError(2878_error, "Suffix already specified."); + else + result.usableAsSuffix = true; + advance(); + } + else + result.modifiers.push_back(parseModifierInvocation()); + } else if (TokenTraits::isVisibilitySpecifier(token)) { if (result.visibility != Visibility::Default) @@ -650,7 +661,7 @@ ASTPointer Parser::parseFunctionDefinition(bool _freeFunction) name = make_shared(); } - FunctionHeaderParserResult header = parseFunctionHeader(false); + FunctionHeaderParserResult header = parseFunctionHeader(false /* _isStateVariable */, _freeFunction); ASTPointer block; nodeFactory.markEndPosition(); @@ -669,6 +680,7 @@ ASTPointer Parser::parseFunctionDefinition(bool _freeFunction) _freeFunction, kind, header.isVirtual, + header.usableAsSuffix, header.overrides, documentation, header.parameters, @@ -1188,7 +1200,7 @@ ASTPointer Parser::parseFunctionType() RecursionGuard recursionGuard(*this); ASTNodeFactory nodeFactory(*this); expectToken(Token::Function); - FunctionHeaderParserResult header = parseFunctionHeader(true); + FunctionHeaderParserResult header = parseFunctionHeader(true /* _isStateVariable */, false /* _freeFunction */); return nodeFactory.createNode( header.parameters, header.returnParameters, diff --git a/libsolidity/parsing/Parser.h b/libsolidity/parsing/Parser.h index c7d6146be..f967ea38a 100644 --- a/libsolidity/parsing/Parser.h +++ b/libsolidity/parsing/Parser.h @@ -69,6 +69,7 @@ private: struct FunctionHeaderParserResult { bool isVirtual = false; + bool usableAsSuffix = false; ASTPointer overrides; ASTPointer parameters; ASTPointer returnParameters; @@ -99,7 +100,7 @@ private: Visibility parseVisibilitySpecifier(); ASTPointer parseOverrideSpecifier(); StateMutability parseStateMutability(); - FunctionHeaderParserResult parseFunctionHeader(bool _isStateVariable); + FunctionHeaderParserResult parseFunctionHeader(bool _isStateVariable, bool _freeFunction); ASTPointer parseFunctionDefinition(bool _freeFunction = false); ASTPointer parseStructDefinition(); ASTPointer parseEnumDefinition(); diff --git a/test/cmdlineTests/ast_json_import_wrong_evmVersion/input.sol b/test/cmdlineTests/ast_json_import_wrong_evmVersion/input.sol index 4f8eb2c79..b46d3e79f 100644 --- a/test/cmdlineTests/ast_json_import_wrong_evmVersion/input.sol +++ b/test/cmdlineTests/ast_json_import_wrong_evmVersion/input.sol @@ -103,6 +103,7 @@ "scope": 7, "src": "40:46:0", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/cmdlineTests/recovery_ast_constructor/output b/test/cmdlineTests/recovery_ast_constructor/output index 33c07b4c1..7cb0ddcd5 100644 --- a/test/cmdlineTests/recovery_ast_constructor/output +++ b/test/cmdlineTests/recovery_ast_constructor/output @@ -80,6 +80,7 @@ JSON AST (compact format): "scope": 18, "src": "82:63:0", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" }, @@ -174,6 +175,7 @@ JSON AST (compact format): "scope": 18, "src": "398:61:0", "stateMutability": "view", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/cmdlineTests/standard_only_ast_requested/output.json b/test/cmdlineTests/standard_only_ast_requested/output.json index 4caa8a764..7c44ede58 100644 --- a/test/cmdlineTests/standard_only_ast_requested/output.json +++ b/test/cmdlineTests/standard_only_ast_requested/output.json @@ -79,6 +79,7 @@ "scope": 6, "src": "72:27:0", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/abstract_contract.json b/test/libsolidity/ASTJSON/abstract_contract.json index 168433eb9..927d6a210 100644 --- a/test/libsolidity/ASTJSON/abstract_contract.json +++ b/test/libsolidity/ASTJSON/abstract_contract.json @@ -60,6 +60,7 @@ "scope": 5, "src": "23:18:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "internal" } diff --git a/test/libsolidity/ASTJSON/abstract_contract_parseOnly.json b/test/libsolidity/ASTJSON/abstract_contract_parseOnly.json index 51dd803a3..a1af3297e 100644 --- a/test/libsolidity/ASTJSON/abstract_contract_parseOnly.json +++ b/test/libsolidity/ASTJSON/abstract_contract_parseOnly.json @@ -46,6 +46,7 @@ }, "src": "23:18:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false } ], diff --git a/test/libsolidity/ASTJSON/address_payable.json b/test/libsolidity/ASTJSON/address_payable.json index 83ba2c6d7..b39570f60 100644 --- a/test/libsolidity/ASTJSON/address_payable.json +++ b/test/libsolidity/ASTJSON/address_payable.json @@ -565,6 +565,7 @@ "scope": 39, "src": "67:189:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/address_payable_parseOnly.json b/test/libsolidity/ASTJSON/address_payable_parseOnly.json index 9d095dc68..cbdd24d7f 100644 --- a/test/libsolidity/ASTJSON/address_payable_parseOnly.json +++ b/test/libsolidity/ASTJSON/address_payable_parseOnly.json @@ -373,6 +373,7 @@ }, "src": "67:189:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/call.json b/test/libsolidity/ASTJSON/assembly/call.json index c6e0561ed..731acd8c6 100644 --- a/test/libsolidity/ASTJSON/assembly/call.json +++ b/test/libsolidity/ASTJSON/assembly/call.json @@ -158,6 +158,7 @@ "scope": 6, "src": "17:79:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/call_parseOnly.json b/test/libsolidity/ASTJSON/assembly/call_parseOnly.json index 27d6ac07d..39550b50d 100644 --- a/test/libsolidity/ASTJSON/assembly/call_parseOnly.json +++ b/test/libsolidity/ASTJSON/assembly/call_parseOnly.json @@ -143,6 +143,7 @@ }, "src": "17:79:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/empty_block.json b/test/libsolidity/ASTJSON/assembly/empty_block.json index 19779b076..473063ad1 100644 --- a/test/libsolidity/ASTJSON/assembly/empty_block.json +++ b/test/libsolidity/ASTJSON/assembly/empty_block.json @@ -83,6 +83,7 @@ "scope": 6, "src": "17:56:1", "stateMutability": "view", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/empty_block_parseOnly.json b/test/libsolidity/ASTJSON/assembly/empty_block_parseOnly.json index 8b07db893..3af98f263 100644 --- a/test/libsolidity/ASTJSON/assembly/empty_block_parseOnly.json +++ b/test/libsolidity/ASTJSON/assembly/empty_block_parseOnly.json @@ -68,6 +68,7 @@ }, "src": "17:56:1", "stateMutability": "view", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/function.json b/test/libsolidity/ASTJSON/assembly/function.json index e528baa4c..e4ab39d2b 100644 --- a/test/libsolidity/ASTJSON/assembly/function.json +++ b/test/libsolidity/ASTJSON/assembly/function.json @@ -145,6 +145,7 @@ "scope": 6, "src": "17:93:1", "stateMutability": "view", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/function_parseOnly.json b/test/libsolidity/ASTJSON/assembly/function_parseOnly.json index f89a2fa6d..93214e60a 100644 --- a/test/libsolidity/ASTJSON/assembly/function_parseOnly.json +++ b/test/libsolidity/ASTJSON/assembly/function_parseOnly.json @@ -130,6 +130,7 @@ }, "src": "17:93:1", "stateMutability": "view", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/leave.json b/test/libsolidity/ASTJSON/assembly/leave.json index eefc5105f..4dbec75f2 100644 --- a/test/libsolidity/ASTJSON/assembly/leave.json +++ b/test/libsolidity/ASTJSON/assembly/leave.json @@ -95,6 +95,7 @@ "scope": 6, "src": "17:71:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/leave_parseOnly.json b/test/libsolidity/ASTJSON/assembly/leave_parseOnly.json index ba8b54507..53ceda566 100644 --- a/test/libsolidity/ASTJSON/assembly/leave_parseOnly.json +++ b/test/libsolidity/ASTJSON/assembly/leave_parseOnly.json @@ -80,6 +80,7 @@ }, "src": "17:71:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/loop.json b/test/libsolidity/ASTJSON/assembly/loop.json index 8a887a80f..451ae2739 100644 --- a/test/libsolidity/ASTJSON/assembly/loop.json +++ b/test/libsolidity/ASTJSON/assembly/loop.json @@ -158,6 +158,7 @@ "scope": 6, "src": "17:99:1", "stateMutability": "view", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/loop_parseOnly.json b/test/libsolidity/ASTJSON/assembly/loop_parseOnly.json index 8ee936747..01756fb5d 100644 --- a/test/libsolidity/ASTJSON/assembly/loop_parseOnly.json +++ b/test/libsolidity/ASTJSON/assembly/loop_parseOnly.json @@ -143,6 +143,7 @@ }, "src": "17:99:1", "stateMutability": "view", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/nested_functions.json b/test/libsolidity/ASTJSON/assembly/nested_functions.json index 41a18a1d0..68044ab47 100644 --- a/test/libsolidity/ASTJSON/assembly/nested_functions.json +++ b/test/libsolidity/ASTJSON/assembly/nested_functions.json @@ -163,6 +163,7 @@ "scope": 8, "src": "15:137:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/nested_functions_parseOnly.json b/test/libsolidity/ASTJSON/assembly/nested_functions_parseOnly.json index f5f554608..1ecc075a0 100644 --- a/test/libsolidity/ASTJSON/assembly/nested_functions_parseOnly.json +++ b/test/libsolidity/ASTJSON/assembly/nested_functions_parseOnly.json @@ -130,6 +130,7 @@ }, "src": "15:137:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/slot_offset.json b/test/libsolidity/ASTJSON/assembly/slot_offset.json index 1e6fe1447..aac477981 100644 --- a/test/libsolidity/ASTJSON/assembly/slot_offset.json +++ b/test/libsolidity/ASTJSON/assembly/slot_offset.json @@ -239,6 +239,7 @@ "scope": 12, "src": "51:95:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/slot_offset_parseOnly.json b/test/libsolidity/ASTJSON/assembly/slot_offset_parseOnly.json index 4135bb343..c30c17549 100644 --- a/test/libsolidity/ASTJSON/assembly/slot_offset_parseOnly.json +++ b/test/libsolidity/ASTJSON/assembly/slot_offset_parseOnly.json @@ -184,6 +184,7 @@ }, "src": "51:95:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/stringlit.json b/test/libsolidity/ASTJSON/assembly/stringlit.json index 64777e947..0699fbb68 100644 --- a/test/libsolidity/ASTJSON/assembly/stringlit.json +++ b/test/libsolidity/ASTJSON/assembly/stringlit.json @@ -100,6 +100,7 @@ "scope": 6, "src": "17:63:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/stringlit_parseOnly.json b/test/libsolidity/ASTJSON/assembly/stringlit_parseOnly.json index e82999a78..fb6e51cb5 100644 --- a/test/libsolidity/ASTJSON/assembly/stringlit_parseOnly.json +++ b/test/libsolidity/ASTJSON/assembly/stringlit_parseOnly.json @@ -85,6 +85,7 @@ }, "src": "17:63:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/switch.json b/test/libsolidity/ASTJSON/assembly/switch.json index f78699ef6..3841bc42a 100644 --- a/test/libsolidity/ASTJSON/assembly/switch.json +++ b/test/libsolidity/ASTJSON/assembly/switch.json @@ -191,6 +191,7 @@ "scope": 6, "src": "17:179:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/switch_default.json b/test/libsolidity/ASTJSON/assembly/switch_default.json index 16e1f1bf4..fc75aa882 100644 --- a/test/libsolidity/ASTJSON/assembly/switch_default.json +++ b/test/libsolidity/ASTJSON/assembly/switch_default.json @@ -122,6 +122,7 @@ "scope": 6, "src": "17:83:1", "stateMutability": "view", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/switch_default_parseOnly.json b/test/libsolidity/ASTJSON/assembly/switch_default_parseOnly.json index 4539f8596..59264057a 100644 --- a/test/libsolidity/ASTJSON/assembly/switch_default_parseOnly.json +++ b/test/libsolidity/ASTJSON/assembly/switch_default_parseOnly.json @@ -107,6 +107,7 @@ }, "src": "17:83:1", "stateMutability": "view", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/switch_parseOnly.json b/test/libsolidity/ASTJSON/assembly/switch_parseOnly.json index 54d38b638..48dc4d8e3 100644 --- a/test/libsolidity/ASTJSON/assembly/switch_parseOnly.json +++ b/test/libsolidity/ASTJSON/assembly/switch_parseOnly.json @@ -176,6 +176,7 @@ }, "src": "17:179:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/var_access.json b/test/libsolidity/ASTJSON/assembly/var_access.json index 9cddf4460..d6141f49e 100644 --- a/test/libsolidity/ASTJSON/assembly/var_access.json +++ b/test/libsolidity/ASTJSON/assembly/var_access.json @@ -149,6 +149,7 @@ "scope": 9, "src": "17:76:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/assembly/var_access_parseOnly.json b/test/libsolidity/ASTJSON/assembly/var_access_parseOnly.json index 1444a3da1..4c9272648 100644 --- a/test/libsolidity/ASTJSON/assembly/var_access_parseOnly.json +++ b/test/libsolidity/ASTJSON/assembly/var_access_parseOnly.json @@ -116,6 +116,7 @@ }, "src": "17:76:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/base_constructor_call.json b/test/libsolidity/ASTJSON/base_constructor_call.json index 774981fa9..21b8fde6f 100644 --- a/test/libsolidity/ASTJSON/base_constructor_call.json +++ b/test/libsolidity/ASTJSON/base_constructor_call.json @@ -96,6 +96,7 @@ "scope": 7, "src": "13:20:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } @@ -213,6 +214,7 @@ "scope": 17, "src": "54:21:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/base_constructor_call_parseOnly.json b/test/libsolidity/ASTJSON/base_constructor_call_parseOnly.json index 8af0c0b2c..43f550b07 100644 --- a/test/libsolidity/ASTJSON/base_constructor_call_parseOnly.json +++ b/test/libsolidity/ASTJSON/base_constructor_call_parseOnly.json @@ -69,6 +69,7 @@ }, "src": "13:20:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false } ], @@ -165,6 +166,7 @@ }, "src": "54:21:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false } ], diff --git a/test/libsolidity/ASTJSON/constructor.json b/test/libsolidity/ASTJSON/constructor.json index 9ac4ac9c8..87af030b9 100644 --- a/test/libsolidity/ASTJSON/constructor.json +++ b/test/libsolidity/ASTJSON/constructor.json @@ -60,6 +60,7 @@ "scope": 5, "src": "14:18:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/constructor_parseOnly.json b/test/libsolidity/ASTJSON/constructor_parseOnly.json index 19d647058..aa6aa9519 100644 --- a/test/libsolidity/ASTJSON/constructor_parseOnly.json +++ b/test/libsolidity/ASTJSON/constructor_parseOnly.json @@ -46,6 +46,7 @@ }, "src": "14:18:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false } ], diff --git a/test/libsolidity/ASTJSON/documentation.json b/test/libsolidity/ASTJSON/documentation.json index f31382d3a..5addd058c 100644 --- a/test/libsolidity/ASTJSON/documentation.json +++ b/test/libsolidity/ASTJSON/documentation.json @@ -253,6 +253,7 @@ "scope": 23, "src": "188:23:3", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/documentation_local_variable.json b/test/libsolidity/ASTJSON/documentation_local_variable.json index 24e38eb1a..04716dc01 100644 --- a/test/libsolidity/ASTJSON/documentation_local_variable.json +++ b/test/libsolidity/ASTJSON/documentation_local_variable.json @@ -350,6 +350,7 @@ "scope": 41, "src": "17:355:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "public" }, @@ -478,6 +479,7 @@ "scope": 41, "src": "377:287:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/documentation_local_variable_parseOnly.json b/test/libsolidity/ASTJSON/documentation_local_variable_parseOnly.json index 93fd1c9bd..a88677d2d 100644 --- a/test/libsolidity/ASTJSON/documentation_local_variable_parseOnly.json +++ b/test/libsolidity/ASTJSON/documentation_local_variable_parseOnly.json @@ -246,6 +246,7 @@ }, "src": "17:355:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "public" }, @@ -345,6 +346,7 @@ }, "src": "377:287:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/documentation_on_statements.json b/test/libsolidity/ASTJSON/documentation_on_statements.json index bb3ee28d1..28e223faf 100644 --- a/test/libsolidity/ASTJSON/documentation_on_statements.json +++ b/test/libsolidity/ASTJSON/documentation_on_statements.json @@ -363,6 +363,7 @@ "scope": 27, "src": "57:271:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/documentation_on_statements_parseOnly.json b/test/libsolidity/ASTJSON/documentation_on_statements_parseOnly.json index bb265a4cc..02c224894 100644 --- a/test/libsolidity/ASTJSON/documentation_on_statements_parseOnly.json +++ b/test/libsolidity/ASTJSON/documentation_on_statements_parseOnly.json @@ -248,6 +248,7 @@ }, "src": "57:271:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/documentation_parseOnly.json b/test/libsolidity/ASTJSON/documentation_parseOnly.json index b3cda7e19..f0253955c 100644 --- a/test/libsolidity/ASTJSON/documentation_parseOnly.json +++ b/test/libsolidity/ASTJSON/documentation_parseOnly.json @@ -192,6 +192,7 @@ }, "src": "188:23:3", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/documentation_triple.json b/test/libsolidity/ASTJSON/documentation_triple.json index 9124e68b1..779b84095 100644 --- a/test/libsolidity/ASTJSON/documentation_triple.json +++ b/test/libsolidity/ASTJSON/documentation_triple.json @@ -373,6 +373,7 @@ "scope": 28, "src": "42:223:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/documentation_triple_parseOnly.json b/test/libsolidity/ASTJSON/documentation_triple_parseOnly.json index bd6612acc..71cd51fff 100644 --- a/test/libsolidity/ASTJSON/documentation_triple_parseOnly.json +++ b/test/libsolidity/ASTJSON/documentation_triple_parseOnly.json @@ -251,6 +251,7 @@ }, "src": "42:223:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/enum_value_declaration.json b/test/libsolidity/ASTJSON/enum_value_declaration.json index acdcc736e..110b7888f 100644 --- a/test/libsolidity/ASTJSON/enum_value_declaration.json +++ b/test/libsolidity/ASTJSON/enum_value_declaration.json @@ -156,6 +156,7 @@ "scope": 14, "src": "16:45:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "internal" } diff --git a/test/libsolidity/ASTJSON/enum_value_declaration_parseOnly.json b/test/libsolidity/ASTJSON/enum_value_declaration_parseOnly.json index 8fa574fa7..19e2d4063 100644 --- a/test/libsolidity/ASTJSON/enum_value_declaration_parseOnly.json +++ b/test/libsolidity/ASTJSON/enum_value_declaration_parseOnly.json @@ -117,6 +117,7 @@ }, "src": "16:45:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "internal" } diff --git a/test/libsolidity/ASTJSON/fail_after_parsing_parseOnly.json b/test/libsolidity/ASTJSON/fail_after_parsing_parseOnly.json index 5368d5862..cceb09df9 100644 --- a/test/libsolidity/ASTJSON/fail_after_parsing_parseOnly.json +++ b/test/libsolidity/ASTJSON/fail_after_parsing_parseOnly.json @@ -28,6 +28,7 @@ }, "src": "0:20:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" }, @@ -284,6 +285,7 @@ }, "src": "61:112:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/fallback.json b/test/libsolidity/ASTJSON/fallback.json index 25a9b8588..cf8e44b08 100644 --- a/test/libsolidity/ASTJSON/fallback.json +++ b/test/libsolidity/ASTJSON/fallback.json @@ -60,6 +60,7 @@ "scope": 5, "src": "15:33:1", "stateMutability": "payable", + "suffix": false, "virtual": false, "visibility": "external" } diff --git a/test/libsolidity/ASTJSON/fallback_and_reveice_ether.json b/test/libsolidity/ASTJSON/fallback_and_reveice_ether.json index 26b4ada77..2e286307e 100644 --- a/test/libsolidity/ASTJSON/fallback_and_reveice_ether.json +++ b/test/libsolidity/ASTJSON/fallback_and_reveice_ether.json @@ -60,6 +60,7 @@ "scope": 9, "src": "15:32:1", "stateMutability": "payable", + "suffix": false, "virtual": false, "visibility": "external" }, @@ -95,6 +96,7 @@ "scope": 9, "src": "50:33:1", "stateMutability": "payable", + "suffix": false, "virtual": false, "visibility": "external" } diff --git a/test/libsolidity/ASTJSON/fallback_and_reveice_ether_parseOnly.json b/test/libsolidity/ASTJSON/fallback_and_reveice_ether_parseOnly.json index 55804a9f5..ffc246f6d 100644 --- a/test/libsolidity/ASTJSON/fallback_and_reveice_ether_parseOnly.json +++ b/test/libsolidity/ASTJSON/fallback_and_reveice_ether_parseOnly.json @@ -46,6 +46,7 @@ }, "src": "15:32:1", "stateMutability": "payable", + "suffix": false, "virtual": false, "visibility": "external" }, @@ -80,6 +81,7 @@ }, "src": "50:33:1", "stateMutability": "payable", + "suffix": false, "virtual": false, "visibility": "external" } diff --git a/test/libsolidity/ASTJSON/fallback_parseOnly.json b/test/libsolidity/ASTJSON/fallback_parseOnly.json index 4d626dcba..cd15d18b7 100644 --- a/test/libsolidity/ASTJSON/fallback_parseOnly.json +++ b/test/libsolidity/ASTJSON/fallback_parseOnly.json @@ -46,6 +46,7 @@ }, "src": "15:33:1", "stateMutability": "payable", + "suffix": false, "virtual": false, "visibility": "external" } diff --git a/test/libsolidity/ASTJSON/fallback_payable.json b/test/libsolidity/ASTJSON/fallback_payable.json index 4331b5edf..a3e8ae419 100644 --- a/test/libsolidity/ASTJSON/fallback_payable.json +++ b/test/libsolidity/ASTJSON/fallback_payable.json @@ -60,6 +60,7 @@ "scope": 5, "src": "14:22:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "external" } diff --git a/test/libsolidity/ASTJSON/fallback_payable_parseOnly.json b/test/libsolidity/ASTJSON/fallback_payable_parseOnly.json index 2d029e56a..5027f86a3 100644 --- a/test/libsolidity/ASTJSON/fallback_payable_parseOnly.json +++ b/test/libsolidity/ASTJSON/fallback_payable_parseOnly.json @@ -46,6 +46,7 @@ }, "src": "14:22:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "external" } diff --git a/test/libsolidity/ASTJSON/function_type.json b/test/libsolidity/ASTJSON/function_type.json index 924f9cdb9..b7fd518e5 100644 --- a/test/libsolidity/ASTJSON/function_type.json +++ b/test/libsolidity/ASTJSON/function_type.json @@ -219,6 +219,7 @@ "scope": 17, "src": "13:116:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/function_type_parseOnly.json b/test/libsolidity/ASTJSON/function_type_parseOnly.json index fd1d7637b..71df86103 100644 --- a/test/libsolidity/ASTJSON/function_type_parseOnly.json +++ b/test/libsolidity/ASTJSON/function_type_parseOnly.json @@ -168,6 +168,7 @@ }, "src": "13:116:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/long_type_name_binary_operation.json b/test/libsolidity/ASTJSON/long_type_name_binary_operation.json index 8340eaf40..cba5e4ac1 100644 --- a/test/libsolidity/ASTJSON/long_type_name_binary_operation.json +++ b/test/libsolidity/ASTJSON/long_type_name_binary_operation.json @@ -162,6 +162,7 @@ "scope": 11, "src": "13:39:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/long_type_name_binary_operation_parseOnly.json b/test/libsolidity/ASTJSON/long_type_name_binary_operation_parseOnly.json index df2db3926..6f6d784fd 100644 --- a/test/libsolidity/ASTJSON/long_type_name_binary_operation_parseOnly.json +++ b/test/libsolidity/ASTJSON/long_type_name_binary_operation_parseOnly.json @@ -110,6 +110,7 @@ }, "src": "13:39:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/long_type_name_identifier.json b/test/libsolidity/ASTJSON/long_type_name_identifier.json index c810283d2..5731937f6 100644 --- a/test/libsolidity/ASTJSON/long_type_name_identifier.json +++ b/test/libsolidity/ASTJSON/long_type_name_identifier.json @@ -171,6 +171,7 @@ "scope": 15, "src": "23:45:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/long_type_name_identifier_parseOnly.json b/test/libsolidity/ASTJSON/long_type_name_identifier_parseOnly.json index ef76f30aa..02d7f3116 100644 --- a/test/libsolidity/ASTJSON/long_type_name_identifier_parseOnly.json +++ b/test/libsolidity/ASTJSON/long_type_name_identifier_parseOnly.json @@ -125,6 +125,7 @@ }, "src": "23:45:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/modifier_definition.json b/test/libsolidity/ASTJSON/modifier_definition.json index aa448568c..d345d4224 100644 --- a/test/libsolidity/ASTJSON/modifier_definition.json +++ b/test/libsolidity/ASTJSON/modifier_definition.json @@ -163,6 +163,7 @@ "scope": 14, "src": "39:27:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/modifier_definition_parseOnly.json b/test/libsolidity/ASTJSON/modifier_definition_parseOnly.json index 9344e419a..bac136a44 100644 --- a/test/libsolidity/ASTJSON/modifier_definition_parseOnly.json +++ b/test/libsolidity/ASTJSON/modifier_definition_parseOnly.json @@ -129,6 +129,7 @@ }, "src": "39:27:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/modifier_invocation.json b/test/libsolidity/ASTJSON/modifier_invocation.json index aa448568c..d345d4224 100644 --- a/test/libsolidity/ASTJSON/modifier_invocation.json +++ b/test/libsolidity/ASTJSON/modifier_invocation.json @@ -163,6 +163,7 @@ "scope": 14, "src": "39:27:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/modifier_invocation_parseOnly.json b/test/libsolidity/ASTJSON/modifier_invocation_parseOnly.json index 9344e419a..bac136a44 100644 --- a/test/libsolidity/ASTJSON/modifier_invocation_parseOnly.json +++ b/test/libsolidity/ASTJSON/modifier_invocation_parseOnly.json @@ -129,6 +129,7 @@ }, "src": "39:27:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/non_utf8.json b/test/libsolidity/ASTJSON/non_utf8.json index 926f858b5..ff83dcbae 100644 --- a/test/libsolidity/ASTJSON/non_utf8.json +++ b/test/libsolidity/ASTJSON/non_utf8.json @@ -224,6 +224,7 @@ "scope": 15, "src": "13:65:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/non_utf8_parseOnly.json b/test/libsolidity/ASTJSON/non_utf8_parseOnly.json index ef265cbe4..1ea329f30 100644 --- a/test/libsolidity/ASTJSON/non_utf8_parseOnly.json +++ b/test/libsolidity/ASTJSON/non_utf8_parseOnly.json @@ -144,6 +144,7 @@ }, "src": "13:65:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/not_existing_import_parseOnly.json b/test/libsolidity/ASTJSON/not_existing_import_parseOnly.json index de14043f3..d2496f003 100644 --- a/test/libsolidity/ASTJSON/not_existing_import_parseOnly.json +++ b/test/libsolidity/ASTJSON/not_existing_import_parseOnly.json @@ -107,6 +107,7 @@ }, "src": "113:16:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false } ], diff --git a/test/libsolidity/ASTJSON/override.json b/test/libsolidity/ASTJSON/override.json index a7c43767f..678202e39 100644 --- a/test/libsolidity/ASTJSON/override.json +++ b/test/libsolidity/ASTJSON/override.json @@ -69,6 +69,7 @@ "scope": 5, "src": "14:32:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": true, "visibility": "public" } @@ -140,6 +141,7 @@ "scope": 16, "src": "77:30:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": true, "visibility": "public" }, @@ -187,6 +189,7 @@ "scope": 16, "src": "109:41:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": true, "visibility": "public" } @@ -277,6 +280,7 @@ "scope": 29, "src": "172:34:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" }, @@ -324,6 +328,7 @@ "scope": 29, "src": "208:34:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/override_parseOnly.json b/test/libsolidity/ASTJSON/override_parseOnly.json index fe9d8a7c6..fd51d465a 100644 --- a/test/libsolidity/ASTJSON/override_parseOnly.json +++ b/test/libsolidity/ASTJSON/override_parseOnly.json @@ -46,6 +46,7 @@ }, "src": "14:32:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": true, "visibility": "public" } @@ -106,6 +107,7 @@ }, "src": "77:30:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": true, "visibility": "public" }, @@ -147,6 +149,7 @@ }, "src": "109:41:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": true, "visibility": "public" } @@ -221,6 +224,7 @@ }, "src": "172:34:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" }, @@ -262,6 +266,7 @@ }, "src": "208:34:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/receive_ether.json b/test/libsolidity/ASTJSON/receive_ether.json index bfcb33f6c..24e17f733 100644 --- a/test/libsolidity/ASTJSON/receive_ether.json +++ b/test/libsolidity/ASTJSON/receive_ether.json @@ -60,6 +60,7 @@ "scope": 5, "src": "15:32:1", "stateMutability": "payable", + "suffix": false, "virtual": false, "visibility": "external" } diff --git a/test/libsolidity/ASTJSON/receive_ether_parseOnly.json b/test/libsolidity/ASTJSON/receive_ether_parseOnly.json index 413c10564..34f1e3986 100644 --- a/test/libsolidity/ASTJSON/receive_ether_parseOnly.json +++ b/test/libsolidity/ASTJSON/receive_ether_parseOnly.json @@ -46,6 +46,7 @@ }, "src": "15:32:1", "stateMutability": "payable", + "suffix": false, "virtual": false, "visibility": "external" } diff --git a/test/libsolidity/ASTJSON/short_type_name.json b/test/libsolidity/ASTJSON/short_type_name.json index b7409fbbc..6ec0d0893 100644 --- a/test/libsolidity/ASTJSON/short_type_name.json +++ b/test/libsolidity/ASTJSON/short_type_name.json @@ -116,6 +116,7 @@ "scope": 11, "src": "13:40:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/short_type_name_parseOnly.json b/test/libsolidity/ASTJSON/short_type_name_parseOnly.json index 02590363a..933582c0b 100644 --- a/test/libsolidity/ASTJSON/short_type_name_parseOnly.json +++ b/test/libsolidity/ASTJSON/short_type_name_parseOnly.json @@ -88,6 +88,7 @@ }, "src": "13:40:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/short_type_name_ref.json b/test/libsolidity/ASTJSON/short_type_name_ref.json index 6a0f249f8..3d725f726 100644 --- a/test/libsolidity/ASTJSON/short_type_name_ref.json +++ b/test/libsolidity/ASTJSON/short_type_name_ref.json @@ -127,6 +127,7 @@ "scope": 12, "src": "13:45:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/short_type_name_ref_parseOnly.json b/test/libsolidity/ASTJSON/short_type_name_ref_parseOnly.json index 00799a212..3bf23f839 100644 --- a/test/libsolidity/ASTJSON/short_type_name_ref_parseOnly.json +++ b/test/libsolidity/ASTJSON/short_type_name_ref_parseOnly.json @@ -95,6 +95,7 @@ }, "src": "13:45:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/source_location.json b/test/libsolidity/ASTJSON/source_location.json index df51e49c6..b7bfb973f 100644 --- a/test/libsolidity/ASTJSON/source_location.json +++ b/test/libsolidity/ASTJSON/source_location.json @@ -159,6 +159,7 @@ "scope": 12, "src": "13:40:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/source_location_parseOnly.json b/test/libsolidity/ASTJSON/source_location_parseOnly.json index 88835788b..4f7d3e5b4 100644 --- a/test/libsolidity/ASTJSON/source_location_parseOnly.json +++ b/test/libsolidity/ASTJSON/source_location_parseOnly.json @@ -114,6 +114,7 @@ }, "src": "13:40:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/string.json b/test/libsolidity/ASTJSON/string.json index 438f760c4..71b440a80 100644 --- a/test/libsolidity/ASTJSON/string.json +++ b/test/libsolidity/ASTJSON/string.json @@ -123,6 +123,7 @@ "scope": 9, "src": "13:56:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/string_parseOnly.json b/test/libsolidity/ASTJSON/string_parseOnly.json index 444a1f7b2..b1d45b2b0 100644 --- a/test/libsolidity/ASTJSON/string_parseOnly.json +++ b/test/libsolidity/ASTJSON/string_parseOnly.json @@ -91,6 +91,7 @@ }, "src": "13:56:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/two_base_functions.json b/test/libsolidity/ASTJSON/two_base_functions.json index 23bdf6efe..a292fde75 100644 --- a/test/libsolidity/ASTJSON/two_base_functions.json +++ b/test/libsolidity/ASTJSON/two_base_functions.json @@ -69,6 +69,7 @@ "scope": 5, "src": "17:30:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": true, "visibility": "public" } @@ -127,6 +128,7 @@ "scope": 10, "src": "67:30:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": true, "visibility": "public" } @@ -259,6 +261,7 @@ "scope": 22, "src": "125:37:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/two_base_functions_parseOnly.json b/test/libsolidity/ASTJSON/two_base_functions_parseOnly.json index 078dc5daa..6ba59075f 100644 --- a/test/libsolidity/ASTJSON/two_base_functions_parseOnly.json +++ b/test/libsolidity/ASTJSON/two_base_functions_parseOnly.json @@ -46,6 +46,7 @@ }, "src": "17:30:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": true, "visibility": "public" } @@ -95,6 +96,7 @@ }, "src": "67:30:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": true, "visibility": "public" } @@ -207,6 +209,7 @@ }, "src": "125:37:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/unicode.json b/test/libsolidity/ASTJSON/unicode.json index dcb267b3f..d7d0f678c 100644 --- a/test/libsolidity/ASTJSON/unicode.json +++ b/test/libsolidity/ASTJSON/unicode.json @@ -123,6 +123,7 @@ "scope": 9, "src": "13:62:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/unicode_parseOnly.json b/test/libsolidity/ASTJSON/unicode_parseOnly.json index a6f52aa4a..672af5849 100644 --- a/test/libsolidity/ASTJSON/unicode_parseOnly.json +++ b/test/libsolidity/ASTJSON/unicode_parseOnly.json @@ -91,6 +91,7 @@ }, "src": "13:62:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/used_errors.json b/test/libsolidity/ASTJSON/used_errors.json index c59b4f530..7b44f8f82 100644 --- a/test/libsolidity/ASTJSON/used_errors.json +++ b/test/libsolidity/ASTJSON/used_errors.json @@ -108,6 +108,7 @@ "scope": 20, "src": "11:33:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "internal" }, @@ -218,6 +219,7 @@ "scope": 19, "src": "77:28:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/used_errors_parseOnly.json b/test/libsolidity/ASTJSON/used_errors_parseOnly.json index 7a4b24b3c..24d633636 100644 --- a/test/libsolidity/ASTJSON/used_errors_parseOnly.json +++ b/test/libsolidity/ASTJSON/used_errors_parseOnly.json @@ -76,6 +76,7 @@ }, "src": "11:33:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "internal" }, @@ -162,6 +163,7 @@ }, "src": "77:28:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/userDefinedValueType.json b/test/libsolidity/ASTJSON/userDefinedValueType.json index eb4450946..d932e45bf 100644 --- a/test/libsolidity/ASTJSON/userDefinedValueType.json +++ b/test/libsolidity/ASTJSON/userDefinedValueType.json @@ -206,6 +206,7 @@ "scope": 28, "src": "48:47:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "internal" }, diff --git a/test/libsolidity/ASTJSON/userDefinedValueType_parseOnly.json b/test/libsolidity/ASTJSON/userDefinedValueType_parseOnly.json index 0dc95e13f..81adedbd6 100644 --- a/test/libsolidity/ASTJSON/userDefinedValueType_parseOnly.json +++ b/test/libsolidity/ASTJSON/userDefinedValueType_parseOnly.json @@ -154,6 +154,7 @@ }, "src": "48:47:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "internal" }, diff --git a/test/libsolidity/ASTJSON/user_defined_operator.json b/test/libsolidity/ASTJSON/user_defined_operator.json index dd1c0d941..6d581ffab 100644 --- a/test/libsolidity/ASTJSON/user_defined_operator.json +++ b/test/libsolidity/ASTJSON/user_defined_operator.json @@ -268,6 +268,7 @@ "scope": 50, "src": "61:41:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "internal" }, @@ -391,6 +392,7 @@ "scope": 50, "src": "103:39:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "internal" }, @@ -650,6 +652,7 @@ "scope": 49, "src": "160:78:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/using_for_directive.json b/test/libsolidity/ASTJSON/using_for_directive.json index 57658134d..a313e7509 100644 --- a/test/libsolidity/ASTJSON/using_for_directive.json +++ b/test/libsolidity/ASTJSON/using_for_directive.json @@ -138,6 +138,7 @@ "scope": 14, "src": "33:19:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "internal" }, diff --git a/test/libsolidity/ASTJSON/using_for_directive_parseOnly.json b/test/libsolidity/ASTJSON/using_for_directive_parseOnly.json index 84de310c0..0f1d7b87f 100644 --- a/test/libsolidity/ASTJSON/using_for_directive_parseOnly.json +++ b/test/libsolidity/ASTJSON/using_for_directive_parseOnly.json @@ -101,6 +101,7 @@ }, "src": "33:19:1", "stateMutability": "nonpayable", + "suffix": false, "virtual": false, "visibility": "internal" }, diff --git a/test/libsolidity/ASTJSON/yul_hex_literal.json b/test/libsolidity/ASTJSON/yul_hex_literal.json index fc1cc39db..c89f5e918 100644 --- a/test/libsolidity/ASTJSON/yul_hex_literal.json +++ b/test/libsolidity/ASTJSON/yul_hex_literal.json @@ -142,6 +142,7 @@ "scope": 6, "src": "22:192:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "public" } diff --git a/test/libsolidity/ASTJSON/yul_hex_literal_parseOnly.json b/test/libsolidity/ASTJSON/yul_hex_literal_parseOnly.json index a6da7e778..b1abeadb9 100644 --- a/test/libsolidity/ASTJSON/yul_hex_literal_parseOnly.json +++ b/test/libsolidity/ASTJSON/yul_hex_literal_parseOnly.json @@ -127,6 +127,7 @@ }, "src": "22:192:1", "stateMutability": "pure", + "suffix": false, "virtual": false, "visibility": "public" }