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.