aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/interface/CompilerStack.cpp
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2017-09-14 02:43:16 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2017-10-05 03:30:14 +0800
commitf96e932243273050fcf2bd4ba89d80412252a9d9 (patch)
treeb97d38396eea5a13248ca4a84284b02913c36362 /libsolidity/interface/CompilerStack.cpp
parent19274c78904632d568bf56e95603d22ef091ce77 (diff)
downloaddexon-solidity-f96e932243273050fcf2bd4ba89d80412252a9d9.tar
dexon-solidity-f96e932243273050fcf2bd4ba89d80412252a9d9.tar.gz
dexon-solidity-f96e932243273050fcf2bd4ba89d80412252a9d9.tar.bz2
dexon-solidity-f96e932243273050fcf2bd4ba89d80412252a9d9.tar.lz
dexon-solidity-f96e932243273050fcf2bd4ba89d80412252a9d9.tar.xz
dexon-solidity-f96e932243273050fcf2bd4ba89d80412252a9d9.tar.zst
dexon-solidity-f96e932243273050fcf2bd4ba89d80412252a9d9.zip
Provide optional list of contract names to CompilerStack.compile
Diffstat (limited to 'libsolidity/interface/CompilerStack.cpp')
-rw-r--r--libsolidity/interface/CompilerStack.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/libsolidity/interface/CompilerStack.cpp b/libsolidity/interface/CompilerStack.cpp
index 51544f8a..b99fe4ee 100644
--- a/libsolidity/interface/CompilerStack.cpp
+++ b/libsolidity/interface/CompilerStack.cpp
@@ -252,6 +252,14 @@ bool CompilerStack::parseAndAnalyze()
return parse() && analyze();
}
+bool CompilerStack::isRequestedContract(ContractDefinition const& _contract) const
+{
+ return
+ m_requestedContractNames.empty() ||
+ m_requestedContractNames.count(_contract.fullyQualifiedName()) ||
+ m_requestedContractNames.count(_contract.name());
+}
+
bool CompilerStack::compile()
{
if (m_stackState < AnalysisSuccessful)
@@ -262,7 +270,8 @@ bool CompilerStack::compile()
for (Source const* source: m_sourceOrder)
for (ASTPointer<ASTNode> const& node: source->ast->nodes())
if (auto contract = dynamic_cast<ContractDefinition const*>(node.get()))
- compileContract(*contract, compiledContracts);
+ if (isRequestedContract(*contract))
+ compileContract(*contract, compiledContracts);
this->link();
m_stackState = CompilationSuccessful;
return true;