private ClSymbol getListQualifier()

in src/java/org/jetbrains/plugins/clojure/psi/impl/symbols/ClSymbolImpl.java [299:322]


  private ClSymbol getListQualifier(boolean onlyRequireOrUse, ClList list, PsiElement listParent, boolean isQuoted) {
    if (listParent instanceof ClQuotedForm) {
      return getListQualifier(onlyRequireOrUse, list, listParent.getParent(), true);
    } else if (listParent instanceof ClList) {
      final PsiElement listParentFirstSymbol = ((ClList) listParent).getFirstNonLeafElement();
      if (listParentFirstSymbol instanceof ClSymbol || listParentFirstSymbol instanceof ClKeyword) {
        final String name;
        if (listParentFirstSymbol instanceof ClSymbol) {
          name = ((ClSymbol) listParentFirstSymbol).getNameString();
        } else {
          name = ((ClKeyword) listParentFirstSymbol).getName();
        }
        boolean isOk = false;
        if ((name.equals(ClojureKeywords.IMPORT) || name.equals(ListDeclarations.IMPORT)) && !onlyRequireOrUse) isOk = true;
        else if ((name.equals(ClojureKeywords.REQUIRE) || name.equals(ClojureKeywords.USE)) && !isQuoted) isOk = true;
        else if ((name.equals(ListDeclarations.REQUIRE) || name.equals(ListDeclarations.USE)) && isQuoted) isOk = true;
        final ClSymbol firstSymbol = list.getFirstSymbol();
        if (isOk && firstSymbol != this && firstSymbol instanceof ClSymbol) {
          return firstSymbol;
        }
      }
    }
    return null;
  }