diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/LetImplementInterfaceFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/LetImplementInterfaceFix.kt index f10588fdd25..a977394b8b5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/LetImplementInterfaceFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/LetImplementInterfaceFix.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.idea.util.ShortenReferences import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtPsiFactory +import org.jetbrains.kotlin.psi.psiUtil.isObjectLiteral import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.TypeUtils import org.jetbrains.kotlin.types.typeUtil.isInterface @@ -52,7 +53,8 @@ class LetImplementInterfaceFix( expectedTypeNameSourceCode = IdeDescriptorRenderers.SOURCE_CODE.renderType(expectedTypeNotNullable) val verb = if (expressionType.isInterface()) "extend" else "implement" - prefix = "Let '${expressionType.renderShort()}' $verb" + val typeDescription = if (element.isObjectLiteral()) "the anonymous object" else "'${expressionType.renderShort()}'" + prefix = "Let $typeDescription $verb" validExpectedType = with (expectedType) { isInterface() && @@ -72,4 +74,4 @@ class LetImplementInterfaceFix( val entryElement = element.addSuperTypeListEntry(superTypeEntry) ShortenReferences.DEFAULT.process(entryElement) } -} \ No newline at end of file +} diff --git a/idea/testData/quickfix/typeMismatch/letObjectImplementAdditionalInterface.kt b/idea/testData/quickfix/typeMismatch/letObjectImplementAdditionalInterface.kt new file mode 100644 index 00000000000..7c5baa9ddd3 --- /dev/null +++ b/idea/testData/quickfix/typeMismatch/letObjectImplementAdditionalInterface.kt @@ -0,0 +1,11 @@ +// "Let the anonymous object implement interface 'A'" "true" +package let.implement + +fun bar() { + foo(object {}) +} + +fun foo(a: A) { +} + +interface A \ No newline at end of file diff --git a/idea/testData/quickfix/typeMismatch/letObjectImplementAdditionalInterface.kt.after b/idea/testData/quickfix/typeMismatch/letObjectImplementAdditionalInterface.kt.after new file mode 100644 index 00000000000..8b08e715ca8 --- /dev/null +++ b/idea/testData/quickfix/typeMismatch/letObjectImplementAdditionalInterface.kt.after @@ -0,0 +1,11 @@ +// "Let the anonymous object implement interface 'A'" "true" +package let.implement + +fun bar() { + foo(object : A {}) +} + +fun foo(a: A) { +} + +interface 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 f559a6ea01c..f0ff5ed4be0 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -7405,6 +7405,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { doTest(fileName); } + @TestMetadata("letObjectImplementAdditionalInterface.kt") + public void testLetObjectImplementAdditionalInterface() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/typeMismatch/letObjectImplementAdditionalInterface.kt"); + doTest(fileName); + } + @TestMetadata("letStringImplementInterface.kt") public void testLetStringImplementInterface() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/typeMismatch/letStringImplementInterface.kt");