[Issue 21856] New: Implicit @safe violation of immutable

d-bugmail at puremagic.com d-bugmail at puremagic.com
Fri Apr 23 23:00:03 UTC 2021


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

          Issue ID: 21856
           Summary: Implicit @safe violation of immutable
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: regression
          Priority: P1
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: thomas.bockman at gmail.com

f!() below is incorrectly inferred as @safe, and the invalid implicit cast to
immutable is permitted.

/////////////////////////////////////
module app;

class D { }
class DA : D { }

immutable(D) f()(DA right) {
    D ret = right;
    return ret;
}

void main() {
    import std.stdio : writeln;
    writeln(typeof(f!()).stringof);
}
/////////////////////////////////////

Up to      2.062  : Failure with output:
-----
onlineapp.d(8): Error: cannot implicitly convert expression (ret) of type app.D
to immutable(D)
onlineapp.d(13): Error: template instance app.f!() error instantiating
-----

2.063   to 2.065.0: Success with output: pure nothrow @safe immutable(D)(DA
right)
Since      2.066.0: Success with output: pure nothrow @nogc @safe
immutable(D)(DA right)

--


More information about the Digitalmars-d-bugs mailing list