Enums - probably an old subject

Steve Teale steve.teale at britseyeview.com
Thu Nov 21 08:48:58 PST 2013


On Thursday, 21 November 2013 at 08:05:03 UTC, Michal Minich 
wrote:
> On Thursday, 21 November 2013 at 07:42:48 UTC, Craig Dillabaugh 
> wrote:
>> I should also mention, this post likely better belongs in:
>>
>> digitalmars.D.learn
>
> I don't entirely think so. I think the OP is arguing that D 
> should be able to identify symbol as specific enum's field when 
> used:
>   - in place of function argument when the fn parameters is of 
> enum type
>   - and when comparing for equality with variable of enum type.
>
> ie. the lookup of the symbol should be first inside the enum, 
> and the continue normally.
>
> There was plan long long time ago to implement it, but I don't 
> remember for which reason it was not.
>
> In order to consider this again for implementation I think 
> proper DIP should be written where complete semantics of this 
> should be described. For one I don't know how it should be have 
> if you would have variable of the same name as enum field i.e:
>
> enum State { on, off }
> auto State s;
> auto on = 1;
> if (on == on) ?
>
> And I think it would be especially confusing when enum which is 
> function parameters has the same field name as local variable 
> on call site:
>
> void change (State s) {}
> void main () { State on = State.off, change (on) }

Michal,

Well thank you for a sane reply! I've been with D since about 
2006, and I prefer to not make a complete fool of myself.

I have to admit that the question was asked in anger. I was 
working on some old code, and saw this large bare enum, so I gave 
it a qualifier. It then took me about six hours to stubbornly go 
through the rest of the code to add the qualifier - aargh!

Yes, I agree that the circumstances under which the inference 
could be made may be limited, but in a function where a single 
argument is an enum name it's really surprising that it is not 
implemented.

Could 'with' be extended to cover enum names do you think? Also a 
supplementary question - does auto lock out some things like 
this, are there other examples?


More information about the Digitalmars-d mailing list