private ClSymbol getVectorQualifier()

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


  private ClSymbol getVectorQualifier(boolean onlyRequireOrUse, ClVector vector, PsiElement list, boolean isQuoted) {
    if (list instanceof ClList) {
      final PsiElement firstSymbol = ((ClList) list).getFirstNonLeafElement();
      if (firstSymbol instanceof ClSymbol || firstSymbol instanceof ClKeyword) {
        final String name;
        if (firstSymbol instanceof ClSymbol) {
          name = ((ClSymbol) firstSymbol).getNameString();
        } else {
          name = ((ClKeyword) firstSymbol).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;
        if (isOk) {
          final PsiElement firstNonLeafElement = vector.getFirstNonLeafElement();
          if (firstNonLeafElement != null && firstNonLeafElement != this && firstNonLeafElement instanceof ClSymbol) {
            return (ClSymbol) firstNonLeafElement;
          }
        }
      }
    } else if (list instanceof ClQuotedForm) {
      return getVectorQualifier(onlyRequireOrUse, vector, list.getParent(), true);
    }
    return null;
  }