diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtClassOrObject.kt b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtClassOrObject.kt index 3a6cf55e5f3..f824985f66d 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtClassOrObject.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtClassOrObject.kt @@ -38,6 +38,10 @@ abstract class KtClassOrObject : fun addSuperTypeListEntry(superTypeListEntry: KtSuperTypeListEntry): KtSuperTypeListEntry { getSuperTypeList()?.let { + val single = it.entries.singleOrNull() + if (single != null && single.typeReference?.typeElement == null) { + return single.replace(superTypeListEntry) as KtSuperTypeListEntry + } return EditCommaSeparatedListHelper.addItem(it, getSuperTypeListEntries(), superTypeListEntry) } diff --git a/idea/testData/quickfix/typeMismatch/letObjectLiteralImplementInterface.kt b/idea/testData/quickfix/typeMismatch/letObjectLiteralImplementInterface.kt new file mode 100644 index 00000000000..9102568940f --- /dev/null +++ b/idea/testData/quickfix/typeMismatch/letObjectLiteralImplementInterface.kt @@ -0,0 +1,9 @@ +// "Let the anonymous object implement interface 'Runnable'" "true" + +fun foo(r: Runnable) {} + +fun bar() { + foo(object: {}) +} + +interface Runnable \ No newline at end of file diff --git a/idea/testData/quickfix/typeMismatch/letObjectLiteralImplementInterface.kt.after b/idea/testData/quickfix/typeMismatch/letObjectLiteralImplementInterface.kt.after new file mode 100644 index 00000000000..a8559de5c97 --- /dev/null +++ b/idea/testData/quickfix/typeMismatch/letObjectLiteralImplementInterface.kt.after @@ -0,0 +1,9 @@ +// "Let the anonymous object implement interface 'Runnable'" "true" + +fun foo(r: Runnable) {} + +fun bar() { + foo(object: Runnable {}) +} + +interface Runnable \ 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 a1da2a7cf74..01a163a8fc9 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -7654,6 +7654,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { doTest(fileName); } + @TestMetadata("letObjectLiteralImplementInterface.kt") + public void testLetObjectLiteralImplementInterface() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/typeMismatch/letObjectLiteralImplementInterface.kt"); + doTest(fileName); + } + @TestMetadata("letStringImplementInterface.kt") public void testLetStringImplementInterface() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/typeMismatch/letStringImplementInterface.kt");