mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
to include source lines in output stream AssemblyItem's appropriate function is now receiving the map of fileNames to sourceCodes as argument.
This commit is contained in:
parent
a4d772315d
commit
e32bf97e87
@ -41,8 +41,11 @@ public:
|
|||||||
std::map<ContractDefinition const*, bytes const*> const& _contracts);
|
std::map<ContractDefinition const*, bytes const*> const& _contracts);
|
||||||
bytes getAssembledBytecode() { return m_context.getAssembledBytecode(m_optimize); }
|
bytes getAssembledBytecode() { return m_context.getAssembledBytecode(m_optimize); }
|
||||||
bytes getRuntimeBytecode() { return m_runtimeContext.getAssembledBytecode(m_optimize);}
|
bytes getRuntimeBytecode() { return m_runtimeContext.getAssembledBytecode(m_optimize);}
|
||||||
void streamAssembly(std::ostream& _stream) const { m_context.streamAssembly(_stream); }
|
/// @arg _sourceCodes is the map of input files to source code strings
|
||||||
|
void streamAssembly(std::ostream& _stream, StringMap const& _sourceCodes = StringMap()) const
|
||||||
|
{
|
||||||
|
m_context.streamAssembly(_stream, _sourceCodes);
|
||||||
|
}
|
||||||
/// @returns Assembly items of the normal compiler context
|
/// @returns Assembly items of the normal compiler context
|
||||||
eth::AssemblyItems const& getAssemblyItems() const { return m_context.getAssembly().getItems(); }
|
eth::AssemblyItems const& getAssemblyItems() const { return m_context.getAssembly().getItems(); }
|
||||||
/// @returns Assembly items of the runtime compiler context
|
/// @returns Assembly items of the runtime compiler context
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include <libevmcore/Assembly.h>
|
#include <libevmcore/Assembly.h>
|
||||||
#include <libsolidity/ASTForward.h>
|
#include <libsolidity/ASTForward.h>
|
||||||
#include <libsolidity/Types.h>
|
#include <libsolidity/Types.h>
|
||||||
|
#include <libdevcore/Common.h>
|
||||||
|
|
||||||
namespace dev {
|
namespace dev {
|
||||||
namespace solidity {
|
namespace solidity {
|
||||||
@ -118,7 +119,9 @@ public:
|
|||||||
CompilerContext& operator<<(bytes const& _data);
|
CompilerContext& operator<<(bytes const& _data);
|
||||||
|
|
||||||
eth::Assembly const& getAssembly() const { return m_asm; }
|
eth::Assembly const& getAssembly() const { return m_asm; }
|
||||||
void streamAssembly(std::ostream& _stream) const { _stream << m_asm; }
|
/// @arg _sourceCodes is the map of input files to source code strings
|
||||||
|
void streamAssembly(std::ostream& _stream, StringMap const& _sourceCodes = StringMap()) const { m_asm.streamRLP(_stream, "", _sourceCodes); }
|
||||||
|
|
||||||
bytes getAssembledBytecode(bool _optimize = false) { return m_asm.optimise(_optimize).assemble(); }
|
bytes getAssembledBytecode(bool _optimize = false) { return m_asm.optimise(_optimize).assemble(); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -180,9 +180,9 @@ dev::h256 CompilerStack::getContractCodeHash(string const& _contractName) const
|
|||||||
return dev::sha3(getRuntimeBytecode(_contractName));
|
return dev::sha3(getRuntimeBytecode(_contractName));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CompilerStack::streamAssembly(ostream& _outStream, string const& _contractName) const
|
void CompilerStack::streamAssembly(ostream& _outStream, string const& _contractName, StringMap _sourceCodes) const
|
||||||
{
|
{
|
||||||
getContract(_contractName).compiler->streamAssembly(_outStream);
|
getContract(_contractName).compiler->streamAssembly(_outStream, _sourceCodes);
|
||||||
}
|
}
|
||||||
|
|
||||||
string const& CompilerStack::getInterface(string const& _contractName) const
|
string const& CompilerStack::getInterface(string const& _contractName) const
|
||||||
|
@ -59,8 +59,6 @@ enum class DocumentationType: uint8_t
|
|||||||
ABISolidityInterface
|
ABISolidityInterface
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const std::map<std::string, std::string> StandardSources;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Easy to use and self-contained Solidity compiler with as few header dependencies as possible.
|
* Easy to use and self-contained Solidity compiler with as few header dependencies as possible.
|
||||||
* It holds state and can be used to either step through the compilation stages (and abort e.g.
|
* It holds state and can be used to either step through the compilation stages (and abort e.g.
|
||||||
@ -74,7 +72,7 @@ public:
|
|||||||
|
|
||||||
/// Adds a source object (e.g. file) to the parser. After this, parse has to be called again.
|
/// Adds a source object (e.g. file) to the parser. After this, parse has to be called again.
|
||||||
/// @returns true if a source object by the name already existed and was replaced.
|
/// @returns true if a source object by the name already existed and was replaced.
|
||||||
void addSources(std::map<std::string, std::string> const& _nameContents, bool _isLibrary = false) { for (auto const& i: _nameContents) addSource(i.first, i.second, _isLibrary); }
|
void addSources(StringMap const& _nameContents, bool _isLibrary = false) { for (auto const& i: _nameContents) addSource(i.first, i.second, _isLibrary); }
|
||||||
bool addSource(std::string const& _name, std::string const& _content, bool _isLibrary = false);
|
bool addSource(std::string const& _name, std::string const& _content, bool _isLibrary = false);
|
||||||
void setSource(std::string const& _sourceCode);
|
void setSource(std::string const& _sourceCode);
|
||||||
/// Parses all source units that were added
|
/// Parses all source units that were added
|
||||||
@ -103,8 +101,9 @@ public:
|
|||||||
dev::h256 getContractCodeHash(std::string const& _contractName = "") const;
|
dev::h256 getContractCodeHash(std::string const& _contractName = "") const;
|
||||||
|
|
||||||
/// Streams a verbose version of the assembly to @a _outStream.
|
/// Streams a verbose version of the assembly to @a _outStream.
|
||||||
|
/// @arg _sourceCodes is the map of input files to source code strings
|
||||||
/// Prerequisite: Successful compilation.
|
/// Prerequisite: Successful compilation.
|
||||||
void streamAssembly(std::ostream& _outStream, std::string const& _contractName = "") const;
|
void streamAssembly(std::ostream& _outStream, std::string const& _contractName = "", StringMap _sourceCodes = StringMap()) const;
|
||||||
|
|
||||||
/// Returns a string representing the contract interface in JSON.
|
/// Returns a string representing the contract interface in JSON.
|
||||||
/// Prerequisite: Successful call to parse or compile.
|
/// Prerequisite: Successful call to parse or compile.
|
||||||
|
Loading…
Reference in New Issue
Block a user