Bug 21246 – Compiler must show mismatching types when functions do not properly override

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2020-09-14T05:18:44Z
Last change time
2020-09-15T04:42:52Z
Keywords
pull
Assigned to
No Owner
Creator
Andrej Mitrovic

Comments

Comment #0 by andrej.mitrovich — 2020-09-14T05:18:44Z
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.
Comment #1 by dlang-bot — 2020-09-15T03:58:46Z
@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
Comment #2 by dlang-bot — 2020-09-15T04:42:52Z
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