February 27, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7600

           Summary: Generate better error message with lvalue mismatch
           Product: D
           Version: unspecified
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: DMD
        AssignedTo: nobody@puremagic.com
        ReportedBy: andrej.mitrovich@gmail.com


--- Comment #0 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2012-02-27 06:28:13 PST ---
void foo(ref string x) { }
void bar(ref int x) { }

void main()
{
    foo("var");
    immutable int x;
    bar(x);
}

test.d(8): Error: function test.foo (ref string x) is not callable using
argument types (string)

test.d(10): Error: function test.bar (ref int x) is not callable using argument
types (immutable(int))
test.d(10): Error: constant 0 is not an lvalue

The error for the 'foo' function should generate two error messages just like the error for 'bar.

It could print: 'Error: constant "var" is not an lvalue'. This is especially useful in templated functions.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
February 27, 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7600


bearophile_hugs@eml.cc changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bearophile_hugs@eml.cc


--- Comment #1 from bearophile_hugs@eml.cc 2012-02-27 10:20:54 PST ---
(In reply to comment #0)

> test.d(8): Error: function test.foo (ref string x) is not callable using
> argument types (string)
> 
> test.d(10): Error: function test.bar (ref int x) is not callable using argument
> types (immutable(int))
> test.d(10): Error: constant 0 is not an lvalue
> 
> The error for the 'foo' function should generate two error messages just like the error for 'bar.
> 
> It could print: 'Error: constant "var" is not an lvalue'. This is especially useful in templated functions.

Or maybe better, generate a single error message in both cases, something like:

test.d(10): Error: function test.bar (ref int x) is not callable using argument
types (immutable(int)), constant 0 is not an lvalue.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------