Java Code Examples for org.eclipse.jdt.internal.compiler.ast.ASTNode#IsLocalType
The following examples show how to use
org.eclipse.jdt.internal.compiler.ast.ASTNode#IsLocalType .
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: 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 2
Source File: RecoveredUnit.java From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 | 4 votes |
public CompilationUnitDeclaration updatedCompilationUnitDeclaration(){ /* update imports */ if (this.importCount > 0){ ImportReference[] importRefences = new ImportReference[this.importCount]; for (int i = 0; i < this.importCount; i++){ importRefences[i] = this.imports[i].updatedImportReference(); } this.unitDeclaration.imports = importRefences; } /* update types */ if (this.typeCount > 0){ int existingCount = this.unitDeclaration.types == null ? 0 : this.unitDeclaration.types.length; TypeDeclaration[] typeDeclarations = new TypeDeclaration[existingCount + this.typeCount]; if (existingCount > 0){ System.arraycopy(this.unitDeclaration.types, 0, typeDeclarations, 0, existingCount); } // may need to update the declarationSourceEnd of the last type if (this.types[this.typeCount - 1].typeDeclaration.declarationSourceEnd == 0){ this.types[this.typeCount - 1].typeDeclaration.declarationSourceEnd = this.unitDeclaration.sourceEnd; this.types[this.typeCount - 1].typeDeclaration.bodyEnd = this.unitDeclaration.sourceEnd; } Set knownTypes = new HashSet(); int actualCount = existingCount; for (int i = 0; i < this.typeCount; i++){ TypeDeclaration typeDecl = this.types[i].updatedTypeDeclaration(0, knownTypes); // filter out local types (12454) if (typeDecl != null && (typeDecl.bits & ASTNode.IsLocalType) == 0){ typeDeclarations[actualCount++] = typeDecl; } } if (actualCount != this.typeCount){ System.arraycopy( typeDeclarations, 0, typeDeclarations = new TypeDeclaration[existingCount+actualCount], 0, existingCount+actualCount); } this.unitDeclaration.types = typeDeclarations; } return this.unitDeclaration; }
Example 3
Source File: RecoveredMethod.java From Eclipse-Postfix-Code-Completion with Eclipse Public License 1.0 | 4 votes |
public RecoveredElement add(TypeDeclaration typeDeclaration, int bracketBalanceValue) { /* do not consider a type starting passed the type end (if set) it must be belonging to an enclosing type */ if (this.methodDeclaration.declarationSourceEnd != 0 && typeDeclaration.declarationSourceStart > this.methodDeclaration.declarationSourceEnd){ if (this.parent == null) { return this; // ignore } return this.parent.add(typeDeclaration, bracketBalanceValue); } if ((typeDeclaration.bits & ASTNode.IsLocalType) != 0 || parser().methodRecoveryActivated || parser().statementRecoveryActivated){ if (this.methodBody == null){ Block block = new Block(0); block.sourceStart = this.methodDeclaration.bodyStart; this.add(block, 1); } this.methodBody.attachPendingModifiers( this.pendingAnnotations, this.pendingAnnotationCount, this.pendingModifiers, this.pendingModifersSourceStart); resetPendingModifiers(); return this.methodBody.add(typeDeclaration, bracketBalanceValue, true); } switch (TypeDeclaration.kind(typeDeclaration.modifiers)) { case TypeDeclaration.INTERFACE_DECL : case TypeDeclaration.ANNOTATION_TYPE_DECL : resetPendingModifiers(); this.updateSourceEndIfNecessary(previousAvailableLineEnd(typeDeclaration.declarationSourceStart - 1)); if (this.parent == null) { return this; // ignore } // close the constructor return this.parent.add(typeDeclaration, bracketBalanceValue); } if (this.localTypes == null) { this.localTypes = new RecoveredType[5]; this.localTypeCount = 0; } else { if (this.localTypeCount == this.localTypes.length) { System.arraycopy( this.localTypes, 0, (this.localTypes = new RecoveredType[2 * this.localTypeCount]), 0, this.localTypeCount); } } RecoveredType element = new RecoveredType(typeDeclaration, this, bracketBalanceValue); this.localTypes[this.localTypeCount++] = 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++; } return element; }