I have a feature request: "Named enum scope inference"

David Piepgrass qwertie256 at gmail.com
Fri Sep 28 19:58:09 PDT 2012


> I have a feature request: "Named enum scope inference"
>
> The idea is, that whenever a named enum value is expected, you 
> don't need to explicitly specify the scope of the enum value. 
> This would reduce redundancy in typing, just like automatic 
> type inference does.
>
> Examples:
> ---------
>
> enum MyDirection { forward, reverse }
> struct MyIterator(MyDirection dir)
> {
>     ...
> }
>
> int forward = 42; // Doesn't interfere with the next line...
> auto itr = MyIterator!forward(); // Infers MyDirection.forward

I like the spirit of this feature, but as Alex pointed out, 
ambiguity is possible (which could theoretically cause errors in 
existing code) and while I'm not familiar with how the compiler 
is implemented, my spidey-sense thinks that what you're asking 
for could be tricky to implement (in a language that already has 
a very large amount of rules and features.) Plus, I don't like 
the fact that when you see something like "MyIterator!forward" by 
itself in code, there is no obvious clue that forward is an enum 
value and not a class name or a variable. So there is a sort of 
decrease in clarity of the entire language by increasing the 
total number of possible meanings that an identifier can have.

So I think this feature would need a more clear syntax, something 
to indicate that the value is an enum value. I don't currently 
have a really good counterproposal though....


More information about the Digitalmars-d mailing list