Thread overview | ||||||
---|---|---|---|---|---|---|
|
May 16, 2019 DIP1000: Should this compile | ||||
---|---|---|---|---|
| ||||
https://run.dlang.io/is/cKFsXh Should this compile, or is return scope T* down to the user to not escape (Returning &local directly does not compile) |
May 16, 2019 Re: DIP1000: Should this compile | ||||
---|---|---|---|---|
| ||||
Posted in reply to Max Haughton | On 5/16/19 10:21 PM, Max Haughton wrote:
> https://run.dlang.io/is/cKFsXh
>
> Should this compile, or is return scope T* down to the user to not escape (Returning &local directly does not compile)
>
Answer to subject: no. This is a bug. Please file.
Not sure what the solution is, because dip1000 makes scope a storage class. So there's no way to tag what the input parameter points at.
-Steve
|
May 16, 2019 Re: DIP1000: Should this compile | ||||
---|---|---|---|---|
| ||||
Posted in reply to Max Haughton | On Thursday, 16 May 2019 at 21:21:51 UTC, Max Haughton wrote: > https://run.dlang.io/is/cKFsXh > > Should this compile, or is return scope T* down to the user to not escape (Returning &local directly does not compile) This is a bug, as can be showed by repeating the call to (*boi).writeln - suddenly the output changes between calls. Filed: https://issues.dlang.org/show_bug.cgi?id=19881 -- Simen |
May 16, 2019 Re: DIP1000: Should this compile | ||||
---|---|---|---|---|
| ||||
Posted in reply to Steven Schveighoffer | On Thursday, 16 May 2019 at 21:56:52 UTC, Steven Schveighoffer wrote:
> On 5/16/19 10:21 PM, Max Haughton wrote:
>> https://run.dlang.io/is/cKFsXh
>>
>> Should this compile, or is return scope T* down to the user to not escape (Returning &local directly does not compile)
>>
>
> Answer to subject: no. This is a bug. Please file.
>
> Not sure what the solution is, because dip1000 makes scope a storage class. So there's no way to tag what the input parameter points at.
>
> -Steve
The parameter pointer outlives the the &local, i.e. cannot be guaranteed that it doesn't escape, which is sufficient grounds to not allow the assignment. Hopefully, this is a implementation rather specification error (If my understanding of the DIP is correct)
|
Copyright © 1999-2021 by the D Language Foundation