Skip to content

Commit bccd7bc

Browse files
fedochetteamcity
authored and
teamcity
committed
KTIJ-25341 [Analysis API] Visit component calls in import optimizer
N.B. K2 does not require resolved `componentX` functions for the placeholder variables (`_`), see KT-59504 ^KTIJ-25341 Fixed
1 parent db2475f commit bccd7bc

File tree

7 files changed

+67
-0
lines changed

7 files changed

+67
-0
lines changed

analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirImportOptimizer.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,11 @@ internal class KtFirImportOptimizer(
124124
super.visitImplicitInvokeCall(implicitInvokeCall)
125125
}
126126

127+
override fun visitComponentCall(componentCall: FirComponentCall) {
128+
processFunctionCall(componentCall)
129+
super.visitComponentCall(componentCall)
130+
}
131+
127132
override fun visitPropertyAccessExpression(propertyAccessExpression: FirPropertyAccessExpression) {
128133
processPropertyAccessExpression(propertyAccessExpression)
129134
super.visitPropertyAccessExpression(propertyAccessExpression)

analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/importOptimizer/FirIdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/importOptimizer/FirStandaloneNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
dependency.component2
2+
dependency.component3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// FILE: main.kt
2+
package test
3+
4+
import dependency.component1
5+
import dependency.component2
6+
import dependency.component3
7+
8+
fun usage(target: dependency.Target) {
9+
val (c1, _) = target
10+
}
11+
12+
// FILE: dependency.kt
13+
package dependency
14+
15+
class Target
16+
17+
operator fun Target.component1(): Int = 1
18+
operator fun Target.component2(): Int = 2
19+
operator fun Target.component3(): Int = 2

analysis/analysis-api/testData/components/importOptimizer/analyseImports/usedExtensionFunction_componentOperator.imports

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// FILE: main.kt
2+
package test
3+
4+
import dependency.component1
5+
import dependency.component2
6+
7+
fun usage(target: dependency.Target) {
8+
val (c1, с2) = target
9+
}
10+
11+
// FILE: dependency.kt
12+
package dependency
13+
14+
class Target
15+
16+
operator fun Target.component1(): Int = 1
17+
operator fun Target.component2(): Int = 2

0 commit comments

Comments
 (0)