[Issue 21190] generated strings should convert to immutable char *
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Sep 17 07:55:04 UTC 2020
https://issues.dlang.org/show_bug.cgi?id=21190
RazvanN <razvan.nitu1305 at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |razvan.nitu1305 at gmail.com
--- Comment #1 from RazvanN <razvan.nitu1305 at gmail.com> ---
(In reply to Steven Schveighoffer from comment #0)
> 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.
Are you sure this is the correct code? I just tried running the following
example:
enum x = "hello";
const char *p = x;
enum x2 = "hello" ~ " there";
static string foo()
{
return "hello" ~ " there";
}
enum x3 = foo();
static string foo2()
{
import std.string : join;
return ["hello", "there"].join(" ");
}
enum x4 = foo2();
void goo()
{
p = x2;
p = x3;
p = x4;
}
And I get errors to all three assignments of p.
--
More information about the Digitalmars-d-bugs
mailing list