[Issue 21190] New: generated strings should convert to immutable char *

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sat Aug 22 21:13:47 UTC 2020


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

          Issue ID: 21190
           Summary: generated strings should convert to immutable char *
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: minor
          Priority: P1
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: schveiguy at yahoo.com

When a string is generated at compile time (and assigned to an enum), it should
be equivalent to a string literal in all cases.

This works today:

enum x = "hello";
const char *p = x;
enum x2 = "hello" ~ " there";
p = x2;
static string foo()
{
   return "hello" ~ " there";
}

enum x3 = foo();
p = x3;

This does not:

static string foo2()
{
   import std.string : join;
   return ["hello", "there"].join(" ");
}

enum x4 = foo2();
p = x4; // Error: cannot implicitly convert expression "hello there" of type
string to const(char*)

It's unclear why foo2 cannot produce a convertible string, whereas all the
other cases can.

--


More information about the Digitalmars-d-bugs mailing list