From f2f5834cdaf3a07a03bf196caebc2fc644f7bd5e Mon Sep 17 00:00:00 2001 From: Anastasia Pikalova Date: Mon, 23 Sep 2024 16:37:56 +0200 Subject: [PATCH] [kotlin] Update SubclassOptInRequired quickFixes following KT-70562 changes Added tests for SubclassOptInRequired with multiple markers ^KTIJ-31183 Fixed GitOrigin-RevId: 8f4bb49fc94777c25002dcce3e05ec2453a5e50d --- .../tests/K2QuickFixTestGenerated.java | 10 +++++++ .../quickfix/K1QuickFixTestGenerated.java | 10 +++++++ ...ssaryFileOptInWithSubclassOptInRequired.kt | 13 +++++---- ...necessaryOptInWithSubclassOptInRequired.kt | 28 +++++++++++++------ ...edundantOptInWithSubclassOptInRequired1.kt | 18 ++++++------ ...ntOptInWithSubclassOptInRequired1.kt.after | 18 ++++++------ ...edundantOptInWithSubclassOptInRequired2.kt | 18 ++++++------ ...ntOptInWithSubclassOptInRequired2.kt.after | 16 ++++++----- ...edundantOptInWithSubclassOptInRequired3.kt | 1 - ...ntOptInWithSubclassOptInRequired3.kt.after | 1 - ...edundantOptInWithSubclassOptInRequired4.kt | 1 - ...ntOptInWithSubclassOptInRequired4.kt.after | 3 +- .../propagateSubclassOptInMultipleMarkers1.kt | 17 +++++++++++ ...gateSubclassOptInMultipleMarkers1.kt.after | 18 ++++++++++++ .../propagateSubclassOptInMultipleMarkers2.kt | 18 ++++++++++++ ...gateSubclassOptInMultipleMarkers2.kt.after | 19 +++++++++++++ 16 files changed, 159 insertions(+), 50 deletions(-) create mode 100644 plugins/kotlin/idea/tests/testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers1.kt create mode 100644 plugins/kotlin/idea/tests/testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers1.kt.after create mode 100644 plugins/kotlin/idea/tests/testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers2.kt create mode 100644 plugins/kotlin/idea/tests/testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers2.kt.after diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/test/org/jetbrains/kotlin/idea/k2/quickfix/tests/K2QuickFixTestGenerated.java b/plugins/kotlin/code-insight/inspections-k2/tests/test/org/jetbrains/kotlin/idea/k2/quickfix/tests/K2QuickFixTestGenerated.java index eb107eee6adc..2dec6f25f09a 100644 --- a/plugins/kotlin/code-insight/inspections-k2/tests/test/org/jetbrains/kotlin/idea/k2/quickfix/tests/K2QuickFixTestGenerated.java +++ b/plugins/kotlin/code-insight/inspections-k2/tests/test/org/jetbrains/kotlin/idea/k2/quickfix/tests/K2QuickFixTestGenerated.java @@ -1933,6 +1933,16 @@ public abstract class K2QuickFixTestGenerated extends AbstractK2QuickFixTest { runTest("../../../idea/tests/testData/quickfix/optIn/propagateOptIn8Fir.kt"); } + @TestMetadata("propagateSubclassOptInMultipleMarkers1.kt") + public void testPropagateSubclassOptInMultipleMarkers1() throws Exception { + runTest("../../../idea/tests/testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers1.kt"); + } + + @TestMetadata("propagateSubclassOptInMultipleMarkers2.kt") + public void testPropagateSubclassOptInMultipleMarkers2() throws Exception { + runTest("../../../idea/tests/testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers2.kt"); + } + @TestMetadata("propagateSubclassOptInRequired.kt") public void testPropagateSubclassOptInRequired() throws Exception { runTest("../../../idea/tests/testData/quickfix/optIn/propagateSubclassOptInRequired.kt"); diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/quickfix/K1QuickFixTestGenerated.java b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/quickfix/K1QuickFixTestGenerated.java index 76d6e99217d3..04861a177d1b 100644 --- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/quickfix/K1QuickFixTestGenerated.java +++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/quickfix/K1QuickFixTestGenerated.java @@ -12678,6 +12678,16 @@ public abstract class K1QuickFixTestGenerated extends AbstractK1QuickFixTest { runTest("testData/quickfix/optIn/propagateOptIn8Fir.kt"); } + @TestMetadata("propagateSubclassOptInMultipleMarkers1.kt") + public void testPropagateSubclassOptInMultipleMarkers1() throws Exception { + runTest("testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers1.kt"); + } + + @TestMetadata("propagateSubclassOptInMultipleMarkers2.kt") + public void testPropagateSubclassOptInMultipleMarkers2() throws Exception { + runTest("testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers2.kt"); + } + @TestMetadata("propagateSubclassOptInRequired.kt") public void testPropagateSubclassOptInRequired() throws Exception { runTest("testData/quickfix/optIn/propagateSubclassOptInRequired.kt"); diff --git a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/necessaryFileOptInWithSubclassOptInRequired.kt b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/necessaryFileOptInWithSubclassOptInRequired.kt index 23eb95af63e8..30771efb7679 100644 --- a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/necessaryFileOptInWithSubclassOptInRequired.kt +++ b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/necessaryFileOptInWithSubclassOptInRequired.kt @@ -1,12 +1,15 @@ // PROBLEM: none -// API_VERSION: 1.8 +// WITH_STDLIB -@file:OptIn(UnstableApi::class, ExperimentalSubclassOptIn::class) +@file:OptIn(UnstableApiA::class, UnstableApiB::class, ExperimentalSubclassOptIn::class) -@RequiresOptIn(message = "Interfaces in this library are experimental for implementation") -annotation class UnstableApi +@RequiresOptIn +annotation class UnstableApiA -@SubclassOptInRequired(UnstableApi::class) +@RequiresOptIn +annotation class UnstableApiB + +@SubclassOptInRequired(UnstableApiA::class, UnstableApiB::class) interface CoreLibraryApi interface SomeImplementation : CoreLibraryApi diff --git a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/necessaryOptInWithSubclassOptInRequired.kt b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/necessaryOptInWithSubclassOptInRequired.kt index 898fbb19877e..1114402309cd 100644 --- a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/necessaryOptInWithSubclassOptInRequired.kt +++ b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/necessaryOptInWithSubclassOptInRequired.kt @@ -1,29 +1,39 @@ // PROBLEM: none -// API_VERSION: 1.8 +// WITH_STDLIB + @file:OptIn(ExperimentalSubclassOptIn::class) @RequiresOptIn(message = "Interfaces in this library are experimental for implementation") -annotation class UnstableApi +annotation class UnstableApiA -@SubclassOptInRequired(UnstableApi::class) +@RequiresOptIn(message = "Interfaces in this library are experimental for implementation") +annotation class UnstableApiB + +@SubclassOptInRequired(UnstableApiA::class, UnstableApiB::class) interface CoreLibraryApi -@OptIn(UnstableApi::class) +@OptIn(UnstableApiA::class) +@OptIn(UnstableApiB::class) interface SomeImplementationInterface : CoreLibraryApi -@OptIn(UnstableApi::class) +@OptIn(UnstableApiA::class) +@OptIn(UnstableApiB::class) object SomeImplementationObject : CoreLibraryApi -@OptIn(UnstableApi::class) +@OptIn(UnstableApiA::class) +@OptIn(UnstableApiB::class) class SomeImplementationClass : CoreLibraryApi -@OptIn(UnstableApi::class) +@OptIn(UnstableApiA::class) +@OptIn(UnstableApiB::class) enum class SomeImplementationEnum : CoreLibraryApi -@OptIn(UnstableApi::class) +@OptIn(UnstableApiA::class) +@OptIn(UnstableApiB::class) val apiUseSiteProperty = object : CoreLibraryApi {} -@OptIn(UnstableApi::class) +@OptIn(UnstableApiA::class) +@OptIn(UnstableApiB::class) fun test() { val apiUseSiteProperty = object : CoreLibraryApi {} } diff --git a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired1.kt b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired1.kt index d8541a14b062..754fa46c4417 100644 --- a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired1.kt +++ b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired1.kt @@ -1,16 +1,18 @@ -// API_VERSION: 1.8 +// API_VERSION: 2.1 +// WITH_STDLIB + @file:OptIn(ExperimentalSubclassOptIn::class) -@RequiresOptIn( - level = RequiresOptIn.Level.WARNING, - message = "Interfaces in this library are experimental for implementation" -) -annotation class UnstableApi +@RequiresOptIn +annotation class UnstableApiA -@SubclassOptInRequired(UnstableApi::class) +@RequiresOptIn +annotation class UnstableApiB + +@SubclassOptInRequired(UnstableApiA::class, UnstableApiB::class) interface CoreLibraryApi class ApiUseSiteParameter( - @OptIn(UnstableApi::class) val foo: CoreLibraryApi + @OptIn(UnstableApiA::class) val foo: CoreLibraryApi ) { } \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired1.kt.after b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired1.kt.after index 932e6fbc8794..d788981cb527 100644 --- a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired1.kt.after +++ b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired1.kt.after @@ -1,16 +1,18 @@ -// API_VERSION: 1.8 +// API_VERSION: 2.1 +// WITH_STDLIB + @file:OptIn(ExperimentalSubclassOptIn::class) -@RequiresOptIn( - level = RequiresOptIn.Level.WARNING, - message = "Interfaces in this library are experimental for implementation" -) -annotation class UnstableApi +@RequiresOptIn +annotation class UnstableApiA -@SubclassOptInRequired(UnstableApi::class) +@RequiresOptIn +annotation class UnstableApiB + +@SubclassOptInRequired(UnstableApiA::class, UnstableApiB::class) interface CoreLibraryApi class ApiUseSiteParameter( val foo: CoreLibraryApi ) { -} \ No newline at end of file +} diff --git a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired2.kt b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired2.kt index 5c977e9e6d97..134fc6a570c1 100644 --- a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired2.kt +++ b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired2.kt @@ -1,15 +1,17 @@ -// API_VERSION: 1.8 +// API_VERSION: 2.1 +// WITH_STDLIB + @file:OptIn(ExperimentalSubclassOptIn::class) -@RequiresOptIn( - level = RequiresOptIn.Level.WARNING, - message = "Interfaces in this library are experimental for implementation" -) -annotation class UnstableApi +@RequiresOptIn +annotation class UnstableApiA -@SubclassOptInRequired(UnstableApi::class) +@RequiresOptIn +annotation class UnstableApiB + +@SubclassOptInRequired(UnstableApiA::class, UnstableApiB::class) interface CoreLibraryApi -@OptIn(UnstableApi::class) +@OptIn(UnstableApiB::class) class ApiUseSiteClass(val foo: CoreLibraryApi) { } \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired2.kt.after b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired2.kt.after index cb756d0fa6f4..c3da532fd908 100644 --- a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired2.kt.after +++ b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired2.kt.after @@ -1,13 +1,15 @@ -// API_VERSION: 1.8 +// API_VERSION: 2.1 +// WITH_STDLIB + @file:OptIn(ExperimentalSubclassOptIn::class) -@RequiresOptIn( - level = RequiresOptIn.Level.WARNING, - message = "Interfaces in this library are experimental for implementation" -) -annotation class UnstableApi +@RequiresOptIn +annotation class UnstableApiA -@SubclassOptInRequired(UnstableApi::class) +@RequiresOptIn +annotation class UnstableApiB + +@SubclassOptInRequired(UnstableApiA::class, UnstableApiB::class) interface CoreLibraryApi class ApiUseSiteClass(val foo: CoreLibraryApi) { diff --git a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired3.kt b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired3.kt index ada22bac94f7..6ca9fe8029ca 100644 --- a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired3.kt +++ b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired3.kt @@ -1,4 +1,3 @@ -// API_VERSION: 1.8 @file:OptIn(ExperimentalSubclassOptIn::class) @RequiresOptIn( diff --git a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired3.kt.after b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired3.kt.after index a97ed7046bdb..945a3d9d7cd7 100644 --- a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired3.kt.after +++ b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired3.kt.after @@ -1,4 +1,3 @@ -// API_VERSION: 1.8 @file:OptIn(ExperimentalSubclassOptIn::class) @RequiresOptIn( diff --git a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired4.kt b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired4.kt index 74fe0e01e611..eb4c5c1b2dba 100644 --- a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired4.kt +++ b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired4.kt @@ -1,4 +1,3 @@ -// API_VERSION: 1.8 @file:OptIn(ExperimentalSubclassOptIn::class) @RequiresOptIn( diff --git a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired4.kt.after b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired4.kt.after index 13b2b7a02ee2..d5b97d6c9912 100644 --- a/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired4.kt.after +++ b/plugins/kotlin/idea/tests/testData/inspectionsLocal/unnecessaryOptInAnnotation/redundantOptInWithSubclassOptInRequired4.kt.after @@ -1,4 +1,3 @@ -// API_VERSION: 1.8 @file:OptIn(ExperimentalSubclassOptIn::class) @RequiresOptIn( @@ -14,4 +13,4 @@ var apiUseSiteProperty: CoreLibraryApi? = null get() = null set(value) { field = value - } \ No newline at end of file + } diff --git a/plugins/kotlin/idea/tests/testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers1.kt b/plugins/kotlin/idea/tests/testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers1.kt new file mode 100644 index 000000000000..1a927e337aa8 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers1.kt @@ -0,0 +1,17 @@ +// "Propagate 'SubclassOptInRequired(UnstableApiA::class)' opt-in requirement to 'SomeImplementation'" "true" +// ERROR: This class or interface requires opt-in to be implemented. Its usage must be marked with '@UnstableApiB', '@OptIn(UnstableApiB::class)' or '@SubclassOptInRequired(UnstableApiB::class)' +// WITH_STDLIB +@file:OptIn(ExperimentalSubclassOptIn::class) + +@RequiresOptIn +annotation class UnstableApiA + +@RequiresOptIn +annotation class UnstableApiB + +@SubclassOptInRequired(UnstableApiA::class, UnstableApiB::class) +interface CoreLibraryApi + +interface SomeImplementation : CoreLibraryApi +// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.OptInFixes$PropagateOptInAnnotationFix +// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.OptInFixes$PropagateOptInAnnotationFix \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers1.kt.after b/plugins/kotlin/idea/tests/testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers1.kt.after new file mode 100644 index 000000000000..f45d84d85c6b --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers1.kt.after @@ -0,0 +1,18 @@ +// "Propagate 'SubclassOptInRequired(UnstableApiA::class)' opt-in requirement to 'SomeImplementation'" "true" +// ERROR: This class or interface requires opt-in to be implemented. Its usage must be marked with '@UnstableApiB', '@OptIn(UnstableApiB::class)' or '@SubclassOptInRequired(UnstableApiB::class)' +// WITH_STDLIB +@file:OptIn(ExperimentalSubclassOptIn::class) + +@RequiresOptIn +annotation class UnstableApiA + +@RequiresOptIn +annotation class UnstableApiB + +@SubclassOptInRequired(UnstableApiA::class, UnstableApiB::class) +interface CoreLibraryApi + +@SubclassOptInRequired(UnstableApiA::class) +interface SomeImplementation : CoreLibraryApi +// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.OptInFixes$PropagateOptInAnnotationFix +// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.OptInFixes$PropagateOptInAnnotationFix \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers2.kt b/plugins/kotlin/idea/tests/testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers2.kt new file mode 100644 index 000000000000..3ec12322e354 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers2.kt @@ -0,0 +1,18 @@ +// "Propagate 'SubclassOptInRequired(UnstableApiB::class)' opt-in requirement to 'SomeImplementation'" "true" +// WITH_STDLIB +@file:OptIn(ExperimentalSubclassOptIn::class) + +@RequiresOptIn +annotation class UnstableApiA + +@RequiresOptIn +annotation class UnstableApiB + +@SubclassOptInRequired(UnstableApiA::class, UnstableApiB::class) +interface CoreLibraryApi + + +@OptIn(UnstableApiA::class) +interface SomeImplementation : CoreLibraryApi +// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.OptInFixes$PropagateOptInAnnotationFix +// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.OptInFixes$PropagateOptInAnnotationFix \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers2.kt.after b/plugins/kotlin/idea/tests/testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers2.kt.after new file mode 100644 index 000000000000..791c2e045a08 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/quickfix/optIn/propagateSubclassOptInMultipleMarkers2.kt.after @@ -0,0 +1,19 @@ +// "Propagate 'SubclassOptInRequired(UnstableApiB::class)' opt-in requirement to 'SomeImplementation'" "true" +// WITH_STDLIB +@file:OptIn(ExperimentalSubclassOptIn::class) + +@RequiresOptIn +annotation class UnstableApiA + +@RequiresOptIn +annotation class UnstableApiB + +@SubclassOptInRequired(UnstableApiA::class, UnstableApiB::class) +interface CoreLibraryApi + + +@SubclassOptInRequired(UnstableApiB::class) +@OptIn(UnstableApiA::class) +interface SomeImplementation : CoreLibraryApi +// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.OptInFixes$PropagateOptInAnnotationFix +// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.OptInFixes$PropagateOptInAnnotationFix \ No newline at end of file