diff --git a/java/java-tests/testSrc/com/intellij/java/psi/impl/smartPointers/SmartPsiElementPointersTest.java b/java/java-tests/testSrc/com/intellij/java/psi/impl/smartPointers/SmartPsiElementPointersTest.java index 367d5528ca18..223202d62f36 100644 --- a/java/java-tests/testSrc/com/intellij/java/psi/impl/smartPointers/SmartPsiElementPointersTest.java +++ b/java/java-tests/testSrc/com/intellij/java/psi/impl/smartPointers/SmartPsiElementPointersTest.java @@ -1034,4 +1034,13 @@ public class SmartPsiElementPointersTest extends CodeInsightTestCase { assertEquals(TextRange.from(3, 1), TextRange.create(pointer.getRange())); } + public void testFileRangeWithUnicode() throws Exception { + PsiFile file = createFile("a.java", "Ы"); + assertEquals(1, file.getTextLength()); + SmartPsiFileRange pointer = getPointerManager().createSmartPsiFileRangePointer(file, TextRange.from(0, file.getTextLength())); + assertEquals(TextRange.from(0, 1), TextRange.create(pointer.getPsiRange())); + assertEquals(TextRange.from(0, 1), TextRange.create(pointer.getRange())); + + } + } diff --git a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/FileElementInfo.java b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/FileElementInfo.java index 72805de1a6eb..1374b82e6459 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/FileElementInfo.java +++ b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/FileElementInfo.java @@ -73,7 +73,10 @@ class FileElementInfo extends SmartPointerElementInfo { @Override public Segment getRange() { - return myVirtualFile.isValid() ? new TextRange(0, (int)myVirtualFile.getLength()) : null; + if (!myVirtualFile.isValid()) return null; + + Document document = FileDocumentManager.getInstance().getDocument(myVirtualFile); + return document == null ? null : TextRange.from(0, document.getTextLength()); } @NotNull