/**
* Internal field structure for parsing recovery
*/
+import org.eclipse.jdt.internal.compiler.ast.AbstractVariableDeclaration;
import org.eclipse.jdt.internal.compiler.ast.ArrayTypeReference;
import org.eclipse.jdt.internal.compiler.ast.ASTNode;
import org.eclipse.jdt.internal.compiler.ast.Expression;
}
public FieldDeclaration updatedFieldDeclaration(){
- if (this.anonymousTypes != null && fieldDeclaration.initialization == null) {
- for (int i = 0; i < this.anonymousTypeCount; i++){
- if (anonymousTypes[i].preserveContent){
- fieldDeclaration.initialization = this.anonymousTypes[i].updatedTypeDeclaration().allocation;
+ if (this.anonymousTypes != null) {
+ if(fieldDeclaration.initialization == null) {
+ for (int i = 0; i < this.anonymousTypeCount; i++){
+ if (anonymousTypes[i].preserveContent){
+ fieldDeclaration.initialization = this.anonymousTypes[i].updatedTypeDeclaration().allocation;
+ }
+ }
+ if (this.anonymousTypeCount > 0) fieldDeclaration.bits |= ASTNode.HasLocalTypeMASK;
+ } else if(fieldDeclaration.getKind() == AbstractVariableDeclaration.ENUM_CONSTANT) {
+ // fieldDeclaration is an enum constant
+ for (int i = 0; i < this.anonymousTypeCount; i++){
+ if (anonymousTypes[i].preserveContent){
+ this.anonymousTypes[i].updatedTypeDeclaration();
+ }
}
}
- if (this.anonymousTypeCount > 0) fieldDeclaration.bits |= ASTNode.HasLocalTypeMASK;
}
return fieldDeclaration;
}
public RecoveredElement updateOnClosingBrace(int braceStart, int braceEnd){
if (bracketBalance > 0){ // was an array initializer
bracketBalance--;
- if (bracketBalance == 0) alreadyCompletedFieldInitialization = true;
+ if (bracketBalance == 0) {
+ if(fieldDeclaration.getKind() == AbstractVariableDeclaration.ENUM_CONSTANT) {
+ updateSourceEndIfNecessary(braceEnd - 1);
+ return parent;
+ } else {
+ alreadyCompletedFieldInitialization = true;
+ }
+ }
return this;
} else if (bracketBalance == 0) {
alreadyCompletedFieldInitialization = true;
bracketBalance++;
return null; // no update is necessary (array initializer)
}
+ if (fieldDeclaration.declarationSourceEnd == 0
+ && fieldDeclaration.getKind() == AbstractVariableDeclaration.ENUM_CONSTANT){
+ bracketBalance++;
+ return null; // no update is necessary (enum constant)
+ }
// might be an array initializer
this.updateSourceEndIfNecessary(braceStart - 1, braceEnd - 1);
return this.parent.updateOnOpeningBrace(braceStart, braceEnd);