Implicit enum conversions are a stupid PITA

Clemens eriatarka84 at gmail.com
Thu Mar 25 16:50:31 PDT 2010


Walter Bright Wrote:

> Adam D. Ruppe wrote:
> > The argument most often brought up for keeping octal *at all* is unix
> > filesystem permissions. They are only ever as big as four digits (AFAIK).
> 
> There is one other reason: converting C code to D code. This should follow the 
> principle of "if it doesn't give a compiler error, it should produce the same 
> result". Translating:
> 
>     0177
> 
> in C to:
> 
>     0177
> 
> in D will silently produce a very different result (should such a number be 
> decimal).

How about a command line argument to DMD which can be used to aid in porting legacy C code? It would cause the compiler to generate a warning (or error if you wish) for every occurrence of an ambiguous construct like this. Once all such cases have been converted to valid D code and the code compiles without warnings, the command line argument can be dropped.

This allows D to escape from the C compatibility trap which has encumbered C++ so much while still giving safety against subtle bugs while porting old code.



More information about the Digitalmars-d mailing list