www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 1375] New: CTFE fails for null arrays

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

           Summary: CTFE fails for null arrays
           Product: D
           Version: 1.019
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Severity: major
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: samukha voliacable.com


Neither of the if's compile:

int foo()
{
    char[] s;

    if (s)
    {
    }

    if (s == null)
    {
    }

    if (s is null)
    {
    }

    if (s == "")
    {
    }

    if (s.length)
    {
    }

    return 0;
}

void main()
{
        static x = foo();
}

If s is initialized to a literal, only the last two if's compile successfully.


-- 
Jul 25 2007
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1375


smjg iname.com changed:

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





When filing bugs, please include the error messages rather than merely stating
that something doesn't compile.

bz1375.d(30): Error: cannot evaluate foo() at compile time


-- 
Jul 25 2007
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1375






I wish the error message was informative enough to be worth writing. Anyway,
thanks for pointing that out.


-- 
Jul 26 2007
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1375


wbaxter gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|CTFE fails for null arrays  |CTFE fails for null strings
                   |                            |and arrays





Another example of probably same bug:

char[] copy(char[] x)
{
    char[] ret;
    foreach(c; x) {
        ret ~= c; 
    }
    return ret;
}
pragma(msg, copy(``));


Error:
test_ext.d(83): pragma msg string expected for message, not 'null'

Can work around by changing  
    char[] ret;
to 
    char[] ret = ``;


-- 
Jul 01 2008
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1375






This works for me in 1.039.


-- 
Jan 07 2009
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=1375


clugdbug yahoo.com.au changed:

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





This works in DMD2.027 and DMD1.042.


-- 
Apr 06 2009