import eclipse 3.1 M4 compiler
[org.ibex.tool.git] / src / org / eclipse / jdt / internal / compiler / ast / AbstractVariableDeclaration.java
index cce62fc..ec08039 100644 (file)
@@ -15,6 +15,7 @@ import org.eclipse.jdt.internal.compiler.flow.FlowInfo;
 import org.eclipse.jdt.internal.compiler.lookup.BlockScope;
 import org.eclipse.jdt.internal.compiler.lookup.InvocationSite;
 import org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
+import org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
 
 public abstract class AbstractVariableDeclaration extends Statement implements InvocationSite {
        public int declarationEnd;
@@ -24,6 +25,7 @@ public abstract class AbstractVariableDeclaration extends Statement implements I
        public Expression initialization;
        public int modifiers;
        public int modifiersSourceStart;
+       public Annotation[] annotations;
 
        public char[] name;
 
@@ -32,6 +34,27 @@ public abstract class AbstractVariableDeclaration extends Statement implements I
        public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) {
                return flowInfo;
        }
+       
+       public static final int FIELD = 1;
+       public static final int INITIALIZER = 2;
+       public static final int ENUM_CONSTANT = 3;
+       public static final int LOCAL_VARIABLE = 4;
+       public static final int PARAMETER = 5;
+       public static final int TYPE_PARAMETER = 6;
+       
+       
+       /**
+        * @see org.eclipse.jdt.internal.compiler.lookup.InvocationSite#genericTypeArguments()
+        */
+       public TypeBinding[] genericTypeArguments() {
+               return null;
+       }
+       
+       /**
+        * Returns the constant kind of this variable declaration
+        */
+       public abstract int getKind();
+       
        /* (non-Javadoc)
         * @see org.eclipse.jdt.internal.compiler.lookup.InvocationSite#isSuperAccess()
         */
@@ -46,17 +69,29 @@ public abstract class AbstractVariableDeclaration extends Statement implements I
                return false;
        }
 
-       
        public StringBuffer printStatement(int indent, StringBuffer output) {
 
                printIndent(indent, output);
                printModifiers(this.modifiers, output);
-               type.print(0, output).append(' ').append(this.name); 
-               if (initialization != null) {
-                       output.append(" = "); //$NON-NLS-1$
-                       initialization.printExpression(indent, output);
+               if (this.annotations != null) printAnnotations(this.annotations, output);
+               
+               if (type != null) {
+                       type.print(0, output).append(' ');
+               }
+               output.append(this.name); 
+               switch(getKind()) {
+                       case ENUM_CONSTANT:
+                               if (initialization != null) {
+                                       initialization.printExpression(indent, output);
+                               }
+                               return output.append(',');
+                       default:
+                               if (initialization != null) {
+                                       output.append(" = "); //$NON-NLS-1$
+                                       initialization.printExpression(indent, output);
+                               }
+                               return output.append(';');
                }
-               return output.append(';');
        }
 
        public void resolve(BlockScope scope) {