aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/inlineasm/AsmData.h
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2017-02-24 17:39:55 +0800
committerGitHub <noreply@github.com>2017-02-24 17:39:55 +0800
commit92bf5154fdcf0dfee40bfb5795729a4a9fa71dd6 (patch)
tree4f5d35f34c7598e0640576376d9e4544378ed0f8 /libsolidity/inlineasm/AsmData.h
parentdcc16c81e26f31141ae766096873b5fd7741cdf5 (diff)
parentbec3c6fab6bf02aea5664be4423f45e98db22e8e (diff)
downloaddexon-solidity-92bf5154fdcf0dfee40bfb5795729a4a9fa71dd6.tar
dexon-solidity-92bf5154fdcf0dfee40bfb5795729a4a9fa71dd6.tar.gz
dexon-solidity-92bf5154fdcf0dfee40bfb5795729a4a9fa71dd6.tar.bz2
dexon-solidity-92bf5154fdcf0dfee40bfb5795729a4a9fa71dd6.tar.lz
dexon-solidity-92bf5154fdcf0dfee40bfb5795729a4a9fa71dd6.tar.xz
dexon-solidity-92bf5154fdcf0dfee40bfb5795729a4a9fa71dd6.tar.zst
dexon-solidity-92bf5154fdcf0dfee40bfb5795729a4a9fa71dd6.zip
Merge branch 'develop' into fixNoMobile
Diffstat (limited to 'libsolidity/inlineasm/AsmData.h')
-rw-r--r--libsolidity/inlineasm/AsmData.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/libsolidity/inlineasm/AsmData.h b/libsolidity/inlineasm/AsmData.h
index d622ff54..d61b5803 100644
--- a/libsolidity/inlineasm/AsmData.h
+++ b/libsolidity/inlineasm/AsmData.h
@@ -48,17 +48,22 @@ struct Label { SourceLocation location; std::string name; };
struct Assignment { SourceLocation location; Identifier variableName; };
struct FunctionalAssignment;
struct VariableDeclaration;
+struct FunctionDefinition;
+struct FunctionCall;
struct Block;
-using Statement = boost::variant<Instruction, Literal, Label, Assignment, Identifier, FunctionalAssignment, FunctionalInstruction, VariableDeclaration, Block>;
+using Statement = boost::variant<Instruction, Literal, Label, Assignment, Identifier, FunctionalAssignment, FunctionCall, FunctionalInstruction, VariableDeclaration, FunctionDefinition, Block>;
/// Functional assignment ("x := mload(20)", expects push-1-expression on the right hand
/// side and requires x to occupy exactly one stack slot.
struct FunctionalAssignment { SourceLocation location; Identifier variableName; std::shared_ptr<Statement> value; };
/// Functional instruction, e.g. "mul(mload(20), add(2, x))"
struct FunctionalInstruction { SourceLocation location; Instruction instruction; std::vector<Statement> arguments; };
+struct FunctionCall { SourceLocation location; Identifier functionName; std::vector<Statement> arguments; };
/// Block-scope variable declaration ("let x := mload(20)"), non-hoisted
struct VariableDeclaration { SourceLocation location; std::string name; std::shared_ptr<Statement> value; };
/// Block that creates a scope (frees declared stack variables)
struct Block { SourceLocation location; std::vector<Statement> statements; };
+/// Function definition ("function f(a, b) -> (d, e) { ... }")
+struct FunctionDefinition { SourceLocation location; std::string name; std::vector<std::string> arguments; std::vector<std::string> returns; Block body; };
struct LocationExtractor: boost::static_visitor<SourceLocation>
{