diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateExpectedFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateExpectedFix.kt index 329980701c0..29330c04816 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateExpectedFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateExpectedFix.kt @@ -126,6 +126,10 @@ sealed class CreateExpectedFix( val containingClass = declaration.containingClassOrObject val expectedContainingClass = containingClass?.liftToExpected() as? KtClassOrObject + if (containingClass != null && expectedContainingClass == null) { + // In this case fix should be invoked on containingClass + return emptyList() + } // If there is already an expected class, we suggest only for its module, // otherwise we suggest for all relevant expected modules val expectedModules = expectedContainingClass?.module?.let { listOf(it) } diff --git a/idea/testData/multiModuleQuickFix/expectClassNoAccessOnMember/header/My.kt b/idea/testData/multiModuleQuickFix/expectClassNoAccessOnMember/header/My.kt new file mode 100644 index 00000000000..e8182b18100 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/expectClassNoAccessOnMember/header/My.kt @@ -0,0 +1,2 @@ +// My: to be implemented +// DISABLE-ERRORS \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/expectClassNoAccessOnMember/jvm/My.kt b/idea/testData/multiModuleQuickFix/expectClassNoAccessOnMember/jvm/My.kt new file mode 100644 index 00000000000..a1e8f0c8627 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/expectClassNoAccessOnMember/jvm/My.kt @@ -0,0 +1,24 @@ +// "Create expected function in common module testModule_Common" "false" +// ACTION: Convert member to extension +// ACTION: Convert to block body +// ACTION: Move to companion object +// ACTION: Remove 'actual' modifier +// ACTION: Remove explicit type specification +// DISABLE-ERRORS + +actual class My { + actual fun foo(param: String): Int = 42 + + actual fun String.bar(y: Double): Boolean = true + + actual fun baz() {} + + actual constructor(flag: Boolean) {} + + actual val isGood: Boolean + get() = true + actual var status: Int + get() = 0 + set(value) {} + +} \ 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 d838a5c3916..b682c4cd086 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java @@ -274,6 +274,11 @@ public class QuickFixMultiModuleTestGenerated extends AbstractQuickFixMultiModul runTest("idea/testData/multiModuleQuickFix/expectClassFunction/"); } + @TestMetadata("expectClassNoAccessOnMember") + public void testExpectClassNoAccessOnMember() throws Exception { + runTest("idea/testData/multiModuleQuickFix/expectClassNoAccessOnMember/"); + } + @TestMetadata("expectClassProperty") public void testExpectClassProperty() throws Exception { runTest("idea/testData/multiModuleQuickFix/expectClassProperty/");