On Tue, 24 Aug 2010 23:53:44 +0200, Jonathan M Davis
<jmdavisp...@gmail.com> wrote:
On Tuesday, August 24, 2010 14:37:09 bearophile wrote:
Steven Schveighoffer:
> For example, foo(HashSet!int hs) inside the module testme becomes:
> _D6testme3fooFC12dcollections7HashSet14__T7HashSetTiZ7HashSetZv
And I think some more things needs to be added to that string, like a
representation for the pure attribute, etc.
Bye,
bearophile
They probably aren't there because
1. They have nothing to do with overrideability.
2. They have nothing to do with C linking.
Presumably, dmd deals with those attributes at the appropriate time and
then
doesn't bother putting them in the symbol table because they're not
relevant any
more (or if they are relevant, it has other ways of getting at them). If
they
were actually necessary in the symbol name, they'd be there. If they
aren't
necessary, why bother putting them in there, making the symbol names even
longer?
Pure might be worth stuffing in the symbol name, as the compiler may
optimize things differently for pure vs. non-pure(dirty?) code.
E.g. the result of a large, pure function that takes a while to compute
might be cached to prevent calling it twice.
--
Simen