www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - deprecated alias

reply Vathix <vathix dprogramming.com> writes:
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
Jan 22 2005
parent "Ben Hinkle" <bhinkle mathworks.com> writes:
"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.
Jan 25 2005