From d3946257714de81756da1d8bf903de4aeccecf8c Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Tue, 28 Oct 2014 16:20:29 +0300 Subject: [PATCH] Fixed override/implement --- .../OverrideImplementMethodsHandler.java | 31 +++++++++---------- .../overrideRespectCaretPosition.kt.after | 5 +-- .../SmartCompletionHandlerTestGenerated.java | 1 + 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java index 5b921f1b5e0..4d57a74e4d2 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java @@ -25,13 +25,9 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; -import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.text.StringUtil; -import com.intellij.psi.PsiDocumentManager; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFile; -import com.intellij.psi.PsiWhiteSpace; +import com.intellij.psi.*; import com.intellij.psi.impl.source.PostprocessReformattingAspect; import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NotNull; @@ -89,9 +85,9 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns @NotNull final JetClassOrObject classOrObject, @NotNull final List selectedElements ) { - PsiElement firstGenerated = ApplicationManager.getApplication().runWriteAction(new Computable() { + ApplicationManager.getApplication().runWriteAction(new Runnable() { @Override - public PsiElement compute() { + public void run() { JetClassBody body = classOrObject.getBody(); if (body == null) { JetPsiFactory psiFactory = JetPsiFactory(classOrObject); @@ -101,9 +97,7 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns PsiElement afterAnchor = findInsertAfterAnchor(editor, body); - if (afterAnchor == null) { - return null; - } + if (afterAnchor == null) return; PsiElement firstGenerated = null; @@ -122,14 +116,19 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns ShortenReferences.INSTANCE$.process(elementsToCompact); - return firstGenerated; + if (firstGenerated == null) return; + + Project project = classOrObject.getProject(); + SmartPsiElementPointer pointer = SmartPointerManager.getInstance(project).createSmartPsiElementPointer(firstGenerated); + + PostprocessReformattingAspect.getInstance(project).doPostponedFormatting(); + + PsiElement element = pointer.getElement(); + if (element != null) { + QuickfixPackage.moveCaretIntoGeneratedElement(editor, element); + } } }); - - if (firstGenerated != null) { - PostprocessReformattingAspect.getInstance(firstGenerated.getProject()).doPostponedFormatting(); - QuickfixPackage.moveCaretIntoGeneratedElement(editor, firstGenerated); - } } @Nullable diff --git a/idea/testData/codeInsight/overrideImplement/overrideRespectCaretPosition.kt.after b/idea/testData/codeInsight/overrideImplement/overrideRespectCaretPosition.kt.after index efd21fbaa41..91352cb84ea 100644 --- a/idea/testData/codeInsight/overrideImplement/overrideRespectCaretPosition.kt.after +++ b/idea/testData/codeInsight/overrideImplement/overrideRespectCaretPosition.kt.after @@ -22,9 +22,10 @@ class C : A() { override fun toString(): String { return super.toString() } + /* - Some another comment - */ + Some another comment + */ fun someAnotherFunction() { } diff --git a/idea/tests/org/jetbrains/jet/completion/handlers/SmartCompletionHandlerTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/handlers/SmartCompletionHandlerTestGenerated.java index f136bb1df0f..fc5e1dc84c9 100644 --- a/idea/tests/org/jetbrains/jet/completion/handlers/SmartCompletionHandlerTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/handlers/SmartCompletionHandlerTestGenerated.java @@ -40,6 +40,7 @@ public class SmartCompletionHandlerTestGenerated extends AbstractSmartCompletion @TestMetadata("AfterAs2.kt") public void testAfterAs2() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/handlers/smart/AfterAs2.kt"); doTest(fileName); }