From 09e3217d919d53be3d5616d2201253a669bf73ec Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 28 Jan 2014 18:34:03 +0100 Subject: [PATCH] commit may change psiFile instance, completion should be prepared to that (EA-46770) --- .../completion/CodeCompletionHandlerBase.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java index 7017fa621fb9..3c816b0ecb28 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java @@ -113,9 +113,6 @@ public class CodeCompletionHandlerBase { CompletionLookupArranger.applyLastCompletionStatisticsUpdate(); } - final PsiFile psiFile = PsiUtilBase.getPsiFileInEditor(editor, project); - assert psiFile != null : "no PSI file: " + FileDocumentManager.getInstance().getFile(editor.getDocument()); - checkNoWriteAccess(); CompletionAssertions.checkEditorValid(editor); @@ -131,8 +128,6 @@ public class CodeCompletionHandlerBase { return; } - psiFile.putUserData(PsiFileEx.BATCH_REFERENCE_PROCESSING, Boolean.TRUE); - CompletionPhase phase = CompletionServiceImpl.getCompletionPhase(); boolean repeated = phase.indicator != null && phase.indicator.isRepeatedInvocation(myCompletionType, editor); /* @@ -167,10 +162,13 @@ public class CodeCompletionHandlerBase { public void run() { EditorUtil.fillVirtualSpaceUntilCaret(editor); PsiDocumentManager.getInstance(project).commitAllDocuments(); - - CompletionAssertions.assertCommitSuccessful(editor, psiFile); CompletionAssertions.checkEditorValid(editor); + final PsiFile psiFile = PsiUtilBase.getPsiFileInEditor(editor, project); + assert psiFile != null : "no PSI file: " + FileDocumentManager.getInstance().getFile(editor.getDocument()); + psiFile.putUserData(PsiFileEx.BATCH_REFERENCE_PROCESSING, Boolean.TRUE); + CompletionAssertions.assertCommitSuccessful(editor, psiFile); + initializationContext[0] = runContributorsBeforeCompletion(editor, psiFile); } }; @@ -179,7 +177,7 @@ public class CodeCompletionHandlerBase { }; if (autopopup) { CommandProcessor.getInstance().runUndoTransparentAction(initCmd); - if (!restarted && shouldSkipAutoPopup(editor, psiFile)) { + if (!restarted && shouldSkipAutoPopup(editor, initializationContext[0].getFile())) { CompletionServiceImpl.setCompletionPhase(CompletionPhase.NoCompletion); return; }