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 899baa8aaf0..8d1749853dd 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateExpectedFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateExpectedFix.kt @@ -130,7 +130,10 @@ class CreateExpectedClassFix( if (!showUnknownTypesDialog(project, declarationsWithNonExistentClasses)) return@block null - val membersForSelection = members.filterNot(KtNamedDeclaration::isAlwaysActual) + val membersForSelection = members.filter { + !it.isAlwaysActual() && if (it is KtParameter) it.hasValOrVar() else true + } + val selectedElements = when { membersForSelection.all(KtDeclaration::hasActualModifier) -> membersForSelection ApplicationManager.getApplication().isUnitTestMode -> membersForSelection.filter(KtDeclaration::hasActualModifier) @@ -138,9 +141,9 @@ class CreateExpectedClassFix( val prefix = klass.fqName?.asString()?.plus(".") ?: "" chooseMembers(project, membersForSelection, prefix) ?: return@block null } - }.asSequence().plus(members.filter(KtNamedDeclaration::isAlwaysActual)).flatMap(KtNamedDeclaration::selected).toSet() + }.asSequence().plus(klass).plus(members.filter(KtNamedDeclaration::isAlwaysActual)).flatMap(KtNamedDeclaration::selected).toSet() - val selectedClasses = findClasses(selectedElements + klass, commonModule) + val selectedClasses = findClasses(selectedElements, commonModule) val resultDeclarations = if (selectedClasses != existingClasses) { if (!element.checkTypeAccessibilityInModule(commonModule, selectedClasses)) { showUnknownTypesError(element) @@ -258,7 +261,7 @@ private fun repairActualModifiers( originalElements: Collection, selectedElements: Collection ) { - if (originalElements.size == selectedElements.size) + if (originalElements == selectedElements) for (original in originalElements) { original.makeActualWithParents() } diff --git a/idea/testData/multiModuleQuickFix/expectFunWithInaccessibleParameter/jvm/Utils.kt b/idea/testData/multiModuleQuickFix/expectFunWithInaccessibleParameter/jvm/Utils.kt index 7a808a29309..36c7d038a63 100644 --- a/idea/testData/multiModuleQuickFix/expectFunWithInaccessibleParameter/jvm/Utils.kt +++ b/idea/testData/multiModuleQuickFix/expectFunWithInaccessibleParameter/jvm/Utils.kt @@ -1,5 +1,5 @@ // "Create expected function in common module testModule_Common" "true" -// SHOULD_FAIL_WITH: Cannot generate expected function: Type Some is not accessible from common code +// SHOULD_FAIL_WITH: You cannot create the expect declaration from:,fun foo(some: Some){...} // DISABLE-ERRORS class Some diff --git a/idea/testData/multiModuleQuickFix/expectFunWithInaccessibleParameter/jvm/Utils.kt.after b/idea/testData/multiModuleQuickFix/expectFunWithInaccessibleParameter/jvm/Utils.kt.after index 4b4efd2a5a9..96775d32a70 100644 --- a/idea/testData/multiModuleQuickFix/expectFunWithInaccessibleParameter/jvm/Utils.kt.after +++ b/idea/testData/multiModuleQuickFix/expectFunWithInaccessibleParameter/jvm/Utils.kt.after @@ -1,5 +1,5 @@ // "Create expected function in common module testModule_Common" "true" -// SHOULD_FAIL_WITH: Cannot generate expected function: Type Some is not accessible from common code +// SHOULD_FAIL_WITH: You cannot create the expect declaration from:,fun foo(some: Some){...} // DISABLE-ERRORS class Some diff --git a/idea/testData/multiModuleQuickFix/expectFunWithInaccessibleTypeParameter/jvm/Utils.kt b/idea/testData/multiModuleQuickFix/expectFunWithInaccessibleTypeParameter/jvm/Utils.kt index e2e1aa0c169..b7ab434ac4f 100644 --- a/idea/testData/multiModuleQuickFix/expectFunWithInaccessibleTypeParameter/jvm/Utils.kt +++ b/idea/testData/multiModuleQuickFix/expectFunWithInaccessibleTypeParameter/jvm/Utils.kt @@ -1,5 +1,5 @@ // "Create expected function in common module testModule_Common" "true" -// SHOULD_FAIL_WITH: Cannot generate expected function: Type Some is not accessible from common code +// SHOULD_FAIL_WITH: You cannot create the expect declaration from:,fun foo(some: List){...} // DISABLE-ERRORS class Some diff --git a/idea/testData/multiModuleQuickFix/expectFunWithInaccessibleTypeParameter/jvm/Utils.kt.after b/idea/testData/multiModuleQuickFix/expectFunWithInaccessibleTypeParameter/jvm/Utils.kt.after index d7b843e6eb9..6b9e3273b1d 100644 --- a/idea/testData/multiModuleQuickFix/expectFunWithInaccessibleTypeParameter/jvm/Utils.kt.after +++ b/idea/testData/multiModuleQuickFix/expectFunWithInaccessibleTypeParameter/jvm/Utils.kt.after @@ -1,5 +1,5 @@ // "Create expected function in common module testModule_Common" "true" -// SHOULD_FAIL_WITH: Cannot generate expected function: Type Some is not accessible from common code +// SHOULD_FAIL_WITH: You cannot create the expect declaration from:,fun foo(some: List){...} // DISABLE-ERRORS class Some diff --git a/idea/testData/multiModuleQuickFix/expectFunWithJdk/proj_jvm_dep(fulljdk)/Utils.kt b/idea/testData/multiModuleQuickFix/expectFunWithJdk/proj_jvm_dep(fulljdk)/Utils.kt index ece31a9c4e3..e2cdf3b88c5 100644 --- a/idea/testData/multiModuleQuickFix/expectFunWithJdk/proj_jvm_dep(fulljdk)/Utils.kt +++ b/idea/testData/multiModuleQuickFix/expectFunWithJdk/proj_jvm_dep(fulljdk)/Utils.kt @@ -1,5 +1,5 @@ // "Create expected function in common module proj_Common" "true" -// SHOULD_FAIL_WITH: Cannot generate expected function: Type java.util.ArrayList is not accessible from common code +// SHOULD_FAIL_WITH: You cannot create the expect declaration from:,fun createList() = ArrayList() // DISABLE-ERRORS import java.util.ArrayList diff --git a/idea/testData/multiModuleQuickFix/expectFunWithJdk/proj_jvm_dep(fulljdk)/Utils.kt.after b/idea/testData/multiModuleQuickFix/expectFunWithJdk/proj_jvm_dep(fulljdk)/Utils.kt.after index aef12b481c8..0c83faf39cb 100644 --- a/idea/testData/multiModuleQuickFix/expectFunWithJdk/proj_jvm_dep(fulljdk)/Utils.kt.after +++ b/idea/testData/multiModuleQuickFix/expectFunWithJdk/proj_jvm_dep(fulljdk)/Utils.kt.after @@ -1,5 +1,5 @@ // "Create expected function in common module proj_Common" "true" -// SHOULD_FAIL_WITH: Cannot generate expected function: Type java.util.ArrayList is not accessible from common code +// SHOULD_FAIL_WITH: You cannot create the expect declaration from:,fun createList() = ArrayList() // DISABLE-ERRORS import java.util.ArrayList diff --git a/idea/testData/multiModuleQuickFix/expectWithAnnotations/header/My.kt.after b/idea/testData/multiModuleQuickFix/expectWithAnnotations/header/My.kt.after index bb4e4dce57a..aa10480d1df 100644 --- a/idea/testData/multiModuleQuickFix/expectWithAnnotations/header/My.kt.after +++ b/idea/testData/multiModuleQuickFix/expectWithAnnotations/header/My.kt.after @@ -5,6 +5,7 @@ annotation class CommonAnnotation expect class My { tailrec fun foo(arg: Int): Int var some: Boolean + @CommonAnnotation fun initialize() } \ No newline at end of file