[Issue 23400] New: [REG 2.099] Can't format enum value whose base type has non-const opEquals
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun Oct 9 03:25:09 UTC 2022
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 at puremagic.com
Reporter: snarwin+bugzilla at 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)`
-----
--
More information about the Digitalmars-d-bugs
mailing list