[Issue 19105] Bogus recursive template expansion via getSymbolsByUDA

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Jul 18 13:21:11 UTC 2019


Simen Kjaeraas <simen.kjaras at gmail.com> changed:

           What    |Removed                     |Added
           Keywords|pull                        |rejects-valid
             Status|RESOLVED                    |REOPENED
                 CC|                            |simen.kjaras at gmail.com
         Resolution|FIXED                       |---

--- Comment #3 from Simen Kjaeraas <simen.kjaras at gmail.com> ---
The "fix" in PR 7100 does nothing to fix the actual issue here - it only
prohibits valid use cases, and should very clearly be reverted. See issue

This issue is a DMD issue, and no amount of Phobos fiddling is gonna fix it.
Here's a reduced example:

template test(alias T) {
    alias i = T.C;
    alias test = int;

struct A(Args...) {}

struct S1 {
    // No error
    alias dummy = test!S1;
    alias C = A!(test!S1);
struct S2 {
    // Recursive template expansion
    alias C = A!(test!S2);

As we can see, we're not using the result of T.C, and the simple use of a dummy
alias prevents the recursive expansion. Clearly, something is wrong in the
compiler for this behavior to happen.


More information about the Digitalmars-d-bugs mailing list