DMD 2.092 and DIP 25

Seb seb at wilzba.ch
Sat May 30 07:37:51 UTC 2020


On Saturday, 30 May 2020 at 07:00:07 UTC, Mike Parker wrote:
> The following declarations now give a deprecation warning:
>
> ```d
> struct ErrorInfo {
> private:
>     char[32] _error;
>     char[96] _message;
>
> public @nogc nothrow @property:
>     /**
>         Returns the string "Missing Symbol" to indicate a 
> symbol load failure, and
>         the name of a library to indicate a library load 
> failure.
>     */
>     const(char)* error() const { return _error.ptr; }
>
>     /**
>         Returns a symbol name for symbol load failures, and a 
> system-specific error
>         message for library load failures.
>     */
>     const(char)* message() const { return _message.ptr; }
> }
> ```
>
> I find it rather annoying, as I'm returning `const(char)*` and 
> not `char*`, but it is what it is. My question is, if I add 
> `return` to the function declarations, will this compile all 
> the way back to DMD 2.067 *without* `-preview=dip25`? It works 
> on 2.091.0. I always assumed a preview feature's syntax wasn't 
> supported without the preview switch.

Return is actually pretty old, so it will compile:

https://run.dlang.io/is/DgbYU9

Typically -preview flags are just looked at during the semantic 
phases.

Another solution could be to turn the functions into templates 
and let the compiler do its attribute inference.


More information about the Digitalmars-d-learn mailing list