diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2017-07-17 18:49:45 +0800 |
---|---|---|
committer | Alex Beregszaszi <alex@rtfs.hu> | 2017-07-26 22:05:16 +0800 |
commit | 6848199b66d9cadae901f71dcf944fe9aa927eeb (patch) | |
tree | 3fb478a531be2eddae472ef8100f6eed9e75ba74 /libsolidity | |
parent | fa5a7efb45de72d0a83e2e0bdb9b967f76f0c070 (diff) | |
download | dexon-solidity-6848199b66d9cadae901f71dcf944fe9aa927eeb.tar.gz dexon-solidity-6848199b66d9cadae901f71dcf944fe9aa927eeb.tar.zst dexon-solidity-6848199b66d9cadae901f71dcf944fe9aa927eeb.zip |
Add CompilerStack::setLibraries
Diffstat (limited to 'libsolidity')
-rw-r--r-- | libsolidity/interface/CompilerStack.cpp | 5 | ||||
-rw-r--r-- | libsolidity/interface/CompilerStack.h | 10 | ||||
-rw-r--r-- | libsolidity/interface/StandardCompiler.cpp | 3 |
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()) { |