From c752c699145cdf4acaca0651793aba2ce167d8d2 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 6 Sep 2021 13:11:15 +0200 Subject: [PATCH] [java] introduce variable from subexpression: fix visible highlighting (IDEA-277489) passed expressions are non-physical, thus containing expression range should be considered GitOrigin-RevId: 59962f0604b1bc1b72728ca8a72c7ef1e08e1107 --- .../introduceVariable/IntroduceVariableBase.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/refactoring/introduceVariable/IntroduceVariableBase.java b/java/java-impl/src/com/intellij/refactoring/introduceVariable/IntroduceVariableBase.java index 5889d901bc4f..b1ec6f8ba8bf 100644 --- a/java/java-impl/src/com/intellij/refactoring/introduceVariable/IntroduceVariableBase.java +++ b/java/java-impl/src/com/intellij/refactoring/introduceVariable/IntroduceVariableBase.java @@ -866,7 +866,16 @@ public abstract class IntroduceVariableBase extends IntroduceHandlerBase { String title = occurrencesInfo.myChainMethodName != null && occurrences.length == 1 ? JavaRefactoringBundle.message("replace.lambda.chain.detected") : RefactoringBundle.message("replace.multiple.occurrences.found"); - OccurrencesChooser.simpleChooser(editor).showChooser(callback, occurrencesMap, title); + new OccurrencesChooser(editor) { + @Override + protected TextRange getOccurrenceRange(PsiExpression occurrence) { + RangeMarker rangeMarker = occurrence.getUserData(ElementToWorkOn.TEXT_RANGE); + if (rangeMarker != null) { + return new TextRange(rangeMarker.getStartOffset(), rangeMarker.getEndOffset()); + } + return occurrence.getTextRange(); + } + }.showChooser(callback, occurrencesMap, title); } return callback.wasSucceed; }