version(deprecated)?

Johannes Pfau nospam at example.com
Mon Nov 5 00:53:47 PST 2012


Am Sun, 04 Nov 2012 16:48:26 +0100
schrieb "monarch_dodra" <monarchdodra at gmail.com>:

> I'm wondering if there is a way to know you are in deprecated 
> mode or not?
> 
> The deprecated attribute is great, because it gives a clear 
> compile error (as opposed to a static if, which just hides the 
> function completely).
> 
> But the attribute alone is not enough: I have a class with a 
> deprecated method, which consumes a book-keeping attribute: Not 
> only will this attribute exist even though it has become useless, 
> but the other functions will keep updating this attribute, even 
> though it has no more consumers.
> 
> What's more, I'd still want to unittest that function, but 
> obviously, only when compiled in "-unittest -d".
> 
> So I have a problem.
> 
> --------
> Finding out if the compilation mode is deprecated is easy enough:
> 
> //----
> deprecated @property void deprecateExists(){}
> enum deprecatedActive = is(typeof(deprecateExists));
> //----
> 
> The thing is it's kind of dirty, and I wouldn't want to have to 
> copy paste this in all of my modules, just to know whether or not 
> deprecation is active...
> 
> 
> --------
> We've currently implemented "version(assert)" and 
> "version(debug)". Do you think we should request having a 
> "version(deprecated)"? I think it would be very helpful. Thoughts?
> 
> 

As deprecated now allows optional messages some folks have suggested to
make deprecated behave like in other languages: Warn if something
deprecated is used, do not print warnings if compiling with
-deprecated.
This would conflict with your proposed usage of version(deprecated).


More information about the Digitalmars-d mailing list