From e67faa9839ebd0dadef2adf3ed1ef69fac6f65e1 Mon Sep 17 00:00:00 2001 From: chriseth Date: Tue, 31 Jan 2017 22:59:56 +0100 Subject: Extract scopes into compiler stack. --- libsolidity/interface/CompilerStack.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'libsolidity/interface/CompilerStack.cpp') diff --git a/libsolidity/interface/CompilerStack.cpp b/libsolidity/interface/CompilerStack.cpp index 3335c40e..9d8d872f 100644 --- a/libsolidity/interface/CompilerStack.cpp +++ b/libsolidity/interface/CompilerStack.cpp @@ -88,6 +88,7 @@ void CompilerStack::reset(bool _keepSources) m_optimize = false; m_optimizeRuns = 200; m_globalContext.reset(); + m_scopes.clear(); m_sourceOrder.clear(); m_contracts.clear(); m_errors.clear(); @@ -165,7 +166,7 @@ bool CompilerStack::parse() noErrors = false; m_globalContext = make_shared(); - NameAndTypeResolver resolver(m_globalContext->declarations(), m_errors); + NameAndTypeResolver resolver(m_globalContext->declarations(), m_scopes, m_errors); for (Source const* source: m_sourceOrder) if (!resolver.registerDeclarations(*source->ast)) return false; -- cgit v1.2.3 From f300bdb020ca55b05f1725dc2157fb636c1e4801 Mon Sep 17 00:00:00 2001 From: chriseth Date: Mon, 6 Mar 2017 14:12:20 +0100 Subject: Move public constructor property into AST itself. --- libsolidity/interface/CompilerStack.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libsolidity/interface/CompilerStack.cpp') diff --git a/libsolidity/interface/CompilerStack.cpp b/libsolidity/interface/CompilerStack.cpp index 9d8d872f..edfca094 100644 --- a/libsolidity/interface/CompilerStack.cpp +++ b/libsolidity/interface/CompilerStack.cpp @@ -628,7 +628,7 @@ void CompilerStack::compileContract( if ( _compiledContracts.count(&_contract) || !_contract.annotation().isFullyImplemented || - !_contract.annotation().hasPublicConstructor + !_contract.constructorIsPublic() ) return; for (auto const* dependency: _contract.annotation().contractDependencies) -- cgit v1.2.3 From 5c5d83fd704e18f88d80e346386e97ed600b7281 Mon Sep 17 00:00:00 2001 From: chriseth Date: Fri, 3 Mar 2017 12:51:51 +0100 Subject: Check for circular references in constant variables. --- libsolidity/interface/CompilerStack.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'libsolidity/interface/CompilerStack.cpp') diff --git a/libsolidity/interface/CompilerStack.cpp b/libsolidity/interface/CompilerStack.cpp index 9d8d872f..594efb1e 100644 --- a/libsolidity/interface/CompilerStack.cpp +++ b/libsolidity/interface/CompilerStack.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -217,6 +218,14 @@ bool CompilerStack::parse() m_contracts[contract->fullyQualifiedName()].contract = contract; } + if (noErrors) + { + PostTypeChecker postTypeChecker(m_errors); + for (Source const* source: m_sourceOrder) + if (!postTypeChecker.check(*source->ast)) + noErrors = false; + } + if (noErrors) { StaticAnalyzer staticAnalyzer(m_errors); -- cgit v1.2.3