/src/solidity/libyul/AST.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | This file is part of solidity. |
3 | | |
4 | | solidity is free software: you can redistribute it and/or modify |
5 | | it under the terms of the GNU General Public License as published by |
6 | | the Free Software Foundation, either version 3 of the License, or |
7 | | (at your option) any later version. |
8 | | |
9 | | solidity is distributed in the hope that it will be useful, |
10 | | but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 | | GNU General Public License for more details. |
13 | | |
14 | | You should have received a copy of the GNU General Public License |
15 | | along with solidity. If not, see <http://www.gnu.org/licenses/>. |
16 | | */ |
17 | | // SPDX-License-Identifier: GPL-3.0 |
18 | | /** |
19 | | * @author Christian <c@ethdev.com> |
20 | | * @date 2016 |
21 | | * Parsed inline assembly to be used by the AST |
22 | | */ |
23 | | |
24 | | #pragma once |
25 | | |
26 | | #include <libyul/ASTForward.h> |
27 | | #include <libyul/YulString.h> |
28 | | |
29 | | #include <liblangutil/SourceLocation.h> |
30 | | |
31 | | #include <memory> |
32 | | #include <optional> |
33 | | |
34 | | namespace solidity::yul |
35 | | { |
36 | | |
37 | | using Type = YulString; |
38 | | |
39 | | struct DebugData |
40 | | { |
41 | | explicit DebugData( |
42 | | langutil::SourceLocation _nativeLocation, |
43 | | langutil::SourceLocation _originLocation = {}, |
44 | | std::optional<int64_t> _astID = {} |
45 | | ): |
46 | | nativeLocation(std::move(_nativeLocation)), |
47 | | originLocation(std::move(_originLocation)), |
48 | | astID(std::move(_astID)) |
49 | 13.0M | {} |
50 | | |
51 | | static std::shared_ptr<DebugData const> create( |
52 | | langutil::SourceLocation _nativeLocation = {}, |
53 | | langutil::SourceLocation _originLocation = {}, |
54 | | std::optional<int64_t> _astID = {} |
55 | | ) |
56 | 13.0M | { |
57 | 13.0M | return std::make_shared<DebugData const>( |
58 | 13.0M | std::move(_nativeLocation), |
59 | 13.0M | std::move(_originLocation), |
60 | 13.0M | std::move(_astID) |
61 | 13.0M | ); |
62 | 13.0M | } |
63 | | |
64 | | /// Location in the Yul code. |
65 | | langutil::SourceLocation nativeLocation; |
66 | | /// Location in the original source that the Yul code was produced from. |
67 | | /// Optional. Only present if the Yul source contains location annotations. |
68 | | langutil::SourceLocation originLocation; |
69 | | /// ID in the (Solidity) source AST. |
70 | | std::optional<int64_t> astID; |
71 | | }; |
72 | | |
73 | | struct TypedName { std::shared_ptr<DebugData const> debugData; YulString name; Type type; }; |
74 | | using TypedNameList = std::vector<TypedName>; |
75 | | |
76 | | /// Literal number or string (up to 32 bytes) |
77 | | enum class LiteralKind { Number, Boolean, String }; |
78 | | struct Literal { std::shared_ptr<DebugData const> debugData; LiteralKind kind; YulString value; Type type; }; |
79 | | /// External / internal identifier or label reference |
80 | | struct Identifier { std::shared_ptr<DebugData const> debugData; YulString name; }; |
81 | | /// Assignment ("x := mload(20:u256)", expects push-1-expression on the right hand |
82 | | /// side and requires x to occupy exactly one stack slot. |
83 | | /// |
84 | | /// Multiple assignment ("x, y := f()"), where the left hand side variables each occupy |
85 | | /// a single stack slot and expects a single expression on the right hand returning |
86 | | /// the same amount of items as the number of variables. |
87 | | struct Assignment { std::shared_ptr<DebugData const> debugData; std::vector<Identifier> variableNames; std::unique_ptr<Expression> value; }; |
88 | | struct FunctionCall { std::shared_ptr<DebugData const> debugData; Identifier functionName; std::vector<Expression> arguments; }; |
89 | | /// Statement that contains only a single expression |
90 | | struct ExpressionStatement { std::shared_ptr<DebugData const> debugData; Expression expression; }; |
91 | | /// Block-scope variable declaration ("let x:u256 := mload(20:u256)"), non-hoisted |
92 | | struct VariableDeclaration { std::shared_ptr<DebugData const> debugData; TypedNameList variables; std::unique_ptr<Expression> value; }; |
93 | | /// Block that creates a scope (frees declared stack variables) |
94 | | struct Block { std::shared_ptr<DebugData const> debugData; std::vector<Statement> statements; }; |
95 | | /// Function definition ("function f(a, b) -> (d, e) { ... }") |
96 | | struct FunctionDefinition { std::shared_ptr<DebugData const> debugData; YulString name; TypedNameList parameters; TypedNameList returnVariables; Block body; }; |
97 | | /// Conditional execution without "else" part. |
98 | | struct If { std::shared_ptr<DebugData const> debugData; std::unique_ptr<Expression> condition; Block body; }; |
99 | | /// Switch case or default case |
100 | | struct Case { std::shared_ptr<DebugData const> debugData; std::unique_ptr<Literal> value; Block body; }; |
101 | | /// Switch statement |
102 | | struct Switch { std::shared_ptr<DebugData const> debugData; std::unique_ptr<Expression> expression; std::vector<Case> cases; }; |
103 | | struct ForLoop { std::shared_ptr<DebugData const> debugData; Block pre; std::unique_ptr<Expression> condition; Block post; Block body; }; |
104 | | /// Break statement (valid within for loop) |
105 | | struct Break { std::shared_ptr<DebugData const> debugData; }; |
106 | | /// Continue statement (valid within for loop) |
107 | | struct Continue { std::shared_ptr<DebugData const> debugData; }; |
108 | | /// Leave statement (valid within function) |
109 | | struct Leave { std::shared_ptr<DebugData const> debugData; }; |
110 | | |
111 | | /// Extracts the IR source location from a Yul node. |
112 | | template <class T> inline langutil::SourceLocation nativeLocationOf(T const& _node) |
113 | 17.2M | { |
114 | 17.2M | return _node.debugData ? _node.debugData->nativeLocation : langutil::SourceLocation{}; |
115 | 17.2M | } solidity::langutil::SourceLocation solidity::yul::nativeLocationOf<solidity::yul::Block>(solidity::yul::Block const&) Line | Count | Source | 113 | 857k | { | 114 | 857k | return _node.debugData ? _node.debugData->nativeLocation : langutil::SourceLocation{}; | 115 | 857k | } |
solidity::langutil::SourceLocation solidity::yul::nativeLocationOf<solidity::yul::FunctionDefinition>(solidity::yul::FunctionDefinition const&) Line | Count | Source | 113 | 1.79M | { | 114 | 1.79M | return _node.debugData ? _node.debugData->nativeLocation : langutil::SourceLocation{}; | 115 | 1.79M | } |
solidity::langutil::SourceLocation solidity::yul::nativeLocationOf<solidity::yul::TypedName>(solidity::yul::TypedName const&) Line | Count | Source | 113 | 3.58M | { | 114 | 3.58M | return _node.debugData ? _node.debugData->nativeLocation : langutil::SourceLocation{}; | 115 | 3.58M | } |
solidity::langutil::SourceLocation solidity::yul::nativeLocationOf<solidity::yul::Identifier>(solidity::yul::Identifier const&) Line | Count | Source | 113 | 5.38M | { | 114 | 5.38M | return _node.debugData ? _node.debugData->nativeLocation : langutil::SourceLocation{}; | 115 | 5.38M | } |
solidity::langutil::SourceLocation solidity::yul::nativeLocationOf<solidity::yul::FunctionCall>(solidity::yul::FunctionCall const&) Line | Count | Source | 113 | 2.15M | { | 114 | 2.15M | return _node.debugData ? _node.debugData->nativeLocation : langutil::SourceLocation{}; | 115 | 2.15M | } |
Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::nativeLocationOf<solidity::yul::ExpressionStatement>(solidity::yul::ExpressionStatement const&) Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::nativeLocationOf<solidity::yul::Assignment>(solidity::yul::Assignment const&) solidity::langutil::SourceLocation solidity::yul::nativeLocationOf<solidity::yul::VariableDeclaration>(solidity::yul::VariableDeclaration const&) Line | Count | Source | 113 | 541k | { | 114 | 541k | return _node.debugData ? _node.debugData->nativeLocation : langutil::SourceLocation{}; | 115 | 541k | } |
Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::nativeLocationOf<solidity::yul::If>(solidity::yul::If const&) Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::nativeLocationOf<solidity::yul::Switch>(solidity::yul::Switch const&) Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::nativeLocationOf<solidity::yul::ForLoop>(solidity::yul::ForLoop const&) Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::nativeLocationOf<solidity::yul::Break>(solidity::yul::Break const&) Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::nativeLocationOf<solidity::yul::Continue>(solidity::yul::Continue const&) Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::nativeLocationOf<solidity::yul::Leave>(solidity::yul::Leave const&) solidity::langutil::SourceLocation solidity::yul::nativeLocationOf<solidity::yul::Literal>(solidity::yul::Literal const&) Line | Count | Source | 113 | 2.89M | { | 114 | 2.89M | return _node.debugData ? _node.debugData->nativeLocation : langutil::SourceLocation{}; | 115 | 2.89M | } |
Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::nativeLocationOf<solidity::yul::Case>(solidity::yul::Case const&) |
116 | | |
117 | | /// Extracts the IR source location from a Yul node. |
118 | | template <class... Args> inline langutil::SourceLocation nativeLocationOf(std::variant<Args...> const& _node) |
119 | 6.68M | { |
120 | 6.68M | return std::visit([](auto const& _arg) { return nativeLocationOf(_arg); }, _node); Unexecuted instantiation: auto solidity::yul::nativeLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::ExpressionStatement>(solidity::yul::ExpressionStatement const&) const Unexecuted instantiation: auto solidity::yul::nativeLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Assignment>(solidity::yul::Assignment const&) const Unexecuted instantiation: auto solidity::yul::nativeLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::VariableDeclaration>(solidity::yul::VariableDeclaration const&) const Unexecuted instantiation: auto solidity::yul::nativeLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::FunctionDefinition>(solidity::yul::FunctionDefinition const&) const Unexecuted instantiation: auto solidity::yul::nativeLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::If>(solidity::yul::If const&) const Unexecuted instantiation: auto solidity::yul::nativeLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Switch>(solidity::yul::Switch const&) const Unexecuted instantiation: auto solidity::yul::nativeLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::ForLoop>(solidity::yul::ForLoop const&) const Unexecuted instantiation: auto solidity::yul::nativeLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Break>(solidity::yul::Break const&) const Unexecuted instantiation: auto solidity::yul::nativeLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Continue>(solidity::yul::Continue const&) const Unexecuted instantiation: auto solidity::yul::nativeLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Leave>(solidity::yul::Leave const&) const Unexecuted instantiation: auto solidity::yul::nativeLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Block>(solidity::yul::Block const&) const auto solidity::yul::nativeLocationOf<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal>(std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::FunctionCall>(solidity::yul::FunctionCall const&) const Line | Count | Source | 120 | 2.15M | return std::visit([](auto const& _arg) { return nativeLocationOf(_arg); }, _node); |
auto solidity::yul::nativeLocationOf<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal>(std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Identifier>(solidity::yul::Identifier const&) const Line | Count | Source | 120 | 3.09M | return std::visit([](auto const& _arg) { return nativeLocationOf(_arg); }, _node); |
auto solidity::yul::nativeLocationOf<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal>(std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Literal>(solidity::yul::Literal const&) const Line | Count | Source | 120 | 1.43M | return std::visit([](auto const& _arg) { return nativeLocationOf(_arg); }, _node); |
|
121 | 6.68M | } Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::nativeLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&) solidity::langutil::SourceLocation solidity::yul::nativeLocationOf<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal>(std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&) Line | Count | Source | 119 | 6.68M | { | 120 | 6.68M | return std::visit([](auto const& _arg) { return nativeLocationOf(_arg); }, _node); | 121 | 6.68M | } |
|
122 | | |
123 | | /// Extracts the original source location from a Yul node. |
124 | | template <class T> inline langutil::SourceLocation originLocationOf(T const& _node) |
125 | 17.0M | { |
126 | 17.0M | return _node.debugData ? _node.debugData->originLocation : langutil::SourceLocation{}; |
127 | 17.0M | } solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::FunctionDefinition>(solidity::yul::FunctionDefinition const&) Line | Count | Source | 125 | 1.09M | { | 126 | 1.09M | return _node.debugData ? _node.debugData->originLocation : langutil::SourceLocation{}; | 127 | 1.09M | } |
Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::TypedName>(solidity::yul::TypedName const&) solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::Identifier>(solidity::yul::Identifier const&) Line | Count | Source | 125 | 3.13M | { | 126 | 3.13M | return _node.debugData ? _node.debugData->originLocation : langutil::SourceLocation{}; | 127 | 3.13M | } |
solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::ExpressionStatement>(solidity::yul::ExpressionStatement const&) Line | Count | Source | 125 | 773k | { | 126 | 773k | return _node.debugData ? _node.debugData->originLocation : langutil::SourceLocation{}; | 127 | 773k | } |
solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::Assignment>(solidity::yul::Assignment const&) Line | Count | Source | 125 | 906k | { | 126 | 906k | return _node.debugData ? _node.debugData->originLocation : langutil::SourceLocation{}; | 127 | 906k | } |
solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::VariableDeclaration>(solidity::yul::VariableDeclaration const&) Line | Count | Source | 125 | 1.42M | { | 126 | 1.42M | return _node.debugData ? _node.debugData->originLocation : langutil::SourceLocation{}; | 127 | 1.42M | } |
solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::If>(solidity::yul::If const&) Line | Count | Source | 125 | 477k | { | 126 | 477k | return _node.debugData ? _node.debugData->originLocation : langutil::SourceLocation{}; | 127 | 477k | } |
solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::Switch>(solidity::yul::Switch const&) Line | Count | Source | 125 | 18.1k | { | 126 | 18.1k | return _node.debugData ? _node.debugData->originLocation : langutil::SourceLocation{}; | 127 | 18.1k | } |
solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::ForLoop>(solidity::yul::ForLoop const&) Line | Count | Source | 125 | 183k | { | 126 | 183k | return _node.debugData ? _node.debugData->originLocation : langutil::SourceLocation{}; | 127 | 183k | } |
Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::Break>(solidity::yul::Break const&) Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::Continue>(solidity::yul::Continue const&) Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::Leave>(solidity::yul::Leave const&) solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::Block>(solidity::yul::Block const&) Line | Count | Source | 125 | 1.22M | { | 126 | 1.22M | return _node.debugData ? _node.debugData->originLocation : langutil::SourceLocation{}; | 127 | 1.22M | } |
solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::FunctionCall>(solidity::yul::FunctionCall const&) Line | Count | Source | 125 | 6.34M | { | 126 | 6.34M | return _node.debugData ? _node.debugData->originLocation : langutil::SourceLocation{}; | 127 | 6.34M | } |
solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::Literal>(solidity::yul::Literal const&) Line | Count | Source | 125 | 1.45M | { | 126 | 1.45M | return _node.debugData ? _node.debugData->originLocation : langutil::SourceLocation{}; | 127 | 1.45M | } |
solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::Case>(solidity::yul::Case const&) Line | Count | Source | 125 | 20.9k | { | 126 | 20.9k | return _node.debugData ? _node.debugData->originLocation : langutil::SourceLocation{}; | 127 | 20.9k | } |
Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::CFG::FunctionCall>(solidity::yul::CFG::FunctionCall const&) Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::CFG::BuiltinCall>(solidity::yul::CFG::BuiltinCall const&) Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::VariableSlot>(solidity::yul::VariableSlot const&) Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::LiteralSlot>(solidity::yul::LiteralSlot const&) Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::CFG::BasicBlock>(solidity::yul::CFG::BasicBlock const&) Unexecuted instantiation: solidity::langutil::SourceLocation solidity::yul::originLocationOf<solidity::yul::CFG::FunctionInfo>(solidity::yul::CFG::FunctionInfo const&) |
128 | | |
129 | | /// Extracts the original source location from a Yul node. |
130 | | template <class... Args> inline langutil::SourceLocation originLocationOf(std::variant<Args...> const& _node) |
131 | 0 | { |
132 | 0 | return std::visit([](auto const& _arg) { return originLocationOf(_arg); }, _node); Unexecuted instantiation: auto solidity::yul::originLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::ExpressionStatement>(solidity::yul::ExpressionStatement const&) const Unexecuted instantiation: auto solidity::yul::originLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Assignment>(solidity::yul::Assignment const&) const Unexecuted instantiation: auto solidity::yul::originLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::VariableDeclaration>(solidity::yul::VariableDeclaration const&) const Unexecuted instantiation: auto solidity::yul::originLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::FunctionDefinition>(solidity::yul::FunctionDefinition const&) const Unexecuted instantiation: auto solidity::yul::originLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::If>(solidity::yul::If const&) const Unexecuted instantiation: auto solidity::yul::originLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Switch>(solidity::yul::Switch const&) const Unexecuted instantiation: auto solidity::yul::originLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::ForLoop>(solidity::yul::ForLoop const&) const Unexecuted instantiation: auto solidity::yul::originLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Break>(solidity::yul::Break const&) const Unexecuted instantiation: auto solidity::yul::originLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Continue>(solidity::yul::Continue const&) const Unexecuted instantiation: auto solidity::yul::originLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Leave>(solidity::yul::Leave const&) const Unexecuted instantiation: auto solidity::yul::originLocationOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Block>(solidity::yul::Block const&) const |
133 | 0 | } |
134 | | |
135 | | /// Extracts the debug data from a Yul node. |
136 | | template <class T> inline std::shared_ptr<DebugData const> debugDataOf(T const& _node) |
137 | 1.67M | { |
138 | 1.67M | return _node.debugData; |
139 | 1.67M | } std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::FunctionCall>(solidity::yul::FunctionCall const&) Line | Count | Source | 137 | 773k | { | 138 | 773k | return _node.debugData; | 139 | 773k | } |
std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::Identifier>(solidity::yul::Identifier const&) Line | Count | Source | 137 | 906k | { | 138 | 906k | return _node.debugData; | 139 | 906k | } |
Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::Literal>(solidity::yul::Literal const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::CFG::BasicBlock::Jump>(solidity::yul::CFG::BasicBlock::Jump const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::CFG::BasicBlock::ConditionalJump>(solidity::yul::CFG::BasicBlock::ConditionalJump const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::CFG::BasicBlock::FunctionReturn>(solidity::yul::CFG::BasicBlock::FunctionReturn const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::CFG::BasicBlock>(solidity::yul::CFG::BasicBlock const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::CFG::FunctionCall>(solidity::yul::CFG::FunctionCall const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::CFG::BuiltinCall>(solidity::yul::CFG::BuiltinCall const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::CFG::Assignment>(solidity::yul::CFG::Assignment const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::CFG::FunctionInfo>(solidity::yul::CFG::FunctionInfo const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::Block>(solidity::yul::Block const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::If>(solidity::yul::If const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::Switch>(solidity::yul::Switch const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::Case>(solidity::yul::Case const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::ForLoop>(solidity::yul::ForLoop const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::Break>(solidity::yul::Break const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::Continue>(solidity::yul::Continue const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::Leave>(solidity::yul::Leave const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::FunctionDefinition>(solidity::yul::FunctionDefinition const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::ExpressionStatement>(solidity::yul::ExpressionStatement const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::Assignment>(solidity::yul::Assignment const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::VariableDeclaration>(solidity::yul::VariableDeclaration const&) |
140 | | |
141 | | /// Extracts the debug data from a Yul node. |
142 | | template <class... Args> inline std::shared_ptr<DebugData const> debugDataOf(std::variant<Args...> const& _node) |
143 | 1.67M | { |
144 | 1.67M | return std::visit([](auto const& _arg) { return debugDataOf(_arg); }, _node); auto solidity::yul::debugDataOf<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal>(std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::FunctionCall>(solidity::yul::FunctionCall const&) const Line | Count | Source | 144 | 773k | return std::visit([](auto const& _arg) { return debugDataOf(_arg); }, _node); |
Unexecuted instantiation: auto solidity::yul::debugDataOf<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal>(std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Identifier>(solidity::yul::Identifier const&) const Unexecuted instantiation: auto solidity::yul::debugDataOf<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal>(std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Literal>(solidity::yul::Literal const&) const Unexecuted instantiation: auto solidity::yul::debugDataOf<solidity::yul::Literal, solidity::yul::Identifier>(std::__1::variant<solidity::yul::Literal, solidity::yul::Identifier> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Literal>(solidity::yul::Literal const&) const auto solidity::yul::debugDataOf<solidity::yul::Literal, solidity::yul::Identifier>(std::__1::variant<solidity::yul::Literal, solidity::yul::Identifier> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Identifier>(solidity::yul::Identifier const&) const Line | Count | Source | 144 | 906k | return std::visit([](auto const& _arg) { return debugDataOf(_arg); }, _node); |
Unexecuted instantiation: auto solidity::yul::debugDataOf<solidity::yul::CFG::FunctionCall, solidity::yul::CFG::BuiltinCall, solidity::yul::CFG::Assignment>(std::__1::variant<solidity::yul::CFG::FunctionCall, solidity::yul::CFG::BuiltinCall, solidity::yul::CFG::Assignment> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::CFG::FunctionCall>(solidity::yul::CFG::FunctionCall const&) const Unexecuted instantiation: auto solidity::yul::debugDataOf<solidity::yul::CFG::FunctionCall, solidity::yul::CFG::BuiltinCall, solidity::yul::CFG::Assignment>(std::__1::variant<solidity::yul::CFG::FunctionCall, solidity::yul::CFG::BuiltinCall, solidity::yul::CFG::Assignment> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::CFG::BuiltinCall>(solidity::yul::CFG::BuiltinCall const&) const Unexecuted instantiation: auto solidity::yul::debugDataOf<solidity::yul::CFG::FunctionCall, solidity::yul::CFG::BuiltinCall, solidity::yul::CFG::Assignment>(std::__1::variant<solidity::yul::CFG::FunctionCall, solidity::yul::CFG::BuiltinCall, solidity::yul::CFG::Assignment> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::CFG::Assignment>(solidity::yul::CFG::Assignment const&) const Unexecuted instantiation: auto solidity::yul::debugDataOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::ExpressionStatement>(solidity::yul::ExpressionStatement const&) const Unexecuted instantiation: auto solidity::yul::debugDataOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Assignment>(solidity::yul::Assignment const&) const Unexecuted instantiation: auto solidity::yul::debugDataOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::VariableDeclaration>(solidity::yul::VariableDeclaration const&) const Unexecuted instantiation: auto solidity::yul::debugDataOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::FunctionDefinition>(solidity::yul::FunctionDefinition const&) const Unexecuted instantiation: auto solidity::yul::debugDataOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::If>(solidity::yul::If const&) const Unexecuted instantiation: auto solidity::yul::debugDataOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Switch>(solidity::yul::Switch const&) const Unexecuted instantiation: auto solidity::yul::debugDataOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::ForLoop>(solidity::yul::ForLoop const&) const Unexecuted instantiation: auto solidity::yul::debugDataOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Break>(solidity::yul::Break const&) const Unexecuted instantiation: auto solidity::yul::debugDataOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Continue>(solidity::yul::Continue const&) const Unexecuted instantiation: auto solidity::yul::debugDataOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Leave>(solidity::yul::Leave const&) const Unexecuted instantiation: auto solidity::yul::debugDataOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&)::{lambda(auto:1 const&)#1}::operator()<solidity::yul::Block>(solidity::yul::Block const&) const |
145 | 1.67M | } std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal>(std::__1::variant<solidity::yul::FunctionCall, solidity::yul::Identifier, solidity::yul::Literal> const&) Line | Count | Source | 143 | 773k | { | 144 | 773k | return std::visit([](auto const& _arg) { return debugDataOf(_arg); }, _node); | 145 | 773k | } |
std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::Literal, solidity::yul::Identifier>(std::__1::variant<solidity::yul::Literal, solidity::yul::Identifier> const&) Line | Count | Source | 143 | 906k | { | 144 | 906k | return std::visit([](auto const& _arg) { return debugDataOf(_arg); }, _node); | 145 | 906k | } |
Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::CFG::FunctionCall, solidity::yul::CFG::BuiltinCall, solidity::yul::CFG::Assignment>(std::__1::variant<solidity::yul::CFG::FunctionCall, solidity::yul::CFG::BuiltinCall, solidity::yul::CFG::Assignment> const&) Unexecuted instantiation: std::__1::shared_ptr<solidity::yul::DebugData const> solidity::yul::debugDataOf<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block>(std::__1::variant<solidity::yul::ExpressionStatement, solidity::yul::Assignment, solidity::yul::VariableDeclaration, solidity::yul::FunctionDefinition, solidity::yul::If, solidity::yul::Switch, solidity::yul::ForLoop, solidity::yul::Break, solidity::yul::Continue, solidity::yul::Leave, solidity::yul::Block> const&) |
146 | | |
147 | | inline bool hasDefaultCase(Switch const& _switch) |
148 | 0 | { |
149 | 0 | return std::any_of( |
150 | 0 | _switch.cases.begin(), |
151 | 0 | _switch.cases.end(), |
152 | 0 | [](Case const& _case) { return !_case.value; } |
153 | 0 | ); |
154 | 0 | } |
155 | | |
156 | | } |