Re: DIP1000: Should this compile

2019-05-16 Thread Max Haughton via Digitalmars-d-learn
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)




Re: DIP1000: Should this compile

2019-05-16 Thread Simen Kjærås via Digitalmars-d-learn

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


Re: DIP1000: Should this compile

2019-05-16 Thread Steven Schveighoffer via Digitalmars-d-learn

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


DIP1000: Should this compile

2019-05-16 Thread Max Haughton via Digitalmars-d-learn

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)