digitalmars.D.bugs - [Issue 22133] New: [REG2.097] Breaking change in DotTemplateExp type
- d-bugmail puremagic.com (35/35) Jul 20 2021 https://issues.dlang.org/show_bug.cgi?id=22133
https://issues.dlang.org/show_bug.cgi?id=22133 Issue ID: 22133 Summary: [REG2.097] Breaking change in DotTemplateExp type semantics leading to e.g. isInputRange regression Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: regression Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: kinke gmx.net ``` import std.range.primitives : isInputRange; struct Slice { bool empty() const; int front() const; void popFront()() // note: requires a mutable Slice {} } static assert(isInputRange!( Slice) == true); static assert(isInputRange!(const Slice) == false); // fails since v2.097 ``` It boils down to both of the following assertions failing since v2.097: ``` enum isInputRange1(R) = is(typeof((R r) => r.popFront)); enum isInputRange2(R) = __traits(compiles, (R r) => r.popFront); static assert(isInputRange1!(const Slice) == false); static assert(isInputRange2!(const Slice) == false); ``` Regression introduced by https://github.com/dlang/dmd/pull/12294. --
Jul 20 2021