diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/overrideImplement/OverrideMemberChooserObject.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/overrideImplement/OverrideMemberChooserObject.kt index 3bf468b14e1..67fb8b957b2 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/overrideImplement/OverrideMemberChooserObject.kt +++ b/idea/idea-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/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/ExpectActualUtils.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/ExpectActualUtils.kt index 37f7df75e43..fab2aedc8f8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/ExpectActualUtils.kt +++ b/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/idea/testData/multiModuleQuickFix/createExpect/funWithAccessibleAlias/common/foo.kt.after b/idea/testData/multiModuleQuickFix/createExpect/funWithAccessibleAlias/common/foo.kt.after index 119431502d6..3cd416873e4 100644 --- a/idea/testData/multiModuleQuickFix/createExpect/funWithAccessibleAlias/common/foo.kt.after +++ b/idea/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/idea/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/common/a.kt b/idea/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/common/a.kt new file mode 100644 index 00000000000..e69de29bb2d diff --git a/idea/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/common/foo.kt.after b/idea/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/common/foo.kt.after deleted file mode 100644 index cd4a44fceef..00000000000 --- a/idea/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/idea/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/jvm/Utils.kt b/idea/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/jvm/Utils.kt index b4ebde8295b..7911856021c 100644 --- a/idea/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/jvm/Utils.kt +++ b/idea/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/idea/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/jvm/Utils.kt.after b/idea/testData/multiModuleQuickFix/createExpect/funWithAccessibleExpansion/jvm/Utils.kt.after deleted file mode 100644 index b1af2275ed1..00000000000 --- a/idea/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/idea/testData/multiModuleQuickFix/createExpect/funWithJdk/proj_common/a.kt b/idea/testData/multiModuleQuickFix/createExpect/funWithJdk/proj_common/a.kt new file mode 100644 index 00000000000..e69de29bb2d diff --git a/idea/testData/multiModuleQuickFix/createExpect/funWithJdk/proj_common/createList.kt.after b/idea/testData/multiModuleQuickFix/createExpect/funWithJdk/proj_common/createList.kt.after deleted file mode 100644 index ba550298337..00000000000 --- a/idea/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/idea/testData/multiModuleQuickFix/createExpect/stdlibWithJavaAlias/proj_common_dep(stdlib)/some.kt.after b/idea/testData/multiModuleQuickFix/createExpect/stdlibWithJavaAlias/proj_common_dep(stdlib)/some.kt.after new file mode 100644 index 00000000000..e0b8d01e8f3 --- /dev/null +++ b/idea/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/idea/testData/multiModuleQuickFix/createExpect/stdlibWithJavaAlias/proj_jvm_dep(stdlib)/My.kt b/idea/testData/multiModuleQuickFix/createExpect/stdlibWithJavaAlias/proj_jvm_dep(stdlib)/My.kt new file mode 100644 index 00000000000..909ec065fb8 --- /dev/null +++ b/idea/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/idea/testData/multiModuleQuickFix/createExpect/stdlibWithJavaAlias/proj_jvm_dep(stdlib)/My.kt.after b/idea/testData/multiModuleQuickFix/createExpect/stdlibWithJavaAlias/proj_jvm_dep(stdlib)/My.kt.after new file mode 100644 index 00000000000..b46fb2a7d20 --- /dev/null +++ b/idea/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/idea/testData/multiModuleQuickFix/createExpect/superTypeFromStdlib/proj_common_dep(stdlib)/A.kt.after b/idea/testData/multiModuleQuickFix/createExpect/superTypeFromStdlib/proj_common_dep(stdlib)/A.kt.after new file mode 100644 index 00000000000..ea64202aa31 --- /dev/null +++ b/idea/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/idea/testData/multiModuleQuickFix/createExpect/superTypeFromStdlib/proj_jvm_dep(stdlib)/My.kt b/idea/testData/multiModuleQuickFix/createExpect/superTypeFromStdlib/proj_jvm_dep(stdlib)/My.kt new file mode 100644 index 00000000000..bf14506e070 --- /dev/null +++ b/idea/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/idea/testData/multiModuleQuickFix/createExpect/withAliases/common/My.kt.after b/idea/testData/multiModuleQuickFix/createExpect/withAliases/common/My.kt.after index cc4210384da..74d0fb513a3 100644 --- a/idea/testData/multiModuleQuickFix/createExpect/withAliases/common/My.kt.after +++ b/idea/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/idea/testData/multiModuleQuickFix/createExpect/withAliases/jvm/My.kt.after b/idea/testData/multiModuleQuickFix/createExpect/withAliases/jvm/My.kt.after index de902b2e2f5..1424c78dd83 100644 --- a/idea/testData/multiModuleQuickFix/createExpect/withAliases/jvm/My.kt.after +++ b/idea/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/idea/testData/multiModuleQuickFix/createExpect/withAliases/log.log b/idea/testData/multiModuleQuickFix/createExpect/withAliases/log.log new file mode 100644 index 00000000000..0025ab98539 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/createExpect/withAliases/log.log @@ -0,0 +1,2 @@ +These declarations cannot be transformed: +fun foo() = 42 diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java index ecb19a3c1db..126c74901e9 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java +++ b/idea/tests/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/");