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