www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 7143] New: [CTFE] cannot compare class references with "is"

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=7143

           Summary: [CTFE] cannot compare class references with "is"
           Product: D
           Version: D2
          Platform: Other
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: r.sagitario gmx.de



PST ---
Comparing class references with null or other classes causes an error in CTFE,
e.g.:

module test;

class C 
{ 
    int x;
}

int getA()
{
    C c = new C;
    if(c is null)
        return -1;
    return c.x;
}

static assert(getA() == 0);


Compiling with "dmd -c test.d" yields:
test.d(11): Error: cannot compare C(0) at compile time
test.d(16):        called from here: getA()
test.d(16):        while evaluating: static assert(getA() == 0)

if you use "if(c)" instead of "if(c is null)", the error itself disappears,
there is only the call stack left:
test.d(16):        called from here: getA()
test.d(16):        while evaluating: static assert(getA() == 0)

Using "if(!c)" seems to work.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 20 2011
parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=7143


Walter Bright <bugzilla digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |bugzilla digitalmars.com
         Resolution|                            |FIXED



15:24:10 PST ---
https://github.com/D-Programming-Language/dmd/commit/767708299a408b4a234ee9ad4f45b0e6e0c21e6d

https://github.com/D-Programming-Language/dmd/commit/13195c39ae3e3788c559d8e88d3203371e43f029

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