diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiLiteralExpressionImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiLiteralExpressionImpl.java index c4f47b4fc2c1..f8da7086b9ef 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiLiteralExpressionImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiLiteralExpressionImpl.java @@ -3,6 +3,7 @@ package com.intellij.psi.impl.source.tree.java; import com.intellij.codeInsight.CodeInsightUtilCore; import com.intellij.lang.ASTNode; +import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.impl.PsiManagerEx; @@ -226,6 +227,25 @@ public class PsiLiteralExpressionImpl @Override @NotNull public LiteralTextEscaper createLiteralTextEscaper() { + if (getLiteralElementType() == JavaTokenType.RAW_STRING_LITERAL) { + return new LiteralTextEscaper(this) { + @Override + public boolean decode(@NotNull final TextRange rangeInsideHost, @NotNull StringBuilder outChars) { + outChars.append(rangeInsideHost.substring(myHost.getText())); + return true; + } + + @Override + public int getOffsetInHost(int offsetInDecoded, @NotNull final TextRange rangeInsideHost) { + return offsetInDecoded + rangeInsideHost.getStartOffset(); + } + + @Override + public boolean isOneLine() { + return false; + } + }; + } return new StringLiteralEscaper<>(this); } }