new DIP38: Safe references and rvalue references without runtime checks.

Walter Bright newshound2 at digitalmars.com
Mon May 6 20:39:17 PDT 2013


On 5/6/2013 11:52 AM, Timothee Cour wrote:
> Abstract
>
> In short, the compiler internally annotates ref-return functions with
> ref(i1,...,iN) indicating that the function may return argument j
> (j=i1...iN) by reference (possibly via field accesses), where j is
> also a ref input argument. This list can be empty, and if the function
> is a method or internal function, argument 0 refers to implicit 'this'
> parameter. These annotations are used to validate/invalidate ref
> return functions that call such a ref return function. These
> annotations are also written in the automatically generated di
> interface files.
>
> See the DIP38 for more details and examples.


It requires interprocedural analysis. This is possible for the same functions 
(such as template functions) that can infer pure/nothrow/@safe, but it cannot be 
done for ordinary functions.


More information about the Digitalmars-d mailing list