[Issue 8552] New: Bogus diagnostic when member function call doesn't match constancy

d-bugmail at puremagic.com d-bugmail at puremagic.com
Wed Aug 15 10:56:10 PDT 2012


http://d.puremagic.com/issues/show_bug.cgi?id=8552

           Summary: Bogus diagnostic when member function call doesn't
                    match constancy
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: major
          Priority: P2
         Component: DMD
        AssignedTo: nobody at puremagic.com
        ReportedBy: dmitry.olsh at gmail.com


--- Comment #0 from Dmitry Olshansky <dmitry.olsh at gmail.com> 2012-08-15 10:56:08 PDT ---
It's an old and annoying bug. Could be a duplicate but I failed to find any.

Sample:

struct SimpleCaseEntry
{
    ubyte bucket;// n - number in bucket
    @property ubyte size()
    {
        return bucket & 0x3F;
    }
    @property auto isLower()
    {
        return bucket & 0x40;
    }
    @property auto isUpper()
    {
        return bucket & 0x80;
    }
    this(ubyte size, bool lower, bool upper)
    {
        bucket = size;
        if(lower)
            bucket |= 0x40;
        if(upper)
            bucket |= 0x80;

    }
}

void main()
{
    const SimpleCaseEntry e = SimpleCaseEntry(8, true, false);
    assert(!e.isUpper);
    assert(e.isLower);
}

With dmd 2.060:

D:\D\m.d(30): Error: function m.SimpleCaseEntry.isUpper () is not callable
using argument types()
D:\D\m.d(31): Error: function m.SimpleCaseEntry.isLower () is not callable
using argument types ()

Not a single word mentioning CONST or QUALIFIERS. While I'm more or less used
to wrong error message it would blow away newibie's mind and thus marked as
major.

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


More information about the Digitalmars-d-bugs mailing list