diff --git a/plugins/kotlin/core/src/org/jetbrains/kotlin/idea/core/overrideImplement/OverrideMemberChooserObject.kt b/plugins/kotlin/core/src/org/jetbrains/kotlin/idea/core/overrideImplement/OverrideMemberChooserObject.kt index 3bf468b14e12..67fb8b957b2e 100644 --- a/plugins/kotlin/core/src/org/jetbrains/kotlin/idea/core/overrideImplement/OverrideMemberChooserObject.kt +++ b/plugins/kotlin/core/src/org/jetbrains/kotlin/idea/core/overrideImplement/OverrideMemberChooserObject.kt @@ -231,13 +231,11 @@ private val EXPECT_RENDERER = OVERRIDE_RENDERER.withOptions { secondaryConstructorsAsPrimary = false renderDefaultVisibility = false renderDefaultModality = false - renderTypeExpansions = true } private val ACTUAL_RENDERER = EXPECT_RENDERER.withOptions { modifiers = modifiers + ACTUAL actualPropertiesInPrimaryConstructor = true - renderTypeExpansions = false renderConstructorDelegation = true } diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/ExpectActualUtils.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/ExpectActualUtils.kt index 37f7df75e438..fab2aedc8f81 100644 --- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/ExpectActualUtils.kt +++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/ExpectActualUtils.kt @@ -38,6 +38,7 @@ import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker import org.jetbrains.kotlin.resolve.checkers.ExperimentalUsageChecker import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameOrNull import org.jetbrains.kotlin.resolve.source.KotlinSourceElement +import org.jetbrains.kotlin.types.AbbreviatedType import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.utils.addToStdlib.safeAs @@ -329,4 +330,8 @@ class KotlinTypeInaccessibleException(fqNames: Collection) : Exception( fun KtNamedDeclaration.isAlwaysActual(): Boolean = safeAs()?.parent?.parent?.safeAs() ?.mustHaveValOrVar() ?: false -val KotlinType.fqName: FqName? get() = constructor.declarationDescriptor?.fqNameOrNull() +val KotlinType.fqName: FqName? + get() = when (this) { + is AbbreviatedType -> abbreviation.fqName + else -> constructor.declarationDescriptor?.fqNameOrNull() + } diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java index ecb19a3c1db0..126c74901e9a 100644 --- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java +++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java @@ -477,6 +477,16 @@ public class QuickFixMultiModuleTestGenerated extends AbstractQuickFixMultiModul runTest("idea/testData/multiModuleQuickFix/createExpect/sealedClass/"); } + @TestMetadata("stdlibWithJavaAlias") + public void testStdlibWithJavaAlias() throws Exception { + runTest("idea/testData/multiModuleQuickFix/createExpect/stdlibWithJavaAlias/"); + } + + @TestMetadata("superTypeFromStdlib") + public void testSuperTypeFromStdlib() throws Exception { + runTest("idea/testData/multiModuleQuickFix/createExpect/superTypeFromStdlib/"); + } + @TestMetadata("topLevelFunctionWithAnnotations") public void testTopLevelFunctionWithAnnotations() throws Exception { runTest("idea/testData/multiModuleQuickFix/createExpect/topLevelFunctionWithAnnotations/"); diff --git a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithAccessibleAlias/common/foo.kt.after b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithAccessibleAlias/common/foo.kt.after index 119431502d6c..3cd416873e46 100644 --- a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithAccessibleAlias/common/foo.kt.after +++ b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithAccessibleAlias/common/foo.kt.after @@ -1,3 +1,3 @@ expect class SomeString // It would be great to have SomeString in foo() below, but it's problematic -expect fun foo(): String \ No newline at end of file +expect fun foo(): SomeString \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/common/a.kt b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/common/a.kt new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/common/foo.kt.after b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/common/foo.kt.after deleted file mode 100644 index cd4a44fceeff..000000000000 --- a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/common/foo.kt.after +++ /dev/null @@ -1 +0,0 @@ -expect fun foo(): String \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/jvm/Utils.kt b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/jvm/Utils.kt index b4ebde8295b5..7911856021cc 100644 --- a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/jvm/Utils.kt +++ b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/jvm/Utils.kt @@ -1,4 +1,5 @@ // "Create expected function in common module testModule_Common" "true" +// SHOULD_FAIL_WITH: You cannot create the expect declaration from:,fun foo() = "" // DISABLE-ERRORS typealias SomeString = String diff --git a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/jvm/Utils.kt.after b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/jvm/Utils.kt.after deleted file mode 100644 index b1af2275ed16..000000000000 --- a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/jvm/Utils.kt.after +++ /dev/null @@ -1,6 +0,0 @@ -// "Create expected function in common module testModule_Common" "true" -// DISABLE-ERRORS - -typealias SomeString = String - -actual fun foo(): SomeString = "" \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithJdk/proj_common/a.kt b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithJdk/proj_common/a.kt new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithJdk/proj_common/createList.kt.after b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithJdk/proj_common/createList.kt.after deleted file mode 100644 index ba5502983378..000000000000 --- a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/funWithJdk/proj_common/createList.kt.after +++ /dev/null @@ -1 +0,0 @@ -expect fun createList(): java.util.ArrayList \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/stdlibWithJavaAlias/proj_common_dep(stdlib)/some.kt.after b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/stdlibWithJavaAlias/proj_common_dep(stdlib)/some.kt.after new file mode 100644 index 000000000000..e0b8d01e8f3e --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/stdlibWithJavaAlias/proj_common_dep(stdlib)/some.kt.after @@ -0,0 +1 @@ +expect val some: HashMap \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/stdlibWithJavaAlias/proj_jvm_dep(stdlib)/My.kt b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/stdlibWithJavaAlias/proj_jvm_dep(stdlib)/My.kt new file mode 100644 index 000000000000..909ec065fb82 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/stdlibWithJavaAlias/proj_jvm_dep(stdlib)/My.kt @@ -0,0 +1,4 @@ +// "Create expected property in common module proj_Common" "true" +// DISABLE-ERRORS + +actual val some: HashMap = TODO() \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/stdlibWithJavaAlias/proj_jvm_dep(stdlib)/My.kt.after b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/stdlibWithJavaAlias/proj_jvm_dep(stdlib)/My.kt.after new file mode 100644 index 000000000000..b46fb2a7d204 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/stdlibWithJavaAlias/proj_jvm_dep(stdlib)/My.kt.after @@ -0,0 +1,4 @@ +// "Create expected property in common module proj_Common" "true" +// DISABLE-ERRORS + +actual val some: HashMap = TODO() \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/superTypeFromStdlib/proj_common_dep(stdlib)/A.kt.after b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/superTypeFromStdlib/proj_common_dep(stdlib)/A.kt.after new file mode 100644 index 000000000000..ea64202aa315 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/superTypeFromStdlib/proj_common_dep(stdlib)/A.kt.after @@ -0,0 +1 @@ +expect class A : HashMap \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/superTypeFromStdlib/proj_jvm_dep(stdlib)/My.kt b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/superTypeFromStdlib/proj_jvm_dep(stdlib)/My.kt new file mode 100644 index 000000000000..bf14506e0708 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/superTypeFromStdlib/proj_jvm_dep(stdlib)/My.kt @@ -0,0 +1,4 @@ +// "Create expected class in common module proj_Common" "true" +// DISABLE-ERRORS + +actual class A : HashMap() \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/withAliases/common/My.kt.after b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/withAliases/common/My.kt.after index cc4210384da8..74d0fb513a36 100644 --- a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/withAliases/common/My.kt.after +++ b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/withAliases/common/My.kt.after @@ -1,5 +1,4 @@ expect class My { - fun foo(): Int val some: Double } \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/withAliases/jvm/My.kt.after b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/withAliases/jvm/My.kt.after index de902b2e2f58..1424c78dd83c 100644 --- a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/withAliases/jvm/My.kt.after +++ b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/withAliases/jvm/My.kt.after @@ -6,7 +6,7 @@ import kotlin.Double as MyDouble typealias MyInt = Int actual class My { - actual fun foo(): MyInt = 42 + fun foo(): MyInt = 42 actual val some: MyDouble = 4.0 } diff --git a/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/withAliases/log.log b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/withAliases/log.log new file mode 100644 index 000000000000..0025ab98539a --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/multiModuleQuickFix/createExpect/withAliases/log.log @@ -0,0 +1,2 @@ +These declarations cannot be transformed: +fun foo() = 42