diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/LetImplementInterfaceFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/LetImplementInterfaceFix.kt index f0e398c0c01..fd8f1ff7031 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/LetImplementInterfaceFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/LetImplementInterfaceFix.kt @@ -38,15 +38,19 @@ class LetImplementInterfaceFix( private fun KotlinType.renderShort() = IdeDescriptorRenderers.SOURCE_CODE_SHORT_NAMES_IN_TYPES.renderType(this) - private val expectedTypeName = expectedType.renderShort() + private val expectedTypeName: String - private val expectedTypeNameSourceCode = IdeDescriptorRenderers.SOURCE_CODE.renderType(expectedType) + private val expectedTypeNameSourceCode: String private val prefix: String private val validExpectedType: Boolean init { + val expectedTypeNotNullable = TypeUtils.makeNotNullable(expectedType) + expectedTypeName = expectedTypeNotNullable.renderShort() + expectedTypeNameSourceCode = IdeDescriptorRenderers.SOURCE_CODE.renderType(expectedTypeNotNullable) + val verb = if (expressionType.isInterface()) "extend" else "implement" prefix = "Let '${expressionType.renderShort()}' $verb" diff --git a/idea/testData/quickfix/typeMismatch/letClassImplementInterfaceNullable.kt b/idea/testData/quickfix/typeMismatch/letClassImplementInterfaceNullable.kt new file mode 100644 index 00000000000..6588a23f1fd --- /dev/null +++ b/idea/testData/quickfix/typeMismatch/letClassImplementInterfaceNullable.kt @@ -0,0 +1,13 @@ +// "Let 'B' implement interface 'A'" "true" +package let.implement + +fun bar() { + foo(B()) +} + + +fun foo(a: A?) { +} + +interface A +class B \ No newline at end of file diff --git a/idea/testData/quickfix/typeMismatch/letClassImplementInterfaceNullable.kt.after b/idea/testData/quickfix/typeMismatch/letClassImplementInterfaceNullable.kt.after new file mode 100644 index 00000000000..392ba2b65af --- /dev/null +++ b/idea/testData/quickfix/typeMismatch/letClassImplementInterfaceNullable.kt.after @@ -0,0 +1,13 @@ +// "Let 'B' implement interface 'A'" "true" +package let.implement + +fun bar() { + foo(B()) +} + + +fun foo(a: A?) { +} + +interface A +class B : A \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index fe3e728c4bd..b4384fed0a7 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -7366,6 +7366,13 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { doTest(fileName); } + @TestMetadata("letClassImplementInterfaceNullable.kt") + public void testLetClassImplementInterfaceNullable() throws Exception { + String fileName = + KotlinTestUtils.navigationMetadata("idea/testData/quickfix/typeMismatch/letClassImplementInterfaceNullable.kt"); + doTest(fileName); + } + @TestMetadata("letInterfaceExtendInterface.kt") public void testLetInterfaceExtendInterface() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/typeMismatch/letInterfaceExtendInterface.kt");