foo.d: ----- module foo; import std.datetime : Clock; class B { void set (Clock clock) { } } ----- test.d: ----- import foo; class Clock { } class C : B { override void set (Clock clock) { } } void main () { } ----- $ dmd test.d > test.d(6,19): Error: function `void test.C.set(Clock clock)` does not override any function, did you mean to override `void foo.B.set(Clock clock)`? This diagnostic is infuriating. You could easily spend the better part of an hour trying to diagnose what's wrong - the actual issue is that `Clock` refers to two completely different symbols. But the compiler is not helpful - it keeps recommending to override the method without giving a hint to what is wrong.
@RazvanN7 created dlang/dmd pull request #11734 "Fix Issue 21246 - Compiler must show mismatching types when functions do not properly override" fixing this issue: - Fix Issue 21246 - Compiler must show mismatching types when functions do not properly override https://github.com/dlang/dmd/pull/11734
dlang/dmd pull request #11734 "Fix Issue 21246 - Compiler must show mismatching types when functions do not properly override" was merged into master: - 55d249f513b91aab05a3e634558479233485795d by RazvanN7: Fix Issue 21246 - Compiler must show mismatching types when functions do not properly override https://github.com/dlang/dmd/pull/11734