in src/java/org/jetbrains/plugins/clojure/psi/impl/ImportOwner.java [263:299]
private static ReferFilter collectReferFilter(ClVector vector, ClSymbol firstSymbol) {
final ReferFilter result = new ReferFilter();
for (PsiElement child : vector.getChildren()) {
if (child instanceof ClKeyword) {
final String keywordName = ((ClKeyword) child).getName();
final boolean isOnly = keywordName.equals(ClojureKeywords.ONLY);
final boolean isExclude = keywordName.equals(ClojureKeywords.EXCLUDE);
final boolean isRename = keywordName.equals(ClojureKeywords.RENAME);
if (isOnly || isExclude) {
final PsiElement list = ClojurePsiUtil.getNextNonWhiteSpace(child);
if (list instanceof ClVector || list instanceof ClList) {
ClListLike listLike = (ClListLike) list;
final ClSymbol[] symbols = listLike.getAllSymbols();
for (ClSymbol symbol : symbols) {
if (isOnly) {
result.addOnly(symbol.getNameString());
} else if (isExclude) {
result.addExclude(symbol.getNameString());
}
}
}
} else if (isRename) {
final PsiElement map = ClojurePsiUtil.getNextNonWhiteSpace(child);
if (map instanceof ClMap) {
for (ClMapEntry entry : ((ClMap) map).getEntries()) {
final ClojurePsiElement key = entry.getKey();
final ClojurePsiElement value = entry.getValue();
if (key instanceof ClSymbol && value instanceof ClSymbol) {
result.addRename(((ClSymbol) key).getNameString(), (ClSymbol) value);
}
}
}
}
}
}
return result;
}