From f1a2e519d8d614b6c66495b559870aeccca3cbdc Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Thu, 19 Nov 2015 19:36:18 +0300 Subject: [PATCH] IDEA-148225 {@code} and {@literal} Javadoc blocks aren't treated literally by Ctrl+Q --- .../intellij/codeInsight/javadoc/JavaDocInfoGenerator.java | 5 +---- .../testData/codeInsight/javadocIG/escapingInLiteral.html | 2 ++ .../testData/codeInsight/javadocIG/escapingInLiteral.java | 6 ++++++ .../codeInsight/javadoc/JavaDocInfoGeneratorTest.java | 4 ++++ 4 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/javadocIG/escapingInLiteral.html create mode 100644 java/java-tests/testData/codeInsight/javadocIG/escapingInLiteral.java diff --git a/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java b/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java index 0982a6dc1d5c..d69fdf945acb 100644 --- a/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java +++ b/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java @@ -1478,7 +1478,7 @@ public class JavaDocInfoGenerator { private void generateLiteralValue(StringBuilder buffer, PsiDocTag tag) { StringBuilder tmpBuffer = new StringBuilder(); for (PsiElement element : tag.getDataElements()) { - appendPlainText(element.getText(), tmpBuffer); + appendPlainText(StringUtil.escapeXml(element.getText()), tmpBuffer); } if ((mySdkVersion == null || mySdkVersion.isAtLeast(JavaSdkVersion.JDK_1_8)) && isInPre(tag)) { buffer.append(tmpBuffer); @@ -1507,9 +1507,6 @@ public class JavaDocInfoGenerator { } private static void appendPlainText(@NonNls String text, final StringBuilder buffer) { - text = text.replaceAll("<", LT); - text = text.replaceAll(">", GT); - buffer.append(StringUtil.replaceUnicodeEscapeSequences(text)); } diff --git a/java/java-tests/testData/codeInsight/javadocIG/escapingInLiteral.html b/java/java-tests/testData/codeInsight/javadocIG/escapingInLiteral.html new file mode 100644 index 000000000000..623f43e62ada --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/escapingInLiteral.html @@ -0,0 +1,2 @@ + Foo
int foo
+ &gt; is > &lt; is < &quot; is " \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/javadocIG/escapingInLiteral.java b/java/java-tests/testData/codeInsight/javadocIG/escapingInLiteral.java new file mode 100644 index 000000000000..c2c2b4ee3e07 --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/escapingInLiteral.java @@ -0,0 +1,6 @@ +class Foo { + /** + * {@literal > is > < is < " is "} + */ + int foo; +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java index b8795893d22e..783dffd4486f 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java @@ -145,6 +145,10 @@ public class JavaDocInfoGeneratorTest extends CodeInsightTestCase { doTestField(); } + public void testEscapingInLiteral() throws Exception { + doTestField(); + } + public void testCode() throws Exception { useJava8(); doTestField();