mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Extract scopes into compiler stack.
This commit is contained in:
@@ -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<GlobalContext>();
|
||||
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;
|
||||
|
||||
@@ -52,6 +52,7 @@ namespace solidity
|
||||
|
||||
// forward declarations
|
||||
class Scanner;
|
||||
class ASTNode;
|
||||
class ContractDefinition;
|
||||
class FunctionDefinition;
|
||||
class SourceUnit;
|
||||
@@ -59,6 +60,7 @@ class Compiler;
|
||||
class GlobalContext;
|
||||
class InterfaceHandler;
|
||||
class Error;
|
||||
class DeclarationContainer;
|
||||
|
||||
enum class DocumentationType: uint8_t
|
||||
{
|
||||
@@ -271,6 +273,7 @@ private:
|
||||
bool m_parseSuccessful;
|
||||
std::map<std::string const, Source> m_sources;
|
||||
std::shared_ptr<GlobalContext> m_globalContext;
|
||||
std::map<ASTNode const*, std::shared_ptr<DeclarationContainer>> m_scopes;
|
||||
std::vector<Source const*> m_sourceOrder;
|
||||
std::map<std::string const, Contract> m_contracts;
|
||||
std::string m_formalTranslation;
|
||||
|
||||
Reference in New Issue
Block a user