aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/ast
diff options
context:
space:
mode:
authorchriseth <c@ethdev.com>2017-03-06 21:12:20 +0800
committerchriseth <c@ethdev.com>2017-03-06 21:12:42 +0800
commitf300bdb020ca55b05f1725dc2157fb636c1e4801 (patch)
tree25bbe9e6a2e8f9196236b3650939f2ddec71cf63 /libsolidity/ast
parentca4e2933dd9b149653070815dd6255e3b8735d6d (diff)
downloaddexon-solidity-f300bdb020ca55b05f1725dc2157fb636c1e4801.tar.gz
dexon-solidity-f300bdb020ca55b05f1725dc2157fb636c1e4801.tar.zst
dexon-solidity-f300bdb020ca55b05f1725dc2157fb636c1e4801.zip
Move public constructor property into AST itself.
Diffstat (limited to 'libsolidity/ast')
-rw-r--r--libsolidity/ast/AST.cpp6
-rw-r--r--libsolidity/ast/AST.h2
-rw-r--r--libsolidity/ast/ASTAnnotations.h2
3 files changed, 8 insertions, 2 deletions
diff --git a/libsolidity/ast/AST.cpp b/libsolidity/ast/AST.cpp
index 8d137bac..03112d2d 100644
--- a/libsolidity/ast/AST.cpp
+++ b/libsolidity/ast/AST.cpp
@@ -132,6 +132,12 @@ FunctionDefinition const* ContractDefinition::constructor() const
return nullptr;
}
+bool ContractDefinition::constructorIsPublic() const
+{
+ FunctionDefinition const* f = constructor();
+ return !f || f->isPublic();
+}
+
FunctionDefinition const* ContractDefinition::fallbackFunction() const
{
for (ContractDefinition const* contract: annotation().linearizedBaseContracts)
diff --git a/libsolidity/ast/AST.h b/libsolidity/ast/AST.h
index 743fdaa1..8031760d 100644
--- a/libsolidity/ast/AST.h
+++ b/libsolidity/ast/AST.h
@@ -356,6 +356,8 @@ public:
/// Returns the constructor or nullptr if no constructor was specified.
FunctionDefinition const* constructor() const;
+ /// @returns true iff the constructor of this contract is public (or non-existing).
+ bool constructorIsPublic() const;
/// Returns the fallback function or nullptr if no fallback function was specified.
FunctionDefinition const* fallbackFunction() const;
diff --git a/libsolidity/ast/ASTAnnotations.h b/libsolidity/ast/ASTAnnotations.h
index 61e97a55..9c4c3ae8 100644
--- a/libsolidity/ast/ASTAnnotations.h
+++ b/libsolidity/ast/ASTAnnotations.h
@@ -80,8 +80,6 @@ struct ContractDefinitionAnnotation: TypeDeclarationAnnotation, DocumentedAnnota
{
/// Whether all functions are implemented.
bool isFullyImplemented = true;
- /// Whether a public constructor (even the default one) is available.
- bool hasPublicConstructor = true;
/// List of all (direct and indirect) base contracts in order from derived to
/// base, including the contract itself.
std::vector<ContractDefinition const*> linearizedBaseContracts;