[dmd-internals] Type mangling for deduced attributes
Jonathan M Davis
jmdavisProg at gmx.com
Thu Nov 17 00:03:58 PST 2011
On Thursday, November 17, 2011 07:51:24 Rainer Schuetze wrote:
> On 16.11.2011 15:35, Steve Schveighoffer wrote:
> > Take this argument with a grain of salt, I have very little internal
> > dmd knowledge. But...
> >
> > Isn't deduction of pure/nothrow/safe restricted to templates? Don't
> > templates *require* availability of source?
> >
> > Just saying...
> >
> > -Steve
>
> I think it would be an unexpected restricton to limit pure/nothrow/safe
> inference to templates. But if it is not, using di files instead of d
> files will break code because inference very much depends on whether the
> di-file generation emitted the code or not. Adding inferred attributes
> to the function declarations could help but it currently changes the
> name mangling, breaking it again.
It's _already_ restricted to templates and delegates. You _need_ it for
templates, since whether they can be pure, nothrow, or @safe depends on their
arguments, and the only way to do that without inference is to duplicate the
template a bunch of times with each possible combination of pur,e nothrow, and
@safe. Normal functions, however, do _not_ need the inference. Whether they
can be pure, nothrow, or @safe doesn't change unless you change according to
their arguments.
In any case, I don't quite understand how this is an issue, since as Steve
says, templates _require_ that their source be available.
- Jonathan M Davis
More information about the dmd-internals
mailing list