diff --git a/platform/lang-impl/src/com/intellij/codeInsight/hints/ParameterHintsUpdater.java b/platform/lang-impl/src/com/intellij/codeInsight/hints/ParameterHintsUpdater.java index d213956ef1eb..dce62984fb7b 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/hints/ParameterHintsUpdater.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/hints/ParameterHintsUpdater.java @@ -73,7 +73,8 @@ public class ParameterHintsUpdater { editorHints.forEach(editorHint -> { int offset = editorHint.getOffset(); String presentationText = presentationManager.getHintText(editorHint); - ParameterHintsPass.HintData newHint = findAndRemoveMatchingHint(offset, presentationText, myNewHints); + ParameterHintsPass.HintData newHint = findAndRemoveMatchingHint(offset, presentationText, editorHint.isRelatedToPrecedingText(), + myNewHints); String newText = newHint == null ? null : newHint.presentationText; if (!myForceImmediateUpdate && delayRemoval(editorHint)) { myEditor.putUserData(HINT_REMOVAL_DELAYED, Boolean.TRUE); @@ -98,14 +99,16 @@ public class ParameterHintsUpdater { } @Nullable - private static ParameterHintsPass.HintData findAndRemoveMatchingHint(int offset, String presentationText, + private static ParameterHintsPass.HintData findAndRemoveMatchingHint(int offset, String presentationText, boolean relatesToPrecedingText, TIntObjectHashMap> data) { List newHintList = data.get(offset); ParameterHintsPass.HintData newHint = null; if (newHintList != null) { ParameterHintsPass.HintData lastHint = null; for (Iterator iterator = newHintList.iterator(); iterator.hasNext(); ) { - lastHint = iterator.next(); + ParameterHintsPass.HintData hint = iterator.next(); + if (hint.relatesToPrecedingText != relatesToPrecedingText) continue; + lastHint = hint; if (Objects.equals(lastHint.presentationText, presentationText)) { newHint = lastHint; iterator.remove();