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

项目:Eclipse-Postfix-Code-Completion    文件:SelectionParser.java   
protected void consumeMemberValuePair() {
    if (this.indexOfAssistIdentifier() < 0) {
        super.consumeMemberValuePair();
        return;
    }

    char[] simpleName = this.identifierStack[this.identifierPtr];
    long position = this.identifierPositionStack[this.identifierPtr--];
    this.identifierLengthPtr--;
    int end = (int) position;
    int start = (int) (position >>> 32);
    Expression value = this.expressionStack[this.expressionPtr--];
    this.expressionLengthPtr--;
    MemberValuePair memberValuePair = new SelectionOnNameOfMemberValuePair(simpleName, start, end, value);
    pushOnAstStack(memberValuePair);

    this.assistNode = memberValuePair;
    this.lastCheckPoint = memberValuePair.sourceEnd + 1;


}
项目:Eclipse-Postfix-Code-Completion    文件:CompilationUnitStructureRequestor.java   
/**
 * @see ISourceElementRequestor
 */
public void exitMethod(int declarationEnd, Expression defaultValue) {
    SourceMethod handle = (SourceMethod) this.handleStack.peek();
    MethodInfo methodInfo = (MethodInfo) this.infoStack.peek();

    SourceMethodElementInfo info = createMethodInfo(methodInfo, handle);
    info.setSourceRangeEnd(declarationEnd);

    // remember default value of annotation method
    if (info.isAnnotationMethod() && defaultValue != null) {
        SourceAnnotationMethodInfo annotationMethodInfo = (SourceAnnotationMethodInfo) info;
        annotationMethodInfo.defaultValueStart = defaultValue.sourceStart;
        annotationMethodInfo.defaultValueEnd = defaultValue.sourceEnd;
        JavaElement element = (JavaElement) this.handleStack.peek();
        org.eclipse.jdt.internal.core.MemberValuePair defaultMemberValuePair = new org.eclipse.jdt.internal.core.MemberValuePair(element.getElementName());
        defaultMemberValuePair.value = getMemberValue(defaultMemberValuePair, defaultValue);
        annotationMethodInfo.defaultValue = defaultMemberValuePair;
    }

    this.handleStack.pop();
    this.infoStack.pop();
}
项目:Eclipse-Postfix-Code-Completion    文件:Parser.java   
protected void consumeMemberValuePair() {
    // MemberValuePair ::= SimpleName '=' MemberValue
    char[] simpleName = this.identifierStack[this.identifierPtr];
    long position = this.identifierPositionStack[this.identifierPtr--];
    this.identifierLengthPtr--;
    int end = (int) position;
    int start = (int) (position >>> 32);
    Expression value = this.expressionStack[this.expressionPtr--];
    this.expressionLengthPtr--;
    MemberValuePair memberValuePair = new MemberValuePair(simpleName, start, end, value);
    pushOnAstStack(memberValuePair);

    if (this.currentElement != null && this.currentElement instanceof RecoveredAnnotation) {
        RecoveredAnnotation recoveredAnnotation = (RecoveredAnnotation) this.currentElement;

        recoveredAnnotation.setKind(RecoveredAnnotation.NORMAL);
    }
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:CompilationUnitStructureRequestor.java   
/**
 * @see ISourceElementRequestor
 */
public void exitMethod(int declarationEnd, Expression defaultValue) {
    SourceMethod handle = (SourceMethod) this.handleStack.peek();
    MethodInfo methodInfo = (MethodInfo) this.infoStack.peek();

    SourceMethodElementInfo info = createMethodInfo(methodInfo, handle);
    info.setSourceRangeEnd(declarationEnd);

    // remember default value of annotation method
    if (info.isAnnotationMethod() && defaultValue != null) {
        SourceAnnotationMethodInfo annotationMethodInfo = (SourceAnnotationMethodInfo) info;
        annotationMethodInfo.defaultValueStart = defaultValue.sourceStart;
        annotationMethodInfo.defaultValueEnd = defaultValue.sourceEnd;
        JavaElement element = (JavaElement) this.handleStack.peek();
        org.eclipse.jdt.internal.core.MemberValuePair defaultMemberValuePair = new org.eclipse.jdt.internal.core.MemberValuePair(element.getElementName());
        defaultMemberValuePair.value = getMemberValue(defaultMemberValuePair, defaultValue);
        annotationMethodInfo.defaultValue = defaultMemberValuePair;
    }

    this.handleStack.pop();
    this.infoStack.pop();
}
项目:lombok-ianchiu    文件:HandleSneakyThrows.java   
@Override public void handle(AnnotationValues<SneakyThrows> annotation, Annotation source, EclipseNode annotationNode) {
        handleFlagUsage(annotationNode, ConfigurationKeys.SNEAKY_THROWS_FLAG_USAGE, "@SneakyThrows");

        List<String> exceptionNames = annotation.getRawExpressions("value");
        List<DeclaredException> exceptions = new ArrayList<DeclaredException>();

        MemberValuePair[] memberValuePairs = source.memberValuePairs();
        if (memberValuePairs == null || memberValuePairs.length == 0) {
            exceptions.add(new DeclaredException("java.lang.Throwable", source));
        } else {
            Expression arrayOrSingle = memberValuePairs[0].value;
            final Expression[] exceptionNameNodes;
            if (arrayOrSingle instanceof ArrayInitializer) {
                exceptionNameNodes = ((ArrayInitializer)arrayOrSingle).expressions;
            } else exceptionNameNodes = new Expression[] { arrayOrSingle };

            if (exceptionNames.size() != exceptionNameNodes.length) {
                annotationNode.addError(
                        "LOMBOK BUG: The number of exception classes in the annotation isn't the same pre- and post- guessing.");
            }

            int idx = 0;
            for (String exceptionName : exceptionNames) {
                if (exceptionName.endsWith(".class")) exceptionName = exceptionName.substring(0, exceptionName.length() - 6);
                exceptions.add(new DeclaredException(exceptionName, exceptionNameNodes[idx++]));
            }
        }


        EclipseNode owner = annotationNode.up();
        switch (owner.getKind()) {
//      case FIELD:
//          return handleField(annotationNode, (FieldDeclaration)owner.get(), exceptions);
        case METHOD:
            handleMethod(annotationNode, (AbstractMethodDeclaration)owner.get(), exceptions);
            break;
        default:
            annotationNode.addError("@SneakyThrows is legal only on methods and constructors.");
        }
    }
项目:lombok-ianchiu    文件:EclipseHandlerUtil.java   
public static Annotation[] addSuppressWarningsAll(EclipseNode node, ASTNode source, Annotation[] originalAnnotationArray) {
    Annotation[] anns = addAnnotation(source, originalAnnotationArray, TypeConstants.JAVA_LANG_SUPPRESSWARNINGS, new StringLiteral(ALL, 0, 0, 0));

    if (Boolean.TRUE.equals(node.getAst().readConfiguration(ConfigurationKeys.ADD_FINDBUGS_SUPPRESSWARNINGS_ANNOTATIONS))) {
        MemberValuePair mvp = new MemberValuePair(JUSTIFICATION, 0, 0, new StringLiteral(GENERATED_CODE, 0, 0, 0));
        anns = addAnnotation(source, anns, EDU_UMD_CS_FINDBUGS_ANNOTATIONS_SUPPRESSFBWARNINGS, mvp);
    }

    return anns;
}
项目:EasyMPermission    文件:HandleSneakyThrows.java   
@Override public void handle(AnnotationValues<SneakyThrows> annotation, Annotation source, EclipseNode annotationNode) {
        handleFlagUsage(annotationNode, ConfigurationKeys.SNEAKY_THROWS_FLAG_USAGE, "@SneakyThrows");

        List<String> exceptionNames = annotation.getRawExpressions("value");
        List<DeclaredException> exceptions = new ArrayList<DeclaredException>();

        MemberValuePair[] memberValuePairs = source.memberValuePairs();
        if (memberValuePairs == null || memberValuePairs.length == 0) {
            exceptions.add(new DeclaredException("java.lang.Throwable", source));
        } else {
            Expression arrayOrSingle = memberValuePairs[0].value;
            final Expression[] exceptionNameNodes;
            if (arrayOrSingle instanceof ArrayInitializer) {
                exceptionNameNodes = ((ArrayInitializer)arrayOrSingle).expressions;
            } else exceptionNameNodes = new Expression[] { arrayOrSingle };

            if (exceptionNames.size() != exceptionNameNodes.length) {
                annotationNode.addError(
                        "LOMBOK BUG: The number of exception classes in the annotation isn't the same pre- and post- guessing.");
            }

            int idx = 0;
            for (String exceptionName : exceptionNames) {
                if (exceptionName.endsWith(".class")) exceptionName = exceptionName.substring(0, exceptionName.length() - 6);
                exceptions.add(new DeclaredException(exceptionName, exceptionNameNodes[idx++]));
            }
        }


        EclipseNode owner = annotationNode.up();
        switch (owner.getKind()) {
//      case FIELD:
//          return handleField(annotationNode, (FieldDeclaration)owner.get(), exceptions);
        case METHOD:
            handleMethod(annotationNode, (AbstractMethodDeclaration)owner.get(), exceptions);
            break;
        default:
            annotationNode.addError("@SneakyThrows is legal only on methods and constructors.");
        }
    }
项目:EasyMPermission    文件:EclipseHandlerUtil.java   
public static Annotation[] addSuppressWarningsAll(EclipseNode node, ASTNode source, Annotation[] originalAnnotationArray) {
    Annotation[] anns = addAnnotation(source, originalAnnotationArray, TypeConstants.JAVA_LANG_SUPPRESSWARNINGS, new StringLiteral(ALL, 0, 0, 0));

    if (Boolean.TRUE.equals(node.getAst().readConfiguration(ConfigurationKeys.ADD_FINDBUGS_SUPPRESSWARNINGS_ANNOTATIONS))) {
        MemberValuePair mvp = new MemberValuePair(JUSTIFICATION, 0, 0, new StringLiteral(GENERATED_CODE, 0, 0, 0));
        anns = addAnnotation(source, anns, EDU_UMD_CS_FINDBUGS_ANNOTATIONS_SUPPRESSFBWARNINGS, mvp);
    }

    return anns;
}
项目:Eclipse-Postfix-Code-Completion    文件:CompletionUnitStructureRequestor.java   
protected IMemberValuePair[] getMemberValuePairs(MemberValuePair[] memberValuePairs) {
    int membersLength = memberValuePairs.length;
    int membersCount = 0;
    IMemberValuePair[] members = new IMemberValuePair[membersLength];
    next : for (int j = 0; j < membersLength; j++) {
        if (memberValuePairs[j] instanceof CompletionOnMemberValueName) continue next;

        members[membersCount++] = getMemberValuePair(memberValuePairs[j]);
    }

    if (membersCount > membersLength) {
        System.arraycopy(members, 0, members, 0, membersCount);
    }
    return members;
}
项目:Eclipse-Postfix-Code-Completion    文件:CodeFormatterVisitor.java   
public boolean visit(MemberValuePair pair, BlockScope scope) {
    this.scribe.printNextToken(TerminalTokens.TokenNameIdentifier);
    this.scribe.printNextToken(TerminalTokens.TokenNameEQUAL, this.preferences.insert_space_before_assignment_operator);
    if (this.preferences.insert_space_after_assignment_operator) {
        this.scribe.space();
    }
    pair.value.traverse(this, scope);
    return false;
}
项目:Eclipse-Postfix-Code-Completion    文件:OrLocator.java   
public int match(MemberValuePair node, MatchingNodeSet nodeSet) {
    int level = IMPOSSIBLE_MATCH;
    for (int i = 0, length = this.patternLocators.length; i < length; i++) {
        int newLevel = this.patternLocators[i].match(node, nodeSet);
        if (newLevel > level) {
            if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
            level = newLevel;
        }
    }
    return level;
}
项目:Eclipse-Postfix-Code-Completion    文件:AndLocator.java   
public int match(MemberValuePair node, MatchingNodeSet nodeSet) {
    int level = IMPOSSIBLE_MATCH;
    for (int i = 0, length = this.patternLocators.length; i < length; i++) {
        int newLevel = this.patternLocators[i].match(node, nodeSet);
        if (newLevel > level) {
            if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
            level = newLevel;
        }
    }
    return level;
}
项目:Eclipse-Postfix-Code-Completion    文件:CompilationUnitStructureRequestor.java   
protected IMemberValuePair[] getMemberValuePairs(MemberValuePair[] memberValuePairs) {
    int membersLength = memberValuePairs.length;
    IMemberValuePair[] members = new IMemberValuePair[membersLength];
    for (int j = 0; j < membersLength; j++) {
        members[j] = getMemberValuePair(memberValuePairs[j]);
    }
    return members;
}
项目:Eclipse-Postfix-Code-Completion    文件:DefaultBindingResolver.java   
synchronized IMemberValuePairBinding resolveMemberValuePair(org.eclipse.jdt.core.dom.MemberValuePair memberValuePair) {
    MemberValuePair valuePair = (MemberValuePair) this.newAstToOldAst.get(memberValuePair);
    if (valuePair != null) {
        return getMemberValuePairBinding(valuePair.compilerElementPair);
    }
    return null;
}
项目:Eclipse-Postfix-Code-Completion    文件:ProblemReporter.java   
public void duplicateAnnotationValue(TypeBinding annotationType, MemberValuePair memberValuePair) {
    String name =   new String(memberValuePair.name);
    this.handle(
        IProblem.DuplicateAnnotationMember,
        new String[] { name, new String(annotationType.readableName())},
        new String[] {  name, new String(annotationType.shortReadableName())},
        memberValuePair.sourceStart,
        memberValuePair.sourceEnd);
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:CompletionUnitStructureRequestor.java   
protected IMemberValuePair[] getMemberValuePairs(MemberValuePair[] memberValuePairs) {
    int membersLength = memberValuePairs.length;
    int membersCount = 0;
    IMemberValuePair[] members = new IMemberValuePair[membersLength];
    next : for (int j = 0; j < membersLength; j++) {
        if (memberValuePairs[j] instanceof CompletionOnMemberValueName) continue next;

        members[membersCount++] = getMemberValuePair(memberValuePairs[j]);
    }

    if (membersCount > membersLength) {
        System.arraycopy(members, 0, members, 0, membersCount);
    }
    return members;
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:CodeFormatterVisitor.java   
public boolean visit(MemberValuePair pair, BlockScope scope) {
    this.scribe.printNextToken(TerminalTokens.TokenNameIdentifier);
    this.scribe.printNextToken(TerminalTokens.TokenNameEQUAL, this.preferences.insert_space_before_assignment_operator);
    if (this.preferences.insert_space_after_assignment_operator) {
        this.scribe.space();
    }
    pair.value.traverse(this, scope);
    return false;
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:OrLocator.java   
public int match(MemberValuePair node, MatchingNodeSet nodeSet) {
    int level = IMPOSSIBLE_MATCH;
    for (int i = 0, length = this.patternLocators.length; i < length; i++) {
        int newLevel = this.patternLocators[i].match(node, nodeSet);
        if (newLevel > level) {
            if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
            level = newLevel;
        }
    }
    return level;
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:AndLocator.java   
public int match(MemberValuePair node, MatchingNodeSet nodeSet) {
    int level = IMPOSSIBLE_MATCH;
    for (int i = 0, length = this.patternLocators.length; i < length; i++) {
        int newLevel = this.patternLocators[i].match(node, nodeSet);
        if (newLevel > level) {
            if (newLevel == ACCURATE_MATCH) return ACCURATE_MATCH;
            level = newLevel;
        }
    }
    return level;
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:CompilationUnitStructureRequestor.java   
protected IMemberValuePair[] getMemberValuePairs(MemberValuePair[] memberValuePairs) {
    int membersLength = memberValuePairs.length;
    IMemberValuePair[] members = new IMemberValuePair[membersLength];
    for (int j = 0; j < membersLength; j++) {
        members[j] = getMemberValuePair(memberValuePairs[j]);
    }
    return members;
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:DefaultBindingResolver.java   
synchronized IMemberValuePairBinding resolveMemberValuePair(org.eclipse.jdt.core.dom.MemberValuePair memberValuePair) {
    MemberValuePair valuePair = (MemberValuePair) this.newAstToOldAst.get(memberValuePair);
    if (valuePair != null) {
        return getMemberValuePairBinding(valuePair.compilerElementPair);
    }
    return null;
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:ProblemReporter.java   
public void duplicateAnnotationValue(TypeBinding annotationType, MemberValuePair memberValuePair) {
    String name =   new String(memberValuePair.name);
    this.handle(
        IProblem.DuplicateAnnotationMember,
        new String[] { name, new String(annotationType.readableName())},
        new String[] {  name, new String(annotationType.shortReadableName())},
        memberValuePair.sourceStart,
        memberValuePair.sourceEnd);
}
项目:lombok    文件:HandleSneakyThrows.java   
@Override public void handle(AnnotationValues<SneakyThrows> annotation, Annotation source, EclipseNode annotationNode) {
        List<String> exceptionNames = annotation.getRawExpressions("value");
        List<DeclaredException> exceptions = new ArrayList<DeclaredException>();

        MemberValuePair[] memberValuePairs = source.memberValuePairs();
        if (memberValuePairs == null || memberValuePairs.length == 0) {
            exceptions.add(new DeclaredException("java.lang.Throwable", source));
        } else {
            Expression arrayOrSingle = memberValuePairs[0].value;
            final Expression[] exceptionNameNodes;
            if (arrayOrSingle instanceof ArrayInitializer) {
                exceptionNameNodes = ((ArrayInitializer)arrayOrSingle).expressions;
            } else exceptionNameNodes = new Expression[] { arrayOrSingle };

            if (exceptionNames.size() != exceptionNameNodes.length) {
                annotationNode.addError(
                        "LOMBOK BUG: The number of exception classes in the annotation isn't the same pre- and post- guessing.");
            }

            int idx = 0;
            for (String exceptionName : exceptionNames) {
                if (exceptionName.endsWith(".class")) exceptionName = exceptionName.substring(0, exceptionName.length() - 6);
                exceptions.add(new DeclaredException(exceptionName, exceptionNameNodes[idx++]));
            }
        }


        EclipseNode owner = annotationNode.up();
        switch (owner.getKind()) {
//      case FIELD:
//          return handleField(annotationNode, (FieldDeclaration)owner.get(), exceptions);
        case METHOD:
            handleMethod(annotationNode, (AbstractMethodDeclaration)owner.get(), exceptions);
            break;
        default:
            annotationNode.addError("@SneakyThrows is legal only on methods and constructors.");
        }
    }
项目:lombok-ianchiu    文件:SetGeneratedByVisitor.java   
@Override public boolean visit(MemberValuePair node, BlockScope scope) {
    fixPositions(setGeneratedBy(node, source));
    return super.visit(node, scope);
}
项目:EasyMPermission    文件:SetGeneratedByVisitor.java   
@Override public boolean visit(MemberValuePair node, BlockScope scope) {
    fixPositions(setGeneratedBy(node, source));
    return super.visit(node, scope);
}
项目:Eclipse-Postfix-Code-Completion    文件:CompletionOnAnnotationMemberValuePair.java   
public CompletionOnAnnotationMemberValuePair(TypeReference type, int sourceStart, MemberValuePair[] memberValuePairs, MemberValuePair completedMemberValuePair) {
    super(type, sourceStart);
    this.memberValuePairs = memberValuePairs;
    this.completedMemberValuePair = completedMemberValuePair;
}
项目:Eclipse-Postfix-Code-Completion    文件:CodeFormatterVisitor.java   
public boolean visit(NormalAnnotation annotation, BlockScope scope) {
    this.scribe.printNextToken(TerminalTokens.TokenNameAT);
    if (this.preferences.insert_space_after_at_in_annotation) {
        this.scribe.space();
    }
    this.scribe.printQualifiedReference(annotation.sourceEnd, false/*do not expect parenthesis*/);
    this.scribe.printNextToken(TerminalTokens.TokenNameLPAREN, this.preferences.insert_space_before_opening_paren_in_annotation);
    if (this.preferences.insert_space_after_opening_paren_in_annotation) {
        this.scribe.space();
    }
    MemberValuePair[] memberValuePairs = annotation.memberValuePairs;
    if (memberValuePairs != null) {
        int length = memberValuePairs.length;
        Alignment annotationAlignment = this.scribe.createAlignment(
                Alignment.ANNOTATION_MEMBERS_VALUE_PAIRS,
                this.preferences.alignment_for_arguments_in_annotation,
                length,
                this.scribe.scanner.currentPosition);
        this.scribe.enterAlignment(annotationAlignment);
        boolean ok = false;
        do {
            try {
                for (int i = 0; i < length; i++) {
                    if (i > 0) {
                        this.scribe.printNextToken(TerminalTokens.TokenNameCOMMA, this.preferences.insert_space_before_comma_in_annotation);
                        this.scribe.printComment(CodeFormatter.K_UNKNOWN, Scribe.BASIC_TRAILING_COMMENT);
                    }
                    this.scribe.alignFragment(annotationAlignment, i);
                    if (i > 0 && this.preferences.insert_space_after_comma_in_annotation) {
                        this.scribe.space();
                    }
                    memberValuePairs[i].traverse(this, scope);
                }
                ok = true;
            } catch (AlignmentException e) {
                this.scribe.redoAlignment(e);
            }
        } while (!ok);
        this.scribe.exitAlignment(annotationAlignment, true);
    }
    this.scribe.printNextToken(TerminalTokens.TokenNameRPAREN, this.preferences.insert_space_before_closing_paren_in_annotation);
    return false;
}
项目:Eclipse-Postfix-Code-Completion    文件:CompilationUnitStructureRequestor.java   
protected IMemberValuePair getMemberValuePair(MemberValuePair memberValuePair) {
    String memberName = new String(memberValuePair.name);
    org.eclipse.jdt.internal.core.MemberValuePair result = new org.eclipse.jdt.internal.core.MemberValuePair(memberName);
    result.value = getMemberValue(result, memberValuePair.value);
    return result;
}
项目:Eclipse-Postfix-Code-Completion    文件:CompilationUnitStructureRequestor.java   
protected Object getMemberValue(org.eclipse.jdt.internal.core.MemberValuePair memberValuePair, Expression expression) {
    if (expression instanceof NullLiteral) {
        return null;
    } else if (expression instanceof Literal) {
        ((Literal) expression).computeConstant();
        return Util.getAnnotationMemberValue(memberValuePair, expression.constant);
    } else if (expression instanceof org.eclipse.jdt.internal.compiler.ast.Annotation) {
        org.eclipse.jdt.internal.compiler.ast.Annotation annotation = (org.eclipse.jdt.internal.compiler.ast.Annotation) expression;
        Object handle = acceptAnnotation(annotation, null, (JavaElement) this.handleStack.peek());
        memberValuePair.valueKind = IMemberValuePair.K_ANNOTATION;
        return handle;
    } else if (expression instanceof ClassLiteralAccess) {
        ClassLiteralAccess classLiteral = (ClassLiteralAccess) expression;
        char[] name = CharOperation.concatWith(classLiteral.type.getTypeName(), '.');
        memberValuePair.valueKind = IMemberValuePair.K_CLASS;
        return new String(name);
    } else if (expression instanceof QualifiedNameReference) {
        char[] qualifiedName = CharOperation.concatWith(((QualifiedNameReference) expression).tokens, '.');
        memberValuePair.valueKind = IMemberValuePair.K_QUALIFIED_NAME;
        return new String(qualifiedName);
    } else if (expression instanceof SingleNameReference) {
        char[] simpleName = ((SingleNameReference) expression).token;
        if (simpleName == RecoveryScanner.FAKE_IDENTIFIER) {
            memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
            return null;
        }
        memberValuePair.valueKind = IMemberValuePair.K_SIMPLE_NAME;
        return new String(simpleName);
    } else if (expression instanceof ArrayInitializer) {
        memberValuePair.valueKind = -1; // modified below by the first call to getMemberValue(...)
        Expression[] expressions = ((ArrayInitializer) expression).expressions;
        int length = expressions == null ? 0 : expressions.length;
        Object[] values = new Object[length];
        for (int i = 0; i < length; i++) {
            int previousValueKind = memberValuePair.valueKind;
            Object value = getMemberValue(memberValuePair, expressions[i]);
            if (previousValueKind != -1 && memberValuePair.valueKind != previousValueKind) {
                // values are heterogeneous, value kind is thus unknown
                memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
            }
            values[i] = value;
        }
        if (memberValuePair.valueKind == -1)
            memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
        return values;
    } else if (expression instanceof UnaryExpression) {         // to deal with negative numerals (see bug - 248312)
        UnaryExpression unaryExpression = (UnaryExpression) expression;
        if ((unaryExpression.bits & ASTNode.OperatorMASK) >> ASTNode.OperatorSHIFT == OperatorIds.MINUS) {
            if (unaryExpression.expression instanceof Literal) {
                Literal subExpression = (Literal) unaryExpression.expression;
                subExpression.computeConstant();
                return Util.getNegativeAnnotationMemberValue(memberValuePair, subExpression.constant);
            }
        }
        memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
        return null;
    } else {
        memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
        return null;
    }
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:CompletionOnAnnotationMemberValuePair.java   
public CompletionOnAnnotationMemberValuePair(TypeReference type, int sourceStart, MemberValuePair[] memberValuePairs, MemberValuePair completedMemberValuePair) {
    super(type, sourceStart);
    this.memberValuePairs = memberValuePairs;
    this.completedMemberValuePair = completedMemberValuePair;
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:CodeFormatterVisitor.java   
public boolean visit(NormalAnnotation annotation, BlockScope scope) {
    this.scribe.printNextToken(TerminalTokens.TokenNameAT);
    if (this.preferences.insert_space_after_at_in_annotation) {
        this.scribe.space();
    }
    this.scribe.printQualifiedReference(annotation.sourceEnd, false/*do not expect parenthesis*/);
    this.scribe.printNextToken(TerminalTokens.TokenNameLPAREN, this.preferences.insert_space_before_opening_paren_in_annotation);
    if (this.preferences.insert_space_after_opening_paren_in_annotation) {
        this.scribe.space();
    }
    MemberValuePair[] memberValuePairs = annotation.memberValuePairs;
    if (memberValuePairs != null) {
        int length = memberValuePairs.length;
        Alignment annotationAlignment = this.scribe.createAlignment(
                Alignment.ANNOTATION_MEMBERS_VALUE_PAIRS,
                this.preferences.alignment_for_arguments_in_annotation,
                length,
                this.scribe.scanner.currentPosition);
        this.scribe.enterAlignment(annotationAlignment);
        boolean ok = false;
        do {
            try {
                for (int i = 0; i < length; i++) {
                    if (i > 0) {
                        this.scribe.printNextToken(TerminalTokens.TokenNameCOMMA, this.preferences.insert_space_before_comma_in_annotation);
                        this.scribe.printComment(CodeFormatter.K_UNKNOWN, Scribe.BASIC_TRAILING_COMMENT);
                    }
                    this.scribe.alignFragment(annotationAlignment, i);
                    if (i > 0 && this.preferences.insert_space_after_comma_in_annotation) {
                        this.scribe.space();
                    }
                    memberValuePairs[i].traverse(this, scope);
                }
                ok = true;
            } catch (AlignmentException e) {
                this.scribe.redoAlignment(e);
            }
        } while (!ok);
        this.scribe.exitAlignment(annotationAlignment, true);
    }
    this.scribe.printNextToken(TerminalTokens.TokenNameRPAREN, this.preferences.insert_space_before_closing_paren_in_annotation);
    return false;
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:CompilationUnitStructureRequestor.java   
protected IMemberValuePair getMemberValuePair(MemberValuePair memberValuePair) {
    String memberName = new String(memberValuePair.name);
    org.eclipse.jdt.internal.core.MemberValuePair result = new org.eclipse.jdt.internal.core.MemberValuePair(memberName);
    result.value = getMemberValue(result, memberValuePair.value);
    return result;
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:CompilationUnitStructureRequestor.java   
protected Object getMemberValue(org.eclipse.jdt.internal.core.MemberValuePair memberValuePair, Expression expression) {
    if (expression instanceof NullLiteral) {
        return null;
    } else if (expression instanceof Literal) {
        ((Literal) expression).computeConstant();
        return Util.getAnnotationMemberValue(memberValuePair, expression.constant);
    } else if (expression instanceof org.eclipse.jdt.internal.compiler.ast.Annotation) {
        org.eclipse.jdt.internal.compiler.ast.Annotation annotation = (org.eclipse.jdt.internal.compiler.ast.Annotation) expression;
        Object handle = acceptAnnotation(annotation, null, (JavaElement) this.handleStack.peek());
        memberValuePair.valueKind = IMemberValuePair.K_ANNOTATION;
        return handle;
    } else if (expression instanceof ClassLiteralAccess) {
        ClassLiteralAccess classLiteral = (ClassLiteralAccess) expression;
        char[] name = CharOperation.concatWith(classLiteral.type.getTypeName(), '.');
        memberValuePair.valueKind = IMemberValuePair.K_CLASS;
        return new String(name);
    } else if (expression instanceof QualifiedNameReference) {
        char[] qualifiedName = CharOperation.concatWith(((QualifiedNameReference) expression).tokens, '.');
        memberValuePair.valueKind = IMemberValuePair.K_QUALIFIED_NAME;
        return new String(qualifiedName);
    } else if (expression instanceof SingleNameReference) {
        char[] simpleName = ((SingleNameReference) expression).token;
        if (simpleName == RecoveryScanner.FAKE_IDENTIFIER) {
            memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
            return null;
        }
        memberValuePair.valueKind = IMemberValuePair.K_SIMPLE_NAME;
        return new String(simpleName);
    } else if (expression instanceof ArrayInitializer) {
        memberValuePair.valueKind = -1; // modified below by the first call to getMemberValue(...)
        Expression[] expressions = ((ArrayInitializer) expression).expressions;
        int length = expressions == null ? 0 : expressions.length;
        Object[] values = new Object[length];
        for (int i = 0; i < length; i++) {
            int previousValueKind = memberValuePair.valueKind;
            Object value = getMemberValue(memberValuePair, expressions[i]);
            if (previousValueKind != -1 && memberValuePair.valueKind != previousValueKind) {
                // values are heterogeneous, value kind is thus unknown
                memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
            }
            values[i] = value;
        }
        if (memberValuePair.valueKind == -1)
            memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
        return values;
    } else if (expression instanceof UnaryExpression) {         // to deal with negative numerals (see bug - 248312)
        UnaryExpression unaryExpression = (UnaryExpression) expression;
        if ((unaryExpression.bits & ASTNode.OperatorMASK) >> ASTNode.OperatorSHIFT == OperatorIds.MINUS) {
            if (unaryExpression.expression instanceof Literal) {
                Literal subExpression = (Literal) unaryExpression.expression;
                subExpression.computeConstant();
                return Util.getNegativeAnnotationMemberValue(memberValuePair, subExpression.constant);
            }
        }
        memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
        return null;
    } else {
        memberValuePair.valueKind = IMemberValuePair.K_UNKNOWN;
        return null;
    }
}
项目:lombok    文件:SetGeneratedByVisitor.java   
@Override public boolean visit(MemberValuePair node, BlockScope scope) {
    setGeneratedBy(node, source);
    applyOffsetASTNode(node);
    return super.visit(node, scope);
}