An interesting problem I’ve encountered many times in Java is that of conflicting names. For example, suppose I have the following code:
import wyil.lang.*; import wyil.lang.Type.*; ... public static Type T_Bool = new Type.Bool();
This is all well and good. The problem arises when I want to import another class called Type
from some package. Suppose the wyjc.lang
package contains a class called Type
:
import wyil.lang.*; import wyil.lang.Type.*; import wyjc.lang.*; ... public static Type T_Bool = new Type.Bool(); public static wyjc.lang.Type WYJC_BOOL = new wyjc.lang.Type.Bool();
This is not really a problem — it’s just annoying. I now have to provide full package information whenever I want to work with one of the Type
classes.
What would be really great is to have a more flexible import
statement, like [[Python (programming language)|Python]]. For example:
import wyil.lang.*; import wyil.lang.Type.*; import wyjc.lang.Type as wyjcType; ... public static Type T_Bool = new Type.Bool(); public static wyjcType WYJC_BOOL = new wyjcType.Bool();
This would be a nice and elegant way to resolve this problem of [[Namespace (computer science)|namespaces]]. So, I think I’ll put something like this in Whiley …
And, it looks like others are complaining as well … see here and here.