Thread overview
[Issue 23273] [REG2.095] Error on passing inout variable to function (not an lvalue)
Jul 31, 2022
mhh
Jul 31, 2022
kinke
Jul 31, 2022
kinke
Jul 31, 2022
mhh
July 29, 2022
https://issues.dlang.org/show_bug.cgi?id=23273

johanengelen@weka.io changed:

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

--
July 31, 2022
https://issues.dlang.org/show_bug.cgi?id=23273

mhh <maxhaton@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |maxhaton@gmail.com

--- Comment #1 from mhh <maxhaton@gmail.com> ---
Appears to be due to a difference in the .deco of each type despite them being the same according to toChars()

--
July 31, 2022
https://issues.dlang.org/show_bug.cgi?id=23273

--- Comment #2 from johanengelen@weka.io ---
Digger says it is introduced by: https://github.com/dlang/dmd/pull/10124

--
July 31, 2022
https://issues.dlang.org/show_bug.cgi?id=23273

kinke <kinke@gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kinke@gmx.net

--- Comment #3 from kinke <kinke@gmx.net> ---
I bet that PR just uncovered another issue, and the relevant questions IMO are:

a) Why is there a cast in the 1st place? When removing the `ref`, the `-vcg-ast` output reveals a silly

inout pure nothrow @nogc @safe void locate()
{
    inout(Cell)* cell = null;
    this.getCell(cast(inout(Cell)*)cell);
}

b) Why aren't the 2 types equivalent, where CastExp.isLvalue() would return
true?
https://github.com/dlang/dmd/blob/f282f98f7b8cadd4e37fb95c78d3590756f817e7/src/dmd/expression.d#L5389

--
July 31, 2022
https://issues.dlang.org/show_bug.cgi?id=23273

--- Comment #4 from kinke <kinke@gmx.net> ---
... bringing us back to Max's reply that I've overlooked. ;) - Probably some missing Type.merge() somewhere, causing the missing equivalence and so the cast in the first place.

--
July 31, 2022
https://issues.dlang.org/show_bug.cgi?id=23273

--- Comment #5 from mhh <maxhaton@gmail.com> ---
I concur with both points

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

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

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

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

--