View mode: basic / threaded / horizontal-split · Log in · Help
August 15, 2012
[Issue 8552] New: Bogus diagnostic when member function call doesn't match constancy
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@puremagic.com
       ReportedBy: dmitry.olsh@gmail.com


--- Comment #0 from Dmitry Olshansky <dmitry.olsh@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: -------
August 15, 2012
[Issue 8552] Bogus diagnostic when member function call doesn't match constancy
http://d.puremagic.com/issues/show_bug.cgi?id=8552


bearophile_hugs@eml.cc changed:

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


--- Comment #1 from bearophile_hugs@eml.cc 2012-08-15 11:03:07 PDT ---
See Issue 8549

(But maybe both are dupes of an older bug report of mine)

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
January 04, 2013
[Issue 8552] Bogus diagnostic when member function call doesn't match constancy
http://d.puremagic.com/issues/show_bug.cgi?id=8552


hsteoh@quickfur.ath.cx changed:

          What    |Removed                     |Added
----------------------------------------------------------------------------
            Status|NEW                         |RESOLVED
                CC|                            |hsteoh@quickfur.ath.cx
        Resolution|                            |FIXED


--- Comment #2 from hsteoh@quickfur.ath.cx 2013-01-03 20:52:25 PST ---
Seems fixed in latest git head:

$ dmd test.d
test.d(30): Error: mutable method test.SimpleCaseEntry.isUpper is not callable
using a const object
test.d(31): Error: mutable method test.SimpleCaseEntry.isLower is not callable
using a const object

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
January 07, 2013
[Issue 8552] Bogus diagnostic when member function call doesn't match constancy
http://d.puremagic.com/issues/show_bug.cgi?id=8552


Kenji Hara <k.hara.pg@gmail.com> changed:

          What    |Removed                     |Added
----------------------------------------------------------------------------
        Resolution|FIXED                       |DUPLICATE


--- Comment #3 from Kenji Hara <k.hara.pg@gmail.com> 2013-01-07 07:10:36 PST ---
(In reply to comment #2)
> Seems fixed in latest git head:
> 
> $ dmd test.d
> test.d(30): Error: mutable method test.SimpleCaseEntry.isUpper is not callable
> using a const object
> test.d(31): Error: mutable method test.SimpleCaseEntry.isLower is not callable
> using a const object

The lack of information about qualifier mismatching is fixed by bug 6707.
After that, the error message is improved by fixing bug 1730.

Both are fixed in 2.061.

*** This issue has been marked as a duplicate of issue 6707 ***

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Top | Discussion index | About this forum | D home