version(deprecated)?
monarch_dodra
monarchdodra at gmail.com
Mon Nov 5 01:48:47 PST 2012
On Monday, 5 November 2012 at 08:53:48 UTC, Johannes Pfau wrote:
> 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).
Is that even possible? I mean, if I deprecate R.index, then what
is the value of isRandomAccessRange!R? If I call algorithm
"find(r1, r2);", then will I get a message I'm using a deprecated
branch?
Wouldn't the proposal be better served as:
-- : Deprecated stuff just can't be used
-d : You can use deprecated stuff, and you get no warning
whatsoever
-dw : You can use deprecated stuff, but are served with a warning
In that context, we'd keep a clear [w|w/o] deprecated, and my
proposal would not conflict either.
More information about the Digitalmars-d
mailing list