Ejemplo n.º 1
0
 private IName[] findDeclNames(IASTTranslationUnit ast, NameKind kind, IBinding binding)
     throws CoreException {
   IName[] declNames = findNames(fIndex, ast, kind, binding);
   // Bug 207320, handle template instances.
   while (declNames.length == 0 && binding instanceof ICPPSpecialization) {
     binding = ((ICPPSpecialization) binding).getSpecializedBinding();
     if (binding != null && !(binding instanceof IProblemBinding)) {
       declNames = findNames(fIndex, ast, NameKind.DEFINITION, binding);
     }
   }
   if (declNames.length == 0 && binding instanceof ICPPMethod) {
     // Bug 86829, handle implicit methods.
     ICPPMethod method = (ICPPMethod) binding;
     if (method.isImplicit()) {
       IBinding clsBinding = method.getClassOwner();
       if (clsBinding != null && !(clsBinding instanceof IProblemBinding)) {
         declNames = findNames(fIndex, ast, NameKind.REFERENCE, clsBinding);
       }
     }
   }
   return declNames;
 }