www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 24036] New: assert message in CTFE becomes `['m', 'e', 's',

https://issues.dlang.org/show_bug.cgi?id=24036

          Issue ID: 24036
           Summary: assert message in CTFE becomes `['m', 'e', 's', 's',
                    'a', 'g', 'e'][0..7]` if produced using
                    std.format.format
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: zorael gmail.com

Manjaro/Arch x86_64, dmd 2.104.0, ldc 1.33-beta2.

If I assert(0) in CTFE with a message string produced with std.format.format,
it is output to the terminal as an `['f', 'o', 'o'][0..3]` array, and not as a
string. If I make it a string literal it works as you'd expect. cast(string)
does not seem to help. .idup makes it "foo[0..3]".

https://run.dlang.io/is/94RE0Y

---

import std;

static immutable ctfeThing = ()
{
    assert(0, format("%s", "message"));
    return 42;
}();

void main() {}

---

--
Jul 06 2023