Java 类org.eclipse.jdt.internal.compiler.ast.Initializer 实例源码

项目:lombok-ianchiu    文件:EclipseAST.java   
/** {@inheritDoc} */
@Override protected EclipseNode buildTree(ASTNode node, Kind kind) {
    switch (kind) {
    case COMPILATION_UNIT:
        return buildCompilationUnit((CompilationUnitDeclaration) node);
    case TYPE:
        return buildType((TypeDeclaration) node);
    case FIELD:
        return buildField((FieldDeclaration) node);
    case INITIALIZER:
        return buildInitializer((Initializer) node);
    case METHOD:
        return buildMethod((AbstractMethodDeclaration) node);
    case ARGUMENT:
        return buildLocal((Argument) node, kind);
    case LOCAL:
        return buildLocal((LocalDeclaration) node, kind);
    case STATEMENT:
        return buildStatement((Statement) node);
    case ANNOTATION:
        return buildAnnotation((Annotation) node, false);
    default:
        throw new AssertionError("Did not expect to arrive here: " + kind);
    }
}
项目:EasyMPermission    文件:EclipseAST.java   
/** {@inheritDoc} */
@Override protected EclipseNode buildTree(ASTNode node, Kind kind) {
    switch (kind) {
    case COMPILATION_UNIT:
        return buildCompilationUnit((CompilationUnitDeclaration) node);
    case TYPE:
        return buildType((TypeDeclaration) node);
    case FIELD:
        return buildField((FieldDeclaration) node);
    case INITIALIZER:
        return buildInitializer((Initializer) node);
    case METHOD:
        return buildMethod((AbstractMethodDeclaration) node);
    case ARGUMENT:
        return buildLocal((Argument) node, kind);
    case LOCAL:
        return buildLocal((LocalDeclaration) node, kind);
    case STATEMENT:
        return buildStatement((Statement) node);
    case ANNOTATION:
        return buildAnnotation((Annotation) node, false);
    default:
        throw new AssertionError("Did not expect to arrive here: " + kind);
    }
}
项目:Eclipse-Postfix-Code-Completion    文件:UnresolvedReferenceNameFinder.java   
private ASTNode getEnclosingDeclaration() {
    int i = this.parentsPtr;
    while (i > -1) {
        ASTNode parent = this.parents[i];
        if (parent instanceof AbstractMethodDeclaration) {
            return parent;
        } else if (parent instanceof Initializer) {
            return parent;
        } else if (parent instanceof FieldDeclaration) {
            return parent;
        } else if (parent instanceof TypeDeclaration) {
            return parent;
        }
        i--;
    }
    return null;
}
项目:Eclipse-Postfix-Code-Completion    文件:RecoveredInitializer.java   
public RecoveredElement add(LocalDeclaration localDeclaration, int bracketBalanceValue) {

    /* do not consider a type starting passed the type end (if set)
        it must be belonging to an enclosing type */
    if (this.fieldDeclaration.declarationSourceEnd != 0
            && localDeclaration.declarationSourceStart > this.fieldDeclaration.declarationSourceEnd){
        resetPendingModifiers();
        if (this.parent == null) return this; // ignore
        return this.parent.add(localDeclaration, bracketBalanceValue);
    }
    /* method body should have been created */
    Block block = new Block(0);
    block.sourceStart = ((Initializer)this.fieldDeclaration).sourceStart;
    RecoveredElement element = this.add(block, 1);
    if (this.initializerBody != null) {
        this.initializerBody.attachPendingModifiers(
                this.pendingAnnotations,
                this.pendingAnnotationCount,
                this.pendingModifiers,
                this.pendingModifersSourceStart);
    }
    resetPendingModifiers();
    return element.add(localDeclaration, bracketBalanceValue);
}
项目:Eclipse-Postfix-Code-Completion    文件:RecoveredInitializer.java   
public RecoveredElement add(Statement statement, int bracketBalanceValue) {

    /* do not consider a statement starting passed the initializer end (if set)
        it must be belonging to an enclosing type */
    if (this.fieldDeclaration.declarationSourceEnd != 0
            && statement.sourceStart > this.fieldDeclaration.declarationSourceEnd){
        resetPendingModifiers();
        if (this.parent == null) return this; // ignore
        return this.parent.add(statement, bracketBalanceValue);
    }
    /* initializer body should have been created */
    Block block = new Block(0);
    block.sourceStart = ((Initializer)this.fieldDeclaration).sourceStart;
    RecoveredElement element = this.add(block, 1);

    if (this.initializerBody != null) {
        this.initializerBody.attachPendingModifiers(
                this.pendingAnnotations,
                this.pendingAnnotationCount,
                this.pendingModifiers,
                this.pendingModifersSourceStart);
    }
    resetPendingModifiers();

    return element.add(statement, bracketBalanceValue);
}
项目:Eclipse-Postfix-Code-Completion    文件:RecoveredInitializer.java   
public FieldDeclaration updatedFieldDeclaration(int depth, Set knownTypes){

    if (this.initializerBody != null){
        Block block = this.initializerBody.updatedBlock(depth, knownTypes);
        if (block != null){
            Initializer initializer = (Initializer) this.fieldDeclaration;
            initializer.block = block;

            if (initializer.declarationSourceEnd == 0) {
                initializer.declarationSourceEnd = block.sourceEnd;
                initializer.bodyEnd = block.sourceEnd;
            }
        }
        if (this.localTypeCount > 0) this.fieldDeclaration.bits |= ASTNode.HasLocalType;

    }
    if (this.fieldDeclaration.sourceEnd == 0){
        this.fieldDeclaration.sourceEnd = this.fieldDeclaration.declarationSourceEnd;
    }
    return this.fieldDeclaration;
}
项目:Eclipse-Postfix-Code-Completion    文件:RecoveredInitializer.java   
public void updateSourceEndIfNecessary(int braceStart, int braceEnd){
    if (this.fieldDeclaration.declarationSourceEnd == 0) {
        Initializer initializer = (Initializer)this.fieldDeclaration;
        if(parser().rBraceSuccessorStart >= braceEnd) {
            if (initializer.bodyStart < parser().rBraceEnd) {
                initializer.declarationSourceEnd = parser().rBraceEnd;
            } else {
                initializer.declarationSourceEnd = initializer.bodyStart;
            }
            if (initializer.bodyStart < parser().rBraceStart) {
                initializer.bodyEnd = parser().rBraceStart;
            } else {
                initializer.bodyEnd = initializer.bodyStart;
            }
        } else {
            initializer.declarationSourceEnd = braceEnd;
            initializer.bodyEnd  = braceStart - 1;
        }
        if(initializer.block != null) {
            initializer.block.sourceEnd = initializer.declarationSourceEnd;
        }
    }
}
项目:Eclipse-Postfix-Code-Completion    文件:Parser.java   
protected void consumeClassBodyDeclaration() {
    // ClassBodyDeclaration ::= Diet NestedMethod CreateInitializer Block
    //push an Initializer
    //optimize the push/pop
    this.nestedMethod[this.nestedType]--;
    Block block = (Block) this.astStack[this.astPtr--];
    this.astLengthPtr--;
    if (this.diet) block.bits &= ~ASTNode.UndocumentedEmptyBlock; // clear bit since was diet
    Initializer initializer = (Initializer) this.astStack[this.astPtr];
    initializer.declarationSourceStart = initializer.sourceStart = block.sourceStart;
    initializer.block = block;
    this.intPtr--; // pop sourcestart left on the stack by consumeNestedMethod.
    initializer.bodyStart = this.intStack[this.intPtr--];
    this.realBlockPtr--; // pop the block variable counter left on the stack by consumeNestedMethod
    int javadocCommentStart = this.intStack[this.intPtr--];
    if (javadocCommentStart != -1) {
        initializer.declarationSourceStart = javadocCommentStart;
        initializer.javadoc = this.javadoc;
        this.javadoc = null;
    }
    initializer.bodyEnd = this.endPosition;
    initializer.sourceEnd = this.endStatementPosition;
    initializer.declarationSourceEnd = flushCommentsDefinedPriorTo(this.endStatementPosition);
}
项目:Eclipse-Postfix-Code-Completion    文件:Parser.java   
protected void consumeStaticInitializer() {
    // StaticInitializer ::=  StaticOnly Block
    //push an Initializer
    //optimize the push/pop
    Block block = (Block) this.astStack[this.astPtr];
    if (this.diet) block.bits &= ~ASTNode.UndocumentedEmptyBlock; // clear bit set since was diet
    Initializer initializer = new Initializer(block, ClassFileConstants.AccStatic);
    this.astStack[this.astPtr] = initializer;
    initializer.sourceEnd = this.endStatementPosition;
    initializer.declarationSourceEnd = flushCommentsDefinedPriorTo(this.endStatementPosition);
    this.nestedMethod[this.nestedType] --;
    initializer.declarationSourceStart = this.intStack[this.intPtr--];
    initializer.bodyStart = this.intStack[this.intPtr--];
    initializer.bodyEnd = this.endPosition;
    // doc comment
    initializer.javadoc = this.javadoc;
    this.javadoc = null;

    // recovery
    if (this.currentElement != null){
        this.lastCheckPoint = initializer.declarationSourceEnd;
        this.currentElement = this.currentElement.add(initializer, 0);
        this.lastIgnoredToken = -1;
    }
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:UnresolvedReferenceNameFinder.java   
private ASTNode getEnclosingDeclaration() {
    int i = this.parentsPtr;
    while (i > -1) {
        ASTNode parent = this.parents[i];
        if (parent instanceof AbstractMethodDeclaration) {
            return parent;
        } else if (parent instanceof Initializer) {
            return parent;
        } else if (parent instanceof FieldDeclaration) {
            return parent;
        } else if (parent instanceof TypeDeclaration) {
            return parent;
        }
        i--;
    }
    return null;
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:RecoveredInitializer.java   
public RecoveredElement add(LocalDeclaration localDeclaration, int bracketBalanceValue) {

    /* do not consider a type starting passed the type end (if set)
        it must be belonging to an enclosing type */
    if (this.fieldDeclaration.declarationSourceEnd != 0
            && localDeclaration.declarationSourceStart > this.fieldDeclaration.declarationSourceEnd){
        resetPendingModifiers();
        if (this.parent == null) return this; // ignore
        return this.parent.add(localDeclaration, bracketBalanceValue);
    }
    /* method body should have been created */
    Block block = new Block(0);
    block.sourceStart = ((Initializer)this.fieldDeclaration).sourceStart;
    RecoveredElement element = this.add(block, 1);
    if (this.initializerBody != null) {
        this.initializerBody.attachPendingModifiers(
                this.pendingAnnotations,
                this.pendingAnnotationCount,
                this.pendingModifiers,
                this.pendingModifersSourceStart);
    }
    resetPendingModifiers();
    return element.add(localDeclaration, bracketBalanceValue);
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:RecoveredInitializer.java   
public RecoveredElement add(Statement statement, int bracketBalanceValue) {

    /* do not consider a statement starting passed the initializer end (if set)
        it must be belonging to an enclosing type */
    if (this.fieldDeclaration.declarationSourceEnd != 0
            && statement.sourceStart > this.fieldDeclaration.declarationSourceEnd){
        resetPendingModifiers();
        if (this.parent == null) return this; // ignore
        return this.parent.add(statement, bracketBalanceValue);
    }
    /* initializer body should have been created */
    Block block = new Block(0);
    block.sourceStart = ((Initializer)this.fieldDeclaration).sourceStart;
    RecoveredElement element = this.add(block, 1);

    if (this.initializerBody != null) {
        this.initializerBody.attachPendingModifiers(
                this.pendingAnnotations,
                this.pendingAnnotationCount,
                this.pendingModifiers,
                this.pendingModifersSourceStart);
    }
    resetPendingModifiers();

    return element.add(statement, bracketBalanceValue);
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:RecoveredInitializer.java   
public FieldDeclaration updatedFieldDeclaration(int depth, Set knownTypes){

    if (this.initializerBody != null){
        Block block = this.initializerBody.updatedBlock(depth, knownTypes);
        if (block != null){
            Initializer initializer = (Initializer) this.fieldDeclaration;
            initializer.block = block;

            if (initializer.declarationSourceEnd == 0) {
                initializer.declarationSourceEnd = block.sourceEnd;
                initializer.bodyEnd = block.sourceEnd;
            }
        }
        if (this.localTypeCount > 0) this.fieldDeclaration.bits |= ASTNode.HasLocalType;

    }
    if (this.fieldDeclaration.sourceEnd == 0){
        this.fieldDeclaration.sourceEnd = this.fieldDeclaration.declarationSourceEnd;
    }
    return this.fieldDeclaration;
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:RecoveredInitializer.java   
public void updateSourceEndIfNecessary(int braceStart, int braceEnd){
    if (this.fieldDeclaration.declarationSourceEnd == 0) {
        Initializer initializer = (Initializer)this.fieldDeclaration;
        if(parser().rBraceSuccessorStart >= braceEnd) {
            if (initializer.bodyStart < parser().rBraceEnd) {
                initializer.declarationSourceEnd = parser().rBraceEnd;
            } else {
                initializer.declarationSourceEnd = initializer.bodyStart;
            }
            if (initializer.bodyStart < parser().rBraceStart) {
                initializer.bodyEnd = parser().rBraceStart;
            } else {
                initializer.bodyEnd = initializer.bodyStart;
            }
        } else {
            initializer.declarationSourceEnd = braceEnd;
            initializer.bodyEnd  = braceStart - 1;
        }
        if(initializer.block != null) {
            initializer.block.sourceEnd = initializer.declarationSourceEnd;
        }
    }
}
项目:xapi    文件:GwtAstBuilder.java   
private void createField(FieldDeclaration x) {
  if (x instanceof Initializer) {
    return;
  }
  SourceInfo info = makeSourceInfo(x);
  FieldBinding binding = x.binding;
  JType type = typeMap.get(binding.type);
  JDeclaredType enclosingType = (JDeclaredType) typeMap.get(binding.declaringClass);

  JField field;
  if (x.initialization != null && x.initialization instanceof AllocationExpression
      && ((AllocationExpression) x.initialization).enumConstant != null) {
    field =
        new JEnumField(info, intern(binding.name), binding.original().id,
            (JEnumType) enclosingType, (JClassType) type);
  } else {
    field =
        new JField(info, intern(binding.name), enclosingType, type, binding.isStatic(),
            getFieldDisposition(binding));
  }
  enclosingType.addField(field);
  typeMap.setField(binding, field);
}
项目:lombok    文件:EclipseAST.java   
/** {@inheritDoc} */
@Override protected EclipseNode buildTree(ASTNode node, Kind kind) {
    switch (kind) {
    case COMPILATION_UNIT:
        return buildCompilationUnit((CompilationUnitDeclaration) node);
    case TYPE:
        return buildType((TypeDeclaration) node);
    case FIELD:
        return buildField((FieldDeclaration) node);
    case INITIALIZER:
        return buildInitializer((Initializer) node);
    case METHOD:
        return buildMethod((AbstractMethodDeclaration) node);
    case ARGUMENT:
        return buildLocal((Argument) node, kind);
    case LOCAL:
        return buildLocal((LocalDeclaration) node, kind);
    case STATEMENT:
        return buildStatement((Statement) node);
    case ANNOTATION:
        return buildAnnotation((Annotation) node, false);
    default:
        throw new AssertionError("Did not expect to arrive here: " + kind);
    }
}
项目:lombok-ianchiu    文件:EclipseASTVisitor.java   
public void visitInitializer(EclipseNode node, Initializer initializer) {
    Block block = initializer.block;
    boolean s = (block != null && block.statements != null);
    print("<%s INITIALIZER: %s%s%s>",
            (initializer.modifiers & Modifier.STATIC) != 0 ? "static" : "instance",
                    s ? "filled" : "blank",
                    isGenerated(initializer) ? " (GENERATED)" : "", position(node));
    indent++;
    if (printContent) {
        if (initializer.block != null) print("%s", initializer.block);
        disablePrinting++;
    }
}
项目:lombok-ianchiu    文件:EclipseAST.java   
private EclipseNode buildField(FieldDeclaration field) {
    if (field instanceof Initializer) return buildInitializer((Initializer)field);
    if (setAndGetAsHandled(field)) return null;
    List<EclipseNode> childNodes = new ArrayList<EclipseNode>();
    addIfNotNull(childNodes, buildStatement(field.initialization));
    childNodes.addAll(buildAnnotations(field.annotations, true));
    return putInMap(new EclipseNode(this, field, childNodes, Kind.FIELD));
}
项目:lombok-ianchiu    文件:SetGeneratedByVisitor.java   
private void fixPositions(Initializer node) {
    node.sourceEnd = sourceEnd;
    node.sourceStart = sourceStart;
    node.declarationEnd = sourceEnd;
    node.declarationSourceEnd = sourceEnd;
    node.declarationSourceStart = sourceStart;
    node.modifiersSourceStart = sourceStart;
    node.endPart1Position = sourceEnd;
    node.endPart2Position = sourceEnd;
    node.bodyStart = sourceStart;
    node.bodyEnd = sourceEnd;
}
项目:EasyMPermission    文件:EclipseASTVisitor.java   
public void visitInitializer(EclipseNode node, Initializer initializer) {
    Block block = initializer.block;
    boolean s = (block != null && block.statements != null);
    print("<%s INITIALIZER: %s%s%s>",
            (initializer.modifiers & Modifier.STATIC) != 0 ? "static" : "instance",
                    s ? "filled" : "blank",
                    isGenerated(initializer) ? " (GENERATED)" : "", position(node));
    indent++;
    if (printContent) {
        if (initializer.block != null) print("%s", initializer.block);
        disablePrinting++;
    }
}
项目:EasyMPermission    文件:EclipseAST.java   
private EclipseNode buildField(FieldDeclaration field) {
    if (field instanceof Initializer) return buildInitializer((Initializer)field);
    if (setAndGetAsHandled(field)) return null;
    List<EclipseNode> childNodes = new ArrayList<EclipseNode>();
    addIfNotNull(childNodes, buildStatement(field.initialization));
    childNodes.addAll(buildAnnotations(field.annotations, true));
    return putInMap(new EclipseNode(this, field, childNodes, Kind.FIELD));
}
项目:EasyMPermission    文件:SetGeneratedByVisitor.java   
private void fixPositions(Initializer node) {
    node.sourceEnd = sourceEnd;
    node.sourceStart = sourceStart;
    node.declarationEnd = sourceEnd;
    node.declarationSourceEnd = sourceEnd;
    node.declarationSourceStart = sourceStart;
    node.modifiersSourceStart = sourceStart;
    node.endPart1Position = sourceEnd;
    node.endPart2Position = sourceEnd;
    node.bodyStart = sourceStart;
    node.bodyEnd = sourceEnd;
}
项目:che    文件:SourceTypeConverter.java   
private Initializer convert(
    InitializerElementInfo initializerInfo, CompilationResult compilationResult)
    throws JavaModelException {

  Block block = new Block(0);
  Initializer initializer = new Initializer(block, ClassFileConstants.AccDefault);

  int start = initializerInfo.getDeclarationSourceStart();
  int end = initializerInfo.getDeclarationSourceEnd();

  initializer.sourceStart = initializer.declarationSourceStart = start;
  initializer.sourceEnd = initializer.declarationSourceEnd = end;
  initializer.modifiers = initializerInfo.getModifiers();

  /* convert local and anonymous types */
  IJavaElement[] children = initializerInfo.getChildren();
  int typesLength = children.length;
  if (typesLength > 0) {
    Statement[] statements = new Statement[typesLength];
    for (int i = 0; i < typesLength; i++) {
      SourceType type = (SourceType) children[i];
      TypeDeclaration localType = convert(type, compilationResult);
      if ((localType.bits & ASTNode.IsAnonymousType) != 0) {
        QualifiedAllocationExpression expression = new QualifiedAllocationExpression(localType);
        expression.type = localType.superclass;
        localType.superclass = null;
        localType.superInterfaces = null;
        localType.allocation = expression;
        statements[i] = expression;
      } else {
        statements[i] = localType;
      }
    }
    block.statements = statements;
  }

  return initializer;
}
项目:Eclipse-Postfix-Code-Completion    文件:UnresolvedReferenceNameFinder.java   
public void find(
        char[] startWith,
        Initializer initializer,
        ClassScope scope,
        int from,
        char[][] discouragedNames,
        UnresolvedReferenceNameRequestor nameRequestor) {
    MethodDeclaration fakeMethod =
        this.findAfter(startWith, scope, from, initializer.bodyEnd, MAX_LINE_COUNT, false, discouragedNames, nameRequestor);
    if (fakeMethod != null) fakeMethod.traverse(this, scope);
}
项目:Eclipse-Postfix-Code-Completion    文件:CodeFormatterVisitor.java   
/**
 * @see org.eclipse.jdt.internal.compiler.ASTVisitor#visit(org.eclipse.jdt.internal.compiler.ast.Initializer, org.eclipse.jdt.internal.compiler.lookup.MethodScope)
 */
public boolean visit(Initializer initializer, MethodScope scope) {

    if (initializer.isStatic()) {
        this.scribe.printNextToken(TerminalTokens.TokenNamestatic);
    }
    initializer.block.traverse(this, scope);
    return false;
}
项目:Eclipse-Postfix-Code-Completion    文件:SourceTypeConverter.java   
private Initializer convert(InitializerElementInfo initializerInfo, CompilationResult compilationResult) throws JavaModelException {

        Block block = new Block(0);
        Initializer initializer = new Initializer(block, ClassFileConstants.AccDefault);

        int start = initializerInfo.getDeclarationSourceStart();
        int end = initializerInfo.getDeclarationSourceEnd();

        initializer.sourceStart = initializer.declarationSourceStart = start;
        initializer.sourceEnd = initializer.declarationSourceEnd = end;
        initializer.modifiers = initializerInfo.getModifiers();

        /* convert local and anonymous types */
        IJavaElement[] children = initializerInfo.getChildren();
        int typesLength = children.length;
        if (typesLength > 0) {
            Statement[] statements = new Statement[typesLength];
            for (int i = 0; i < typesLength; i++) {
                SourceType type = (SourceType) children[i];
                TypeDeclaration localType = convert(type, compilationResult);
                if ((localType.bits & ASTNode.IsAnonymousType) != 0) {
                    QualifiedAllocationExpression expression = new QualifiedAllocationExpression(localType);
                    expression.type = localType.superclass;
                    localType.superclass = null;
                    localType.superInterfaces = null;
                    localType.allocation = expression;
                    statements[i] = expression;
                } else {
                    statements[i] = localType;
                }
            }
            block.statements = statements;
        }

        return initializer;
    }
项目:Eclipse-Postfix-Code-Completion    文件:SourceElementNotifier.java   
private void visitIfNeeded(Initializer initializer) {
    if (this.localDeclarationVisitor != null
        && (initializer.bits & ASTNode.HasLocalType) != 0) {
            if (initializer.block != null) {
                initializer.block.traverse(this.localDeclarationVisitor, null);
            }
    }
}
项目:Eclipse-Postfix-Code-Completion    文件:NodeSearcher.java   
public boolean visit(Initializer initializer, MethodScope scope) {
    if (initializer.declarationSourceStart <= this.position
        && this.position <= initializer.declarationSourceEnd) {
            this.found = initializer;
            return false;
    }
    return true;
}
项目:Eclipse-Postfix-Code-Completion    文件:VariableBinding.java   
public IMethodBinding getDeclaringMethod() {
    if (!isField()) {
        ASTNode node = this.resolver.findDeclaringNode(this);
        while (true) {
            if (node == null) {
                if (this.binding instanceof LocalVariableBinding) {
                    LocalVariableBinding localVariableBinding = (LocalVariableBinding) this.binding;
                    BlockScope blockScope = localVariableBinding.declaringScope;
                    if (blockScope != null) {
                        ReferenceContext referenceContext = blockScope.referenceContext();
                        if (referenceContext instanceof Initializer) {
                            return null;
                        }
                        if (referenceContext instanceof AbstractMethodDeclaration) {
                            return this.resolver.getMethodBinding(((AbstractMethodDeclaration) referenceContext).binding);
                        }
                    }
                }
                return null;
            }
            switch(node.getNodeType()) {
                case ASTNode.INITIALIZER :
                    return null;
                case ASTNode.METHOD_DECLARATION :
                    MethodDeclaration methodDeclaration = (MethodDeclaration) node;
                    return methodDeclaration.resolveBinding();
                default:
                    node = node.getParent();
            }
        }
    }
    return null;
}
项目:Eclipse-Postfix-Code-Completion    文件:RecoveredUnit.java   
public RecoveredElement add(AbstractMethodDeclaration methodDeclaration, int bracketBalanceValue) {

    /* attach it to last type - if any */
    if (this.typeCount > 0){
        RecoveredType type = this.types[this.typeCount -1];
        int start = type.bodyEnd;
        int end = type.typeDeclaration.bodyEnd;
        type.bodyEnd = 0; // reset position
        type.typeDeclaration.declarationSourceEnd = 0; // reset position
        type.typeDeclaration.bodyEnd = 0;

        int kind = TypeDeclaration.kind(type.typeDeclaration.modifiers);
        if(start > 0 &&
                start < end &&
                kind != TypeDeclaration.INTERFACE_DECL &&
                kind != TypeDeclaration.ANNOTATION_TYPE_DECL) {
            // the } of the last type can be considered as the end of an initializer
            Initializer initializer = new Initializer(new Block(0), 0);
            initializer.bodyStart = end;
            initializer.bodyEnd = end;
            initializer.declarationSourceStart = end;
            initializer.declarationSourceEnd = end;
            initializer.sourceStart = end;
            initializer.sourceEnd = end;
            type.add(initializer, bracketBalanceValue);
        }

        resetPendingModifiers();

        return type.add(methodDeclaration, bracketBalanceValue);
    }
    return this; // ignore
}
项目:Eclipse-Postfix-Code-Completion    文件:RecoveredType.java   
public RecoveredElement add(Block nestedBlockDeclaration,int bracketBalanceValue) {
    this.pendingTypeParameters = null;
    resetPendingModifiers();

    int mods = ClassFileConstants.AccDefault;
    if(parser().recoveredStaticInitializerStart != 0) {
        mods = ClassFileConstants.AccStatic;
    }
    return this.add(new Initializer(nestedBlockDeclaration, mods), bracketBalanceValue);
}
项目:Eclipse-Postfix-Code-Completion    文件:Parser.java   
protected void consumeInterfaceDeclaration() {
    // see consumeClassDeclaration in case of changes: duplicated code
    // InterfaceDeclaration ::= InterfaceHeader InterfaceBody
    int length;
    if ((length = this.astLengthStack[this.astLengthPtr--]) != 0) {
        //there are length declarations
        //dispatch.....according to the type of the declarations
        dispatchDeclarationInto(length);
    }

    TypeDeclaration typeDecl = (TypeDeclaration) this.astStack[this.astPtr];

    //convert constructor that do not have the type's name into methods
    typeDecl.checkConstructors(this);

    // https://bugs.eclipse.org/bugs/show_bug.cgi?id=212713, 
    // reject initializers that have been tolerated by the grammar.
    FieldDeclaration [] fields = typeDecl.fields;
    int fieldCount = fields == null ? 0 : fields.length;
    for (int i = 0; i < fieldCount; i++) {
        FieldDeclaration field = fields[i];
        if (field instanceof Initializer) {
            problemReporter().interfaceCannotHaveInitializers(typeDecl.name, field);
        }
    }

    //always add <clinit> (will be remove at code gen time if empty)
    if (this.scanner.containsAssertKeyword) {
        typeDecl.bits |= ASTNode.ContainsAssertion;
    }
    typeDecl.addClinit();
    typeDecl.bodyEnd = this.endStatementPosition;
    if (length == 0 && !containsComment(typeDecl.bodyStart, typeDecl.bodyEnd)) {
        typeDecl.bits |= ASTNode.UndocumentedEmptyBlock;
    }
    typeDecl.declarationSourceEnd = flushCommentsDefinedPriorTo(this.endStatementPosition);
}
项目:Eclipse-Postfix-Code-Completion    文件:ProblemReporter.java   
public void innerTypesCannotDeclareStaticInitializers(ReferenceBinding innerType, Initializer initializer) {
    this.handle(
        IProblem.CannotDefineStaticInitializerInLocalType,
        new String[] {new String(innerType.readableName())},
        new String[] {new String(innerType.shortReadableName())},
        initializer.sourceStart,
        initializer.sourceStart);
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:UnresolvedReferenceNameFinder.java   
public void find(
        char[] startWith,
        Initializer initializer,
        ClassScope scope,
        int from,
        char[][] discouragedNames,
        UnresolvedReferenceNameRequestor nameRequestor) {
    MethodDeclaration fakeMethod =
        this.findAfter(startWith, scope, from, initializer.bodyEnd, MAX_LINE_COUNT, false, discouragedNames, nameRequestor);
    if (fakeMethod != null) fakeMethod.traverse(this, scope);
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:CodeFormatterVisitor.java   
/**
 * @see org.eclipse.jdt.internal.compiler.ASTVisitor#visit(org.eclipse.jdt.internal.compiler.ast.Initializer, org.eclipse.jdt.internal.compiler.lookup.MethodScope)
 */
public boolean visit(Initializer initializer, MethodScope scope) {

    if (initializer.isStatic()) {
        this.scribe.printNextToken(TerminalTokens.TokenNamestatic);
    }
    initializer.block.traverse(this, scope);
    return false;
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:SourceTypeConverter.java   
private Initializer convert(InitializerElementInfo initializerInfo, CompilationResult compilationResult) throws JavaModelException {

        Block block = new Block(0);
        Initializer initializer = new Initializer(block, ClassFileConstants.AccDefault);

        int start = initializerInfo.getDeclarationSourceStart();
        int end = initializerInfo.getDeclarationSourceEnd();

        initializer.sourceStart = initializer.declarationSourceStart = start;
        initializer.sourceEnd = initializer.declarationSourceEnd = end;
        initializer.modifiers = initializerInfo.getModifiers();

        /* convert local and anonymous types */
        IJavaElement[] children = initializerInfo.getChildren();
        int typesLength = children.length;
        if (typesLength > 0) {
            Statement[] statements = new Statement[typesLength];
            for (int i = 0; i < typesLength; i++) {
                SourceType type = (SourceType) children[i];
                TypeDeclaration localType = convert(type, compilationResult);
                if ((localType.bits & ASTNode.IsAnonymousType) != 0) {
                    QualifiedAllocationExpression expression = new QualifiedAllocationExpression(localType);
                    expression.type = localType.superclass;
                    localType.superclass = null;
                    localType.superInterfaces = null;
                    localType.allocation = expression;
                    statements[i] = expression;
                } else {
                    statements[i] = localType;
                }
            }
            block.statements = statements;
        }

        return initializer;
    }
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:SourceElementNotifier.java   
private void visitIfNeeded(Initializer initializer) {
    if (this.localDeclarationVisitor != null
        && (initializer.bits & ASTNode.HasLocalType) != 0) {
            if (initializer.block != null) {
                initializer.block.traverse(this.localDeclarationVisitor, null);
            }
    }
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:NodeSearcher.java   
public boolean visit(Initializer initializer, MethodScope scope) {
    if (initializer.declarationSourceStart <= this.position
        && this.position <= initializer.declarationSourceEnd) {
            this.found = initializer;
            return false;
    }
    return true;
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:VariableBinding.java   
public IMethodBinding getDeclaringMethod() {
    if (!isField()) {
        ASTNode node = this.resolver.findDeclaringNode(this);
        while (true) {
            if (node == null) {
                if (this.binding instanceof LocalVariableBinding) {
                    LocalVariableBinding localVariableBinding = (LocalVariableBinding) this.binding;
                    BlockScope blockScope = localVariableBinding.declaringScope;
                    if (blockScope != null) {
                        ReferenceContext referenceContext = blockScope.referenceContext();
                        if (referenceContext instanceof Initializer) {
                            return null;
                        }
                        if (referenceContext instanceof AbstractMethodDeclaration) {
                            return this.resolver.getMethodBinding(((AbstractMethodDeclaration) referenceContext).binding);
                        }
                    }
                }
                return null;
            }
            switch(node.getNodeType()) {
                case ASTNode.INITIALIZER :
                    return null;
                case ASTNode.METHOD_DECLARATION :
                    MethodDeclaration methodDeclaration = (MethodDeclaration) node;
                    return methodDeclaration.resolveBinding();
                default:
                    node = node.getParent();
            }
        }
    }
    return null;
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:RecoveredUnit.java   
public RecoveredElement add(AbstractMethodDeclaration methodDeclaration, int bracketBalanceValue) {

    /* attach it to last type - if any */
    if (this.typeCount > 0){
        RecoveredType type = this.types[this.typeCount -1];
        int start = type.bodyEnd;
        int end = type.typeDeclaration.bodyEnd;
        type.bodyEnd = 0; // reset position
        type.typeDeclaration.declarationSourceEnd = 0; // reset position
        type.typeDeclaration.bodyEnd = 0;

        int kind = TypeDeclaration.kind(type.typeDeclaration.modifiers);
        if(start > 0 &&
                start < end &&
                kind != TypeDeclaration.INTERFACE_DECL &&
                kind != TypeDeclaration.ANNOTATION_TYPE_DECL) {
            // the } of the last type can be considered as the end of an initializer
            Initializer initializer = new Initializer(new Block(0), 0);
            initializer.bodyStart = end;
            initializer.bodyEnd = end;
            initializer.declarationSourceStart = end;
            initializer.declarationSourceEnd = end;
            initializer.sourceStart = end;
            initializer.sourceEnd = end;
            type.add(initializer, bracketBalanceValue);
        }

        resetPendingModifiers();

        return type.add(methodDeclaration, bracketBalanceValue);
    }
    return this; // ignore
}