Bug 2720 – Function resolution failure error message is unclear

Status
RESOLVED
Resolution
FIXED
Severity
enhancement
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2009-03-09T13:28:00Z
Last change time
2015-06-09T05:15:11Z
Keywords
diagnostic
Assigned to
nobody
Creator
jarrett.billingsley

Comments

Comment #0 by jarrett.billingsley — 2009-03-09T13:28:06Z
void foo(int x) { } foo(4.5); Gives the error: dtest.d(11): function dtest.main.foo (int) does not match parameter types (double) I've been using DMD for over 4 years and I still have trouble interpreting the error message. I always think it's the other way around (I expect what is passed to be on the left and the function's signature to be on the right). It also goes against the convention I've seen used elsewhere where parameters are what are defined in the function header and arguments are the values passed to the parameters (so (double) is the list of argument types, not parameter types). Something like: dtest.d(11): Incompatible argument types (double) for function dtest.main.foo (expected (int)) Would be much more helpful. I'll leave it to Stewie to put a keyword on here if he wants. I'm afraid I'll pick the wrong one.
Comment #1 by yebblies — 2011-06-10T08:22:48Z
We have a better error message now! testx.d(3): Error: function testx.foo (int x) is not callable using argument typ es (double) testx.d(3): Error: cannot implicitly convert expression (4.5) of type double to int Fixed in D1 and D2 (1.068 & 2.053)