From 6d446abe12d89cd8a0479bddf4b29a0b6fb4f64c Mon Sep 17 00:00:00 2001 From: "Anastasia.Nekrasova" Date: Thu, 12 Oct 2023 11:45:17 +0300 Subject: [PATCH] [K2] Disappeared OPT_IN_USAGE_ERROR for typealias ^KT-62451 --- .../checkers/expression/FirOptInUsageBaseChecker.kt | 4 +++- .../testsWithStdLib/experimental/implicitUsages.fir.kt | 6 +++--- .../experimental/implicitUsagesFuture.fir.kt | 6 +++--- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirOptInUsageBaseChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirOptInUsageBaseChecker.kt index 7c71753a1db..12c600a5ede 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirOptInUsageBaseChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirOptInUsageBaseChecker.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.fir.references.resolved import org.jetbrains.kotlin.fir.resolve.fullyExpandedType import org.jetbrains.kotlin.fir.resolve.toFirRegularClassSymbol import org.jetbrains.kotlin.fir.resolve.toSymbol +import org.jetbrains.kotlin.fir.scopes.impl.typeAliasForConstructor import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.SymbolInternals import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol @@ -191,8 +192,9 @@ object FirOptInUsageBaseChecker { ) { val parentClassSymbol = containingClassLookupTag()?.toSymbol(context.session) as? FirRegularClassSymbol if (this is FirConstructor) { + val ownerClassLikeSymbol = this.typeAliasForConstructor ?: parentClassSymbol // For other callable we check dispatch receiver type instead - parentClassSymbol?.loadExperimentalities( + ownerClassLikeSymbol?.loadExperimentalities( context, result, visited, fromSetter = false, dispatchReceiverType = null, fromSupertype = false ) } else { diff --git a/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsages.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsages.fir.kt index a03e5531e2d..836cd0dc670 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsages.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsages.fir.kt @@ -69,9 +69,9 @@ typealias YourList = ArrayList fun main() { val x = listOf(A(), B()) - val y = MyList() - val z = YourList() - YourList().add("") + val y = MyList() + val z = YourList() + YourList().add("") } @Marker diff --git a/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsagesFuture.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsagesFuture.fir.kt index 48a391acec2..a5678fa16e2 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsagesFuture.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsagesFuture.fir.kt @@ -69,9 +69,9 @@ typealias YourList = ArrayList fun main() { val x = listOf(A(), B()) - val y = MyList() - val z = YourList() - YourList().add("") + val y = MyList() + val z = YourList() + YourList().add("") } @Marker