Java Code Examples for org.eclipse.jdt.internal.compiler.ast.ASTNode#IsAnonymousType
The following examples show how to use
org.eclipse.jdt.internal.compiler.ast.ASTNode#IsAnonymousType .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: SourceElementNotifier.java From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 | 6 votes |
protected char[][] getInterfaceNames(TypeDeclaration typeDeclaration) { char[][] interfaceNames = null; int superInterfacesLength = 0; TypeReference[] superInterfaces = typeDeclaration.superInterfaces; if (superInterfaces != null) { superInterfacesLength = superInterfaces.length; interfaceNames = new char[superInterfacesLength][]; } else { if ((typeDeclaration.bits & ASTNode.IsAnonymousType) != 0) { // see PR 3442 QualifiedAllocationExpression alloc = typeDeclaration.allocation; if (alloc != null && alloc.type != null) { superInterfaces = new TypeReference[] { alloc.type}; superInterfacesLength = 1; interfaceNames = new char[1][]; } } } if (superInterfaces != null) { for (int i = 0; i < superInterfacesLength; i++) { interfaceNames[i] = CharOperation.concatWith(superInterfaces[i].getParameterizedTypeName(), '.'); } } return interfaceNames; }
Example 2
Source File: RecoveredElement.java From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 | 6 votes |
public RecoveredElement add(Statement statement, int bracketBalanceValue) { /* default behavior is to delegate recording to parent if any */ resetPendingModifiers(); if (this.parent == null) return this; // ignore if (this instanceof RecoveredType) { TypeDeclaration typeDeclaration = ((RecoveredType) this).typeDeclaration; if (typeDeclaration != null && (typeDeclaration.bits & ASTNode.IsAnonymousType) != 0) { // https://bugs.eclipse.org/bugs/show_bug.cgi?id=291040, new X(<SelectOnMessageSend:zoo()>) { ??? if (statement.sourceStart > typeDeclaration.sourceStart && statement.sourceEnd < typeDeclaration.sourceEnd) { return this; } } } this.updateSourceEndIfNecessary(previousAvailableLineEnd(statement.sourceStart - 1)); return this.parent.add(statement, bracketBalanceValue); }
Example 3
Source File: RecoveredType.java From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 | 6 votes |
public Statement updatedStatement(int depth, Set knownTypes){ // ignore closed anonymous type if ((this.typeDeclaration.bits & ASTNode.IsAnonymousType) != 0 && !this.preserveContent){ return null; } TypeDeclaration updatedType = updatedTypeDeclaration(depth + 1, knownTypes); if (updatedType != null && (updatedType.bits & ASTNode.IsAnonymousType) != 0){ /* in presence of an anonymous type, we want the full allocation expression */ QualifiedAllocationExpression allocation = updatedType.allocation; if (allocation.statementEnd == -1) { allocation.statementEnd = updatedType.declarationSourceEnd; } return allocation; } return updatedType; }
Example 4
Source File: LocalTypeBinding.java From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 | 6 votes |
public LocalTypeBinding(ClassScope scope, SourceTypeBinding enclosingType, CaseStatement switchCase) { super( new char[][] {CharOperation.concat(LocalTypeBinding.LocalTypePrefix, scope.referenceContext.name)}, scope, enclosingType); TypeDeclaration typeDeclaration = scope.referenceContext; if ((typeDeclaration.bits & ASTNode.IsAnonymousType) != 0) { this.tagBits |= TagBits.AnonymousTypeMask; } else { this.tagBits |= TagBits.LocalTypeMask; } this.enclosingCase = switchCase; this.sourceStart = typeDeclaration.sourceStart; MethodScope methodScope = scope.enclosingMethodScope(); MethodBinding methodBinding = methodScope.referenceMethodBinding(); if (methodBinding != null) { this.enclosingMethod = methodBinding; } }
Example 5
Source File: CompletionElementNotifier.java From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 | 5 votes |
protected char[][] getInterfaceNames(TypeDeclaration typeDeclaration) { char[][] interfaceNames = null; int superInterfacesLength = 0; TypeReference[] superInterfaces = typeDeclaration.superInterfaces; if (superInterfaces != null) { superInterfacesLength = superInterfaces.length; interfaceNames = new char[superInterfacesLength][]; } else { if ((typeDeclaration.bits & ASTNode.IsAnonymousType) != 0) { // see PR 3442 QualifiedAllocationExpression alloc = typeDeclaration.allocation; if (alloc != null && alloc.type != null) { superInterfaces = new TypeReference[] { alloc.type}; superInterfacesLength = 1; interfaceNames = new char[1][]; } } } if (superInterfaces != null) { int superInterfaceCount = 0; next: for (int i = 0; i < superInterfacesLength; i++) { TypeReference superInterface = superInterfaces[i]; if (superInterface instanceof CompletionOnKeyword) continue next; if (CompletionUnitStructureRequestor.hasEmptyName(superInterface, this.assistNode)) continue next; interfaceNames[superInterfaceCount++] = CharOperation.concatWith(superInterface.getParameterizedTypeName(), '.'); } if (superInterfaceCount == 0) return null; if (superInterfaceCount < superInterfacesLength) { System.arraycopy(interfaceNames, 0, interfaceNames = new char[superInterfaceCount][], 0, superInterfaceCount); } } return interfaceNames; }
Example 6
Source File: SourceElementNotifier.java From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 | 5 votes |
private int sourceEnd(TypeDeclaration typeDeclaration) { if ((typeDeclaration.bits & ASTNode.IsAnonymousType) != 0) { QualifiedAllocationExpression allocation = typeDeclaration.allocation; if (allocation.enumConstant != null) // case of enum constant body return allocation.enumConstant.sourceEnd; return allocation.type.sourceEnd; } else { return typeDeclaration.sourceEnd; } }
Example 7
Source File: RecoveredAnnotation.java From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 | 5 votes |
public RecoveredElement add(TypeDeclaration typeDeclaration, int bracketBalanceValue) { if (this.annotation == null && (typeDeclaration.bits & ASTNode.IsAnonymousType) != 0){ // ignore anonymous type in annotations when annotation isn't fully recovered return this; } return super.add(typeDeclaration, bracketBalanceValue); }
Example 8
Source File: RecoveredField.java From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 | 5 votes |
public RecoveredElement add(TypeDeclaration typeDeclaration, int bracketBalanceValue) { if (this.alreadyCompletedFieldInitialization || ((typeDeclaration.bits & ASTNode.IsAnonymousType) == 0) || (this.fieldDeclaration.declarationSourceEnd != 0 && typeDeclaration.sourceStart > this.fieldDeclaration.declarationSourceEnd)) { return super.add(typeDeclaration, bracketBalanceValue); } else { // Prepare anonymous type list if (this.anonymousTypes == null) { this.anonymousTypes = new RecoveredType[5]; this.anonymousTypeCount = 0; } else { if (this.anonymousTypeCount == this.anonymousTypes.length) { System.arraycopy( this.anonymousTypes, 0, (this.anonymousTypes = new RecoveredType[2 * this.anonymousTypeCount]), 0, this.anonymousTypeCount); } } // Store type declaration as an anonymous type RecoveredType element = new RecoveredType(typeDeclaration, this, bracketBalanceValue); this.anonymousTypes[this.anonymousTypeCount++] = element; return element; } }
Example 9
Source File: RecoveredType.java From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 | 5 votes |
public String toString(int tab) { StringBuffer result = new StringBuffer(tabString(tab)); result.append("Recovered type:\n"); //$NON-NLS-1$ if ((this.typeDeclaration.bits & ASTNode.IsAnonymousType) != 0) { result.append(tabString(tab)); result.append(" "); //$NON-NLS-1$ } this.typeDeclaration.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.memberTypes != null) { for (int i = 0; i < this.memberTypeCount; i++) { result.append("\n"); //$NON-NLS-1$ result.append(this.memberTypes[i].toString(tab + 1)); } } if (this.fields != null) { for (int i = 0; i < this.fieldCount; i++) { result.append("\n"); //$NON-NLS-1$ result.append(this.fields[i].toString(tab + 1)); } } if (this.methods != null) { for (int i = 0; i < this.methodCount; i++) { result.append("\n"); //$NON-NLS-1$ result.append(this.methods[i].toString(tab + 1)); } } return result.toString(); }
Example 10
Source File: SelectionParser.java From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 | 4 votes |
protected void consumeEnterAnonymousClassBody(boolean qualified) { // EnterAnonymousClassBody ::= $empty if (this.indexOfAssistIdentifier() < 0) { super.consumeEnterAnonymousClassBody(qualified); return; } // trick to avoid creating a selection on type reference char [] oldIdent = assistIdentifier(); setAssistIdentifier(null); TypeReference typeReference = getTypeReference(0); setAssistIdentifier(oldIdent); TypeDeclaration anonymousType = new TypeDeclaration(this.compilationUnit.compilationResult); anonymousType.name = CharOperation.NO_CHAR; anonymousType.bits |= (ASTNode.IsAnonymousType|ASTNode.IsLocalType); QualifiedAllocationExpression alloc = new SelectionOnQualifiedAllocationExpression(anonymousType); markEnclosingMemberWithLocalType(); pushOnAstStack(anonymousType); alloc.sourceEnd = this.rParenPos; //the position has been stored explicitly int argumentLength; if ((argumentLength = this.expressionLengthStack[this.expressionLengthPtr--]) != 0) { this.expressionPtr -= argumentLength; System.arraycopy( this.expressionStack, this.expressionPtr + 1, alloc.arguments = new Expression[argumentLength], 0, argumentLength); } if (qualified) { this.expressionLengthPtr--; alloc.enclosingInstance = this.expressionStack[this.expressionPtr--]; } alloc.type = typeReference; anonymousType.sourceEnd = alloc.sourceEnd; //position at the type while it impacts the anonymous declaration anonymousType.sourceStart = anonymousType.declarationSourceStart = alloc.type.sourceStart; alloc.sourceStart = this.intStack[this.intPtr--]; pushOnExpressionStack(alloc); this.assistNode = alloc; this.lastCheckPoint = alloc.sourceEnd + 1; if (!this.diet){ this.restartRecovery = true; // force to restart in recovery mode this.lastIgnoredToken = -1; if (!isIndirectlyInsideLambdaExpression()) this.currentToken = 0; // opening brace already taken into account this.hasReportedError = true; } anonymousType.bodyStart = this.scanner.currentPosition; this.listLength = 0; // will be updated when reading super-interfaces // recovery if (this.currentElement != null){ this.lastCheckPoint = anonymousType.bodyStart; this.currentElement = this.currentElement.add(anonymousType, 0); if (!isIndirectlyInsideLambdaExpression()) this.currentToken = 0; // opening brace already taken into account this.lastIgnoredToken = -1; } }
Example 11
Source File: RecoveredUnit.java From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 | 4 votes |
public RecoveredElement add(TypeDeclaration typeDeclaration, int bracketBalanceValue) { if ((typeDeclaration.bits & ASTNode.IsAnonymousType) != 0){ if (this.typeCount > 0) { // add it to the last type RecoveredType lastType = this.types[this.typeCount-1]; lastType.bodyEnd = 0; // reopen type lastType.typeDeclaration.bodyEnd = 0; // reopen type lastType.typeDeclaration.declarationSourceEnd = 0; // reopen type lastType.bracketBalance++; // expect one closing brace resetPendingModifiers(); return lastType.add(typeDeclaration, bracketBalanceValue); } } if (this.types == null) { this.types = new RecoveredType[5]; this.typeCount = 0; } else { if (this.typeCount == this.types.length) { System.arraycopy( this.types, 0, (this.types = new RecoveredType[2 * this.typeCount]), 0, this.typeCount); } } RecoveredType element = new RecoveredType(typeDeclaration, this, bracketBalanceValue); this.types[this.typeCount++] = element; if(this.pendingAnnotationCount > 0) { element.attach( this.pendingAnnotations, this.pendingAnnotationCount, this.pendingModifiers, this.pendingModifersSourceStart); } resetPendingModifiers(); /* if type not finished, then type becomes current */ if (typeDeclaration.declarationSourceEnd == 0) return element; return this; }
Example 12
Source File: RecoveredType.java From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 | 4 votes |
public RecoveredElement add(TypeDeclaration memberTypeDeclaration, int bracketBalanceValue) { this.pendingTypeParameters = null; /* do not consider a type starting passed the type end (if set) it must be belonging to an enclosing type */ if (this.typeDeclaration.declarationSourceEnd != 0 && memberTypeDeclaration.declarationSourceStart > this.typeDeclaration.declarationSourceEnd){ resetPendingModifiers(); return this.parent.add(memberTypeDeclaration, bracketBalanceValue); } this.insideEnumConstantPart = false; if ((memberTypeDeclaration.bits & ASTNode.IsAnonymousType) != 0){ if (this.methodCount > 0) { // add it to the last method body RecoveredMethod lastMethod = this.methods[this.methodCount-1]; lastMethod.methodDeclaration.bodyEnd = 0; // reopen method lastMethod.methodDeclaration.declarationSourceEnd = 0; // reopen method lastMethod.bracketBalance++; // expect one closing brace resetPendingModifiers(); return lastMethod.add(memberTypeDeclaration, bracketBalanceValue); } else { // ignore return this; } } if (this.memberTypes == null) { this.memberTypes = new RecoveredType[5]; this.memberTypeCount = 0; } else { if (this.memberTypeCount == this.memberTypes.length) { System.arraycopy( this.memberTypes, 0, (this.memberTypes = new RecoveredType[2 * this.memberTypeCount]), 0, this.memberTypeCount); } } RecoveredType element = new RecoveredType(memberTypeDeclaration, this, bracketBalanceValue); this.memberTypes[this.memberTypeCount++] = element; if(this.pendingAnnotationCount > 0) { element.attach( this.pendingAnnotations, this.pendingAnnotationCount, this.pendingModifiers, this.pendingModifersSourceStart); } resetPendingModifiers(); /* consider that if the opening brace was not found, it is there */ if (!this.foundOpeningBrace){ this.foundOpeningBrace = true; this.bracketBalance++; } /* if member type not finished, then member type becomes current */ if (memberTypeDeclaration.declarationSourceEnd == 0) return element; return this; }