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

项目:lombok-ianchiu    文件:PatchExtensionMethod.java   
private static NameReference createNameRef(TypeBinding typeBinding, ASTNode source) {
    long p = ((long) source.sourceStart << 32) | source.sourceEnd;
    char[] pkg = typeBinding.qualifiedPackageName();
    char[] basename = typeBinding.qualifiedSourceName();

    StringBuilder sb = new StringBuilder();
    if (pkg != null) sb.append(pkg);
    if (sb.length() > 0) sb.append(".");
    sb.append(basename);

    String tName = sb.toString();

    if (tName.indexOf('.') == -1) {
        return new SingleNameReference(basename, p);
    } else {
        char[][] sources;
        String[] in = tName.split("\\.");
        sources = new char[in.length][];
        for (int i = 0; i < in.length; i++) sources[i] = in[i].toCharArray();
        long[] poss = new long[in.length];
        Arrays.fill(poss, p);
        return new QualifiedNameReference(sources, poss, source.sourceStart, source.sourceEnd);
    }
}
项目:EasyMPermission    文件:PatchExtensionMethod.java   
private static NameReference createNameRef(TypeBinding typeBinding, ASTNode source) {
    long p = ((long) source.sourceStart << 32) | source.sourceEnd;
    char[] pkg = typeBinding.qualifiedPackageName();
    char[] basename = typeBinding.qualifiedSourceName();

    StringBuilder sb = new StringBuilder();
    if (pkg != null) sb.append(pkg);
    if (sb.length() > 0) sb.append(".");
    sb.append(basename);

    String tName = sb.toString();

    if (tName.indexOf('.') == -1) {
        return new SingleNameReference(basename, p);
    } else {
        char[][] sources;
        String[] in = tName.split("\\.");
        sources = new char[in.length][];
        for (int i = 0; i < in.length; i++) sources[i] = in[i].toCharArray();
        long[] poss = new long[in.length];
        Arrays.fill(poss, p);
        return new QualifiedNameReference(sources, poss, source.sourceStart, source.sourceEnd);
    }
}
项目:Eclipse-Postfix-Code-Completion    文件:CodeFormatterVisitor.java   
/**
 * @see org.eclipse.jdt.internal.compiler.ASTVisitor#visit(org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference, org.eclipse.jdt.internal.compiler.lookup.BlockScope)
 */
public boolean visit(
    QualifiedNameReference qualifiedNameReference,
    BlockScope scope) {

    final int numberOfParens = (qualifiedNameReference.bits & ASTNode.ParenthesizedMASK) >> ASTNode.ParenthesizedSHIFT;
    if (numberOfParens > 0) {
        manageOpeningParenthesizedExpression(qualifiedNameReference, numberOfParens);
    }
    this.scribe.printQualifiedReference(qualifiedNameReference.sourceEnd, numberOfParens>=0/*expect parenthesis*/);

    if (numberOfParens > 0) {
        manageClosingParenthesizedExpression(qualifiedNameReference, numberOfParens);
    }
    return false;
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:CodeFormatterVisitor.java   
/**
 * @see org.eclipse.jdt.internal.compiler.ASTVisitor#visit(org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference, org.eclipse.jdt.internal.compiler.lookup.BlockScope)
 */
public boolean visit(
    QualifiedNameReference qualifiedNameReference,
    BlockScope scope) {

    final int numberOfParens = (qualifiedNameReference.bits & ASTNode.ParenthesizedMASK) >> ASTNode.ParenthesizedSHIFT;
    if (numberOfParens > 0) {
        manageOpeningParenthesizedExpression(qualifiedNameReference, numberOfParens);
    }
    this.scribe.printQualifiedReference(qualifiedNameReference.sourceEnd, numberOfParens>=0/*expect parenthesis*/);

    if (numberOfParens > 0) {
        manageClosingParenthesizedExpression(qualifiedNameReference, numberOfParens);
    }
    return false;
}
项目:lombok    文件:PatchExtensionMethod.java   
private static NameReference createNameRef(TypeBinding typeBinding, ASTNode source) {
    long p = ((long) source.sourceStart << 32) | source.sourceEnd;
    char[] pkg = typeBinding.qualifiedPackageName();
    char[] basename = typeBinding.qualifiedSourceName();

    StringBuilder sb = new StringBuilder();
    if (pkg != null) sb.append(pkg);
    if (sb.length() > 0) sb.append(".");
    sb.append(basename);

    String tName = sb.toString();

    if (tName.indexOf('.') == -1) {
        return new SingleNameReference(basename, p);
    } else {
        char[][] sources;
        String[] in = tName.split("\\.");
        sources = new char[in.length][];
        for (int i = 0; i < in.length; i++) sources[i] = in[i].toCharArray();
        long[] poss = new long[in.length];
        Arrays.fill(poss, p);
        return new QualifiedNameReference(sources, poss, source.sourceStart, source.sourceEnd);
    }
}
项目:lombok-ianchiu    文件:Eclipse.java   
/**
 * Returns the actual value of the given Literal or Literal-like node.
 */
public static Object calculateValue(Expression e) {
    if (e instanceof Literal) {
        ((Literal)e).computeConstant();
        switch (e.constant.typeID()) {
        case TypeIds.T_int: return e.constant.intValue();
        case TypeIds.T_byte: return e.constant.byteValue();
        case TypeIds.T_short: return e.constant.shortValue();
        case TypeIds.T_char: return e.constant.charValue();
        case TypeIds.T_float: return e.constant.floatValue();
        case TypeIds.T_double: return e.constant.doubleValue();
        case TypeIds.T_boolean: return e.constant.booleanValue();
        case TypeIds.T_long: return e.constant.longValue();
        case TypeIds.T_JavaLangString: return e.constant.stringValue();
        default: return null;
        }
    } else if (e instanceof ClassLiteralAccess) {
        return Eclipse.toQualifiedName(((ClassLiteralAccess)e).type.getTypeName());
    } else if (e instanceof SingleNameReference) {
        return new String(((SingleNameReference)e).token);
    } else if (e instanceof QualifiedNameReference) {
        String qName = Eclipse.toQualifiedName(((QualifiedNameReference)e).tokens);
        int idx = qName.lastIndexOf('.');
        return idx == -1 ? qName : qName.substring(idx+1);
    }

    return null;
}
项目:lombok-ianchiu    文件:EclipseHandlerUtil.java   
public static NameReference createNameReference(String name, Annotation source) {
    int pS = source.sourceStart, pE = source.sourceEnd;
    long p = (long)pS << 32 | pE;

    char[][] nameTokens = fromQualifiedName(name);
    long[] pos = new long[nameTokens.length];
    Arrays.fill(pos, p);

    QualifiedNameReference nameReference = new QualifiedNameReference(nameTokens, pos, pS, pE);
    nameReference.statementEnd = pE;

    setGeneratedBy(nameReference, source);
    return nameReference;
}
项目:lombok-ianchiu    文件:SetGeneratedByVisitor.java   
private void fixPositions(QualifiedNameReference node) {
    node.sourceEnd = sourceEnd;
    node.sourceStart = sourceStart;
    node.statementEnd = sourceEnd;
    if (node.sourcePositions == null || node.sourcePositions.length != node.tokens.length) node.sourcePositions = new long[node.tokens.length];
    Arrays.fill(node.sourcePositions, sourcePos);
}
项目:lombok-ianchiu    文件:EclipseGuavaSingularizer.java   
protected Statement createConstructBuilderVarIfNeeded(SingularData data, EclipseNode builderType) {
    FieldReference thisDotField = new FieldReference(data.getPluralName(), 0L);
    thisDotField.receiver = new ThisReference(0, 0);
    FieldReference thisDotField2 = new FieldReference(data.getPluralName(), 0L);
    thisDotField2.receiver = new ThisReference(0, 0);
    Expression cond = new EqualExpression(thisDotField, new NullLiteral(0, 0), OperatorIds.EQUAL_EQUAL);

    MessageSend createBuilderInvoke = new MessageSend();
    char[][] tokenizedName = makeGuavaTypeName(getSimpleTargetTypeName(data), false);
    createBuilderInvoke.receiver = new QualifiedNameReference(tokenizedName, NULL_POSS, 0, 0);
    createBuilderInvoke.selector = getBuilderMethodName(data);
    return new IfStatement(cond, new Assignment(thisDotField2, createBuilderInvoke, 0), 0, 0);
}
项目:EasyMPermission    文件:Eclipse.java   
/**
 * Returns the actual value of the given Literal or Literal-like node.
 */
public static Object calculateValue(Expression e) {
    if (e instanceof Literal) {
        ((Literal)e).computeConstant();
        switch (e.constant.typeID()) {
        case TypeIds.T_int: return e.constant.intValue();
        case TypeIds.T_byte: return e.constant.byteValue();
        case TypeIds.T_short: return e.constant.shortValue();
        case TypeIds.T_char: return e.constant.charValue();
        case TypeIds.T_float: return e.constant.floatValue();
        case TypeIds.T_double: return e.constant.doubleValue();
        case TypeIds.T_boolean: return e.constant.booleanValue();
        case TypeIds.T_long: return e.constant.longValue();
        case TypeIds.T_JavaLangString: return e.constant.stringValue();
        default: return null;
        }
    } else if (e instanceof ClassLiteralAccess) {
        return Eclipse.toQualifiedName(((ClassLiteralAccess)e).type.getTypeName());
    } else if (e instanceof SingleNameReference) {
        return new String(((SingleNameReference)e).token);
    } else if (e instanceof QualifiedNameReference) {
        String qName = Eclipse.toQualifiedName(((QualifiedNameReference)e).tokens);
        int idx = qName.lastIndexOf('.');
        return idx == -1 ? qName : qName.substring(idx+1);
    }

    return null;
}
项目:EasyMPermission    文件:EclipseHandlerUtil.java   
public static NameReference createNameReference(String name, Annotation source) {
    int pS = source.sourceStart, pE = source.sourceEnd;
    long p = (long)pS << 32 | pE;

    char[][] nameTokens = fromQualifiedName(name);
    long[] pos = new long[nameTokens.length];
    Arrays.fill(pos, p);

    QualifiedNameReference nameReference = new QualifiedNameReference(nameTokens, pos, pS, pE);
    nameReference.statementEnd = pE;

    setGeneratedBy(nameReference, source);
    return nameReference;
}
项目:EasyMPermission    文件:SetGeneratedByVisitor.java   
private void fixPositions(QualifiedNameReference node) {
    node.sourceEnd = sourceEnd;
    node.sourceStart = sourceStart;
    node.statementEnd = sourceEnd;
    if (node.sourcePositions == null || node.sourcePositions.length != node.tokens.length) node.sourcePositions = new long[node.tokens.length];
    Arrays.fill(node.sourcePositions, sourcePos);
}
项目:EasyMPermission    文件:EclipseGuavaSingularizer.java   
protected Statement createConstructBuilderVarIfNeeded(SingularData data, EclipseNode builderType) {
    FieldReference thisDotField = new FieldReference(data.getPluralName(), 0L);
    thisDotField.receiver = new ThisReference(0, 0);
    FieldReference thisDotField2 = new FieldReference(data.getPluralName(), 0L);
    thisDotField2.receiver = new ThisReference(0, 0);
    Expression cond = new EqualExpression(thisDotField, new NullLiteral(0, 0), OperatorIds.EQUAL_EQUAL);

    MessageSend createBuilderInvoke = new MessageSend();
    char[][] tokenizedName = makeGuavaTypeName(getSimpleTargetTypeName(data), false);
    createBuilderInvoke.receiver = new QualifiedNameReference(tokenizedName, NULL_POSS, 0, 0);
    createBuilderInvoke.selector = getBuilderMethodName(data);
    return new IfStatement(cond, new Assignment(thisDotField2, createBuilderInvoke, 0), 0, 0);
}
项目:Eclipse-Postfix-Code-Completion    文件:IndexingParser.java   
protected QualifiedNameReference newQualifiedNameReference(char[][] tokens, long[] positions, int sourceStart, int sourceEnd) {
    QualifiedNameReference ref = this.qualifiedNameReference;
    ref.tokens = tokens;
    ref.sourcePositions = positions;
    ref.sourceStart = sourceStart;
    ref.sourceEnd = sourceEnd;
    return ref;
}
项目:Eclipse-Postfix-Code-Completion    文件:ProblemReporter.java   
private int nodeSourceStart(Binding field, ASTNode node, int index) {
    if (node instanceof FieldReference) {
        FieldReference fieldReference = (FieldReference) node;
        return (int) (fieldReference.nameSourcePosition >> 32);
    } else  if (node instanceof QualifiedNameReference) {
        QualifiedNameReference ref = (QualifiedNameReference) node;
        if (ref.binding == field) {
            if (index == 0) {
                return (int) (ref.sourcePositions[ref.indexOfFirstFieldBinding-1] >> 32);
            } else {
                return (int) (ref.sourcePositions[index] >> 32);
            }
        }
        FieldBinding[] otherFields = ref.otherBindings;
        if (otherFields != null) {
            int offset = ref.indexOfFirstFieldBinding;
            if (index != 0) {
                for (int i = 0, length = otherFields.length; i < length; i++) {
                    if ((otherFields[i] == field) && (i + offset == index)) {
                        return (int) (ref.sourcePositions[i + offset] >> 32);
                    }
                }
            } else {
                for (int i = 0, length = otherFields.length; i < length; i++) {
                    if (otherFields[i] == field) {
                        return (int) (ref.sourcePositions[i + offset] >> 32);
                    }
                }
            }
        }
    } else if (node instanceof ParameterizedQualifiedTypeReference) {
        ParameterizedQualifiedTypeReference reference = (ParameterizedQualifiedTypeReference) node;
        return (int) (reference.sourcePositions[0]>>>32);
    }
    return node.sourceStart;
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:IndexingParser.java   
protected QualifiedNameReference newQualifiedNameReference(char[][] tokens, long[] positions, int sourceStart, int sourceEnd) {
    QualifiedNameReference ref = this.qualifiedNameReference;
    ref.tokens = tokens;
    ref.sourcePositions = positions;
    ref.sourceStart = sourceStart;
    ref.sourceEnd = sourceEnd;
    return ref;
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:ProblemReporter.java   
private int nodeSourceStart(Binding field, ASTNode node, int index) {
    if (node instanceof FieldReference) {
        FieldReference fieldReference = (FieldReference) node;
        return (int) (fieldReference.nameSourcePosition >> 32);
    } else  if (node instanceof QualifiedNameReference) {
        QualifiedNameReference ref = (QualifiedNameReference) node;
        if (ref.binding == field) {
            if (index == 0) {
                return (int) (ref.sourcePositions[ref.indexOfFirstFieldBinding-1] >> 32);
            } else {
                return (int) (ref.sourcePositions[index] >> 32);
            }
        }
        FieldBinding[] otherFields = ref.otherBindings;
        if (otherFields != null) {
            int offset = ref.indexOfFirstFieldBinding;
            if (index != 0) {
                for (int i = 0, length = otherFields.length; i < length; i++) {
                    if ((otherFields[i] == field) && (i + offset == index)) {
                        return (int) (ref.sourcePositions[i + offset] >> 32);
                    }
                }
            } else {
                for (int i = 0, length = otherFields.length; i < length; i++) {
                    if (otherFields[i] == field) {
                        return (int) (ref.sourcePositions[i + offset] >> 32);
                    }
                }
            }
        }
    } else if (node instanceof ParameterizedQualifiedTypeReference) {
        ParameterizedQualifiedTypeReference reference = (ParameterizedQualifiedTypeReference) node;
        return (int) (reference.sourcePositions[0]>>>32);
    }
    return node.sourceStart;
}
项目:lombok    文件:Eclipse.java   
/**
 * Returns the actual value of the given Literal or Literal-like node.
 */
public static Object calculateValue(Expression e) {
    if (e instanceof Literal) {
        ((Literal)e).computeConstant();
        switch (e.constant.typeID()) {
        case TypeIds.T_int: return e.constant.intValue();
        case TypeIds.T_byte: return e.constant.byteValue();
        case TypeIds.T_short: return e.constant.shortValue();
        case TypeIds.T_char: return e.constant.charValue();
        case TypeIds.T_float: return e.constant.floatValue();
        case TypeIds.T_double: return e.constant.doubleValue();
        case TypeIds.T_boolean: return e.constant.booleanValue();
        case TypeIds.T_long: return e.constant.longValue();
        case TypeIds.T_JavaLangString: return e.constant.stringValue();
        default: return null;
        }
    } else if (e instanceof ClassLiteralAccess) {
        return Eclipse.toQualifiedName(((ClassLiteralAccess)e).type.getTypeName());
    } else if (e instanceof SingleNameReference) {
        return new String(((SingleNameReference)e).token);
    } else if (e instanceof QualifiedNameReference) {
        String qName = Eclipse.toQualifiedName(((QualifiedNameReference)e).tokens);
        int idx = qName.lastIndexOf('.');
        return idx == -1 ? qName : qName.substring(idx+1);
    }

    return null;
}
项目:lombok    文件:EclipseHandlerUtil.java   
static Expression createFieldAccessor(String field, ASTNode source, char[] receiver) {
    int pS = source.sourceStart, pE = source.sourceEnd;
    long p = (long)pS << 32 | pE;

    char[][] tokens = new char[2][];
    tokens[0] = receiver;
    tokens[1] = field.toCharArray();
    long[] poss = {p, p};

    NameReference ref = new QualifiedNameReference(tokens, poss, pS, pE);
    setGeneratedBy(ref, source);
    return ref;
}
项目:lombok    文件:EclipseHandlerUtil.java   
static NameReference createNameReference(String name, Annotation source) {
    int pS = source.sourceStart, pE = source.sourceEnd;
    long p = (long)pS << 32 | pE;

    char[][] nameTokens = fromQualifiedName(name);
    long[] pos = new long[nameTokens.length];
    Arrays.fill(pos, p);

    QualifiedNameReference nameReference = new QualifiedNameReference(nameTokens, pos, pS, pE);
    nameReference.statementEnd = pE;

    setGeneratedBy(nameReference, source);
    return nameReference;
}
项目:lombok-ianchiu    文件:SetGeneratedByVisitor.java   
@Override public boolean visit(QualifiedNameReference node, BlockScope scope) {
    fixPositions(setGeneratedBy(node, source));
    return super.visit(node, scope);
}
项目:lombok-ianchiu    文件:SetGeneratedByVisitor.java   
@Override public boolean visit(QualifiedNameReference node, ClassScope scope) {
    fixPositions(setGeneratedBy(node, source));
    return super.visit(node, scope);
}
项目:EasyMPermission    文件:SetGeneratedByVisitor.java   
@Override public boolean visit(QualifiedNameReference node, BlockScope scope) {
    fixPositions(setGeneratedBy(node, source));
    return super.visit(node, scope);
}
项目:EasyMPermission    文件:SetGeneratedByVisitor.java   
@Override public boolean visit(QualifiedNameReference node, ClassScope scope) {
    fixPositions(setGeneratedBy(node, source));
    return super.visit(node, scope);
}
项目:Eclipse-Postfix-Code-Completion    文件:BinaryExpressionFragmentBuilder.java   
public boolean visit(
    QualifiedNameReference qualifiedNameReference,
    BlockScope scope) {
        addRealFragment(qualifiedNameReference);
        return false;
}
项目: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    文件:LocalVariable.java   
private Object getAnnotationMemberValue(MemberValuePair memberValuePair, Expression expression, JavaElement parentElement) {
    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) {
        memberValuePair.valueKind = IMemberValuePair.K_ANNOTATION;
        return getAnnotation((org.eclipse.jdt.internal.compiler.ast.Annotation) expression, parentElement);
    } else if (expression instanceof ClassLiteralAccess) {
        ClassLiteralAccess classLiteral = (ClassLiteralAccess) expression;
        char[] typeName = CharOperation.concatWith(classLiteral.type.getTypeName(), '.');
        memberValuePair.valueKind = IMemberValuePair.K_CLASS;
        return new String(typeName);
    } 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 = getAnnotationMemberValue(memberValuePair, expressions[i], parentElement);
            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    文件:BinaryExpressionFragmentBuilder.java   
public boolean visit(
    QualifiedNameReference qualifiedNameReference,
    BlockScope scope) {
        addRealFragment(qualifiedNameReference);
        return false;
}
项目: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;
    }
}
项目:Eclipse-Postfix-Code-Completion-Juno38    文件:LocalVariable.java   
private Object getAnnotationMemberValue(MemberValuePair memberValuePair, Expression expression, JavaElement parentElement) {
    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) {
        memberValuePair.valueKind = IMemberValuePair.K_ANNOTATION;
        return getAnnotation((org.eclipse.jdt.internal.compiler.ast.Annotation) expression, parentElement);
    } else if (expression instanceof ClassLiteralAccess) {
        ClassLiteralAccess classLiteral = (ClassLiteralAccess) expression;
        char[] typeName = CharOperation.concatWith(classLiteral.type.getTypeName(), '.');
        memberValuePair.valueKind = IMemberValuePair.K_CLASS;
        return new String(typeName);
    } 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 = getAnnotationMemberValue(memberValuePair, expressions[i], parentElement);
            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   
private void applyOffsetQualifiedNameReference(QualifiedNameReference node) {
    applyOffsetExpression(node);
    for (int i = 0; i < node.sourcePositions.length; i++) {
        node.sourcePositions[i] = recalcSourcePosition(node.sourcePositions[i]);
    }
}
项目:lombok    文件:SetGeneratedByVisitor.java   
@Override public boolean visit(QualifiedNameReference node, BlockScope scope) {
    setGeneratedBy(node, source);   
    applyOffsetQualifiedNameReference(node);
    return super.visit(node, scope);
}
项目:lombok    文件:SetGeneratedByVisitor.java   
@Override public boolean visit(QualifiedNameReference node, ClassScope scope) {
    setGeneratedBy(node, source);
    applyOffsetExpression(node);
    return super.visit(node, scope);
}