DIP-1000 and slice lifetimes

Walter Bright via Digitalmars-d digitalmars-d at puremagic.com
Fri Dec 16 05:30:47 PST 2016


On 12/16/2016 4:37 AM, Nordlöw wrote:
> Will DIP-1000 correctly forbid code such as
>
>     int[] xs;
>     {
>         int[3] x = [1, 2, 3];
>         xs = x[]; // leaks dangling pointer `xs.ptr` to enclosing scope
>     }
>     xs[] = 0; // undefined behaviour
>
> from compiling?

----
@safe void foo()
{
     int[] xs;
     {
         int[3] x = [1, 2, 3];
         xs = x[]; // leaks dangling pointer `xs.ptr` to enclosing scope
     }
     xs[] = 0; // undefined behaviour
}
----
test.d(6): Error: address of variable x assigned to xs with longer lifetime


More information about the Digitalmars-d mailing list