[dmd-internals] [D-Programming-Language/dmd] 588161: Add option to show deprecated errors as warnings

Leandro Lucarella luca at llucax.com.ar
Mon Nov 12 12:10:12 PST 2012


Jonathan M Davis, el 12 de November a las 19:19 me escribiste:
> On Monday, November 12, 2012 11:08:23 Leandro Lucarella wrote:
> > I'll be more than happy to make the changes if you convince Walter to merge
> > them, it took me more than an year to convince him of this change, and it
> > was completely backwards compatible :D
> > 
> > I did it this way just to increase the chances of being merged, but I
> > strongly believe the right default is to emit warnings for deprecations and
> > have, say, -de for convert them to errors and the regular -d to completely
> > silence them.
> > 
> > Backwards compatibility is not a huge problem as for the extremely special
> > cases when somebody want's the old behaviour as default, it can just add -de
> > to dmd.conf and that's it.
> 
> Except that the change _would_ be backwards compatible. Anything that's 
> already deprecated would just start compiling, whereas before it didn't 
> without -d.

Well, that's not backwards compatible in a strict sense. You are breaking the
"should fail" tests, if you know what I mean. It will break people's
expectations if they are relying in the old behaviour. I agree the impact is
very low and in any case be easily fixed by adding -de to the dmd.conf. Any
subsequent -d will override the -de effect and everything will behave as it did
before.

> Presumably -d still gets rid of the warnings/errors, so there 
> would be no change there. So, there wouldn't really be any effect until more 
> stuff is deprecated after the change is made, because those deprecations 
> wouldn't then break code. The only backwards compatibility which would be
> lost would be the -di flag, since it wouldn't be needed anymore, but it was
> just added, so dmd has never been released with it anyway.

Of course unreleased code doesn't count when it comes to compatibility :)
-di could be kept anyway, in case somebody wants to override a possible -de in
the dmd.conf file. But I don't think this is such a big deal to justify keeping
-di around. I'm just thinking out loud.

> I'm all for arguing in favor of this, but I don't know what Walter's take on 
> it is. I would think though that the fact that making deprecated warn by 
> default would reduce code breakage would be something that he'd be interested 
> in given how much he hates it when people's code gets broken due to library 
> changes. Multiple of us have argued this in at least a couple of places 
> lately, but Walter hasn't responded to the idea anywhere AFAIK.

Yeah, me either, the only response I saw was the sudden merging of the pull
request :)

-- 


More information about the dmd-internals mailing list