Extra asserts, test renaming, test for super in modifiers

This commit is contained in:
Kamil Śliwak
2021-06-02 16:15:51 +02:00
parent 4cbf9ff74c
commit 67e87147b4
5 changed files with 16 additions and 1 deletions
+5 -1
View File
@@ -286,7 +286,11 @@ FunctionDefinition const& CompilerContext::superFunction(FunctionDefinition cons
solAssert(m_mostDerivedContract, "No most derived contract set.");
ContractDefinition const* super = _base.superContract(mostDerivedContract());
solAssert(super, "Super contract not available.");
return _function.resolveVirtual(mostDerivedContract(), super);
FunctionDefinition const& resolvedFunction = _function.resolveVirtual(mostDerivedContract(), super);
solAssert(resolvedFunction.isImplemented(), "");
return resolvedFunction;
}
ContractDefinition const& CompilerContext::mostDerivedContract() const
+2
View File
@@ -604,6 +604,8 @@ bool ContractCompiler::visit(VariableDeclaration const& _variableDeclaration)
bool ContractCompiler::visit(FunctionDefinition const& _function)
{
solAssert(_function.isImplemented(), "");
CompilerContext::LocationSetter locationSetter(m_context, _function);
m_context.startFunction(_function);
@@ -0,0 +1,9 @@
contract C {
modifier m() { _; }
}
contract D is C {
function f() super.m public {
}
}
// ----
// DeclarationError 7920: (74-81): Identifier not found or not unique.