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