Example usage for org.eclipse.jdt.core.dom SimpleName resolveConstantExpressionValue

List of usage examples for org.eclipse.jdt.core.dom SimpleName resolveConstantExpressionValue

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.dom SimpleName resolveConstantExpressionValue.

Prototype

public final Object resolveConstantExpressionValue() 

Source Link

Document

Resolves and returns the compile-time constant expression value as specified in JLS2 15.28, if this expression has one.

Usage

From source file:net.sf.j2s.core.astvisitors.DependencyASTVisitor.java

License:Open Source License

public boolean visit(SimpleName node) {
    Object constValue = node.resolveConstantExpressionValue();
    if (constValue != null && (constValue instanceof Number || constValue instanceof Character
            || constValue instanceof Boolean)) {
        return false;
    }/* ww  w  .j av a2  s.  c om*/
    ITypeBinding typeBinding = node.resolveTypeBinding();
    IBinding binding = node.resolveBinding();
    boolean isCasting = false;
    boolean isQualified = false;
    ASTNode nodeParent = node.getParent();
    while (nodeParent != null && nodeParent instanceof QualifiedName) {
        isQualified = true;
        nodeParent = nodeParent.getParent();
    }
    if (nodeParent != null && nodeParent instanceof SimpleType) {
        isCasting = true;
    }
    if (typeBinding != null && !isCasting && isQualified && !(binding instanceof IVariableBinding)) {
        QNTypeBinding qn = new QNTypeBinding();
        String qualifiedName = null;
        if (!typeBinding.isPrimitive()) {
            if (typeBinding.isArray()) {
                ITypeBinding elementType = typeBinding.getElementType();
                while (elementType.isArray()) {
                    elementType = elementType.getElementType();
                }
                if (!elementType.isPrimitive()) {
                    ITypeBinding declaringClass = elementType.getDeclaringClass();
                    if (declaringClass != null) {
                        ITypeBinding dclClass = null;
                        while ((dclClass = declaringClass.getDeclaringClass()) != null) {
                            declaringClass = dclClass;
                        }
                        qualifiedName = declaringClass.getQualifiedName();
                        qn.binding = declaringClass;
                    } else {
                        qualifiedName = elementType.getQualifiedName();
                        qn.binding = elementType;
                    }
                }
            } else {
                ITypeBinding declaringClass = typeBinding.getDeclaringClass();
                if (declaringClass != null) {
                    ITypeBinding dclClass = null;
                    while ((dclClass = declaringClass.getDeclaringClass()) != null) {
                        declaringClass = dclClass;
                    }
                    qualifiedName = declaringClass.getQualifiedName();
                    qn.binding = declaringClass;
                } else {
                    qualifiedName = typeBinding.getQualifiedName();
                    qn.binding = typeBinding;
                }
            }
        }
        if (isQualifiedNameOK(qualifiedName, node) && !musts.contains(qualifiedName)
                && !requires.contains(qualifiedName)) {
            qn.qualifiedName = qualifiedName;
            optionals.add(qn);
        }
    } else if (binding instanceof IVariableBinding) {
        IVariableBinding varBinding = (IVariableBinding) binding;
        if ((varBinding.getModifiers() & Modifier.STATIC) != 0) {
            QNTypeBinding qn = new QNTypeBinding();
            String qualifiedName = null;

            IVariableBinding variableDeclaration = varBinding.getVariableDeclaration();
            ITypeBinding declaringClass = variableDeclaration.getDeclaringClass();

            ITypeBinding dclClass = null;
            while ((dclClass = declaringClass.getDeclaringClass()) != null) {
                declaringClass = dclClass;
            }
            qualifiedName = declaringClass.getQualifiedName();
            if (isQualifiedNameOK(qualifiedName, node) && !musts.contains(qualifiedName)
                    && !requires.contains(qualifiedName)) {
                qn.qualifiedName = qualifiedName;
                optionals.add(qn);
            }

        }

    }
    return super.visit(node);
}

From source file:net.sf.j2s.core.astvisitors.ReferenceASTVisitor.java

License:Open Source License

public boolean visit(SimpleName node) {
    Object constValue = node.resolveConstantExpressionValue();
    if (constValue != null && (constValue instanceof Number || constValue instanceof Boolean)) {
        return false;
    }/*from   w w w .  j av  a  2  s  .com*/
    isReferenced = true;
    return false;
}