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;
}