From a08b984bf81548669cac9e899a233cbee626b22e Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 3 Dec 2015 19:55:53 +0100 Subject: [PATCH] assert text length consistency between FileElement and view provider --- .../src/com/intellij/psi/impl/source/PsiFileImpl.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/platform/core-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java b/platform/core-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java index d8a5474ca802..f18f32311c48 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java +++ b/platform/core-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java @@ -386,14 +386,21 @@ public abstract class PsiFileImpl extends ElementBase implements PsiFileEx, PsiF @Override public String getText() { + final ASTNode tree = derefTreeElement(); if (!isValid()) { // even invalid PSI can calculate its text by concatenating its children - final ASTNode tree = derefTreeElement(); if (tree != null) return tree.getText(); throw new PsiInvalidElementAccessException(this); } - return getViewProvider().getContents().toString(); + String string = getViewProvider().getContents().toString(); + if (tree != null && string.length() != tree.getTextLength()) { + throw new AssertionError("File text mismatch: tree.length=" + tree.getTextLength() + + "; psi.length=" + string.length() + + "; this=" + this + + "; vp=" + getViewProvider()); + } + return string; } @Override