Thread overview
[Issue 1017] New: CTFE doesn't support (string == string)
Mar 03, 2007
d-bugmail
Mar 03, 2007
d-bugmail
Mar 03, 2007
d-bugmail
Mar 04, 2007
d-bugmail
Mar 04, 2007
d-bugmail
Mar 05, 2007
Don Clugston
Mar 08, 2007
d-bugmail
Mar 12, 2007
d-bugmail
March 03, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1017

           Summary: CTFE doesn't support (string == string)
           Product: D
           Version: 1.007
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla@digitalmars.com
        ReportedBy: reiner.pope@gmail.com


The following code fails in DMD 1.007:

void main()
{
    static assert(equals("alphabet", "alphabet"));
}

bool equals(char[] a, char[] b)
{
    return (a == b);
}

equality.d(3): static assert  (equals("alphabet","alphabet")) is not
evaluatable
 at compile time


-- 

March 03, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1017





------- Comment #1 from bugzilla@digitalmars.com  2007-03-03 12:51 -------
Put equals() before main() and it should work.


-- 

March 03, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1017





------- Comment #2 from fvbommel@wxs.nl  2007-03-03 13:00 -------
(In reply to comment #1)
> Put equals() before main() and it should work.

It doesn't:
---
urxae@urxae:~/tmp$ cat test.d
bool equals(char[] a, char[] b)
{
    return (a == b);
}

void main()
{
    static assert(equals("alphabet", "alphabet"));
}
urxae@urxae:~/tmp$ dmd test.d
test.d(8): static assert  (equals("alphabet","alphabet")) is not evaluatable at
compile time
---


-- 

March 04, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1017


smjg@iname.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |smjg@iname.com
           Keywords|                            |rejects-valid




------- Comment #3 from smjg@iname.com  2007-03-04 13:04 -------
(In reply to comment #1)
> Put equals() before main() and it should work.

Under which platform did you observe a dependency on the order of declarations in this instance?  Clearly not that on which the reporter reported the problem.


-- 

March 04, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1017


fvbommel@wxs.nl changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         OS/Version|Windows                     |All




------- Comment #4 from fvbommel@wxs.nl  2007-03-04 13:19 -------
(In reply to comment #3)
> (In reply to comment #1)
> > Put equals() before main() and it should work.
> 
> Under which platform did you observe a dependency on the order of declarations in this instance?  Clearly not that on which the reporter reported the problem.

Actually, it could be the same as the reporter. My test of Walter's theory was
done on Linux, while the reporter is appears to be using Windows.
I have no idea if it works on Windows if the order is switched, but I _can_
confirm this bug on Linux, so I'll just change the OS setting to 'all'...


-- 

March 05, 2007
d-bugmail@puremagic.com wrote:
> http://d.puremagic.com/issues/show_bug.cgi?id=1017
> 
> 
> fvbommel@wxs.nl changed:
> 
>            What    |Removed                     |Added
> ----------------------------------------------------------------------------
>          OS/Version|Windows                     |All
> 
> 
> 
> 
> ------- Comment #4 from fvbommel@wxs.nl  2007-03-04 13:19 -------
> (In reply to comment #3)
>> (In reply to comment #1)
>>> Put equals() before main() and it should work.
>> Under which platform did you observe a dependency on the order of declarations
>> in this instance?  Clearly not that on which the reporter reported the problem.
> 
> Actually, it could be the same as the reporter. My test of Walter's theory was
> done on Linux, while the reporter is appears to be using Windows.
> I have no idea if it works on Windows if the order is switched, but I _can_
> confirm this bug on Linux, so I'll just change the OS setting to 'all'...
> 
> 
That's correct. I haven't found any configuration where it compiles under Windows -- and I tried pretty hard to get around this one... for example, slicing the arrays does not help. Even this (arguably simpler) variation doesn't work:

bool a()
{
    return "x"!="y";
}

void main()
{
    static assert( a() );
}
March 08, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1017





------- Comment #6 from thomas-dloop@kuehne.cn  2007-03-08 10:29 -------
Added to DStress as http://dstress.kuehne.cn/compile/o/opEquals_07_A.d http://dstress.kuehne.cn/compile/o/opEquals_07_B.d http://dstress.kuehne.cn/compile/o/opEquals_07_C.d http://dstress.kuehne.cn/compile/o/opEquals_07_D.d http://dstress.kuehne.cn/compile/o/opEquals_07_E.d http://dstress.kuehne.cn/compile/o/opEquals_07_F.d


-- 

March 12, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1017


thomas-dloop@kuehne.cn changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED




------- Comment #7 from thomas-dloop@kuehne.cn  2007-03-12 01:23 -------
Fixed in DMD-1.009


--