On Wednesday, 14 February 2024 at 11:56:29 UTC, Forest wrote:
On Wednesday, 14 February 2024 at 10:57:42 UTC, RazvanN wrote:

This has already been fixed, you just need to use -preview=fixImmutableConv. This was put behind a preview flag as it introduces a breaking change.

I just tried that flag on run.dlang.org, and although it fixes the case I posted earlier, it doesn't fix this one:

```d
string test(const(ubyte)[] arr)
{
    import std.string;
    return arr.assumeUTF;
}
```

Shouldn't this be rejected as well?

Indeed, that should be rejected as well, otherwise you can modify immutable table. This code currently happily compiles:

```d
string test(const(ubyte)[] arr)
{
    import std.string;
    return arr.assumeUTF;
}

void main()
{
    import std.stdio;
    ubyte[] arr = ['a', 'b', 'c'];
    auto t = test(arr);
    writeln(t);
    arr[0] = 'x';
    writeln(t);
}
```

And prints:

```
abc
xbc
```

However, this seems to be a different issue.

Reply via email to