aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/interface
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2017-07-17 18:49:45 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2017-07-26 22:05:16 +0800
commit6848199b66d9cadae901f71dcf944fe9aa927eeb (patch)
tree3fb478a531be2eddae472ef8100f6eed9e75ba74 /libsolidity/interface
parentfa5a7efb45de72d0a83e2e0bdb9b967f76f0c070 (diff)
downloaddexon-solidity-6848199b66d9cadae901f71dcf944fe9aa927eeb.tar.gz
dexon-solidity-6848199b66d9cadae901f71dcf944fe9aa927eeb.tar.zst
dexon-solidity-6848199b66d9cadae901f71dcf944fe9aa927eeb.zip
Add CompilerStack::setLibraries
Diffstat (limited to 'libsolidity/interface')
-rw-r--r--libsolidity/interface/CompilerStack.cpp5
-rw-r--r--libsolidity/interface/CompilerStack.h10
-rw-r--r--libsolidity/interface/StandardCompiler.cpp3
3 files changed, 12 insertions, 6 deletions
diff --git a/libsolidity/interface/CompilerStack.cpp b/libsolidity/interface/CompilerStack.cpp
index e5bb58d2..89e024b3 100644
--- a/libsolidity/interface/CompilerStack.cpp
+++ b/libsolidity/interface/CompilerStack.cpp
@@ -87,6 +87,7 @@ void CompilerStack::reset(bool _keepSources)
m_stackState = Empty;
m_sources.clear();
}
+ m_libraries.clear();
m_optimize = false;
m_optimizeRuns = 200;
m_globalContext.reset();
@@ -261,8 +262,7 @@ vector<string> CompilerStack::contractNames() const
return contractNames;
}
-
-bool CompilerStack::compile(bool _optimize, unsigned _runs, map<string, h160> const& _libraries)
+bool CompilerStack::compile(bool _optimize, unsigned _runs)
{
if (m_stackState < AnalysisSuccessful)
if (!parseAndAnalyze())
@@ -270,7 +270,6 @@ bool CompilerStack::compile(bool _optimize, unsigned _runs, map<string, h160> co
m_optimize = _optimize;
m_optimizeRuns = _runs;
- m_libraries = _libraries;
map<ContractDefinition const*, eth::Assembly const*> compiledContracts;
for (Source const* source: m_sourceOrder)
diff --git a/libsolidity/interface/CompilerStack.h b/libsolidity/interface/CompilerStack.h
index 1bfb193d..39875c32 100644
--- a/libsolidity/interface/CompilerStack.h
+++ b/libsolidity/interface/CompilerStack.h
@@ -96,6 +96,13 @@ public:
/// Sets path remappings in the format "context:prefix=target"
void setRemappings(std::vector<std::string> const& _remappings);
+ /// Sets library addresses. Addresses are cleared iff @a _libraries is missing.
+ /// Will not take effect before running compile.
+ void setLibraries(std::map<std::string, h160> const& _libraries = std::map<std::string, h160>{})
+ {
+ m_libraries = _libraries;
+ }
+
/// Resets the compiler to a state where the sources are not parsed or even removed.
/// Sets the state to SourcesSet if @a _keepSources is true, otherwise to Empty.
/// All settings, with the exception of remappings, are reset.
@@ -121,8 +128,7 @@ public:
/// @returns false on error.
bool compile(
bool _optimize = false,
- unsigned _runs = 200,
- std::map<std::string, h160> const& _libraries = std::map<std::string, h160>{}
+ unsigned _runs = 200
);
/// @returns the assembled object for a contract.
diff --git a/libsolidity/interface/StandardCompiler.cpp b/libsolidity/interface/StandardCompiler.cpp
index 82eeac3d..1690f3cc 100644
--- a/libsolidity/interface/StandardCompiler.cpp
+++ b/libsolidity/interface/StandardCompiler.cpp
@@ -259,6 +259,7 @@ Json::Value StandardCompiler::compileInternal(Json::Value const& _input)
// @TODO use libraries only for the given source
libraries[library] = h160(jsonSourceName[library].asString());
}
+ m_compilerStack.setLibraries(libraries);
Json::Value metadataSettings = settings.get("metadata", Json::Value());
m_compilerStack.useMetadataLiteralSources(metadataSettings.get("useLiteralContent", Json::Value(false)).asBool());
@@ -267,7 +268,7 @@ Json::Value StandardCompiler::compileInternal(Json::Value const& _input)
try
{
- m_compilerStack.compile(optimize, optimizeRuns, libraries);
+ m_compilerStack.compile(optimize, optimizeRuns);
for (auto const& error: m_compilerStack.errors())
{