private void resolveImpl()

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