https://issues.dlang.org/show_bug.cgi?id=21246
Issue ID: 21246
Summary: Compiler must show mismatching types when functions do
not properly override
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: normal
Priority: P1
Component: dmd
Assignee: [email protected]
Reporter: [email protected]
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.
--