diff --git a/Changelog.md b/Changelog.md index bfdd45575ff7..7a5adcc4b08d 100644 --- a/Changelog.md +++ b/Changelog.md @@ -19,6 +19,7 @@ Bugfixes: * SMTChecker: Fix formatting of unary minus expressions in invariants. * SMTChecker: Fix internal compiler error when reporting proved targets for BMC engine. * TypeChecker: Fix segfault when assigning nested tuple to tuple. + * Yul AST: Fix ``nativeSrc`` attributes in optimized IR AST referring to locations in unoptimized IR. * Yul IR Code Generation: Deterministic order of Yul subobjects. * Yul Optimizer: Name simplification could lead to forbidden identifiers with a leading and/or trailing dot, e.g., ``x._`` would get simplified into ``x.``. * Yul Parser: Fix segfault when parsing very long location comments. diff --git a/libsolidity/interface/CompilerStack.cpp b/libsolidity/interface/CompilerStack.cpp index 8ee55d87f5a5..adef81793a98 100644 --- a/libsolidity/interface/CompilerStack.cpp +++ b/libsolidity/interface/CompilerStack.cpp @@ -1464,25 +1464,36 @@ void CompilerStack::generateIR(ContractDefinition const& _contract) ); } - yul::YulStack stack( - m_evmVersion, - m_eofVersion, - yul::YulStack::Language::StrictAssembly, - m_optimiserSettings, - m_debugInfoSelection - ); - bool yulAnalysisSuccessful = stack.parseAndAnalyze("", compiledContract.yulIR); - solAssert( - yulAnalysisSuccessful, - compiledContract.yulIR + "\n\n" - "Invalid IR generated:\n" + - langutil::SourceReferenceFormatter::formatErrorInformation(stack.errors(), stack) + "\n" - ); + auto const parseYul = [&](std::string const& _irSource) { + YulStack stack( + m_evmVersion, + m_eofVersion, + YulStack::Language::StrictAssembly, + m_optimiserSettings, + m_debugInfoSelection + ); + bool yulAnalysisSuccessful = stack.parseAndAnalyze("", _irSource); + solAssert( + yulAnalysisSuccessful, + _irSource + "\n\n" + "Invalid IR generated:\n" + + langutil::SourceReferenceFormatter::formatErrorInformation(stack.errors(), stack) + "\n" + ); + return stack; + }; - compiledContract.yulIRAst = stack.astJson(); - stack.optimize(); - compiledContract.yulIROptimized = stack.print(this); - compiledContract.yulIROptimizedAst = stack.astJson(); + { + YulStack stack = parseYul(compiledContract.yulIR); + compiledContract.yulIRAst = stack.astJson(); + stack.optimize(); + compiledContract.yulIROptimized = stack.print(this); + } + { + // Optimizer does not maintain correct native source locations in the AST. + // We can work around it by regenerating the AST from scratch from optimized IR. + YulStack stack = parseYul(compiledContract.yulIROptimized); + compiledContract.yulIROptimizedAst = stack.astJson(); + } } void CompilerStack::generateEVMFromIR(ContractDefinition const& _contract) diff --git a/libyul/YulStack.cpp b/libyul/YulStack.cpp index 27b4b5526b85..9aaaab2eb20d 100644 --- a/libyul/YulStack.cpp +++ b/libyul/YulStack.cpp @@ -44,6 +44,7 @@ using namespace solidity; using namespace solidity::frontend; using namespace solidity::yul; using namespace solidity::langutil; +using namespace solidity::util; namespace { @@ -257,8 +258,7 @@ MachineAssemblyObject YulStack::assemble(Machine _machine) case Machine::EVM: return assembleWithDeployed().first; } - // unreachable - return MachineAssemblyObject(); + unreachable(); } std::pair diff --git a/libyul/YulStack.h b/libyul/YulStack.h index d75ff200f5ce..c6d78a115c18 100644 --- a/libyul/YulStack.h +++ b/libyul/YulStack.h @@ -163,8 +163,6 @@ class YulStack: public langutil::CharStreamProvider std::shared_ptr m_parserResult; langutil::ErrorList m_errors; langutil::ErrorReporter m_errorReporter; - - std::unique_ptr m_sourceMappings; }; } diff --git a/test/cmdlineTests/ast_ir/output b/test/cmdlineTests/ast_ir/output index c68c77872969..76f111990870 100644 --- a/test/cmdlineTests/ast_ir/output +++ b/test/cmdlineTests/ast_ir/output @@ -637,24 +637,24 @@ Optimized IR AST: { "code": { "block": { - "nativeSrc": "59:790:0", + "nativeSrc": "58:315:0", "nodeType": "YulBlock", "src": "-1:-1:0", "statements": [ { - "nativeSrc": "59:790:0", + "nativeSrc": "68:299:0", "nodeType": "YulBlock", "src": "-1:-1:0", "statements": [ { - "nativeSrc": "122:16:0", + "nativeSrc": "128:27:0", "nodeType": "YulVariableDeclaration", "src": "60:13:0", "value": { "arguments": [ { "kind": "number", - "nativeSrc": "134:3:0", + "nativeSrc": "150:4:0", "nodeType": "YulLiteral", "src": "60:13:0", "type": "", @@ -663,18 +663,18 @@ Optimized IR AST: ], "functionName": { "name": "memoryguard", - "nativeSrc": "122:11:0", + "nativeSrc": "138:11:0", "nodeType": "YulIdentifier", "src": "60:13:0" }, - "nativeSrc": "122:16:0", + "nativeSrc": "138:17:0", "nodeType": "YulFunctionCall", "src": "60:13:0" }, "variables": [ { "name": "_1", - "nativeSrc": "122:16:0", + "nativeSrc": "132:2:0", "nodeType": "YulTypedName", "src": "60:13:0", "type": "" @@ -686,7 +686,7 @@ Optimized IR AST: "arguments": [ { "kind": "number", - "nativeSrc": "118:2:0", + "nativeSrc": "175:2:0", "nodeType": "YulLiteral", "src": "60:13:0", "type": "", @@ -694,28 +694,28 @@ Optimized IR AST: }, { "name": "_1", - "nativeSrc": "122:16:0", + "nativeSrc": "179:2:0", "nodeType": "YulIdentifier", "src": "60:13:0" } ], "functionName": { "name": "mstore", - "nativeSrc": "111:6:0", + "nativeSrc": "168:6:0", "nodeType": "YulIdentifier", "src": "60:13:0" }, - "nativeSrc": "111:28:0", + "nativeSrc": "168:14:0", "nodeType": "YulFunctionCall", "src": "60:13:0" }, - "nativeSrc": "111:28:0", + "nativeSrc": "168:14:0", "nodeType": "YulExpressionStatement", "src": "60:13:0" }, { "body": { - "nativeSrc": "163:83:0", + "nativeSrc": "210:16:0", "nodeType": "YulBlock", "src": "60:13:0", "statements": [ @@ -724,7 +724,7 @@ Optimized IR AST: "arguments": [ { "kind": "number", - "nativeSrc": "650:1:0", + "nativeSrc": "219:1:0", "nodeType": "YulLiteral", "src": "60:13:0", "type": "", @@ -732,7 +732,7 @@ Optimized IR AST: }, { "kind": "number", - "nativeSrc": "650:1:0", + "nativeSrc": "222:1:0", "nodeType": "YulLiteral", "src": "60:13:0", "type": "", @@ -741,15 +741,15 @@ Optimized IR AST: ], "functionName": { "name": "revert", - "nativeSrc": "640:6:0", + "nativeSrc": "212:6:0", "nodeType": "YulIdentifier", "src": "60:13:0" }, - "nativeSrc": "640:12:0", + "nativeSrc": "212:12:0", "nodeType": "YulFunctionCall", "src": "60:13:0" }, - "nativeSrc": "640:12:0", + "nativeSrc": "212:12:0", "nodeType": "YulExpressionStatement", "src": "60:13:0" } @@ -759,20 +759,20 @@ Optimized IR AST: "arguments": [], "functionName": { "name": "callvalue", - "nativeSrc": "151:9:0", + "nativeSrc": "198:9:0", "nodeType": "YulIdentifier", "src": "60:13:0" }, - "nativeSrc": "151:11:0", + "nativeSrc": "198:11:0", "nodeType": "YulFunctionCall", "src": "60:13:0" }, - "nativeSrc": "148:98:0", + "nativeSrc": "195:31:0", "nodeType": "YulIf", "src": "60:13:0" }, { - "nativeSrc": "363:24:0", + "nativeSrc": "239:34:0", "nodeType": "YulVariableDeclaration", "src": "60:13:0", "value": { @@ -780,7 +780,7 @@ Optimized IR AST: { "hexValue": "435f325f6465706c6f796564", "kind": "string", - "nativeSrc": "372:14:0", + "nativeSrc": "258:14:0", "nodeType": "YulLiteral", "src": "60:13:0", "type": "", @@ -789,18 +789,18 @@ Optimized IR AST: ], "functionName": { "name": "datasize", - "nativeSrc": "363:8:0", + "nativeSrc": "249:8:0", "nodeType": "YulIdentifier", "src": "60:13:0" }, - "nativeSrc": "363:24:0", + "nativeSrc": "249:24:0", "nodeType": "YulFunctionCall", "src": "60:13:0" }, "variables": [ { "name": "_2", - "nativeSrc": "363:24:0", + "nativeSrc": "243:2:0", "nodeType": "YulTypedName", "src": "60:13:0", "type": "" @@ -812,7 +812,7 @@ Optimized IR AST: "arguments": [ { "name": "_1", - "nativeSrc": "331:2:0", + "nativeSrc": "295:2:0", "nodeType": "YulIdentifier", "src": "60:13:0" }, @@ -821,7 +821,7 @@ Optimized IR AST: { "hexValue": "435f325f6465706c6f796564", "kind": "string", - "nativeSrc": "346:14:0", + "nativeSrc": "310:14:0", "nodeType": "YulLiteral", "src": "60:13:0", "type": "", @@ -830,32 +830,32 @@ Optimized IR AST: ], "functionName": { "name": "dataoffset", - "nativeSrc": "335:10:0", + "nativeSrc": "299:10:0", "nodeType": "YulIdentifier", "src": "60:13:0" }, - "nativeSrc": "335:26:0", + "nativeSrc": "299:26:0", "nodeType": "YulFunctionCall", "src": "60:13:0" }, { "name": "_2", - "nativeSrc": "363:24:0", + "nativeSrc": "327:2:0", "nodeType": "YulIdentifier", "src": "60:13:0" } ], "functionName": { "name": "codecopy", - "nativeSrc": "322:8:0", + "nativeSrc": "286:8:0", "nodeType": "YulIdentifier", "src": "60:13:0" }, - "nativeSrc": "322:66:0", + "nativeSrc": "286:44:0", "nodeType": "YulFunctionCall", "src": "60:13:0" }, - "nativeSrc": "322:66:0", + "nativeSrc": "286:44:0", "nodeType": "YulExpressionStatement", "src": "60:13:0" }, @@ -864,28 +864,28 @@ Optimized IR AST: "arguments": [ { "name": "_1", - "nativeSrc": "405:2:0", + "nativeSrc": "350:2:0", "nodeType": "YulIdentifier", "src": "60:13:0" }, { "name": "_2", - "nativeSrc": "409:24:0", + "nativeSrc": "354:2:0", "nodeType": "YulIdentifier", "src": "60:13:0" } ], "functionName": { "name": "return", - "nativeSrc": "398:6:0", + "nativeSrc": "343:6:0", "nodeType": "YulIdentifier", "src": "60:13:0" }, - "nativeSrc": "398:36:0", + "nativeSrc": "343:14:0", "nodeType": "YulFunctionCall", "src": "60:13:0" }, - "nativeSrc": "398:36:0", + "nativeSrc": "343:14:0", "nodeType": "YulExpressionStatement", "src": "60:13:0" } @@ -901,12 +901,12 @@ Optimized IR AST: { "code": { "block": { - "nativeSrc": "929:588:0", + "nativeSrc": "453:118:0", "nodeType": "YulBlock", "src": "-1:-1:0", "statements": [ { - "nativeSrc": "929:588:0", + "nativeSrc": "467:94:0", "nodeType": "YulBlock", "src": "-1:-1:0", "statements": [ @@ -915,7 +915,7 @@ Optimized IR AST: "arguments": [ { "kind": "number", - "nativeSrc": "1490:1:0", + "nativeSrc": "542:1:0", "nodeType": "YulLiteral", "src": "60:13:0", "type": "", @@ -923,7 +923,7 @@ Optimized IR AST: }, { "kind": "number", - "nativeSrc": "1490:1:0", + "nativeSrc": "545:1:0", "nodeType": "YulLiteral", "src": "60:13:0", "type": "", @@ -932,15 +932,15 @@ Optimized IR AST: ], "functionName": { "name": "revert", - "nativeSrc": "1480:6:0", + "nativeSrc": "535:6:0", "nodeType": "YulIdentifier", "src": "60:13:0" }, - "nativeSrc": "1480:12:0", + "nativeSrc": "535:12:0", "nodeType": "YulFunctionCall", "src": "60:13:0" }, - "nativeSrc": "1480:12:0", + "nativeSrc": "535:12:0", "nodeType": "YulExpressionStatement", "src": "60:13:0" } diff --git a/test/cmdlineTests/standard_irOptimized_ast_requested/output.json b/test/cmdlineTests/standard_irOptimized_ast_requested/output.json index 91d0e87f3619..5c6762ac9907 100644 --- a/test/cmdlineTests/standard_irOptimized_ast_requested/output.json +++ b/test/cmdlineTests/standard_irOptimized_ast_requested/output.json @@ -5,12 +5,12 @@ "irOptimizedAst": { "code": { "block": { - "nativeSrc": "44:790:0", + "nativeSrc": "43:639:0", "nodeType": "YulBlock", "src": "-1:-1:0", "statements": [ { - "nativeSrc": "44:790:0", + "nativeSrc": "53:421:0", "nodeType": "YulBlock", "src": "-1:-1:0", "statements": [ @@ -19,7 +19,7 @@ "arguments": [ { "kind": "number", - "nativeSrc": "103:2:0", + "nativeSrc": "120:2:0", "nodeType": "YulLiteral", "src": "56:13:0", "type": "", @@ -29,7 +29,7 @@ "arguments": [ { "kind": "number", - "nativeSrc": "119:3:0", + "nativeSrc": "136:4:0", "nodeType": "YulLiteral", "src": "56:13:0", "type": "", @@ -38,32 +38,32 @@ ], "functionName": { "name": "memoryguard", - "nativeSrc": "107:11:0", + "nativeSrc": "124:11:0", "nodeType": "YulIdentifier", "src": "56:13:0" }, - "nativeSrc": "107:16:0", + "nativeSrc": "124:17:0", "nodeType": "YulFunctionCall", "src": "56:13:0" } ], "functionName": { "name": "mstore", - "nativeSrc": "96:6:0", + "nativeSrc": "113:6:0", "nodeType": "YulIdentifier", "src": "56:13:0" }, - "nativeSrc": "96:28:0", + "nativeSrc": "113:29:0", "nodeType": "YulFunctionCall", "src": "56:13:0" }, - "nativeSrc": "96:28:0", + "nativeSrc": "113:29:0", "nodeType": "YulExpressionStatement", "src": "56:13:0" }, { "body": { - "nativeSrc": "148:83:0", + "nativeSrc": "182:111:0", "nodeType": "YulBlock", "src": "56:13:0", "statements": [ @@ -72,15 +72,15 @@ "arguments": [], "functionName": { "name": "revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb", - "nativeSrc": "150:77:0", + "nativeSrc": "200:77:0", "nodeType": "YulIdentifier", "src": "56:13:0" }, - "nativeSrc": "150:79:0", + "nativeSrc": "200:79:0", "nodeType": "YulFunctionCall", "src": "56:13:0" }, - "nativeSrc": "150:79:0", + "nativeSrc": "200:79:0", "nodeType": "YulExpressionStatement", "src": "56:13:0" } @@ -90,38 +90,38 @@ "arguments": [], "functionName": { "name": "callvalue", - "nativeSrc": "136:9:0", + "nativeSrc": "158:9:0", "nodeType": "YulIdentifier", "src": "56:13:0" }, - "nativeSrc": "136:11:0", + "nativeSrc": "158:11:0", "nodeType": "YulFunctionCall", "src": "56:13:0" }, - "nativeSrc": "133:98:0", + "nativeSrc": "155:138:0", "nodeType": "YulIf", "src": "56:13:0" }, { - "nativeSrc": "268:30:0", + "nativeSrc": "306:30:0", "nodeType": "YulVariableDeclaration", "src": "56:13:0", "value": { "arguments": [], "functionName": { "name": "allocate_unbounded", - "nativeSrc": "278:18:0", + "nativeSrc": "316:18:0", "nodeType": "YulIdentifier", "src": "56:13:0" }, - "nativeSrc": "278:20:0", + "nativeSrc": "316:20:0", "nodeType": "YulFunctionCall", "src": "56:13:0" }, "variables": [ { "name": "_1", - "nativeSrc": "272:2:0", + "nativeSrc": "310:2:0", "nodeType": "YulTypedName", "src": "56:13:0", "type": "" @@ -133,7 +133,7 @@ "arguments": [ { "name": "_1", - "nativeSrc": "316:2:0", + "nativeSrc": "358:2:0", "nodeType": "YulIdentifier", "src": "56:13:0" }, @@ -142,7 +142,7 @@ { "hexValue": "435f325f6465706c6f796564", "kind": "string", - "nativeSrc": "331:14:0", + "nativeSrc": "373:14:0", "nodeType": "YulLiteral", "src": "56:13:0", "type": "", @@ -151,11 +151,11 @@ ], "functionName": { "name": "dataoffset", - "nativeSrc": "320:10:0", + "nativeSrc": "362:10:0", "nodeType": "YulIdentifier", "src": "56:13:0" }, - "nativeSrc": "320:26:0", + "nativeSrc": "362:26:0", "nodeType": "YulFunctionCall", "src": "56:13:0" }, @@ -164,7 +164,7 @@ { "hexValue": "435f325f6465706c6f796564", "kind": "string", - "nativeSrc": "357:14:0", + "nativeSrc": "399:14:0", "nodeType": "YulLiteral", "src": "56:13:0", "type": "", @@ -173,26 +173,26 @@ ], "functionName": { "name": "datasize", - "nativeSrc": "348:8:0", + "nativeSrc": "390:8:0", "nodeType": "YulIdentifier", "src": "56:13:0" }, - "nativeSrc": "348:24:0", + "nativeSrc": "390:24:0", "nodeType": "YulFunctionCall", "src": "56:13:0" } ], "functionName": { "name": "codecopy", - "nativeSrc": "307:8:0", + "nativeSrc": "349:8:0", "nodeType": "YulIdentifier", "src": "56:13:0" }, - "nativeSrc": "307:66:0", + "nativeSrc": "349:66:0", "nodeType": "YulFunctionCall", "src": "56:13:0" }, - "nativeSrc": "307:66:0", + "nativeSrc": "349:66:0", "nodeType": "YulExpressionStatement", "src": "56:13:0" }, @@ -201,7 +201,7 @@ "arguments": [ { "name": "_1", - "nativeSrc": "390:2:0", + "nativeSrc": "435:2:0", "nodeType": "YulIdentifier", "src": "56:13:0" }, @@ -210,7 +210,7 @@ { "hexValue": "435f325f6465706c6f796564", "kind": "string", - "nativeSrc": "403:14:0", + "nativeSrc": "448:14:0", "nodeType": "YulLiteral", "src": "56:13:0", "type": "", @@ -219,26 +219,26 @@ ], "functionName": { "name": "datasize", - "nativeSrc": "394:8:0", + "nativeSrc": "439:8:0", "nodeType": "YulIdentifier", "src": "56:13:0" }, - "nativeSrc": "394:24:0", + "nativeSrc": "439:24:0", "nodeType": "YulFunctionCall", "src": "56:13:0" } ], "functionName": { "name": "return", - "nativeSrc": "383:6:0", + "nativeSrc": "428:6:0", "nodeType": "YulIdentifier", "src": "56:13:0" }, - "nativeSrc": "383:36:0", + "nativeSrc": "428:36:0", "nodeType": "YulFunctionCall", "src": "56:13:0" }, - "nativeSrc": "383:36:0", + "nativeSrc": "428:36:0", "nodeType": "YulExpressionStatement", "src": "56:13:0" } @@ -246,19 +246,19 @@ }, { "body": { - "nativeSrc": "469:43:0", + "nativeSrc": "531:23:0", "nodeType": "YulBlock", "src": "56:13:0", "statements": [ { - "nativeSrc": "483:19:0", + "nativeSrc": "533:19:0", "nodeType": "YulAssignment", "src": "56:13:0", "value": { "arguments": [ { "kind": "number", - "nativeSrc": "499:2:0", + "nativeSrc": "549:2:0", "nodeType": "YulLiteral", "src": "56:13:0", "type": "", @@ -267,18 +267,18 @@ ], "functionName": { "name": "mload", - "nativeSrc": "493:5:0", + "nativeSrc": "543:5:0", "nodeType": "YulIdentifier", "src": "56:13:0" }, - "nativeSrc": "493:9:0", + "nativeSrc": "543:9:0", "nodeType": "YulFunctionCall", "src": "56:13:0" }, "variableNames": [ { "name": "memPtr", - "nativeSrc": "483:6:0", + "nativeSrc": "533:6:0", "nodeType": "YulIdentifier", "src": "56:13:0" } @@ -287,12 +287,12 @@ ] }, "name": "allocate_unbounded", - "nativeSrc": "429:83:0", + "nativeSrc": "483:71:0", "nodeType": "YulFunctionDefinition", "returnVariables": [ { "name": "memPtr", - "nativeSrc": "462:6:0", + "nativeSrc": "516:6:0", "nodeType": "YulTypedName", "src": "56:13:0", "type": "" @@ -302,7 +302,7 @@ }, { "body": { - "nativeSrc": "611:36:0", + "nativeSrc": "660:16:0", "nodeType": "YulBlock", "src": "56:13:0", "statements": [ @@ -311,7 +311,7 @@ "arguments": [ { "kind": "number", - "nativeSrc": "632:1:0", + "nativeSrc": "669:1:0", "nodeType": "YulLiteral", "src": "56:13:0", "type": "", @@ -319,7 +319,7 @@ }, { "kind": "number", - "nativeSrc": "635:1:0", + "nativeSrc": "672:1:0", "nodeType": "YulLiteral", "src": "56:13:0", "type": "", @@ -328,22 +328,22 @@ ], "functionName": { "name": "revert", - "nativeSrc": "625:6:0", + "nativeSrc": "662:6:0", "nodeType": "YulIdentifier", "src": "56:13:0" }, - "nativeSrc": "625:12:0", + "nativeSrc": "662:12:0", "nodeType": "YulFunctionCall", "src": "56:13:0" }, - "nativeSrc": "625:12:0", + "nativeSrc": "662:12:0", "nodeType": "YulExpressionStatement", "src": "56:13:0" } ] }, "name": "revert_error_ca66f745a3ce8ff40e2ccaf1ad45db7774001b90d25810abd9040049be7bf4bb", - "nativeSrc": "522:125:0", + "nativeSrc": "563:113:0", "nodeType": "YulFunctionDefinition", "src": "56:13:0" } @@ -357,12 +357,12 @@ { "code": { "block": { - "nativeSrc": "899:588:0", + "nativeSrc": "747:361:0", "nodeType": "YulBlock", "src": "-1:-1:0", "statements": [ { - "nativeSrc": "899:588:0", + "nativeSrc": "761:207:0", "nodeType": "YulBlock", "src": "-1:-1:0", "statements": [ @@ -371,7 +371,7 @@ "arguments": [ { "kind": "number", - "nativeSrc": "966:2:0", + "nativeSrc": "836:2:0", "nodeType": "YulLiteral", "src": "56:13:0", "type": "", @@ -381,7 +381,7 @@ "arguments": [ { "kind": "number", - "nativeSrc": "982:3:0", + "nativeSrc": "852:4:0", "nodeType": "YulLiteral", "src": "56:13:0", "type": "", @@ -390,26 +390,26 @@ ], "functionName": { "name": "memoryguard", - "nativeSrc": "970:11:0", + "nativeSrc": "840:11:0", "nodeType": "YulIdentifier", "src": "56:13:0" }, - "nativeSrc": "970:16:0", + "nativeSrc": "840:17:0", "nodeType": "YulFunctionCall", "src": "56:13:0" } ], "functionName": { "name": "mstore", - "nativeSrc": "959:6:0", + "nativeSrc": "829:6:0", "nodeType": "YulIdentifier", "src": "56:13:0" }, - "nativeSrc": "959:28:0", + "nativeSrc": "829:29:0", "nodeType": "YulFunctionCall", "src": "56:13:0" }, - "nativeSrc": "959:28:0", + "nativeSrc": "829:29:0", "nodeType": "YulExpressionStatement", "src": "56:13:0" }, @@ -418,15 +418,15 @@ "arguments": [], "functionName": { "name": "revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74", - "nativeSrc": "1001:77:0", + "nativeSrc": "875:77:0", "nodeType": "YulIdentifier", "src": "56:13:0" }, - "nativeSrc": "1001:79:0", + "nativeSrc": "875:79:0", "nodeType": "YulFunctionCall", "src": "56:13:0" }, - "nativeSrc": "1001:79:0", + "nativeSrc": "875:79:0", "nodeType": "YulExpressionStatement", "src": "56:13:0" } @@ -434,7 +434,7 @@ }, { "body": { - "nativeSrc": "1432:44:0", + "nativeSrc": "1082:16:0", "nodeType": "YulBlock", "src": "56:13:0", "statements": [ @@ -443,7 +443,7 @@ "arguments": [ { "kind": "number", - "nativeSrc": "1457:1:0", + "nativeSrc": "1091:1:0", "nodeType": "YulLiteral", "src": "56:13:0", "type": "", @@ -451,7 +451,7 @@ }, { "kind": "number", - "nativeSrc": "1460:1:0", + "nativeSrc": "1094:1:0", "nodeType": "YulLiteral", "src": "56:13:0", "type": "", @@ -460,22 +460,22 @@ ], "functionName": { "name": "revert", - "nativeSrc": "1450:6:0", + "nativeSrc": "1084:6:0", "nodeType": "YulIdentifier", "src": "56:13:0" }, - "nativeSrc": "1450:12:0", + "nativeSrc": "1084:12:0", "nodeType": "YulFunctionCall", "src": "56:13:0" }, - "nativeSrc": "1450:12:0", + "nativeSrc": "1084:12:0", "nodeType": "YulExpressionStatement", "src": "56:13:0" } ] }, "name": "revert_error_42b3090547df1d2001c96683413b8cf91c1b902ef5e3cb8d9f6f304cf7446f74", - "nativeSrc": "1343:133:0", + "nativeSrc": "981:117:0", "nodeType": "YulFunctionDefinition", "src": "56:13:0" }