blob: 785c3e247571caa418c39daa32bf432b66bb0537 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.internal.compiler.ast;
import org.eclipse.jdt.internal.compiler.ASTVisitor;
import org.eclipse.jdt.internal.compiler.CompilationResult;
import org.eclipse.jdt.internal.compiler.lookup.BlockScope;
import org.eclipse.jdt.internal.compiler.lookup.ClassScope;
import org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope;
import org.eclipse.jdt.internal.compiler.problem.AbortType;
/**
* Enum constant node
*/
public class EnumConstant extends TypeDeclaration {
public Expression[] arguments;
public EnumConstant(CompilationResult compilationResult) {
super(compilationResult);
this.compilationResult = compilationResult;
}
public StringBuffer print(int indent, StringBuffer output) {
output.append(name);
if (arguments != null) {
output.append('(');
int length = arguments.length;
for (int i = 0; i < length - 1; i++) {
arguments[i].print(0, output);
output.append(", ");//$NON-NLS-1$
}
arguments[length - 1].print(0, output);
output.append(')');
}
printBody(indent, output);
return output;
}
/**
* Iteration for a package member type
*
*/
public void traverse(
ASTVisitor visitor,
CompilationUnitScope unitScope) {
if (ignoreFurtherInvestigation)
return;
try {
if (visitor.visit(this, unitScope)) {
if (this.annotations != null) {
int annotationsLength = this.annotations.length;
for (int i = 0; i < annotationsLength; i++)
this.annotations[i].traverse(visitor, scope);
}
if (this.arguments != null) {
int length = this.arguments.length;
for (int i = 0; i < length; i++)
this.arguments[i].traverse(visitor, scope);
}
if (this.memberTypes != null) {
int length = this.memberTypes.length;
for (int i = 0; i < length; i++)
this.memberTypes[i].traverse(visitor, scope);
}
if (this.enums != null) {
int length = this.enums.length;
for (int i = 0; i < length; i++)
this.enums[i].traverse(visitor, scope);
}
if (this.fields != null) {
int length = this.fields.length;
for (int i = 0; i < length; i++) {
FieldDeclaration field;
if ((field = this.fields[i]).isStatic()) {
field.traverse(visitor, staticInitializerScope);
} else {
field.traverse(visitor, initializerScope);
}
}
}
if (this.methods != null) {
int length = this.methods.length;
for (int i = 0; i < length; i++)
this.methods[i].traverse(visitor, scope);
}
}
visitor.endVisit(this, unitScope);
} catch (AbortType e) {
// silent abort
}
}
/**
* Iteration for a local innertype
*
*/
public void traverse(ASTVisitor visitor, BlockScope blockScope) {
if (ignoreFurtherInvestigation)
return;
try {
if (visitor.visit(this, blockScope)) {
if (this.annotations != null) {
int annotationsLength = this.annotations.length;
for (int i = 0; i < annotationsLength; i++)
this.annotations[i].traverse(visitor, scope);
}
if (this.arguments != null) {
int length = this.arguments.length;
for (int i = 0; i < length; i++)
this.arguments[i].traverse(visitor, scope);
}
if (this.memberTypes != null) {
int length = this.memberTypes.length;
for (int i = 0; i < length; i++)
this.memberTypes[i].traverse(visitor, scope);
}
if (this.enums != null) {
int length = this.enums.length;
for (int i = 0; i < length; i++)
this.enums[i].traverse(visitor, scope);
}
if (this.fields != null) {
int length = this.fields.length;
for (int i = 0; i < length; i++) {
FieldDeclaration field;
if ((field = this.fields[i]).isStatic()) {
field.traverse(visitor, staticInitializerScope);
} else {
field.traverse(visitor, initializerScope);
}
}
}
if (this.methods != null) {
int length = this.methods.length;
for (int i = 0; i < length; i++)
this.methods[i].traverse(visitor, scope);
}
}
visitor.endVisit(this, blockScope);
} catch (AbortType e) {
// silent abort
}
}
/**
* Iteration for a member innertype
*
*/
public void traverse(ASTVisitor visitor, ClassScope classScope) {
if (ignoreFurtherInvestigation)
return;
try {
if (visitor.visit(this, classScope)) {
if (this.annotations != null) {
int annotationsLength = this.annotations.length;
for (int i = 0; i < annotationsLength; i++)
this.annotations[i].traverse(visitor, scope);
}
if (this.arguments != null) {
int length = this.arguments.length;
for (int i = 0; i < length; i++)
this.arguments[i].traverse(visitor, scope);
}
if (this.memberTypes != null) {
int length = this.memberTypes.length;
for (int i = 0; i < length; i++)
this.memberTypes[i].traverse(visitor, scope);
}
if (this.enums != null) {
int length = this.enums.length;
for (int i = 0; i < length; i++)
this.enums[i].traverse(visitor, scope);
}
if (this.fields != null) {
int length = this.fields.length;
for (int i = 0; i < length; i++) {
FieldDeclaration field;
if ((field = this.fields[i]).isStatic()) {
field.traverse(visitor, staticInitializerScope);
} else {
field.traverse(visitor, initializerScope);
}
}
}
if (this.methods != null) {
int length = this.methods.length;
for (int i = 0; i < length; i++)
this.methods[i].traverse(visitor, scope);
}
}
visitor.endVisit(this, classScope);
} catch (AbortType e) {
// silent abort
}
}
}