Mitigating the attribute proliferation - attribute inference for functions
jmh530 via Digitalmars-d
digitalmars-d at puremagic.com
Fri Jul 17 11:23:56 PDT 2015
On Friday, 17 July 2015 at 16:40:56 UTC, Jonathan M Davis wrote:
>
> However, it has way too many holes in it still, because we've
> blacklisted rather than whitelisted
Not being a fan of constantly writing these attributes, I had
been thinking a month or so ago that it would be cool if you
could just specify defaults for the function attributes on a
module-by-module basis. However, it's pretty easy to just set
something similar up using the existing language features.
import std.traits;
@safe
{
int foo(int x)
{
return x * 2;
}
int bar(int x) @system
{
return x * 2;
}
}
void main()
{
static assert(functionAttributes!foo & FunctionAttribute.safe);
static assert(functionAttributes!bar & FunctionAttribute.system);
}
It even generates the correct documentation that foo is @safe and
bar is @system.
I think this might be similar to Martin Nowak's point about
@unsafe { } guards, but I'm not entirely sure what he meant.
More information about the Digitalmars-d
mailing list