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

Mehrdad wfunction at hotmail.com
Sat Sep 29 16:54:41 PDT 2012


On Saturday, 29 September 2012 at 02:57:42 UTC, David Piepgrass 
wrote:
>> 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....

+1


More information about the Digitalmars-d mailing list