May 31, 2019
mixin is 20k+ and mostly has junk, but also missing info

// expansion at
size_t h = 0;foreach (i, T; typeof(p.tupleof))    static if(is(T* : const(.object.Object)*))         h = h * 33 + typeid(const(.object.Object)).getHash(cast(const void*)&p.tupleof[i]);    else         h = h * 33 + typeid(T).getHash(cast(const void*)&p.tupleof[i]);return h;


I'm not sure what this is, it might be from my code but it doesn't list the file

It would be nice to

1. Disable any mixin outputs to the mixin file(unless they are required by D, but I think they are not?) from phobos(maybe make it optional)

2. Alow one to disable the output to the mixin in a single file(a pragma such as pragma(mixin, off);pragma(mixin, on);). This might require something on D itself.


and one has zillions of

// expansion at C:\D\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(558)
lhs < rhs

// expansion at C:\D\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(558)
lhs < rhs

// expansion at C:\D\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(558)
lhs == rhs

// expansion at C:\D\dmd2\windows\bin\..\..\src\phobos\std\typecons.d(558)

// expansion at C:\D\dmd2\windows\bin\..\..\src\phobos\std\functional.d(215)
a < b

// expansion at C:\D\dmd2\windows\bin\..\..\src\phobos\std\functional.d(469)
a < b

// expansion at C:\D\dmd2\windows\bin\..\..\src\phobos\std\functional.d(472)
a < b

// expansion at C:\D\dmd2\windows\bin\..\..\src\phobos\std\functional.d(213)
alias a = __a ;

// expansion at C:\D\dmd2\windows\bin\..\..\src\phobos\std\functional.d(214)
alias b = __b ;


// expansion at C:\D\dmd2\windows\bin\..\..\src\phobos\std\uni.d(7055)

            static if (getValue)
                grapheme ~= ch;
            range.popFront();


// expansion at C:\D\dmd2\windows\bin\..\..\src\phobos\std\uni.d(7063)

            static if (getValue)
                grapheme ~= ch;
            range.popFront();


// expansion at C:\D\dmd2\windows\bin\..\..\src\phobos\std\uni.d(7077)

            static if (getValue)
                grapheme ~= ch;
            range.popFront();



etc...

May 31, 2019

On 31/05/2019 09:18, Amex wrote:
> mixin is 20k+ and mostly has junk, but also missing info
> 
> // expansion at
> size_t h = 0;foreach (i, T; typeof(p.tupleof))    static if(is(T* :
> const(.object.Object)*))         h = h * 33 +
> typeid(const(.object.Object)).getHash(cast(const
> void*)&p.tupleof[i]);    else         h = h * 33 +
> typeid(T).getHash(cast(const void*)&p.tupleof[i]);return h;
>>
> I'm not sure what this is, it might be from my code but it doesn't list the file

It's a compiler generated mixin for hash calculation. I agree, should be omitted.

> 
> It would be nice to
> 
> 1. Disable any mixin outputs to the mixin file(unless they are required
> by D, but I think they are not?) from phobos(maybe make it optional
> 
> 2. Alow one to disable the output to the mixin in a single file(a pragma
> such as pragma(mixin, off);pragma(mixin, on);). This might require
> something on D itself.
> 

Please add an enhancement request for the compiler to https://issues.dlang.org/