Thread overview
[Issue 19190] Circular reference error resolved by getting allMembers
Aug 25, 2018
Yuxuan Shui
Aug 25, 2018
Yuxuan Shui
May 23, 2019
Yuxuan Shui
May 23, 2019
Yuxuan Shui
May 23, 2019
Yuxuan Shui
[Issue 19190] pragma(msg) changes the semantics of a program
May 23, 2019
Yuxuan Shui
Dec 17, 2022
Iain Buclaw
August 25, 2018
https://issues.dlang.org/show_bug.cgi?id=19190

--- Comment #1 from Yuxuan Shui <yshuiv7@gmail.com> ---
Sorry, wrong version of the code is attached. Here is the offending code:

struct lr1 {
    lr1* a;
}
template proxy(T) {
    private alias G = gen!T;
    static if (is(typeof(G.str)))
        enum str = G.str;
}

template gen(T) if (is(T == struct)) {
    enum str = T.stringof;
    private enum xstr = gen!(lr1*).str;
}

template gen(T: S*, S) {
    private alias rc = proxy!S;
    //pragma(msg, __traits(allMembers, rc));
    enum str = rc.str~"_ptr";
}

enum tmp = proxy!lr1.str;

--
August 25, 2018
https://issues.dlang.org/show_bug.cgi?id=19190

--- Comment #2 from Yuxuan Shui <yshuiv7@gmail.com> ---
The behavior of the compiler seems to be sensitive to pragma:

...
// This is the second `gen`
template gen(T: S*, S) {
    private alias rc = proxy!S;
    pragma(msg, is(typeof(rc.str))); // false
    //pragma(msg, __traits(allMembers, rc));
    enum str = rc.str~"_ptr";
}

Above version generate:

package.d(19): Error: variable `package.gen!(lr1*, lr1).str` had semantic
errors when compiling

--
May 23, 2019
https://issues.dlang.org/show_bug.cgi?id=19190

--- Comment #3 from Yuxuan Shui <yshuiv7@gmail.com> ---
The behavior is changed since 2.069.2, as run.dlang.io shows:

https://run.dlang.io/is/lOtIDw

--
May 23, 2019
https://issues.dlang.org/show_bug.cgi?id=19190

Yuxuan Shui <yshuiv7@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|enhancement                 |normal

--- Comment #4 from Yuxuan Shui <yshuiv7@gmail.com> ---
The behavior is changed since 2.069.2, as run.dlang.io shows:

https://run.dlang.io/is/lOtIDw

--
May 23, 2019
https://issues.dlang.org/show_bug.cgi?id=19190

--- Comment #5 from Yuxuan Shui <yshuiv7@gmail.com> ---
This code even triggers an "Error: unknown":

https://run.dlang.io/is/ntQYrl

--
May 23, 2019
https://issues.dlang.org/show_bug.cgi?id=19190

Yuxuan Shui <yshuiv7@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Circular reference error    |pragma(msg) changes the
                   |resolved by getting         |semantics of a program
                   |allMembers                  |

--
December 17, 2022
https://issues.dlang.org/show_bug.cgi?id=19190

Iain Buclaw <ibuclaw@gdcproject.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P1                          |P3

--
December 13
https://issues.dlang.org/show_bug.cgi?id=19190

--- Comment #6 from dlangBugzillaToGithub <robert.schadek@posteo.de> ---
THIS ISSUE HAS BEEN MOVED TO GITHUB

https://github.com/dlang/dmd/issues/19478

DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB

--