mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
LocationSetter in some extra places during Compiling
- Also adjusted the test, and fixed its error reporting
This commit is contained in:
parent
54121a0d78
commit
71b0d8107a
@ -129,6 +129,7 @@ void Compiler::packIntoContractCreator(ContractDefinition const& _contract, Comp
|
||||
void Compiler::appendBaseConstructorCall(FunctionDefinition const& _constructor,
|
||||
vector<ASTPointer<Expression>> const& _arguments)
|
||||
{
|
||||
CompilerContext::LocationSetter locationSetter(m_context, &_constructor);
|
||||
FunctionType constructorType(_constructor);
|
||||
eth::AssemblyItem returnLabel = m_context.pushNewTag();
|
||||
for (unsigned i = 0; i < _arguments.size(); ++i)
|
||||
@ -139,6 +140,7 @@ void Compiler::appendBaseConstructorCall(FunctionDefinition const& _constructor,
|
||||
|
||||
void Compiler::appendConstructorCall(FunctionDefinition const& _constructor)
|
||||
{
|
||||
CompilerContext::LocationSetter locationSetter(m_context, &_constructor);
|
||||
eth::AssemblyItem returnTag = m_context.pushNewTag();
|
||||
// copy constructor arguments from code to memory and then to stack, they are supplied after the actual program
|
||||
unsigned argumentSize = 0;
|
||||
@ -513,8 +515,8 @@ void Compiler::appendModifierOrFunctionCode()
|
||||
else
|
||||
{
|
||||
ASTPointer<ModifierInvocation> const& modifierInvocation = m_currentFunction->getModifiers()[m_modifierDepth];
|
||||
|
||||
ModifierDefinition const& modifier = m_context.getFunctionModifier(modifierInvocation->getName()->getName());
|
||||
CompilerContext::LocationSetter locationSetter(m_context, &modifier);
|
||||
solAssert(modifier.getParameters().size() == modifierInvocation->getArguments().size(), "");
|
||||
for (unsigned i = 0; i < modifier.getParameters().size(); ++i)
|
||||
{
|
||||
|
@ -65,8 +65,8 @@ void CompilerContext::addVariable(VariableDeclaration const& _declaration,
|
||||
|
||||
void CompilerContext::addAndInitializeVariable(VariableDeclaration const& _declaration)
|
||||
{
|
||||
LocationSetter locationSetter(*this, &_declaration);
|
||||
addVariable(_declaration);
|
||||
|
||||
int const size = _declaration.getType()->getSizeOnStack();
|
||||
for (int i = 0; i < size; ++i)
|
||||
*this << u256(0);
|
||||
@ -173,7 +173,7 @@ void CompilerContext::resetVisitedNodes(ASTNode const* _node)
|
||||
std::swap(m_visitedNodes, newStack);
|
||||
}
|
||||
|
||||
CompilerContext& CompilerContext::operator<<(eth::AssemblyItem _item)
|
||||
CompilerContext& CompilerContext::operator<<(eth::AssemblyItem const& _item)
|
||||
{
|
||||
solAssert(!m_visitedNodes.empty(), "No node on the visited stack");
|
||||
m_asm.append(_item, m_visitedNodes.top()->getLocation());
|
||||
|
@ -108,7 +108,7 @@ public:
|
||||
void pushVisitedNodes(ASTNode const* _node) { m_visitedNodes.push(_node); }
|
||||
|
||||
/// Append elements to the current instruction list and adjust @a m_stackOffset.
|
||||
CompilerContext& operator<<(eth::AssemblyItem _item);
|
||||
CompilerContext& operator<<(eth::AssemblyItem const& _item);
|
||||
CompilerContext& operator<<(eth::Instruction _instruction);
|
||||
CompilerContext& operator<<(u256 const& _value);
|
||||
CompilerContext& operator<<(bytes const& _data);
|
||||
|
@ -68,6 +68,7 @@ void ExpressionCompiler::appendStateVariableInitialization(CompilerContext& _con
|
||||
|
||||
void ExpressionCompiler::appendStateVariableInitialization(VariableDeclaration const& _varDecl)
|
||||
{
|
||||
CompilerContext::LocationSetter locationSetter(m_context, &_varDecl);
|
||||
LValue var = LValue(m_context);
|
||||
var.fromDeclaration(_varDecl, _varDecl.getValue()->getLocation());
|
||||
var.storeValue(*_varDecl.getType(), _varDecl.getLocation());
|
||||
@ -999,6 +1000,7 @@ void ExpressionCompiler::appendExpressionCopyToMemory(Type const& _expectedType,
|
||||
|
||||
void ExpressionCompiler::appendStateVariableAccessor(VariableDeclaration const& _varDecl)
|
||||
{
|
||||
CompilerContext::LocationSetter locationSetter(m_context, &_varDecl);
|
||||
FunctionType accessorType(_varDecl);
|
||||
|
||||
unsigned length = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user