diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/AbstractCreateDeclarationFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/AbstractCreateDeclarationFix.kt index 84f8e81485b..6c62d5a1d78 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/AbstractCreateDeclarationFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/AbstractCreateDeclarationFix.kt @@ -77,7 +77,12 @@ abstract class AbstractCreateDeclarationFix( } } val generatedDeclaration = when { - targetClass != null -> targetClass.addDeclaration(generated as KtNamedDeclaration) + targetClass != null -> { + if (generated is KtPrimaryConstructor && targetClass is KtClass) + targetClass.createPrimaryConstructorIfAbsent().replace(generated) + else + targetClass.addDeclaration(generated as KtNamedDeclaration) + } else -> targetFile.add(generated) as KtElement } val reformatted = CodeStyleManager.getInstance(project).reformat(generatedDeclaration) diff --git a/idea/testData/multiModuleQuickFix/expectPrimaryConstructor/common/A.after b/idea/testData/multiModuleQuickFix/expectPrimaryConstructor/common/A.after new file mode 100644 index 00000000000..50650b6fe49 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/expectPrimaryConstructor/common/A.after @@ -0,0 +1 @@ +expect class A() \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/expectPrimaryConstructor/common/A.kt b/idea/testData/multiModuleQuickFix/expectPrimaryConstructor/common/A.kt new file mode 100644 index 00000000000..d1d8c72d0c5 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/expectPrimaryConstructor/common/A.kt @@ -0,0 +1 @@ +expect class A \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/expectPrimaryConstructor/jvm/A.after b/idea/testData/multiModuleQuickFix/expectPrimaryConstructor/jvm/A.after new file mode 100644 index 00000000000..6dcbfc71d7f --- /dev/null +++ b/idea/testData/multiModuleQuickFix/expectPrimaryConstructor/jvm/A.after @@ -0,0 +1,4 @@ +// "Create expected class in common module testModule_Common" "true" +// DISABLE-ERRORS + +actual class A actual constructor() \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/expectPrimaryConstructor/jvm/A.kt b/idea/testData/multiModuleQuickFix/expectPrimaryConstructor/jvm/A.kt new file mode 100644 index 00000000000..f879d321aa4 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/expectPrimaryConstructor/jvm/A.kt @@ -0,0 +1,4 @@ +// "Create expected function in common module testModule_Common" "true" +// DISABLE-ERRORS + +actual class A actual constructor() \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java index 4fb0daf914c..40315ec663f 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java @@ -434,6 +434,11 @@ public class QuickFixMultiModuleTestGenerated extends AbstractQuickFixMultiModul runTest("idea/testData/multiModuleQuickFix/expectNestedClass/"); } + @TestMetadata("expectPrimaryConstructor") + public void testExpectPrimaryConstructor() throws Exception { + runTest("idea/testData/multiModuleQuickFix/expectPrimaryConstructor/"); + } + @TestMetadata("expectProperty") public void testExpectProperty() throws Exception { runTest("idea/testData/multiModuleQuickFix/expectProperty/");