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 12c600a5ede..ae434077424 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 @@ -208,6 +208,7 @@ object FirOptInUsageBaseChecker { it.returnTypeRef.coneType.addExperimentalities(context, result, visited) } } + if (fromSetter && symbol is FirPropertySymbol) { symbol.setterSymbol?.loadExperimentalities( context, result, visited, fromSetter = false, dispatchReceiverType, fromSupertype = false @@ -228,10 +229,8 @@ object FirOptInUsageBaseChecker { context, result, visited, fromSetter = false, dispatchReceiverType = null, fromSupertype = false ) } - is FirTypeAlias -> { - expandedTypeRef.coneType.addExperimentalities(context, result, visited) - } - is FirAnonymousObject -> { + + is FirAnonymousObject, is FirTypeAlias -> { } } } diff --git a/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsages.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsages.fir.kt index 836cd0dc670..c72e41844b0 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsages.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsages.fir.kt @@ -32,7 +32,7 @@ fun useDataClass(d: DataClass) { typealias My = Some -fun my(my: My) {} +fun my(my: My) {} fun your(my: Some) {} @@ -64,12 +64,16 @@ class B : I @OptIn(Marker::class) typealias MyList = ArrayList +@Marker +typealias AList = ArrayList + @Marker typealias YourList = ArrayList fun main() { val x = listOf(A(), B()) - val y = MyList() + val y = MyList() + val b = AList() val z = YourList() YourList().add("") } diff --git a/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsages.kt b/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsages.kt index adfdd499cdc..a38aa22afc8 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsages.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsages.kt @@ -64,12 +64,16 @@ class B : I @OptIn(Marker::class) typealias MyList = ArrayList +@Marker +typealias AList = ArrayList + @Marker typealias YourList = ArrayList fun main() { val x = listOf(A(), B()) val y = MyList() + val b = AList() val z = YourList() YourList().add("") } diff --git a/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsages.txt b/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsages.txt index 8f2848bd6be..efe28d2a08c 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsages.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsages.txt @@ -111,6 +111,7 @@ public abstract class User { public final fun withSome(/*0*/ some: Some? = ...): kotlin.Unit public final fun Some?.onSome(): kotlin.Unit } +@Marker public typealias AList = kotlin.collections.ArrayList public typealias My = Some @kotlin.OptIn(markerClass = {Marker::class}) public typealias MyList = kotlin.collections.ArrayList @Marker public typealias YourList = kotlin.collections.ArrayList diff --git a/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsagesFuture.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsagesFuture.fir.kt index a5678fa16e2..1d32289ec02 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsagesFuture.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsagesFuture.fir.kt @@ -32,7 +32,7 @@ fun useDataClass(d: DataClass) { typealias My = Some -fun my(my: My) {} +fun my(my: My) {} fun your(my: Some) {} @@ -64,12 +64,16 @@ class B : I @OptIn(Marker::class) typealias MyList = ArrayList +@Marker +typealias AList = ArrayList + @Marker typealias YourList = ArrayList fun main() { val x = listOf(A(), B()) - val y = MyList() + val y = MyList() + val b = AList() val z = YourList() YourList().add("") } diff --git a/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsagesFuture.kt b/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsagesFuture.kt index 898d07818f0..ff023ded4d0 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsagesFuture.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsagesFuture.kt @@ -64,12 +64,16 @@ class B : I @OptIn(Marker::class) typealias MyList = ArrayList +@Marker +typealias AList = ArrayList + @Marker typealias YourList = ArrayList fun main() { val x = listOf(A(), B()) val y = MyList() + val b = AList() val z = YourList() YourList().add("") } diff --git a/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsagesFuture.txt b/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsagesFuture.txt index 2eaa4b76944..efe28d2a08c 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsagesFuture.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/experimental/implicitUsagesFuture.txt @@ -111,6 +111,8 @@ public abstract class User { public final fun withSome(/*0*/ some: Some? = ...): kotlin.Unit public final fun Some?.onSome(): kotlin.Unit } +@Marker public typealias AList = kotlin.collections.ArrayList public typealias My = Some @kotlin.OptIn(markerClass = {Marker::class}) public typealias MyList = kotlin.collections.ArrayList @Marker public typealias YourList = kotlin.collections.ArrayList +