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