KT-2859 Inconsistency before reparse upon completing by Tab key

#KT-2859 fixed
This commit is contained in:
Evgeny Gerashchenko
2012-10-30 18:16:12 +04:00
parent 728a683ae3
commit 5c88e40772
7 changed files with 19 additions and 0 deletions
@@ -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) {
@@ -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<LookupElement> {
@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() {
@@ -67,6 +67,8 @@ public class JetFunctionInsertHandler implements InsertHandler<LookupElement> {
@Override
public void handleInsert(InsertionContext context, LookupElement item) {
PsiDocumentManager.getInstance(context.getProject()).commitAllDocuments();
if (context.getCompletionChar() == '(') {
context.setAddCompletionChar(false);
}
@@ -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 InsertHandler<JavaPsiClassRefe
@Override
public void handleInsert(final InsertionContext context, final JavaPsiClassReferenceElement item) {
PsiDocumentManager.getInstance(context.getProject()).commitAllDocuments();
if (context.getFile() instanceof JetFile) {
ImportInsertHelper.addImportDirectiveOrChangeToFqName(new FqName(item.getQualifiedName()),
(JetFile) context.getFile(),
@@ -0,0 +1 @@
val s = Ar<caret>List()
@@ -0,0 +1,3 @@
import java.util.ArrayList
val s = ArrayList()
@@ -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);