List of usage examples for org.eclipse.jdt.internal.compiler.lookup ParameterizedMethodBinding original
@Override
public MethodBinding original()
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 w w w . j a v a 2 s . com 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); }/*from w w w .j a v a2 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; }