www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.ide - Visual D mixin

reply Amex <Amex gmail.com> writes:
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
parent Rainer Schuetze <r.sagitario gmx.de> writes:
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/
May 31 2019