From 5e7d974767f7a6017e7c71eb7c5943e7c2dd23a8 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Wed, 3 Oct 2018 11:33:27 +0900 Subject: [PATCH] "Make open": Fix false positive for data class inheritance #KT-27354 Fixed --- .../org/jetbrains/kotlin/idea/quickfix/AddModifierFix.kt | 2 +- .../modifiers/addOpenToClassDeclaration/dataSuperType.kt | 6 ++++++ .../kotlin/idea/quickfix/QuickFixTestGenerated.java | 5 +++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 idea/testData/quickfix/modifiers/addOpenToClassDeclaration/dataSuperType.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/AddModifierFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/AddModifierFix.kt index 6b69154d9cb..ee2eb097b63 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/AddModifierFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/AddModifierFix.kt @@ -156,7 +156,7 @@ open class AddModifierFix( val classDescriptor = type.constructor.declarationDescriptor as? ClassDescriptor ?: return null val declaration = DescriptorToSourceUtils.descriptorToDeclaration(classDescriptor) as? KtClass ?: return null if (!declaration.canRefactor()) return null - if (declaration.isEnum()) return null + if (declaration.isEnum() || declaration.isData()) return null return AddModifierFix(declaration, KtTokens.OPEN_KEYWORD) } } diff --git a/idea/testData/quickfix/modifiers/addOpenToClassDeclaration/dataSuperType.kt b/idea/testData/quickfix/modifiers/addOpenToClassDeclaration/dataSuperType.kt new file mode 100644 index 00000000000..410daa9feda --- /dev/null +++ b/idea/testData/quickfix/modifiers/addOpenToClassDeclaration/dataSuperType.kt @@ -0,0 +1,6 @@ +// "Make 'A' open" "false" +// ERROR: This type is final, so it cannot be inherited from +// ACTION: Add names to call arguments +// ACTION: Do not show hints for current method +data class A(val x: Int) +class B: A(42) \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index 1e1bf0f3aa8..d5e56180617 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -7960,6 +7960,11 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix/modifiers/addOpenToClassDeclaration"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), TargetBackend.ANY, true); } + @TestMetadata("dataSuperType.kt") + public void testDataSuperType() throws Exception { + runTest("idea/testData/quickfix/modifiers/addOpenToClassDeclaration/dataSuperType.kt"); + } + @TestMetadata("enumSupertype.kt") public void testEnumSupertype() throws Exception { runTest("idea/testData/quickfix/modifiers/addOpenToClassDeclaration/enumSupertype.kt");