aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/interface/CompilerStack.cpp
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2017-10-05 17:23:46 +0800
committerGitHub <noreply@github.com>2017-10-05 17:23:46 +0800
commit54cf15ac4f479a658d3c069b24df92d068ca1325 (patch)
tree7f58c16b745db3464a9f3bb1a5d50748c7c653fa /libsolidity/interface/CompilerStack.cpp
parent995b5525a0bd29a96950fad168ce12e6dc167528 (diff)
parentf86cd06b9755f4827467e86acd4a53603f3da84f (diff)
downloaddexon-solidity-54cf15ac4f479a658d3c069b24df92d068ca1325.tar
dexon-solidity-54cf15ac4f479a658d3c069b24df92d068ca1325.tar.gz
dexon-solidity-54cf15ac4f479a658d3c069b24df92d068ca1325.tar.bz2
dexon-solidity-54cf15ac4f479a658d3c069b24df92d068ca1325.tar.lz
dexon-solidity-54cf15ac4f479a658d3c069b24df92d068ca1325.tar.xz
dexon-solidity-54cf15ac4f479a658d3c069b24df92d068ca1325.tar.zst
dexon-solidity-54cf15ac4f479a658d3c069b24df92d068ca1325.zip
Merge pull request #2901 from ethereum/compiler-names
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;