www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 5852] New: CTFE: wrong code for string[] ~= const(string)

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

           Summary: CTFE:  wrong code for string[] ~= const(string)
           Product: D
           Version: D2
          Platform: Other
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: clugdbug yahoo.com.au



int bug5852(const(string) s)
{
    string [] r;
    r ~= s;
    assert(r.length == 1);
    return r[0].length;
}

static assert(bug5852("abc")==3);

The (non-static) assert fails, and if it's commented out, you get:
test2.d(11): Error: integral constant must be scalar type, not string
test2.d(11): Error: cannot evaluate bug5852("abc") at compile time
test2.d(11): Error: static assert  (bug5852("abc") == 3) is not evaluatable at
c
ompile time

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Apr 18 2011
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=5852


kennytm gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kennytm gmail.com



Correct code is generated only when the constness of the string match. Another
example:

--------------------------------------
import std.stdio;
auto x(string y) {
    const(string)[] z;
    z ~= y;
    z ~= y;
    return z;
}
static assert(x("abc").length != 6);
--------------------------------------

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Apr 18 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=5852




I've already got a fix for this one. Don't waste any time on it.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Apr 18 2011
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=5852


Walter Bright <bugzilla digitalmars.com> changed:

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



16:02:03 PDT ---
https://github.com/D-Programming-Language/dmd/commit/316ba0a77e3934bfc8091940444f706e82aecc72

https://github.com/D-Programming-Language/dmd/commit/5c7c6b51e27d9cd394ddda4f7940cdf9c1610953

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