diff --git a/platform/core-api/src/com/intellij/usageView/UsageInfo.java b/platform/core-api/src/com/intellij/usageView/UsageInfo.java index e9e51bcf2501..15e6e0611d81 100644 --- a/platform/core-api/src/com/intellij/usageView/UsageInfo.java +++ b/platform/core-api/src/com/intellij/usageView/UsageInfo.java @@ -55,10 +55,18 @@ public class UsageInfo { else { effectiveStart = startOffset; effectiveEnd = endOffset; - if (element != originalElement && originalElement.getContainingFile() == file) { - int delta = originalElement.getTextRange().getStartOffset() - elementRange.getStartOffset(); - effectiveStart += delta; - effectiveEnd += delta; + if (element != originalElement) { + PsiFile originalFile = originalElement.getContainingFile(); + if (originalFile == file) { + int delta = originalElement.getTextRange().getStartOffset() - elementRange.getStartOffset(); + effectiveStart += delta; + effectiveEnd += delta; + } + else { + throw new IllegalArgumentException("element.getNavigationElement() for element "+originalElement+"("+startOffset+", "+endOffset+ + ") from " + originalFile + " led to different file "+file+ + ", thus making passed offsets invalid. Specify -1 for start/end offsets to calculate correct offsets for navigation."); + } } }