-
Notifications
You must be signed in to change notification settings - Fork 6.3k
Closed
Labels
bug 🐛should report better errorError is just badly reported. Should be a proper type error - source is not fine.Error is just badly reported. Should be a proper type error - source is not fine.
Description
In reference to issue #11468 and its PR #11471 these additionally found ICEs have been isolated.
contract A {
modifier m() virtual { _; }
}
abstract contract B {
modifier m() virtual;
}
contract C is A, B {
modifier m() override(A, B) { _; }
function f() B.m public {}
}Here contract A has an implemented modifier m and abstract contract B has has an unimplemented modifier m.
Now, contract C inherits from both and overrides m with an implemented one.
C.f() however explictely references B.m, which results into a call to an unimplemented modifier (currently causing ICE in ContractCompiler).
abstract contract A {
modifier m() virtual;
}
contract B is A {
modifier m() virtual override { _; }
}
contract C is B {
function f() A.m public {}
}In this case, A.m is unimplemented, B inheriting from A overrides and implements m. C inheriting from B implements a function f that statically binds to A.m, which also results into an ICE in ContractCompiler.
Metadata
Metadata
Assignees
Labels
bug 🐛should report better errorError is just badly reported. Should be a proper type error - source is not fine.Error is just badly reported. Should be a proper type error - source is not fine.