DIP1044---"Enum Type Inference"---Formal Assessment

bachmeier no at spam.net
Thu Apr 27 13:05:00 UTC 2023


On Thursday, 27 April 2023 at 06:10:57 UTC, Basile B. wrote:

> It's a misconception of the problem that the DIP tried to 
> solve. What the DIP tried to solve is that the compiler should 
> know that you are using an enum member. Actually I even think 
> this should work without any special syntax, as a "last 
> resort", let's say. But as you've explained, through Mike's 
> report, this causes problems for D because the identifier 
> resolution is tied to a particular implementation, i.e your 
> fast symtabs.

I don't think it's a misconception. It's more like a complete 
lack of clarity. What would be the point of complexifying the 
language for the new programmer when you can just use an 
anonymous enum? This program runs just fine:

```
import std.stdio;

enum {
	A1,
	B1,
	C1,
	D1
}

enum {
	_A,
	_B,
	_C,
	_D
}

void main() {
	writeln(A1);
	writeln(_A);
	writeln(A1 == _A);
	
	auto flag = _B;
	switch(flag) {
		case _A:
			writeln("_A");
			break;
		case _B:
			writeln("_B");
			break;
		case _C:
			writeln("_C");
			break;
		case _D:
			writeln("_D");
			break;
		default:
			break;
	}
}
```

What's the point in using a named enum if you want an anonymous 
enum? The response when this question was asked was not "because 
[something where it matters]". It was instead to ignore the 
question, give an unrealistic example that was solved by the 
response, and insert a bunch of unhelpful hostility.


More information about the Digitalmars-d-announce mailing list