private void scanImports()

in javac-ast-extension/src/org/jetbrains/jps/javac/ast/JavacReferenceCollectorListener.java [153:179]


  private void scanImports(CompilationUnitTree compilationUnit, Map<JavacRef, Integer> elements, ReferenceCollector incompletelyProcessedFile) {
    for (ImportTree anImport : compilationUnit.getImports()) {
      final MemberSelectTree id = (MemberSelectTree)anImport.getQualifiedIdentifier();
      final Element element = incompletelyProcessedFile.getReferencedElement(id);
      if (element == null) {
        final ExpressionTree qExpr = id.getExpression();
        if (qExpr instanceof MemberSelectTree) {
          final MemberSelectTree classImport = (MemberSelectTree)qExpr;
          final Element ownerElement = incompletelyProcessedFile.getReferencedElement(classImport);
          final Name name = id.getIdentifier();
          final JavacRef.ImportProperties importProps = JavacRef.ImportProperties.create(anImport.isStatic(), myNameTableCache.isAsterisk(name));
          if (ownerElement != null && !importProps.isOnDemand()) {
            // member import
            for (Element memberElement : myElementUtility.getAllMembers((TypeElement)ownerElement)) {
              if (memberElement.getSimpleName() == name) {
                incrementOrAdd(elements, JavacRef.JavacElementRefBase.fromElement(null, memberElement, null, myNameTableCache, importProps));
              }
            }
          }
          collectClassImports(ownerElement, elements, importProps);
        }
      } else {
        // class import
        collectClassImports(element, elements, JavacRef.ImportProperties.create(anImport.isStatic(), false));
      }
    }
  }