import eclipse 3.1 M4 compiler
[org.ibex.tool.git] / src / org / eclipse / jdt / internal / compiler / lookup / Binding.java
index d6225aa..226f46f 100644 (file)
  *******************************************************************************/
 package org.eclipse.jdt.internal.compiler.lookup;
 
-public abstract class Binding implements BindingIds, CompilerModifiers, ProblemReasons {
+import org.eclipse.jdt.internal.compiler.ast.ASTNode;
+
+public abstract class Binding implements CompilerModifiers, ProblemReasons {
+
+       // binding kinds
+       public static final int FIELD = ASTNode.Bit1;
+       public static final int LOCAL = ASTNode.Bit2;
+       public static final int VARIABLE = FIELD | LOCAL;
+       public static final int TYPE = ASTNode.Bit3;
+       public static final int METHOD = ASTNode.Bit4;
+       public static final int PACKAGE = ASTNode.Bit5;
+       public static final int IMPORT = ASTNode.Bit6;
+       public static final int ARRAY_TYPE = TYPE | ASTNode.Bit7;
+       public static final int PARAMETERIZED_TYPE = TYPE | ASTNode.Bit8;
+       public static final int WILDCARD_TYPE = TYPE | ASTNode.Bit9;
+       public static final int RAW_TYPE = TYPE | ASTNode.Bit10;
+       public static final int GENERIC_TYPE = TYPE | ASTNode.Bit11;
+       public static final int TYPE_PARAMETER = TYPE | ASTNode.Bit12;
+       public static final int ANNOTATION_BINDING = TYPE | ASTNode.Bit13; // for annotation refs
+
        /* API
        * Answer the receiver's binding type from Binding.BindingID.
        *
        * Note: Do NOT expect this to be used very often... only in switch statements with
        * more than 2 possible choices.
        */
-       public abstract int bindingType();
+       public abstract int kind();
+       /*
+        * Computes a key that uniquely identifies this binding.
+        * Returns null if binding is not a TypeBinding, a MethodBinding, a FieldBinding or a PackageBinding.
+        */
+       public char[] computeUniqueKey() {
+               return null;
+       }
+       
+       public long getAnnotationTagBits() {
+               // TODO (philippe) need to generalize to methods & fields
+               return 0;
+       }
+
        /* API
        * Answer true if the receiver is not a problem binding
        */
-       
        public final boolean isValidBinding() {
                return problemId() == NoError;
        }
@@ -29,14 +60,13 @@ public abstract class Binding implements BindingIds, CompilerModifiers, ProblemR
        * Answer the problem id associated with the receiver.
        * NoError if the receiver is a valid binding.
        */
-       
+       // TODO (philippe) should rename into problemReason()
        public int problemId() {
                return NoError;
        }
        /* Answer a printable representation of the receiver.
        */
        public abstract char[] readableName();
-
        /* Shorter printable representation of the receiver (no qualified type)
         */     
        public char[] shortReadableName(){