aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/analysis
diff options
context:
space:
mode:
authorYoichi Hirai <i@yoichihirai.com>2017-03-09 00:49:14 +0800
committerGitHub <noreply@github.com>2017-03-09 00:49:14 +0800
commite364909e063cf95922b9611b3d25fb0a4199e43f (patch)
treeb235903bb5c2825f5b99e1534c59a922350c4859 /libsolidity/analysis
parent3f9a7758348a30c4c65a99054e1e1055d1bb20c0 (diff)
parenta3cb69b14b13a64deda8a71387e480a0eec45698 (diff)
downloaddexon-solidity-e364909e063cf95922b9611b3d25fb0a4199e43f.tar
dexon-solidity-e364909e063cf95922b9611b3d25fb0a4199e43f.tar.gz
dexon-solidity-e364909e063cf95922b9611b3d25fb0a4199e43f.tar.bz2
dexon-solidity-e364909e063cf95922b9611b3d25fb0a4199e43f.tar.lz
dexon-solidity-e364909e063cf95922b9611b3d25fb0a4199e43f.tar.xz
dexon-solidity-e364909e063cf95922b9611b3d25fb0a4199e43f.tar.zst
dexon-solidity-e364909e063cf95922b9611b3d25fb0a4199e43f.zip
Merge pull request #1747 from ethereum/fixICEInternalConstructor
Move privateness of constructor into AST itself.
Diffstat (limited to 'libsolidity/analysis')
-rw-r--r--libsolidity/analysis/TypeChecker.cpp4
1 files changed, 1 insertions, 3 deletions
diff --git a/libsolidity/analysis/TypeChecker.cpp b/libsolidity/analysis/TypeChecker.cpp
index ad1abcfb..549cbcca 100644
--- a/libsolidity/analysis/TypeChecker.cpp
+++ b/libsolidity/analysis/TypeChecker.cpp
@@ -77,8 +77,6 @@ bool TypeChecker::visit(ContractDefinition const& _contract)
FunctionDefinition const* function = _contract.constructor();
if (function)
{
- if (!function->isPublic())
- _contract.annotation().hasPublicConstructor = false;
if (!function->returnParameters().empty())
typeError(function->returnParameterList()->location(), "Non-empty \"returns\" directive for constructor.");
if (function->isDeclaredConst())
@@ -1305,7 +1303,7 @@ void TypeChecker::endVisit(NewExpression const& _newExpression)
fatalTypeError(_newExpression.location(), "Identifier is not a contract.");
if (!contract->annotation().isFullyImplemented)
typeError(_newExpression.location(), "Trying to create an instance of an abstract contract.");
- if (!contract->annotation().hasPublicConstructor)
+ if (!contract->constructorIsPublic())
typeError(_newExpression.location(), "Contract with internal constructor cannot be created directly.");
solAssert(!!m_scope, "");