On Borrow Checking

Richard (Rikki) Andrew Cattermole richard at cattermole.co.nz
Mon May 12 09:35:14 UTC 2025


On 12/05/2025 9:24 PM, Manu wrote:
> On Mon, 12 May 2025 at 03:55, Walter Bright via Digitalmars-d 
> <digitalmars-d at puremagic.com <mailto:digitalmars-d at puremagic.com>> wrote:
> 
>     On 5/10/2025 9:07 PM, Manu wrote:
>      > I tested that and it didn't work for me. Maybe my test was faulty
>     somehow since
>      > I was working through numerous combinations, I'll try it again...
> 
> 
>     I just tried it again, with the same result.
> 
> 
> __gshared int* g;
> void test(scope int* x)
> {
>      g = x;
> }
> 
> I just compiled this with -dip1000, and it compiles... This looks like 
> an escape to me! What have I misunderstood here?

Both ``__gshared`` and ``shared`` is disallowed by ``@safe`` (direct 
assign/access), and ``@safe`` has to be in use.

``-preview=dip1000``

```d
int* g;
void test(scope int* x) @safe {
     g = x; // Error: scope variable `x` assigned to global variable `g`
}
```



More information about the Digitalmars-d mailing list