May 30, 2024 [Issue 24574] New: Scope not inferred on this parameter | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=24574 Issue ID: 24574 Summary: Scope not inferred on this parameter Product: D Version: D2 Hardware: x86_64 OS: Linux Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody@puremagic.com Reporter: zopsicle@use.startmail.com Consider the following example: ----- // REQUIRED_ARGS: -preview=dip1000 -preview=dip1021 struct A { void* p; @safe nothrow pure void f(); } @safe nothrow pure void g(ref A); @safe void e(ref scope A a) { a.f(); // (1) g(a); // (2) } ----- Call (1) fails to compile with: scope variable `a` calling non-scope member function `A.f()` despite A.f being nothrow pure. Call (2) succeeds to compile because nothrow pure implies scope on the argument to g. This discrepancy requires explicitly annotating non-static nothrow pure struct methods as scope. -- |
Copyright © 1999-2021 by the D Language Foundation