in src/java/org/jetbrains/plugins/clojure/psi/impl/symbols/ClSymbolImpl.java [220:253]
private void resolveImpl(ClSymbol symbol, ResolveProcessor processor) {
final ClSymbol qualifier = symbol.getQualifierSymbol();
//process other places
if (qualifier == null) {
ResolveUtil.treeWalkUp(symbol, processor);
} else {
for (ResolveResult result : qualifier.multiResolve(false)) {
final PsiElement element = result.getElement();
if (element != null) {
final PsiElement sep = symbol.getSeparatorToken();
if (sep != null && "/".equals(sep.getText())) {
//get class elements
if (element instanceof PsiClass) {
element.processDeclarations(processor, ResolveState.initial(), null, symbol);
}
//get namespace declarations
if (element instanceof ClSyntheticNamespace) {
final String fqn = ((ClSyntheticNamespace) element).getQualifiedName();
// namespace declarations
for (PsiNamedElement named : NamespaceUtil.getDeclaredElements(fqn, element.getProject())) {
if (!ResolveUtil.processElement(processor, named)) return;
}
}
} else if (sep == null || ".".equals(sep.getText())) {
element.processDeclarations(processor, ResolveState.initial(), null, symbol);
}
}
}
}
}