From 5c88e4077249d4e8b4d0ed28cf44bc2f7cfc1b4e Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Tue, 30 Oct 2012 18:16:12 +0400 Subject: [PATCH] KT-2859 Inconsistency before reparse upon completing by Tab key #KT-2859 fixed --- .../jet/plugin/codeInsight/ReferenceToClassesShortening.java | 3 +++ .../jet/plugin/completion/handlers/JetClassInsertHandler.java | 3 +++ .../plugin/completion/handlers/JetFunctionInsertHandler.java | 2 ++ .../plugin/completion/handlers/JetJavaClassInsertHandler.java | 3 +++ idea/testData/completion/handlers/InsertImportOnTab.kt | 1 + idea/testData/completion/handlers/InsertImportOnTab.kt.after | 3 +++ .../jet/completion/handlers/CompletionHandlerTest.java | 4 ++++ 7 files changed, 19 insertions(+) create mode 100644 idea/testData/completion/handlers/InsertImportOnTab.kt create mode 100644 idea/testData/completion/handlers/InsertImportOnTab.kt.after diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/ReferenceToClassesShortening.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/ReferenceToClassesShortening.java index bbf168ca690..f9deb822c62 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/ReferenceToClassesShortening.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/ReferenceToClassesShortening.java @@ -16,6 +16,7 @@ package org.jetbrains.jet.plugin.codeInsight; +import com.intellij.psi.PsiDocumentManager; import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; @@ -37,6 +38,8 @@ public class ReferenceToClassesShortening { if (elementsToCompact.isEmpty()) { return; } + PsiDocumentManager.getInstance(elementsToCompact.get(0).getProject()).commitAllDocuments(); + final JetFile file = (JetFile) elementsToCompact.get(0).getContainingFile(); final BindingContext bc = WholeProjectAnalyzerFacade.analyzeProjectWithCacheOnAFile(file).getBindingContext(); for (JetElement element : elementsToCompact) { diff --git a/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetClassInsertHandler.java b/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetClassInsertHandler.java index ad61c01b26e..7e0243734ea 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetClassInsertHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetClassInsertHandler.java @@ -20,6 +20,7 @@ import com.intellij.codeInsight.completion.InsertHandler; import com.intellij.codeInsight.completion.InsertionContext; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.psi.JetFile; @@ -38,6 +39,8 @@ public class JetClassInsertHandler implements InsertHandler { @Override public void handleInsert(final InsertionContext context, final LookupElement item) { + PsiDocumentManager.getInstance(context.getProject()).commitAllDocuments(); + if (context.getFile() instanceof JetFile) { final JetFile jetFile = (JetFile) context.getFile(); ApplicationManager.getApplication().runReadAction(new Runnable() { diff --git a/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetFunctionInsertHandler.java b/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetFunctionInsertHandler.java index aff9930e5bc..1a885186da6 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetFunctionInsertHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetFunctionInsertHandler.java @@ -67,6 +67,8 @@ public class JetFunctionInsertHandler implements InsertHandler { @Override public void handleInsert(InsertionContext context, LookupElement item) { + PsiDocumentManager.getInstance(context.getProject()).commitAllDocuments(); + if (context.getCompletionChar() == '(') { context.setAddCompletionChar(false); } diff --git a/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetJavaClassInsertHandler.java b/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetJavaClassInsertHandler.java index 77244446a72..f30be5e633d 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetJavaClassInsertHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/handlers/JetJavaClassInsertHandler.java @@ -19,6 +19,7 @@ package org.jetbrains.jet.plugin.completion.handlers; import com.intellij.codeInsight.completion.InsertHandler; import com.intellij.codeInsight.completion.InsertionContext; import com.intellij.codeInsight.completion.JavaPsiClassReferenceElement; +import com.intellij.psi.PsiDocumentManager; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.plugin.quickfix.ImportInsertHelper; @@ -34,6 +35,8 @@ public class JetJavaClassInsertHandler implements InsertHandlerList() \ No newline at end of file diff --git a/idea/testData/completion/handlers/InsertImportOnTab.kt.after b/idea/testData/completion/handlers/InsertImportOnTab.kt.after new file mode 100644 index 00000000000..357dd98f8d2 --- /dev/null +++ b/idea/testData/completion/handlers/InsertImportOnTab.kt.after @@ -0,0 +1,3 @@ +import java.util.ArrayList + +val s = ArrayList() \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/completion/handlers/CompletionHandlerTest.java b/idea/tests/org/jetbrains/jet/completion/handlers/CompletionHandlerTest.java index 5174a927dbd..6b1cd1d4670 100644 --- a/idea/tests/org/jetbrains/jet/completion/handlers/CompletionHandlerTest.java +++ b/idea/tests/org/jetbrains/jet/completion/handlers/CompletionHandlerTest.java @@ -83,6 +83,10 @@ public class CompletionHandlerTest extends LightCompletionTestCase { doTest(' '); } + public void testInsertImportOnTab() { + doTest(CompletionType.BASIC, 2, "ArrayList", null, '\t'); + } + public void testFunctionLiteralInsertWhenNoSpacesForBraces() { CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(getProject()); JetCodeStyleSettings jetSettings = settings.getCustomSettings(JetCodeStyleSettings.class);