digitalmars.D.bugs - [Issue 23400] New: [REG 2.099] Can't format enum value whose base
- d-bugmail puremagic.com (56/56) Oct 08 2022 https://issues.dlang.org/show_bug.cgi?id=23400
https://issues.dlang.org/show_bug.cgi?id=23400 Issue ID: 23400 Summary: [REG 2.099] Can't format enum value whose base type has non-const opEquals Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: regression Priority: P1 Component: phobos Assignee: nobody puremagic.com Reporter: snarwin+bugzilla gmail.com As of DMD 2.100.2, the following program fails to compile: --- struct flagenum { auto opEquals(typeof(this) a) { return false; } } enum foo { a = flagenum() } void main() { import std.format: formatValue, singleSpec; import std.range: nullSink; foo bar; auto spec = singleSpec("%s"); auto sink = nullSink; formatValue(sink, bar, spec); } --- The error message is: --- /usr/include/dmd/phobos/std/format/internal/write.d(3024): Error: mutable method `bug.flagenum.opEquals` is not callable using a `const` object bug.d(2): Consider adding `const` or `inout` here /usr/include/dmd/phobos/std/format/write.d(1239): Error: template instance `std.format.internal.write.formatValueImpl!(NullSink, foo, char)` error instantiating bug.d(16): instantiated from here: `formatValue!(NullSink, foo, char)` --- According to run.dlang.io, this is a regression introduced in Phobos 2.099: 2.079.1 to 2.098.1: Success and no output 2.099.1: Failure with output: ----- /path/to/dmd.linux/dmd2/linux/bin64/../../src/phobos/std/format/internal/write.d(2899): Error: mutable method `onlineapp.flagenum.opEquals` is not callable using a `const` object onlineapp.d(2): Consider adding `const` or `inout` here /path/to/dmd.linux/dmd2/linux/bin64/../../src/phobos/std/format/write.d(1239): Error: template instance `std.format.internal.write.formatValueImpl!(NullSink, foo, char)` error instantiating onlineapp.d(16): instantiated from here: `formatValue!(NullSink, foo, char)` ----- --
Oct 08 2022