in src/java/org/jetbrains/plugins/clojure/psi/impl/ns/NamespaceUtil.java [117:156]
public boolean processDeclarations(@NotNull PsiScopeProcessor processor, @NotNull ResolveState state, PsiElement lastParent, @NotNull PsiElement place) {
final HashSet<String> innerNamespaces = new HashSet<String>();
// Add inner namespaces
final String outerName = getQualifiedName();
for (String fqn : StubIndex.getInstance().getAllKeys(ClojureNsNameIndex.KEY, project)) {
if (fqn.startsWith(outerName) && !fqn.equals(outerName) &&
!StringUtil.trimStart(fqn, outerName + ".").contains(".")) {
final ClSyntheticNamespace inner = getNamespace(fqn, project);
innerNamespaces.add(fqn);
if (!ResolveUtil.processElement(processor, inner)) {
return false;
}
}
}
// Add declared elements
for (PsiNamedElement element : getDeclaredElements(getQualifiedName(), getProject())) {
if (!ResolveUtil.processElement(processor, element)) {
return false;
}
}
final String qualifiedName = getQualifiedName();
final PsiPackage aPackage = JavaPsiFacade.getInstance(getProject()).findPackage(qualifiedName);
if (aPackage != null) {
for (PsiClass clazz : aPackage.getClasses(place.getResolveScope())) {
if (!ResolveUtil.processElement(processor, clazz)) return false;
}
for (PsiPackage pack : aPackage.getSubPackages(place.getResolveScope())) {
if (!innerNamespaces.contains(pack.getQualifiedName()) &&
!ResolveUtil.processElement(processor, getNamespaceElement(pack))) {
return false;
}
}
}
return true;
}