Thread overview
[Issue 21905] case of IFTI failure when combining `ref`, and `alias this` on a static instance
[Issue 21905] case of infinite loop when combining IFTI, `ref`, and `alias this` on static instance
May 07, 2021
Basile-z
May 08, 2021
Basile-z
May 08, 2021
Basile-z
May 08, 2021
Basile-z
May 08, 2021
Dlang Bot
Jul 07, 2021
Dlang Bot
Sep 28, 2021
Basile-z
May 07, 2021
https://issues.dlang.org/show_bug.cgi?id=21905

Basile-z <b2.temp@gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|infinite loop when          |case of infinite loop when
                   |compiling                   |combining IFTI, `ref`, and
                   |std.algorithm.each on a     |`alias this` on static
                   |type with static range      |instance
                   |primitives                  |

--- Comment #1 from Basile-z <b2.temp@gmx.com> ---
reduced:

---
struct Conv
{
    static StaticIterable b;
    alias b this;
}

struct StaticIterable
{
    static Conv b;
    alias b this;
}

void each(T)(ref T r)
{
    return ;
}

void main()
{
    StaticIterable.each!();
}
---

--
May 08, 2021
https://issues.dlang.org/show_bug.cgi?id=21905

Basile-z <b2.temp@gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           See Also|                            |https://issues.dlang.org/sh
                   |                            |ow_bug.cgi?id=21543

--- Comment #2 from Basile-z <b2.temp@gmx.com> ---
the loop is fixed with the most recent versions but it seems that valid code get rejected:

---
struct Conv
{
    StaticIterable b;
    alias b this;
}

struct StaticIterable
{
    static Conv b;
    alias b this;
}

void each(ref StaticIterable r)
{
    return ;
}

void main()
{
    StaticIterable s;
    each(s);
}
---

--
May 08, 2021
https://issues.dlang.org/show_bug.cgi?id=21905

Basile-z <b2.temp@gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |rejects-valid

--
May 08, 2021
https://issues.dlang.org/show_bug.cgi?id=21905

Basile-z <b2.temp@gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|case of infinite loop when  |case of IFTI failure when
                   |combining IFTI, `ref`, and  |combining `ref`, and `alias
                   |`alias this` on static      |this` on a static instance
                   |instance                    |

--
May 08, 2021
https://issues.dlang.org/show_bug.cgi?id=21905

Dlang Bot <dlang-bot@dlang.rocks> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |pull

--- Comment #3 from Dlang Bot <dlang-bot@dlang.rocks> ---
@TungstenHeart created dlang/dmd pull request #12503 "fix 21905 - case of IFTI failure when combining `ref`, and `alias this` on a static instance" fixing this issue:

- fix 21905 - case of IFTI failure when combining `ref`, and `alias this` on a static instance

https://github.com/dlang/dmd/pull/12503

--
July 07, 2021
https://issues.dlang.org/show_bug.cgi?id=21905

--- Comment #4 from Dlang Bot <dlang-bot@dlang.rocks> ---
@ibuclaw updated dlang/dmd pull request #12798 "Issue 21488 - Always compile dmd with -fPIC on POSIX targets" fixing this issue:

- fix 21905 - case of IFTI failure when combining `ref`, and `alias this` on a static instance

https://github.com/dlang/dmd/pull/12798

--
September 28, 2021
https://issues.dlang.org/show_bug.cgi?id=21905

Basile-z <b2.temp@gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--