January 23, 2005 deprecated alias | ||||
---|---|---|---|---|
| ||||
Say I have a class named Fubar but then realize I didn't type it how I wanted, so I wish to rename it to FooBar and deprecate Fubar, so I try this: class FooBar // Renamed from Fubar. { // ... tons of code ... } deprecated alias FooBar Fubar; // Keep old name for compatibility. But Fubar isn't treated as deprecated because the alias only uses the attributes of FooBar. I believe that many people will want to do what I've attempted. I think "deprecated", "private", "protected", "public" and "package" attributes should apply to aliases and not inherit them from their base becuase those attributes effect how the name is accessed, not the storage. Here's an example, class A { private static int a; } class B { alias A.a b; } B.b would be public static. static affected the storage of A.a, private only affected the name. The current protection of B applied to B.b making it public, but its storage is still static. Thanks, - Chris |
January 25, 2005 Re: deprecated alias | ||||
---|---|---|---|---|
| ||||
Posted in reply to Vathix | "Vathix" <vathix@dprogramming.com> wrote in message news:opsk1hd3vekcck4r@tc3-ppp213.dialup.wzrd.com... > Say I have a class named Fubar but then realize I didn't type it how I wanted, so I wish to rename it to FooBar and deprecate Fubar, so I try this: > > > class FooBar // Renamed from Fubar. > { > // ... tons of code ... > } > > deprecated alias FooBar Fubar; // Keep old name for compatibility. > > > But Fubar isn't treated as deprecated because the alias only uses the attributes of FooBar. The std.stream module also has "deprecated aliases" for the old ReadError etc classes. It would be cool to be able to do more than just put a comment in the code saying "this alias is deprecated please don't use it". The alternative to using an alias by having both the old class ReadError and the new class ReadException is that ReadError would never get thrown by the code so it's useless for user code to try to catch it. So I expect in practise many uses of "deprecated" would be for aliases instead of for classes and other declarations. |
Copyright © 1999-2021 by the D Language Foundation