diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirImportsChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirImportsChecker.kt index 176aca61b3e..6448fa24f3f 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirImportsChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirImportsChecker.kt @@ -43,6 +43,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.filterIsInstanceWithChecker object FirImportsChecker : FirFileChecker() { override fun check(declaration: FirFile, context: CheckerContext, reporter: DiagnosticReporter) { declaration.imports.forEach { import -> + if (import.source?.kind?.shouldSkipErrorTypeReporting == true) return@forEach if (import is FirErrorImport) return@forEach if (import.isAllUnder) { if (import is FirResolvedImport) { @@ -191,6 +192,7 @@ object FirImportsChecker : FirFileChecker() { val interestingImports = imports .filterIsInstanceWithChecker { import -> !import.isAllUnder && + import.source?.kind?.shouldSkipErrorTypeReporting != true && import.importedName?.identifierOrNullIfSpecial?.isNotEmpty() == true && import.resolvesToClass(context) }.filterNot { (it.source as? KtFakeSourceElement)?.kind == KtFakeSourceElementKind.ImplicitImport } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirImportResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirImportResolveTransformer.kt index 9af37a9c439..62d8ec30833 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirImportResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirImportResolveTransformer.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.fir.resolve.transformers +import org.jetbrains.kotlin.KtFakeSourceElementKind import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirFile @@ -76,10 +77,15 @@ open class FirImportResolveTransformer protected constructor( private fun transformImportForFqName(fqName: FqName, delegate: FirImport): FirImport { val (packageFqName, relativeClassFqName, classSymbol) = when (val result = resolveToPackageOrClass(symbolProvider, fqName)) { - is PackageResolutionResult.Error -> return buildErrorImport { - this.delegate = delegate - this.diagnostic = result.diagnostic - } + is PackageResolutionResult.Error -> + return if (delegate.source?.kind == KtFakeSourceElementKind.ImplicitImport) { + delegate + } else { + buildErrorImport { + this.delegate = delegate + this.diagnostic = result.diagnostic + } + } is PackageResolutionResult.PackageOrClass -> result } val firClass = classSymbol?.fir as? FirRegularClass diff --git a/compiler/frontend.common/src/org/jetbrains/kotlin/KtSourceElement.kt b/compiler/frontend.common/src/org/jetbrains/kotlin/KtSourceElement.kt index f3c6af9ca77..3c727cd23bc 100644 --- a/compiler/frontend.common/src/org/jetbrains/kotlin/KtSourceElement.kt +++ b/compiler/frontend.common/src/org/jetbrains/kotlin/KtSourceElement.kt @@ -284,7 +284,7 @@ sealed class KtFakeSourceElementKind(final override val shouldSkipErrorTypeRepor object PropertyTypeFromGetterReturnType : KtFakeSourceElementKind() // Scripts get implicit imports from their configurations - object ImplicitImport : KtFakeSourceElementKind() + object ImplicitImport : KtFakeSourceElementKind(shouldSkipErrorTypeReporting = true) // For provided parameters inside a script object ScriptParameter : KtFakeSourceElementKind()