diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/LetImplementInterfaceFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/LetImplementInterfaceFix.kt index a977394b8b5..981c2404c31 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/LetImplementInterfaceFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/LetImplementInterfaceFix.kt @@ -18,8 +18,10 @@ package org.jetbrains.kotlin.idea.quickfix import com.intellij.codeInsight.intention.LowPriorityAction import com.intellij.openapi.editor.Editor +import com.intellij.openapi.fileEditor.FileEditorManager import com.intellij.openapi.project.Project import com.intellij.psi.PsiFile +import org.jetbrains.kotlin.idea.core.overrideImplement.ImplementMembersHandler import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.containsStarProjections import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.idea.util.ShortenReferences @@ -73,5 +75,15 @@ class LetImplementInterfaceFix( val superTypeEntry = KtPsiFactory(element).createSuperTypeEntry(expectedTypeNameSourceCode) val entryElement = element.addSuperTypeListEntry(superTypeEntry) ShortenReferences.DEFAULT.process(entryElement) + + val implementMembersHandler = ImplementMembersHandler() + if (implementMembersHandler.collectMembersToGenerate(element).isEmpty()) return + + if (editor != null) { + editor.caretModel.moveToOffset(element.textRange.startOffset) + val containingFile = element.containingFile + FileEditorManager.getInstance(project).openFile(containingFile.virtualFile, true) + implementMembersHandler.invoke(project, editor, containingFile) + } } } diff --git a/idea/testData/quickfix/typeMismatch/letClassImplementInterface.kt b/idea/testData/quickfix/typeMismatch/letClassImplementInterface.kt index c7e21200ed4..ebc3f977d40 100644 --- a/idea/testData/quickfix/typeMismatch/letClassImplementInterface.kt +++ b/idea/testData/quickfix/typeMismatch/letClassImplementInterface.kt @@ -9,5 +9,7 @@ fun bar() { fun foo(a: A) { } -interface A +interface A { + fun gav() +} class B \ No newline at end of file diff --git a/idea/testData/quickfix/typeMismatch/letClassImplementInterface.kt.after b/idea/testData/quickfix/typeMismatch/letClassImplementInterface.kt.after index 94a683ed56d..027d0383a89 100644 --- a/idea/testData/quickfix/typeMismatch/letClassImplementInterface.kt.after +++ b/idea/testData/quickfix/typeMismatch/letClassImplementInterface.kt.after @@ -2,12 +2,18 @@ package let.implement fun bar() { - foo(B()) + foo(B()) } fun foo(a: A) { } -interface A -class B : A \ No newline at end of file +interface A { + fun gav() +} +class B : A { + override fun gav() { + throw UnsupportedOperationException() + } +} \ No newline at end of file