Skip to content

Commit 8d10d3c

Browse files
committed
Extra asserts, test renaming, test for super in modifiers
1 parent 7d1df95 commit 8d10d3c

File tree

5 files changed

+16
-1
lines changed

5 files changed

+16
-1
lines changed

libsolidity/codegen/CompilerContext.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,11 @@ FunctionDefinition const& CompilerContext::superFunction(FunctionDefinition cons
286286
solAssert(m_mostDerivedContract, "No most derived contract set.");
287287
ContractDefinition const* super = _base.superContract(mostDerivedContract());
288288
solAssert(super, "Super contract not available.");
289-
return _function.resolveVirtual(mostDerivedContract(), super);
289+
290+
FunctionDefinition const& resolvedFunction = _function.resolveVirtual(mostDerivedContract(), super);
291+
solAssert(resolvedFunction.isImplemented(), "");
292+
293+
return resolvedFunction;
290294
}
291295

292296
ContractDefinition const& CompilerContext::mostDerivedContract() const

libsolidity/codegen/ContractCompiler.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -604,6 +604,8 @@ bool ContractCompiler::visit(VariableDeclaration const& _variableDeclaration)
604604

605605
bool ContractCompiler::visit(FunctionDefinition const& _function)
606606
{
607+
solAssert(_function.isImplemented(), "");
608+
607609
CompilerContext::LocationSetter locationSetter(m_context, _function);
608610

609611
m_context.startFunction(_function);
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
contract C {
2+
modifier m() { _; }
3+
}
4+
contract D is C {
5+
function f() super.m public {
6+
}
7+
}
8+
// ----
9+
// DeclarationError 7920: (74-81): Identifier not found or not unique.

0 commit comments

Comments
 (0)