diff --git a/libsolidity/interface/CompilerStack.cpp b/libsolidity/interface/CompilerStack.cpp index bbebc2508..f72d2250f 100644 --- a/libsolidity/interface/CompilerStack.cpp +++ b/libsolidity/interface/CompilerStack.cpp @@ -247,6 +247,13 @@ void CompilerStack::setModelCheckerSettings(ModelCheckerSettings _settings) m_modelCheckerSettings = _settings; } +void CompilerStack::setCallback(ReadCallback::Callback _callback) +{ + if (m_stackState >= ParsedAndImported) + solThrow(CompilerError, "Must set callback before parsing."); + m_readFile = std::move(_callback); +} + void CompilerStack::setLibraries(map const& _libraries) { if (m_stackState >= ParsedAndImported) diff --git a/libsolidity/interface/CompilerStack.h b/libsolidity/interface/CompilerStack.h index 8880770b8..b6a5048fb 100644 --- a/libsolidity/interface/CompilerStack.h +++ b/libsolidity/interface/CompilerStack.h @@ -197,6 +197,10 @@ public: m_requestedContractNames = _contractNames; } + /// Sets callback for reading from files or interactinng with SMT solvers. + /// Must be set before parsing. + void setCallback(ReadCallback::Callback _callback); + /// Enable EVM Bytecode generation. This is enabled by default. void enableEvmBytecodeGeneration(bool _enable = true) { m_generateEvmBytecode = _enable; }