Simple Assembly Locations test

- Also adding some helper functions to SourceLocation
This commit is contained in:
Lefteris Karapetsas 2015-02-24 17:08:27 +01:00
parent 3e5c9a74b2
commit 12c32392ab
2 changed files with 6 additions and 4 deletions

View File

@ -41,6 +41,8 @@ public:
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); } void streamAssembly(std::ostream& _stream) const { m_context.streamAssembly(_stream); }
CompilerContext const& getContext() const { return m_context; }
CompilerContext const& getRuntimeContext() const { return m_runtimeContext; }
private: private:
/// Registers the non-function objects inside the contract with the context. /// Registers the non-function objects inside the contract with the context.

View File

@ -176,28 +176,28 @@ void CompilerContext::resetVisitedNodes(ASTNode const* _node)
CompilerContext& CompilerContext::operator<<(eth::AssemblyItem _item) CompilerContext& CompilerContext::operator<<(eth::AssemblyItem _item)
{ {
solAssert(m_visitedNodes.size() > 0, "No node on the visited stack"); solAssert(m_visitedNodes.size() > 0, "No node on the visited stack");
m_asm.append(_item); m_asm.append(_item, m_visitedNodes.top()->getLocation());
return *this; return *this;
} }
CompilerContext& CompilerContext::operator<<(eth::Instruction _instruction) CompilerContext& CompilerContext::operator<<(eth::Instruction _instruction)
{ {
solAssert(m_visitedNodes.size() > 0, "No node on the visited stack"); solAssert(m_visitedNodes.size() > 0, "No node on the visited stack");
m_asm.append(_instruction); m_asm.append(_instruction, m_visitedNodes.top()->getLocation());
return *this; return *this;
} }
CompilerContext& CompilerContext::operator<<(u256 const& _value) CompilerContext& CompilerContext::operator<<(u256 const& _value)
{ {
solAssert(m_visitedNodes.size() > 0, "No node on the visited stack"); solAssert(m_visitedNodes.size() > 0, "No node on the visited stack");
m_asm.append(_value); m_asm.append(_value, m_visitedNodes.top()->getLocation());
return *this; return *this;
} }
CompilerContext& CompilerContext::operator<<(bytes const& _data) CompilerContext& CompilerContext::operator<<(bytes const& _data)
{ {
solAssert(m_visitedNodes.size() > 0, "No node on the visited stack"); solAssert(m_visitedNodes.size() > 0, "No node on the visited stack");
m_asm.append(_data); m_asm.append(_data, m_visitedNodes.top()->getLocation());
return *this; return *this;
} }