Optimize FirImportsChecker using lazy evaluation
This commit is contained in:
committed by
teamcityserver
parent
18f7a760bb
commit
f09fc9a473
+10
-8
@@ -79,14 +79,17 @@ object FirImportsChecker : FirFileChecker() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
return
|
||||||
val importedClassId = ClassId.topLevel(importedFqName)
|
}
|
||||||
val resolvedToClass = importedClassId.resolveToClass(context) != null
|
|
||||||
val resolvedToSymbols = symbolProvider.getTopLevelCallableSymbols(importedFqName.parent(), importedName).isNotEmpty()
|
|
||||||
val resolvedToPackages = symbolProvider.getPackage(importedFqName) != null
|
|
||||||
when {
|
when {
|
||||||
resolvedToClass || resolvedToSymbols -> return
|
ClassId.topLevel(importedFqName).resolveToClass(context) != null -> return
|
||||||
resolvedToPackages -> reporter.reportOn(import.source, FirErrors.PACKAGE_CANNOT_BE_IMPORTED, context)
|
// Note: two checks below are both heavyweight, so we should do them lazily!
|
||||||
|
symbolProvider.getTopLevelCallableSymbols(importedFqName.parent(), importedName).isNotEmpty() -> return
|
||||||
|
symbolProvider.getPackage(importedFqName) != null -> reporter.reportOn(
|
||||||
|
import.source,
|
||||||
|
FirErrors.PACKAGE_CANNOT_BE_IMPORTED,
|
||||||
|
context
|
||||||
|
)
|
||||||
else -> reporter.reportOn(
|
else -> reporter.reportOn(
|
||||||
import.source,
|
import.source,
|
||||||
FirErrors.UNRESOLVED_IMPORT,
|
FirErrors.UNRESOLVED_IMPORT,
|
||||||
@@ -95,7 +98,6 @@ object FirImportsChecker : FirFileChecker() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private fun checkConflictingImports(imports: List<FirImport>, context: CheckerContext, reporter: DiagnosticReporter) {
|
private fun checkConflictingImports(imports: List<FirImport>, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||||
val interestingImports = imports
|
val interestingImports = imports
|
||||||
|
|||||||
Reference in New Issue
Block a user