Example usage for org.eclipse.jdt.internal.compiler.lookup ParameterizedFieldBinding original

List of usage examples for org.eclipse.jdt.internal.compiler.lookup ParameterizedFieldBinding original

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.compiler.lookup ParameterizedFieldBinding original.

Prototype

@Override
public FieldBinding original() 

Source Link

Usage

From source file:com.android.tools.lint.psi.EcjPsiManager.java

License:Apache License

@Nullable
public PsiElement findElement(@Nullable Binding binding) {
    if (binding == null) {
        return null;
    }//from   ww w .j a v  a 2  s.  co  m

    PsiElement element = mElementMap.get(binding);
    if (element != null) {
        return element;
    }
    if (binding instanceof ProblemReferenceBinding) {
        binding = ((ProblemReferenceBinding) binding).closestReferenceMatch();
        if (binding != null) {
            return findElement(binding);
        } else {
            return null;
        }
    }

    if (binding instanceof WildcardBinding) {
        return findElement(((WildcardBinding) binding).actualType());
    }

    if (binding instanceof ParameterizedTypeBinding) {
        TypeBinding typeBinding = ((ParameterizedTypeBinding) binding).original();
        element = mElementMap.get(typeBinding);
        //noinspection PointlessBooleanExpression
        if (!RESOLVE_TO_BINARY && element == null && typeBinding != null
                && typeBinding.actualType() instanceof SourceTypeBinding) {
            return null;
        }
        return findElement(typeBinding);
    }

    if (binding instanceof ParameterizedMethodBinding) {
        ParameterizedMethodBinding methodBinding = (ParameterizedMethodBinding) binding;
        binding = methodBinding.original();
        element = mElementMap.get(binding);
        //noinspection PointlessBooleanExpression
        if (!RESOLVE_TO_BINARY && element == null && methodBinding.isConstructor()
                && methodBinding.declaringClass != null
                && methodBinding.declaringClass.actualType() instanceof SourceTypeBinding) {
            // It's a local binding but there's no actual constructor there
            // (it's the default constructor)
            return null;
        }
        return findElement(binding);
    }

    if (binding instanceof ParameterizedFieldBinding) {
        ParameterizedFieldBinding fieldBinding = (ParameterizedFieldBinding) binding;
        binding = fieldBinding.original();
        element = mElementMap.get(binding);
        //noinspection PointlessBooleanExpression
        if (!RESOLVE_TO_BINARY && element == null && fieldBinding.declaringClass != null
                && fieldBinding.declaringClass.actualType() instanceof SourceTypeBinding) {
            // It's a local binding but there's no actual constructor there
            // (it's the default constructor)
            return null;
        }
        return findElement(binding);
    }

    // No binding in map yet: the PSI file may not have been parsed yet. Attempt
    // to initialize these:
    if (binding instanceof FieldBinding) {
        ReferenceBinding declaringClass = ((FieldBinding) binding).declaringClass;
        if (declaringClass instanceof SourceTypeBinding) {
            PsiJavaFile file = mEcjResult.findFileContaining(declaringClass);
            //noinspection VariableNotUsedInsideIf
            if (file != null) {
                element = mElementMap.get(binding);
                if (element != null) {
                    return element;
                }
            }
        }
    } else if (binding instanceof MethodBinding) {
        ReferenceBinding declaringClass = ((MethodBinding) binding).declaringClass;
        if (declaringClass instanceof SourceTypeBinding) {
            PsiJavaFile file = mEcjResult.findFileContaining(declaringClass);
            //noinspection VariableNotUsedInsideIf
            if (file != null) {
                element = mElementMap.get(binding);
                if (element != null) {
                    return element;
                }
            }
        }
    }

    // Binary references. Computed on the fly for now since they are lightweight.
    if (binding instanceof MethodBinding) {
        MethodBinding methodBinding = (MethodBinding) binding;

        // Default constructor? Allow binding to binary!
        if (methodBinding.isConstructor()
                && (methodBinding.parameters == null || methodBinding.parameters.length == 0)) {
            return new EcjPsiBinaryMethod(this, methodBinding);
        }
        //noinspection PointlessBooleanExpression
        if (!RESOLVE_TO_BINARY && methodBinding.declaringClass instanceof SourceTypeBinding) {
            return null;
        }
        return new EcjPsiBinaryMethod(this, methodBinding);
    } else if (binding instanceof ReferenceBinding) {
        ReferenceBinding referenceBinding = (ReferenceBinding) binding;
        if (referenceBinding.compoundName == null) {
            // For example, TypeVariableBindings
            return null;
        }
        return new EcjPsiBinaryClass(this, referenceBinding);
    } else if (binding instanceof FieldBinding) {
        FieldBinding fieldBinding = (FieldBinding) binding;
        //noinspection PointlessBooleanExpression
        if (!RESOLVE_TO_BINARY && fieldBinding.declaringClass instanceof SourceTypeBinding) {
            return null;
        }
        return new EcjPsiBinaryField(this, fieldBinding);
    } else {
        // Search in AST, e.g. to resolve local variables etc
        if (binding instanceof LocalVariableBinding) {
            LocalVariableBinding lvb = (LocalVariableBinding) binding;
            Scope scope = lvb.declaringScope;
            while (scope != null) {
                if (scope instanceof MethodScope) {
                    MethodScope methodScope = (MethodScope) scope;
                    MethodBinding methodBinding = methodScope.referenceMethodBinding();
                    if (methodBinding != null) {
                        PsiElement method = mElementMap.get(methodBinding);
                        if (method != null) {
                            PsiElement declaration = findElementWithBinding(method, lvb);
                            if (declaration != null) {
                                return declaration;
                            }
                        }
                    }
                }
                scope = scope.parent;
            }
        }
    }

    return null;
}

From source file:com.google.gwt.dev.jjs.impl.TypeMap.java

License:Apache License

private JNode get(Binding binding, boolean failOnNull) {
    if (binding instanceof TypeVariableBinding) {
        TypeVariableBinding tvb = (TypeVariableBinding) binding;
        return get(tvb.erasure(), failOnNull);
    } else if (binding instanceof ParameterizedTypeBinding) {
        ParameterizedTypeBinding ptb = (ParameterizedTypeBinding) binding;
        return get(ptb.erasure(), failOnNull);
    } else if (binding instanceof ParameterizedMethodBinding) {
        ParameterizedMethodBinding pmb = (ParameterizedMethodBinding) binding;
        return get(pmb.original(), failOnNull);
    } else if (binding instanceof ParameterizedFieldBinding) {
        ParameterizedFieldBinding pfb = (ParameterizedFieldBinding) binding;
        return get(pfb.original(), failOnNull);
    } else if (binding instanceof WildcardBinding) {
        WildcardBinding wcb = (WildcardBinding) binding;
        return get(wcb.erasure(), failOnNull);
    }/*w w  w  .j a va 2 s. c  o m*/
    JNode result = internalGet(binding, failOnNull);
    if (result == null && failOnNull) {
        InternalCompilerException ice = new InternalCompilerException("Failed to get JNode");
        ice.addNode(binding.getClass().getName(), binding.toString(), null);
        throw ice;
    }
    return result;
}