private static boolean processReferQualifiedNames()

in src/java/org/jetbrains/plugins/clojure/psi/impl/ImportOwner.java [424:458]


  private static boolean processReferQualifiedNames(PsiScopeProcessor processor, PsiElement place, ClListLike child,
                                                    ClListLike listLike) {
    final PsiElement fst = listLike.getFirstNonLeafElement();
    if (fst instanceof ClSymbol) {
      PsiElement next = fst.getNextSibling();
      boolean isSimple = true;
      while (next != null) {
        if (next instanceof ClSymbol) {
          isSimple = false;
          ClSymbol clazzSym = (ClSymbol) next;
          if (!checkReferQualifier(processor, place, child, ((ClSymbol) fst).getNameString() + "." + clazzSym.getNameString(), new ReferFilter())) {
            return false;
          }
        } else if (next instanceof ClVector) {
          isSimple = false;
          ClVector vector = (ClVector) next;
          final ClSymbol[] symbols = vector.getAllSymbols();
          if (symbols.length > 0) {
            final ClSymbol symbol = symbols[0];
            ReferFilter filter = collectReferFilter(vector, symbol);
            if (!checkReferQualifier(processor, place, child,
                ((ClSymbol) fst).getNameString() + "." + symbol.getNameString(), filter)) {
              return false;
            }
          }
        }

        if (isSimple && listLike instanceof ClVector) {
          if (!checkReferQualifier(processor, place, child, ((ClSymbol) fst).getNameString(), new ReferFilter())) return false;
        }
        next = next.getNextSibling();
      }
    }
    return true;
  }