From efb75239c21748c881f0e89f900983f9fc843637 Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Mon, 27 Mar 2017 13:59:03 +0300 Subject: [PATCH] EA-98441 - assert: JavaMethodOverloadSwitchHandler.executeWriteAction --- .../editorActions/JavaMethodOverloadSwitchHandler.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/editorActions/JavaMethodOverloadSwitchHandler.java b/java/java-impl/src/com/intellij/codeInsight/editorActions/JavaMethodOverloadSwitchHandler.java index 5d192522b6ec..af10a27e7f9b 100644 --- a/java/java-impl/src/com/intellij/codeInsight/editorActions/JavaMethodOverloadSwitchHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/editorActions/JavaMethodOverloadSwitchHandler.java @@ -88,13 +88,18 @@ public class JavaMethodOverloadSwitchHandler extends EditorWriteActionHandler { if (currentIndex < 0) return; PsiMethod currentMethod = (PsiMethod)((CandidateInfo)objects[currentIndex]).getElement(); + int currentMethodParameterCount = currentMethod.getParameterList().getParametersCount(); + PsiExpression[] enteredExpressions = ((PsiExpressionList)exprList).getExpressions(); + int enteredCount = enteredExpressions.length; + if (currentMethodParameterCount != enteredCount && !(enteredCount == 0 && currentMethodParameterCount == 1)) { + // when parameter list has been edited, but popup wasn't updated for some reason + return; + } Map enteredParameters = exprList.getUserData(ENTERED_PARAMETERS); if (enteredParameters == null) { exprList.putUserData(ENTERED_PARAMETERS, enteredParameters = new HashMap<>()); } - PsiExpression[] enteredExpressions = ((PsiExpressionList)exprList).getExpressions(); - assert enteredExpressions.length == 0 || enteredExpressions.length == currentMethod.getParameterList().getParametersCount(); for (int i = 0; i < enteredExpressions.length; i++) { PsiExpression expression = enteredExpressions[i]; String value = expression.getText().trim();