Merge pull request #11471 from ethereum/funcdef-unimplemented-modifier

Reports an error on unimplemented modifiers in a function definition.
This commit is contained in:
chriseth
2021-06-09 13:54:05 +02:00
committed by GitHub
7 changed files with 63 additions and 8 deletions
@@ -0,0 +1,11 @@
contract A {
modifier m() virtual { _; }
}
abstract contract B is A {
modifier m() virtual override;
}
contract C is B {
function f() m public {}
}
// ----
// TypeError 4593: (78-108): Overriding an implemented modifier with an unimplemented modifier is not allowed.
@@ -0,0 +1,11 @@
contract A {
modifier m() virtual { _; }
}
abstract contract B {
modifier m() virtual;
}
contract C is A, B {
modifier m() override(A, B) { _; }
function f() m public {}
}
// ----
@@ -0,0 +1,11 @@
abstract contract A {
modifier m() virtual;
}
abstract contract B is A {
modifier m() virtual override;
}
abstract contract C is B {
modifier m() virtual override;
function f() m public {}
}
// ----
@@ -0,0 +1,8 @@
abstract contract A {
modifier m() virtual;
function f() m public {}
}
contract B is A {
modifier m() virtual override { _; }
}
// ----
@@ -0,0 +1,8 @@
abstract contract A {
modifier m() virtual;
function f() m public virtual {}
}
abstract contract B is A {
function f() public override {}
}
// ----