diff --git a/platform/lang-impl/src/com/intellij/codeInsight/highlighting/HighlightUsagesHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/highlighting/HighlightUsagesHandler.java index b1f71dc4a593..e68bcb345be5 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/highlighting/HighlightUsagesHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/highlighting/HighlightUsagesHandler.java @@ -19,8 +19,6 @@ package com.intellij.codeInsight.highlighting; import com.intellij.codeInsight.CodeInsightBundle; import com.intellij.codeInsight.TargetElementUtilBase; import com.intellij.find.EditorSearchComponent; -import com.intellij.find.FindManager; -import com.intellij.find.FindModel; import com.intellij.find.findUsages.PsiElement2UsageTargetAdapter; import com.intellij.injected.editor.EditorWindow; import com.intellij.lang.injection.InjectedLanguageManager; @@ -384,14 +382,19 @@ public class HighlightUsagesHandler extends HighlightHandlerBase { List answer = new ArrayList(relativeRanges.size()); for (TextRange relativeRange : relativeRanges) { PsiElement element = ref.getElement(); - TextRange range = element.getTextRange().cutOut(relativeRange); + TextRange range = safeCut(element.getTextRange(), relativeRange); // injection occurs answer.add(InjectedLanguageManager.getInstance(element.getProject()).injectedToHost(element, range)); - } return answer; } + private static TextRange safeCut(TextRange range, TextRange relative) { + int start = Math.min(range.getEndOffset(), range.getStartOffset() + relative.getStartOffset()); + int end = Math.min(range.getEndOffset(), range.getStartOffset() + relative.getEndOffset()); + return new TextRange(start, end); + } + @Nullable public static PsiElement getNameIdentifier(@NotNull PsiElement element) { if (element instanceof PsiNameIdentifierOwner) {