mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Ambigous overrides for modifiers.
This commit is contained in:
@@ -7,4 +7,4 @@ contract B {
|
||||
contract C is A, B {
|
||||
}
|
||||
// ----
|
||||
// THIS NEEDS TO BE AN ERROR
|
||||
// TypeError: (94-116): Derived contract must override modifier "f". Two or more base classes define modifier with same name.
|
||||
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
contract A {
|
||||
modifier f(uint a) virtual { _; }
|
||||
}
|
||||
contract B {
|
||||
modifier f() virtual { _; }
|
||||
}
|
||||
contract C is A, B {
|
||||
}
|
||||
// ----
|
||||
// TypeError: (100-122): Derived contract must override modifier "f". Two or more base classes define modifier with same name.
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
contract A {
|
||||
modifier f(uint a) virtual { _; }
|
||||
}
|
||||
contract B {
|
||||
modifier f() virtual { _; }
|
||||
}
|
||||
contract C is A, B {
|
||||
modifier f() virtual override(A, B) { _; }
|
||||
}
|
||||
// ----
|
||||
// TypeError: (125-167): Override changes modifier signature.
|
||||
+3
-4
@@ -1,8 +1,8 @@
|
||||
contract I {
|
||||
modifier f() { _; }
|
||||
modifier f() virtual { _; }
|
||||
}
|
||||
contract J {
|
||||
modifier f() { _; }
|
||||
modifier f() virtual { _; }
|
||||
}
|
||||
contract IJ is I, J {
|
||||
modifier f() virtual override (I, J) { _; }
|
||||
@@ -16,5 +16,4 @@ contract B is IJ
|
||||
}
|
||||
contract C is A, B {}
|
||||
// ----
|
||||
// TypeError: (14-33): Trying to override non-virtual modifier. Did you forget to add "virtual"?
|
||||
// TypeError: (50-69): Trying to override non-virtual modifier. Did you forget to add "virtual"?
|
||||
// TypeError: (229-250): Derived contract must override modifier "f". Two or more base classes define modifier with same name.
|
||||
|
||||
Reference in New Issue
Block a user