private FieldDeclaration addInstanceVar(ConstructorDeclaration constructor, TypeReference typeReference, TypeDeclaration innerClass) { FieldDeclaration field = new FieldDeclaration(); field.modifiers = AccPrivate | AccStatic | AccFinal; field.name = "INSTANCE".toCharArray(); field.type = typeReference; AllocationExpression exp = new AllocationExpression(); exp.type = typeReference; exp.binding = constructor.binding; exp.sourceStart = innerClass.sourceStart; exp.sourceEnd = innerClass.sourceEnd; field.initialization = exp; return field; }
public void generateSyntheticBodyForEnumInitializationMethod(SyntheticMethodBinding methodBinding) { // no local used this.maxLocals = 0; // generate all enum constants SourceTypeBinding sourceTypeBinding = (SourceTypeBinding) methodBinding.declaringClass; TypeDeclaration typeDeclaration = sourceTypeBinding.scope.referenceContext; BlockScope staticInitializerScope = typeDeclaration.staticInitializerScope; FieldDeclaration[] fieldDeclarations = typeDeclaration.fields; for (int i = methodBinding.startIndex, max = methodBinding.endIndex; i < max; i++) { FieldDeclaration fieldDecl = fieldDeclarations[i]; if (fieldDecl.isStatic()) { if (fieldDecl.getKind() == AbstractVariableDeclaration.ENUM_CONSTANT) { fieldDecl.generateCode(staticInitializerScope, this); } } } return_(); } public void generateSyntheticBodyForFieldReadAccess(SyntheticMethodBinding accessMethod) {
for (int i = 0, count = this.fields.length; i < count; i++) { FieldDeclaration field = this.fields[i]; if (field.isStatic()) { if ((staticFieldInfo.tagBits & FlowInfo.UNREACHABLE_OR_DEAD) != 0) field.bits &= ~ASTNode.IsReachable; staticFieldInfo = field.analyseCode(this.staticInitializerScope, staticInitializerContext, staticFieldInfo); nonStaticFieldInfo = field.analyseCode(this.initializerScope, initializerContext, nonStaticFieldInfo);
initializationScope.lastVisibleFieldID = this.binding.id; resolveAnnotations(initializationScope, this.annotations, this.binding); CastExpression.checkNeedForAssignedCast(initializationScope, fieldType, (CastExpression) this.initialization); } else if (isBoxingCompatible(initializationType, fieldType, this.initialization, initializationScope)) { this.initialization.computeConversion(initializationScope, fieldType, initializationType); if (this.initialization instanceof CastExpression
@Override public boolean visit(TypeDeclaration localTypeDeclaration, BlockScope scope) { CtType<?> t = createType(localTypeDeclaration); t.setDocComment(getJavaDoc(localTypeDeclaration.javadoc, scope.referenceCompilationUnit())); context.enter(t, localTypeDeclaration); // AST bug HACK (see TypeDeclaration.traverse) if (localTypeDeclaration.fields != null) { int length = localTypeDeclaration.fields.length; for (int i = 0; i < length; i++) { FieldDeclaration field; if ((field = localTypeDeclaration.fields[i]).isStatic()) { // local type actually can have static fields field.traverse(this, localTypeDeclaration.initializerScope); } } } return true; }
for (int i = 0, max = declaringType.fields.length; i < max; i++) { FieldDeclaration fieldDecl; if (!(fieldDecl = declaringType.fields[i]).isStatic()) { fieldDecl.generateCode(initializerScope, codeStream);
public String toString(int tab) { StringBuffer result = new StringBuffer(tabString(tab)); result.append("Recovered initializer:\n"); //$NON-NLS-1$ this.fieldDeclaration.print(tab + 1, result); if (this.annotations != null) { for (int i = 0; i < this.annotationCount; i++) { result.append("\n"); //$NON-NLS-1$ result.append(this.annotations[i].toString(tab + 1)); } } if (this.initializerBody != null) { result.append("\n"); //$NON-NLS-1$ result.append(this.initializerBody.toString(tab + 1)); } return result.toString(); } public FieldDeclaration updatedFieldDeclaration(int depth, Set<TypeDeclaration> knownTypes){
@Override public void resolve(MethodScope initializationScope) { super.resolve(initializationScope); throw new CompletionNodeFound(this, initializationScope); } }
if (field instanceof Initializer) this.parse((Initializer) field, type, unit); field.traverse(this.localDeclarationVisitor, null);
@Override IMethodBinding resolveConstructor(EnumConstantDeclaration enumConstantDeclaration) { org.eclipse.jdt.internal.compiler.ast.ASTNode node = (org.eclipse.jdt.internal.compiler.ast.ASTNode) this.newAstToOldAst.get(enumConstantDeclaration); if (node instanceof org.eclipse.jdt.internal.compiler.ast.FieldDeclaration) { org.eclipse.jdt.internal.compiler.ast.FieldDeclaration fieldDeclaration = (org.eclipse.jdt.internal.compiler.ast.FieldDeclaration) node; if (fieldDeclaration.getKind() == AbstractVariableDeclaration.ENUM_CONSTANT && fieldDeclaration.initialization != null) { AllocationExpression allocationExpression = (AllocationExpression) fieldDeclaration.initialization; return getMethodBinding(allocationExpression.binding); } } return null; }
private void pushInitializerMethodInfo(FieldDeclaration x, MethodScope scope) { JMethod initMeth; if (x.isStatic()) { initMeth = curClass.type.getClinitMethod(); } else { initMeth = curClass.type.getInitMethod(); } pushMethodInfo(new MethodInfo(initMeth, (JMethodBody) initMeth.getBody(), scope)); }
public void generateSyntheticBodyForEnumInitializationMethod(SyntheticMethodBinding methodBinding) { // no local used this.maxLocals = 0; // generate all enum constants SourceTypeBinding sourceTypeBinding = (SourceTypeBinding) methodBinding.declaringClass; TypeDeclaration typeDeclaration = sourceTypeBinding.scope.referenceContext; BlockScope staticInitializerScope = typeDeclaration.staticInitializerScope; FieldDeclaration[] fieldDeclarations = typeDeclaration.fields; for (int i = methodBinding.startIndex, max = methodBinding.endIndex; i < max; i++) { FieldDeclaration fieldDecl = fieldDeclarations[i]; if (fieldDecl.isStatic()) { if (fieldDecl.getKind() == AbstractVariableDeclaration.ENUM_CONSTANT) { fieldDecl.generateCode(staticInitializerScope, this); } } } return_(); } public void generateSyntheticBodyForFieldReadAccess(SyntheticMethodBinding accessMethod) {
for (int i = 0, count = this.fields.length; i < count; i++) { FieldDeclaration field = this.fields[i]; if (field.isStatic()) { if ((staticFieldInfo.tagBits & FlowInfo.UNREACHABLE) != 0) field.bits &= ~ASTNode.IsReachable; staticFieldInfo = field.analyseCode(this.staticInitializerScope, staticInitializerContext, staticFieldInfo); nonStaticFieldInfo = field.analyseCode(this.initializerScope, initializerContext, nonStaticFieldInfo);
initializationScope.lastVisibleFieldID = this.binding.id; resolveAnnotations(initializationScope, this.annotations, this.binding); CastExpression.checkNeedForAssignedCast(initializationScope, fieldType, (CastExpression) this.initialization); } else if (isBoxingCompatible(initializationType, fieldType, this.initialization, initializationScope)) { this.initialization.computeConversion(initializationScope, fieldType, initializationType); if (this.initialization instanceof CastExpression
for (int i = 0, max = declaringType.fields.length; i < max; i++) { FieldDeclaration fieldDecl; if (!(fieldDecl = declaringType.fields[i]).isStatic()) { fieldDecl.generateCode(initializerScope, codeStream);
public String toString(int tab) { StringBuffer result = new StringBuffer(tabString(tab)); result.append("Recovered initializer:\n"); //$NON-NLS-1$ this.fieldDeclaration.print(tab + 1, result); if (this.annotations != null) { for (int i = 0; i < this.annotationCount; i++) { result.append("\n"); //$NON-NLS-1$ result.append(this.annotations[i].toString(tab + 1)); } } if (this.initializerBody != null) { result.append("\n"); //$NON-NLS-1$ result.append(this.initializerBody.toString(tab + 1)); } return result.toString(); } public FieldDeclaration updatedFieldDeclaration(int depth, Set knownTypes){
public void resolve(MethodScope initializationScope) { super.resolve(initializationScope); throw new CompletionNodeFound(this, initializationScope); } }