[Issue 22708] New: switch statement with an undefined symbol results in many errors
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Jan 27 18:29:35 UTC 2022
https://issues.dlang.org/show_bug.cgi?id=22708
Issue ID: 22708
Summary: switch statement with an undefined symbol results in
many errors
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Keywords: diagnostic
Severity: minor
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: schveiguy at gmail.com
Consider this code:
```d
enum Foo
{
one, two
}
void main()
{
final switch(foo()) { // oops, forgot to define foo()
case Foo.one: break;
case Foo.two: break;
}
}
```
In addition to the correct error of "foo" not being defined, the compiler will
emit nonsense errors based on the case statements.
The error has changed throughout the years.
for 2.097, the error is:
Error: duplicate `case two` in `switch` statement
Note the missing "Foo." prefix, no error about case `Foo.one`, and also, the
nonsensical error.
For 2.098.1, the error has changed to:
Error: `case` must be a `string` or an integral constant, not `one`
Error: `case` must be a `string` or an integral constant, not `two`
Such errors should either be omitted, or adjusted to be less confusing.
--
More information about the Digitalmars-d-bugs
mailing list