From 06f2c7b77c0cb481a3d600bffe6f6dd5c6d95385 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 25 Mar 2019 18:33:14 +0100 Subject: [PATCH] tolerate null completion parameters (EA-139798 - NPE: CodeCompletionHandlerBase.completionFinished) --- .../completion/CodeCompletionHandlerBase.java | 15 +++++++-------- 1 file changed, 7 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 b222209f684d..b33d1c0073fc 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java @@ -51,7 +51,6 @@ import org.jetbrains.annotations.TestOnly; import java.util.Collections; import java.util.List; -import java.util.Objects; import java.util.concurrent.Future; @SuppressWarnings("deprecation") @@ -297,9 +296,9 @@ public class CodeCompletionHandlerBase { } } - private AutoCompletionDecision shouldAutoComplete(CompletionProgressIndicator indicator, - List items, - CompletionParameters parameters) { + private AutoCompletionDecision shouldAutoComplete(@NotNull CompletionProgressIndicator indicator, + @NotNull List items, + @NotNull CompletionParameters parameters) { if (!invokedExplicitly) { return AutoCompletionDecision.SHOW_LOOKUP; } @@ -341,14 +340,13 @@ public class CodeCompletionHandlerBase { } protected void completionFinished(final CompletionProgressIndicator indicator, boolean hasModifiers) { - final List items = indicator.getLookup().getItems(); - CompletionParameters parameters = Objects.requireNonNull(indicator.getParameters()); + List items = indicator.getLookup().getItems(); if (items.isEmpty()) { LookupManager.hideActiveLookup(indicator.getProject()); Caret nextCaret = getNextCaretToProcess(indicator.getEditor()); if (nextCaret != null) { - invokeCompletion(indicator.getProject(), indicator.getEditor(), parameters.getInvocationCount(), hasModifiers, nextCaret); + invokeCompletion(indicator.getProject(), indicator.getEditor(), indicator.getInvocationCount(), hasModifiers, nextCaret); } else { indicator.handleEmptyLookup(true); @@ -361,7 +359,8 @@ public class CodeCompletionHandlerBase { LOG.assertTrue(!indicator.isCanceled(), "canceled"); try { - AutoCompletionDecision decision = shouldAutoComplete(indicator, items, parameters); + CompletionParameters parameters = indicator.getParameters(); + AutoCompletionDecision decision = parameters == null ? AutoCompletionDecision.CLOSE_LOOKUP : shouldAutoComplete(indicator, items, parameters); if (decision == AutoCompletionDecision.SHOW_LOOKUP) { indicator.getLookup().setCalculating(false); indicator.showLookup();