From 02ca53d4b94a0b6b6e3d0f247390aa2193d4b525 Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Wed, 30 Oct 2024 10:37:10 +0100 Subject: [PATCH] KTIJ-31786 [kotlin] Recognize symbols from dynamic scope as definitely not imported in K2 Mode Import Optimizer ^KTIJ-31786 Fixed (cherry picked from commit e07b328a2dd4408cd12ed1d6835de7e7890f0a2b) IJ-CR-149236 GitOrigin-RevId: 6862fc09726e170610171aa88256a02e0c419cc7 --- .../kotlin/idea/k2/codeinsight/imports/ReferencedSymbol.kt | 4 ++++ .../editor/optimizeImports/js/DynamicMembersNotImported.kt | 1 - .../optimizeImports/js/DynamicMembersNotImported.kt.after | 1 - 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/plugins/kotlin/code-insight/kotlin.code-insight.k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/imports/ReferencedSymbol.kt b/plugins/kotlin/code-insight/kotlin.code-insight.k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/imports/ReferencedSymbol.kt index 516ae62f07b2..804f87faabd7 100644 --- a/plugins/kotlin/code-insight/kotlin.code-insight.k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/imports/ReferencedSymbol.kt +++ b/plugins/kotlin/code-insight/kotlin.code-insight.k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/imports/ReferencedSymbol.kt @@ -31,6 +31,10 @@ internal class ReferencedSymbol(val reference: KtReference, val symbol: KaSymbol private val KaSession.definitelyNotImported: Boolean get() = when { symbol.isLocal -> true + // symbols from scope cannot be imported, + // they do not have stable identities and FQNs + symbol.origin == KaSymbolOrigin.JS_DYNAMIC -> true + symbol is KaPackageSymbol -> true symbol is KaReceiverParameterSymbol -> true symbol is KaTypeParameterSymbol -> true diff --git a/plugins/kotlin/idea/tests/testData/editor/optimizeImports/js/DynamicMembersNotImported.kt b/plugins/kotlin/idea/tests/testData/editor/optimizeImports/js/DynamicMembersNotImported.kt index 2171099583e8..9450478037cb 100644 --- a/plugins/kotlin/idea/tests/testData/editor/optimizeImports/js/DynamicMembersNotImported.kt +++ b/plugins/kotlin/idea/tests/testData/editor/optimizeImports/js/DynamicMembersNotImported.kt @@ -1,4 +1,3 @@ -// IGNORE_K2 package test import kotlin.js.JSON // unused diff --git a/plugins/kotlin/idea/tests/testData/editor/optimizeImports/js/DynamicMembersNotImported.kt.after b/plugins/kotlin/idea/tests/testData/editor/optimizeImports/js/DynamicMembersNotImported.kt.after index e402c006eea3..410f87499156 100644 --- a/plugins/kotlin/idea/tests/testData/editor/optimizeImports/js/DynamicMembersNotImported.kt.after +++ b/plugins/kotlin/idea/tests/testData/editor/optimizeImports/js/DynamicMembersNotImported.kt.after @@ -1,4 +1,3 @@ -// IGNORE_K2 package test fun getValue(data: dynamic): dynamic {