[Issue 19279] mutable does not promote to shared

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Oct 1 05:32:29 UTC 2018


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

--- Comment #1 from Manu <turkeyman at gmail.com> ---
Conversation: https://github.com/dlang/dmd/pull/8782

Reveals that `scope` is also necessary to guarantee that the promoted reference
does not escape.
Promotion is safe so long as no promoted-reference outlives the call where the
instance was promoted.

struct Bob
{
  void setThing() shared scope;
}

void f(ref shared Bob a, ref Bob b)
{
  a.setThing(); // I have a shared object, can call shared method

  b.setThing(); // this should work with `scope`
}

--


More information about the Digitalmars-d-bugs mailing list