aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLefteris Karapetsas <lefteris@refu.co>2015-03-27 18:53:17 +0800
committerLefteris Karapetsas <lefteris@refu.co>2015-03-27 18:53:17 +0800
commita7e78fadf5d8fd4d1d4300a4d8064d9bf51af687 (patch)
tree13c11ac023928ec9da021fe0ad4b89c12a832c6b
parent9d6d7ccab86da43da03b79f7b74bf7146c0c0b14 (diff)
downloaddexon-solidity-a7e78fadf5d8fd4d1d4300a4d8064d9bf51af687.tar
dexon-solidity-a7e78fadf5d8fd4d1d4300a4d8064d9bf51af687.tar.gz
dexon-solidity-a7e78fadf5d8fd4d1d4300a4d8064d9bf51af687.tar.bz2
dexon-solidity-a7e78fadf5d8fd4d1d4300a4d8064d9bf51af687.tar.lz
dexon-solidity-a7e78fadf5d8fd4d1d4300a4d8064d9bf51af687.tar.xz
dexon-solidity-a7e78fadf5d8fd4d1d4300a4d8064d9bf51af687.tar.zst
dexon-solidity-a7e78fadf5d8fd4d1d4300a4d8064d9bf51af687.zip
Moving contract fullyImplemented check to TypeRequirements
-rw-r--r--AST.cpp4
-rw-r--r--AST.h10
-rw-r--r--Parser.cpp6
3 files changed, 10 insertions, 10 deletions
diff --git a/AST.cpp b/AST.cpp
index 71af3286..52c58170 100644
--- a/AST.cpp
+++ b/AST.cpp
@@ -60,6 +60,7 @@ void ContractDefinition::checkTypeRequirements()
FunctionDefinition const* fallbackFunction = nullptr;
for (ASTPointer<FunctionDefinition> const& function: getDefinedFunctions())
+ {
if (function->getName().empty())
{
if (fallbackFunction)
@@ -71,6 +72,9 @@ void ContractDefinition::checkTypeRequirements()
BOOST_THROW_EXCEPTION(fallbackFunction->getParameterList().createTypeError("Fallback function cannot take parameters."));
}
}
+ if (!function->isFullyImplemented())
+ setFullyImplemented(false);
+ }
for (ASTPointer<ModifierDefinition> const& modifier: getFunctionModifiers())
modifier->checkTypeRequirements();
diff --git a/AST.h b/AST.h
index fa0172b1..c1da90cd 100644
--- a/AST.h
+++ b/AST.h
@@ -206,6 +206,7 @@ public:
/// @return whether this node is fully implemented or not
bool isFullyImplemented() const { return m_implemented; }
+ void setFullyImplemented(bool _implemented) { m_implemented = _implemented; }
protected:
bool m_implemented;
@@ -231,12 +232,11 @@ public:
std::vector<ASTPointer<VariableDeclaration>> const& _stateVariables,
std::vector<ASTPointer<FunctionDefinition>> const& _definedFunctions,
std::vector<ASTPointer<ModifierDefinition>> const& _functionModifiers,
- std::vector<ASTPointer<EventDefinition>> const& _events,
- bool _isFullyImplemented
+ std::vector<ASTPointer<EventDefinition>> const& _events
):
Declaration(_location, _name),
Documented(_documentation),
- ImplementationOptional(_isFullyImplemented),
+ ImplementationOptional(true),
m_baseContracts(_baseContracts),
m_definedStructs(_definedStructs),
m_definedEnums(_definedEnums),
@@ -244,7 +244,7 @@ public:
m_definedFunctions(_definedFunctions),
m_functionModifiers(_functionModifiers),
m_events(_events)
- {}
+ {}
virtual void accept(ASTVisitor& _visitor) override;
virtual void accept(ASTConstVisitor& _visitor) const override;
@@ -421,7 +421,7 @@ public:
m_functionModifiers(_modifiers),
m_returnParameters(_returnParameters),
m_body(_body)
- {}
+ {}
virtual void accept(ASTVisitor& _visitor) override;
virtual void accept(ASTConstVisitor& _visitor) const override;
diff --git a/Parser.cpp b/Parser.cpp
index 3dfedf6d..0f1b3406 100644
--- a/Parser.cpp
+++ b/Parser.cpp
@@ -116,7 +116,6 @@ ASTPointer<ContractDefinition> Parser::parseContractDefinition()
{
ASTNodeFactory nodeFactory(*this);
ASTPointer<ASTString> docString;
- bool contractFullyImplemented = true;
if (m_scanner->getCurrentCommentLiteral() != "")
docString = make_shared<ASTString>(m_scanner->getCurrentCommentLiteral());
expectToken(Token::Contract);
@@ -145,8 +144,6 @@ ASTPointer<ContractDefinition> Parser::parseContractDefinition()
{
ASTPointer<FunctionDefinition> func = parseFunctionDefinition(name.get());
functions.push_back(func);
- if (!func->isFullyImplemented())
- contractFullyImplemented = false;
}
else if (currentToken == Token::Struct)
structs.push_back(parseStructDefinition());
@@ -179,8 +176,7 @@ ASTPointer<ContractDefinition> Parser::parseContractDefinition()
stateVariables,
functions,
modifiers,
- events,
- contractFullyImplemented
+ events
);
}