stack out of scope ?

Alain De Vos devosalain at ymail.com
Sat May 22 12:34:49 UTC 2021


On Sunday, 16 May 2021 at 18:27:40 UTC, H. S. Teoh wrote:
> On Sun, May 16, 2021 at 05:24:40PM +0000, Alain De Vos via 
> Digitalmars-d-learn wrote:
>> On Sunday, 16 May 2021 at 16:58:15 UTC, H. S. Teoh wrote:
>> > On Sun, May 16, 2021 at 04:40:53PM +0000, Alain De Vos via 
>> > Digitalmars-d-learn wrote:
>> > > This works also,
>> > > 
>> > > ```
>> > > import std.stdio:writeln;
>> > > 
>> > > int [] fun(){
>> > > 	int[3]s=[1,2,3];
>> > > 	int[] r=s;
>> > > 	return r;
>> > > }
>> > > 
>> > > void main(){
>> > > 	writeln(fun()[0]);
>> > > }
>> > > ```
>> > 
>> > https://issues.dlang.org/show_bug.cgi?id=15932
>> > 
>> > Though I believe if you compile with -dip25 -dip1000 the 
>> > compiler should emit an error for the above code.  If not, 
>> > please file a bug against -dip1000.
> [...]
>> I use ldc2. No dip flags here.
>
> ---------snip---------
> import std.stdio:writeln;
>
> int [] fun() @safe {		// N.B.: need @safe
> 	int[3]s=[1,2,3];
> 	int[] r=s;
> 	return r;
> }
>
> void main() @safe {		// N.B.: need @safe
> 	writeln(fun()[0]);
> }
> ---------snip---------
>
>
> LDC output:
>
> ---------snip---------
> $ ldc2 -dip1000 /tmp/test.d
> /tmp/test.d(6): Error: scope variable `r` may not be returned
> ---------snip---------
>
>
> T

Trying @safe is painfull in practice.
Large parge of functions are not @safe and call functions which 
are not @safe.
Only tiny end-subroutines i can put @safe.


More information about the Digitalmars-d-learn mailing list