Esempio n. 1
0
    public boolean acceptBinding(IBinding binding) {
      if (fFound) return true;

      if (binding == null) return false;

      if (fToSearch.getKind() != binding.getKind()) {
        return false;
      }

      boolean checkVisibility = hasFlag(CHECK_VISIBILITY, fFlags);
      if (binding == fToSearch) {
        fFound = true;
      } else {
        IBinding bindingDeclaration = Bindings.getDeclaration(binding);
        if (bindingDeclaration == fToSearch) {
          fFound = true;
        } else if (bindingDeclaration.getName().equals(fToSearch.getName())) {
          String signature = getSignature(bindingDeclaration);
          if (signature != null && signature.equals(getSignature(fToSearch))) {
            if (checkVisibility) {
              fIsVisible = false;
            }
            return true; // found element that hides the binding to find
          }
        }
      }

      if (fFound && checkVisibility) {
        fIsVisible = ScopeAnalyzer.isVisible(binding, fParentTypeBinding);
      }
      return fFound;
    }
Esempio n. 2
0
 private static String getSignature(IBinding binding) {
   if (binding != null) {
     switch (binding.getKind()) {
       case IBinding.METHOD:
         StringBuffer buf = new StringBuffer();
         buf.append('M');
         buf.append(binding.getName()).append('(');
         ITypeBinding[] parameters = ((IMethodBinding) binding).getParameterTypes();
         for (int i = 0; i < parameters.length; i++) {
           if (i > 0) {
             buf.append(',');
           }
           ITypeBinding paramType = parameters[i].getErasure();
           buf.append(paramType.getQualifiedName());
         }
         buf.append(')');
         return buf.toString();
       case IBinding.VARIABLE:
         return 'V' + binding.getName();
       case IBinding.TYPE:
         return 'T' + binding.getName();
     }
   }
   return null;
 }