diff options
author | Lefteris Karapetsas <lefteris@refu.co> | 2015-03-27 18:53:17 +0800 |
---|---|---|
committer | Lefteris Karapetsas <lefteris@refu.co> | 2015-03-27 18:53:17 +0800 |
commit | a7e78fadf5d8fd4d1d4300a4d8064d9bf51af687 (patch) | |
tree | 13c11ac023928ec9da021fe0ad4b89c12a832c6b | |
parent | 9d6d7ccab86da43da03b79f7b74bf7146c0c0b14 (diff) | |
download | dexon-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.cpp | 4 | ||||
-rw-r--r-- | AST.h | 10 | ||||
-rw-r--r-- | Parser.cpp | 6 |
3 files changed, 10 insertions, 10 deletions
@@ -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(); @@ -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; @@ -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 ); } |