aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2017-02-08 06:11:50 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2017-03-18 00:27:04 +0800
commit6d4628ace4082a4318dc61fff49e8d193eea36e9 (patch)
tree285b3de14bf249fd5955682bbe4dcf03eab4e18c /libsolidity
parentc37397c17871591bb897ca6f390a315f2ad0b030 (diff)
downloaddexon-solidity-6d4628ace4082a4318dc61fff49e8d193eea36e9.tar.gz
dexon-solidity-6d4628ace4082a4318dc61fff49e8d193eea36e9.tar.zst
dexon-solidity-6d4628ace4082a4318dc61fff49e8d193eea36e9.zip
Add ContractKind to ContractDefinition
Diffstat (limited to 'libsolidity')
-rw-r--r--libsolidity/ast/AST.h12
-rw-r--r--libsolidity/parsing/Parser.cpp2
2 files changed, 9 insertions, 5 deletions
diff --git a/libsolidity/ast/AST.h b/libsolidity/ast/AST.h
index 8031760d..02234ffc 100644
--- a/libsolidity/ast/AST.h
+++ b/libsolidity/ast/AST.h
@@ -316,19 +316,21 @@ protected:
class ContractDefinition: public Declaration, public Documented
{
public:
+ enum class ContractKind { Interface, Contract, Library };
+
ContractDefinition(
SourceLocation const& _location,
ASTPointer<ASTString> const& _name,
ASTPointer<ASTString> const& _documentation,
std::vector<ASTPointer<InheritanceSpecifier>> const& _baseContracts,
std::vector<ASTPointer<ASTNode>> const& _subNodes,
- bool _isLibrary
+ ContractKind _contractKind = ContractKind::Contract
):
Declaration(_location, _name),
Documented(_documentation),
m_baseContracts(_baseContracts),
m_subNodes(_subNodes),
- m_isLibrary(_isLibrary)
+ m_contractKind(_contractKind)
{}
virtual void accept(ASTVisitor& _visitor) override;
@@ -344,7 +346,7 @@ public:
std::vector<FunctionDefinition const*> definedFunctions() const { return filteredNodes<FunctionDefinition>(m_subNodes); }
std::vector<EventDefinition const*> events() const { return filteredNodes<EventDefinition>(m_subNodes); }
std::vector<EventDefinition const*> const& interfaceEvents() const;
- bool isLibrary() const { return m_isLibrary; }
+ bool isLibrary() const { return m_contractKind == ContractKind::Library; }
/// @returns a map of canonical function signatures to FunctionDefinitions
/// as intended for use by the ABI.
@@ -371,10 +373,12 @@ public:
virtual ContractDefinitionAnnotation& annotation() const override;
+ ContractKind contractKind() const { return m_contractKind; }
+
private:
std::vector<ASTPointer<InheritanceSpecifier>> m_baseContracts;
std::vector<ASTPointer<ASTNode>> m_subNodes;
- bool m_isLibrary;
+ ContractKind m_contractKind;
// parsed Natspec documentation of the contract.
Json::Value m_userDocumentation;
diff --git a/libsolidity/parsing/Parser.cpp b/libsolidity/parsing/Parser.cpp
index e26e2908..acd87d55 100644
--- a/libsolidity/parsing/Parser.cpp
+++ b/libsolidity/parsing/Parser.cpp
@@ -252,7 +252,7 @@ ASTPointer<ContractDefinition> Parser::parseContractDefinition(bool _isLibrary)
docString,
baseContracts,
subNodes,
- _isLibrary
+ _isLibrary ? ContractDefinition::ContractKind::Library : ContractDefinition::ContractKind::Contract
);
}