From 245479dba82415bb29d3fbabadbb43ba58f2e24e Mon Sep 17 00:00:00 2001 From: Mathias Boulay Date: Tue, 3 Sep 2024 14:35:39 +0200 Subject: [PATCH] fix(JavaDoc): escaped brackets spacing, reference link with 2+ args Links like [String#copyValueOf(char\[\], int, int)] won't have an additional space for no reason Links like [String#copyValueOf(char\[\], int, int)] can now be clicked on for navigation purposes. GitOrigin-RevId: 42cb742a641b767a82820f5d01a9baff4e78811e --- .../lexer/JavaDocCommentTokenTypes.java | 3 + .../com/intellij/lexer/JavaDocTokenTypes.java | 5 + .../com/intellij/psi/JavaDocTokenType.java | 3 +- .../lang/java/lexer/_JavaDocLexer.java | 376 +++++++++--------- .../lang/java/lexer/JavaTypeEscapeLexer.java | 10 +- .../lang/java/lexer/_JavaDocLexer.flex | 8 + .../lang/java/parser/BasicJavaDocParser.java | 11 +- .../java/JavaSpacePropertyProcessor.java | 7 +- .../impl/source/javadoc/PsiDocTagImpl.java | 2 +- .../source/javadoc/PsiInlineDocTagImpl.java | 2 +- .../javadocParsing/CodeBlockMarkdown02.txt | 4 +- .../CodeBlockMarkdown02_node.txt | 2 + .../javadocParsing/CodeBlockMarkdown05.txt | 4 +- .../CodeBlockMarkdown05_node.txt | 2 + .../ReferenceLinkMarkdown11.java | 2 +- .../ReferenceLinkMarkdown11.txt | 10 + .../ReferenceLinkMarkdown11_node.txt | 10 + .../javadocParsing/Symbols01Markdown.txt | 4 +- .../javadocParsing/Symbols01Markdown_node.txt | 2 + .../javadocParsing/Symbols02Markdown.txt | 4 +- .../javadocParsing/Symbols02Markdown_node.txt | 2 + .../javadocParsing/Symbols03Markdown.txt | 4 +- .../javadocParsing/Symbols03Markdown_node.txt | 2 + .../javadocParsing/Symbols04Markdown.txt | 4 +- .../javadocParsing/Symbols04Markdown_node.txt | 2 + .../javadocParsing/Symbols05Markdown.txt | 4 +- .../javadocParsing/Symbols05Markdown_node.txt | 2 + .../formatter/java/JavadocFormatterTest.kt | 15 + 28 files changed, 302 insertions(+), 204 deletions(-) diff --git a/java/java-frontback-psi-api/src/com/intellij/lexer/JavaDocCommentTokenTypes.java b/java/java-frontback-psi-api/src/com/intellij/lexer/JavaDocCommentTokenTypes.java index da336b5f4d44..e1edf70eb8b2 100644 --- a/java/java-frontback-psi-api/src/com/intellij/lexer/JavaDocCommentTokenTypes.java +++ b/java/java-frontback-psi-api/src/com/intellij/lexer/JavaDocCommentTokenTypes.java @@ -29,4 +29,7 @@ public interface JavaDocCommentTokenTypes extends DocCommentTokenTypes { default IElementType inlineCodeFence() { return commentData(); } + default IElementType comma() { + return commentData(); + } } diff --git a/java/java-frontback-psi-api/src/com/intellij/lexer/JavaDocTokenTypes.java b/java/java-frontback-psi-api/src/com/intellij/lexer/JavaDocTokenTypes.java index c044d1931309..804326cf2a88 100644 --- a/java/java-frontback-psi-api/src/com/intellij/lexer/JavaDocTokenTypes.java +++ b/java/java-frontback-psi-api/src/com/intellij/lexer/JavaDocTokenTypes.java @@ -140,4 +140,9 @@ public final class JavaDocTokenTypes implements JavaDocCommentTokenTypes { public IElementType inlineCodeFence() { return JavaDocTokenType.DOC_INLINE_CODE_FENCE; } + + @Override + public IElementType comma() { + return JavaDocTokenType.DOC_COMMA; + } } diff --git a/java/java-frontback-psi-api/src/com/intellij/psi/JavaDocTokenType.java b/java/java-frontback-psi-api/src/com/intellij/psi/JavaDocTokenType.java index a0287be8553b..9a6961f909a9 100644 --- a/java/java-frontback-psi-api/src/com/intellij/psi/JavaDocTokenType.java +++ b/java/java-frontback-psi-api/src/com/intellij/psi/JavaDocTokenType.java @@ -37,6 +37,7 @@ public interface JavaDocTokenType { IElementType DOC_RPAREN = new IJavaDocElementType("DOC_RPAREN"); IElementType DOC_SHARP = new IJavaDocElementType("DOC_SHARP"); IElementType DOC_INLINE_CODE_FENCE = new IJavaDocElementType("DOC_INLINE_CODE_FENCE"); + IElementType DOC_COMMA = new IJavaDocElementType("DOC_COMMA"); IElementType DOC_COMMENT_BAD_CHARACTER = new IJavaDocElementType("DOC_COMMENT_BAD_CHARACTER"); @@ -45,6 +46,6 @@ public interface JavaDocTokenType { DOC_INLINE_TAG_START, DOC_INLINE_TAG_END, DOC_TAG_VALUE_TOKEN, DOC_TAG_VALUE_DOT, DOC_TAG_VALUE_COMMA, DOC_TAG_VALUE_LPAREN, DOC_TAG_VALUE_RPAREN, DOC_TAG_VALUE_SHARP_TOKEN, DOC_TAG_VALUE_QUOTE, DOC_TAG_VALUE_COLON, DOC_TAG_ATTRIBUTE_NAME, DOC_TAG_ATTRIBUTE_VALUE, DOC_CODE_FENCE, DOC_RBRACKET, DOC_LBRACKET, DOC_LPAREN, DOC_RPAREN, - DOC_SHARP, DOC_INLINE_CODE_FENCE + DOC_SHARP, DOC_INLINE_CODE_FENCE, DOC_COMMA ); } \ No newline at end of file diff --git a/java/java-frontback-psi-impl/gen/com/intellij/lang/java/lexer/_JavaDocLexer.java b/java/java-frontback-psi-impl/gen/com/intellij/lang/java/lexer/_JavaDocLexer.java index 781754d45d6f..76d2dfe922e5 100644 --- a/java/java-frontback-psi-impl/gen/com/intellij/lang/java/lexer/_JavaDocLexer.java +++ b/java/java-frontback-psi-impl/gen/com/intellij/lang/java/lexer/_JavaDocLexer.java @@ -304,19 +304,20 @@ class _JavaDocLexer implements FlexLexer { private static final int [] ZZ_ACTION = zzUnpackAction(); private static final String ZZ_ACTION_PACKED_0 = - "\17\0\3\1\1\2\1\3\1\4\1\5\1\6\2\2"+ - "\1\7\1\2\1\10\1\11\1\12\1\13\1\2\1\14"+ - "\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24"+ - "\1\25\1\21\1\26\1\1\2\27\1\30\1\27\1\31"+ - "\1\32\1\21\1\33\1\34\1\31\1\35\1\21\1\14"+ - "\1\3\1\36\1\37\1\21\1\3\1\40\1\13\1\21"+ - "\1\3\1\13\1\0\1\41\2\0\2\42\2\0\5\42"+ - "\1\0\1\43\1\44\1\42\2\45\4\42\1\46\1\42"+ - "\2\45\5\42\2\45\1\47\3\42\1\50\2\45\1\42"+ - "\1\50\1\42\2\45\2\42\2\45\1\51\27\45"; + "\17\0\3\1\1\2\1\3\1\4\1\5\1\6\1\2"+ + "\1\7\1\2\1\10\1\2\1\11\1\12\1\13\1\14"+ + "\1\2\1\15\1\16\1\17\1\20\1\21\1\22\1\23"+ + "\1\24\1\25\1\26\1\22\1\27\1\1\2\30\1\31"+ + "\1\30\1\32\1\33\1\22\1\34\1\35\1\32\1\36"+ + "\1\22\1\15\1\3\1\37\1\40\1\22\1\3\1\41"+ + "\1\14\1\22\1\3\1\14\1\0\1\42\2\0\2\43"+ + "\2\0\5\43\1\0\1\44\1\45\1\43\2\46\4\43"+ + "\1\47\1\43\2\46\5\43\2\46\1\50\3\43\1\51"+ + "\2\46\1\43\1\51\1\43\2\46\2\43\2\46\1\52"+ + "\27\46"; private static int [] zzUnpackAction() { - int [] result = new int[142]; + int [] result = new int[143]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -344,24 +345,24 @@ class _JavaDocLexer implements FlexLexer { "\0\0\0\53\0\126\0\201\0\254\0\327\0\u0102\0\u012d"+ "\0\u0158\0\u0183\0\u01ae\0\u01d9\0\u0204\0\u022f\0\u025a\0\u0285"+ "\0\u02b0\0\u02db\0\u0285\0\u0306\0\u0285\0\u0285\0\u0285\0\u02b0"+ - "\0\u0331\0\u0285\0\u035c\0\u0285\0\u0387\0\u0285\0\u0285\0\u03b2"+ - "\0\u03dd\0\u0408\0\u0433\0\u045e\0\u0285\0\u0489\0\u0285\0\u0285"+ - "\0\u0285\0\u0285\0\u04b4\0\u0285\0\u04df\0\u0285\0\u050a\0\u050a"+ - "\0\u02b0\0\u0285\0\u0285\0\u0535\0\u0285\0\u02b0\0\u0560\0\u0285"+ - "\0\u0285\0\u058b\0\u05b6\0\u0285\0\u0285\0\u05e1\0\u060c\0\u0285"+ - "\0\u05e1\0\u0637\0\u0662\0\u0637\0\u02b0\0\u0285\0\u068d\0\u06b8"+ - "\0\u06e3\0\u070e\0\u0739\0\u0764\0\u078f\0\u07ba\0\u07e5\0\u0810"+ - "\0\u083b\0\u0866\0\u0285\0\u0285\0\u0891\0\u08bc\0\u08e7\0\u0912"+ - "\0\u093d\0\u0968\0\u0993\0\u0285\0\u09be\0\u09e9\0\u0a14\0\u0a3f"+ - "\0\u0a6a\0\u0a95\0\u0ac0\0\u0aeb\0\u0b16\0\u0b41\0\u078f\0\u0b6c"+ - "\0\u0b97\0\u0bc2\0\u06e3\0\u0bed\0\u0c18\0\u0c43\0\u078f\0\u0c6e"+ - "\0\u0c99\0\u0cc4\0\u0cef\0\u0d1a\0\u0d45\0\u0d70\0\u078f\0\u0d9b"+ - "\0\u0dc6\0\u0df1\0\u0e1c\0\u0e47\0\u0e72\0\u0e9d\0\u0ec8\0\u0ef3"+ - "\0\u0f1e\0\u0f49\0\u0f74\0\u0f9f\0\u0fca\0\u0ff5\0\u1020\0\u104b"+ - "\0\u1076\0\u10a1\0\u10cc\0\u10f7\0\u1122\0\u0285"; + "\0\u0285\0\u0331\0\u0285\0\u035c\0\u0285\0\u0387\0\u0285\0\u0285"+ + "\0\u03b2\0\u03dd\0\u0408\0\u0433\0\u045e\0\u0285\0\u0489\0\u0285"+ + "\0\u0285\0\u0285\0\u0285\0\u04b4\0\u0285\0\u04df\0\u0285\0\u050a"+ + "\0\u050a\0\u02b0\0\u0285\0\u0285\0\u0535\0\u0285\0\u02b0\0\u0560"+ + "\0\u0285\0\u0285\0\u058b\0\u05b6\0\u0285\0\u0285\0\u05e1\0\u060c"+ + "\0\u0285\0\u05e1\0\u0637\0\u0662\0\u0637\0\u02b0\0\u0285\0\u068d"+ + "\0\u06b8\0\u06e3\0\u070e\0\u0739\0\u0764\0\u078f\0\u07ba\0\u07e5"+ + "\0\u0810\0\u083b\0\u0866\0\u0285\0\u0285\0\u0891\0\u08bc\0\u08e7"+ + "\0\u0912\0\u093d\0\u0968\0\u0993\0\u0285\0\u09be\0\u09e9\0\u0a14"+ + "\0\u0a3f\0\u0a6a\0\u0a95\0\u0ac0\0\u0aeb\0\u0b16\0\u0b41\0\u078f"+ + "\0\u0b6c\0\u0b97\0\u0bc2\0\u06e3\0\u0bed\0\u0c18\0\u0c43\0\u078f"+ + "\0\u0c6e\0\u0c99\0\u0cc4\0\u0cef\0\u0d1a\0\u0d45\0\u0d70\0\u078f"+ + "\0\u0d9b\0\u0dc6\0\u0df1\0\u0e1c\0\u0e47\0\u0e72\0\u0e9d\0\u0ec8"+ + "\0\u0ef3\0\u0f1e\0\u0f49\0\u0f74\0\u0f9f\0\u0fca\0\u0ff5\0\u1020"+ + "\0\u104b\0\u1076\0\u10a1\0\u10cc\0\u10f7\0\u1122\0\u0285"; private static int [] zzUnpackRowMap() { - int [] result = new int[142]; + int [] result = new int[143]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -385,80 +386,80 @@ class _JavaDocLexer implements FlexLexer { private static final String ZZ_TRANS_PACKED_0 = "\14\20\1\21\3\20\1\22\32\20\1\23\2\24\1\20"+ - "\2\24\1\23\1\25\2\23\1\26\1\27\1\30\11\23"+ - "\1\31\1\32\1\33\1\34\1\35\15\23\1\36\1\37"+ - "\1\40\1\23\1\41\1\24\1\20\1\41\1\24\1\23"+ - "\1\25\2\23\1\26\1\27\1\30\12\23\1\32\1\33"+ - "\1\34\1\35\15\23\1\36\1\37\1\40\1\20\2\42"+ - "\1\20\2\42\6\20\1\21\34\20\1\37\2\20\2\43"+ - "\1\20\2\43\6\20\1\21\36\20\1\23\2\44\1\20"+ - "\2\44\1\23\1\45\1\46\1\23\1\47\1\23\1\30"+ - "\1\50\1\23\1\46\1\23\1\46\1\23\1\51\3\23"+ - "\1\46\1\23\1\46\1\23\15\46\1\23\1\37\1\23"+ - "\1\20\2\24\1\20\2\24\2\20\1\46\2\20\1\52"+ - "\1\21\1\50\1\20\1\46\1\20\1\46\5\20\1\46"+ - "\1\20\1\46\1\20\15\46\13\20\1\53\3\20\1\21"+ - "\10\20\1\54\5\20\15\53\17\20\1\21\11\20\1\55"+ - "\24\20\1\56\1\57\1\60\1\20\2\60\6\56\1\61"+ - "\33\56\1\36\1\37\2\56\1\57\1\60\1\20\2\60"+ - "\6\56\1\61\34\56\1\37\1\56\1\62\2\24\1\62"+ - "\2\24\1\63\1\62\1\64\1\65\2\62\1\66\3\62"+ - "\1\67\1\62\1\70\1\62\1\71\6\62\15\64\1\62"+ - "\1\37\1\62\1\72\1\73\1\24\1\72\2\73\42\72"+ - "\1\74\1\75\1\72\1\76\1\77\1\24\1\76\2\77"+ - "\1\100\42\76\1\101\1\76\1\102\1\103\1\24\1\102"+ - "\2\103\3\102\1\100\37\102\1\104\1\102\67\0\1\105"+ - "\3\0\1\106\46\0\1\107\3\0\1\110\33\0\2\24"+ - "\1\0\2\24\45\0\1\111\2\0\1\111\2\0\36\111"+ - "\1\112\6\111\12\0\2\23\13\0\1\23\1\0\1\23"+ - "\53\0\1\113\72\0\1\114\1\0\1\41\2\0\1\41"+ - "\47\0\2\42\1\0\2\42\46\0\2\43\1\0\2\43"+ - "\46\0\2\44\1\0\2\44\55\0\1\46\6\0\1\46"+ - "\1\0\1\46\5\0\1\46\1\0\1\46\1\0\15\46"+ - "\13\0\1\53\5\0\2\53\1\0\2\53\10\0\15\53"+ - "\3\0\1\115\2\0\1\115\2\0\26\115\1\116\3\115"+ - "\1\117\3\115\1\120\1\115\1\121\2\115\1\0\1\115"+ - "\1\0\2\60\1\0\2\60\55\0\1\64\10\0\1\64"+ - "\11\0\15\64\23\0\1\122\32\0\2\72\1\0\45\72"+ - "\2\0\2\72\1\73\1\24\1\72\2\73\42\72\2\0"+ - "\1\72\2\76\1\0\3\76\1\0\45\76\1\77\1\24"+ - "\1\76\2\77\1\0\44\76\2\102\1\0\6\102\1\0"+ - "\42\102\1\103\1\24\1\102\2\103\3\102\1\0\41\102"+ - "\14\0\1\123\56\0\1\124\32\0\1\111\2\0\1\111"+ - "\2\0\46\111\2\0\1\111\2\0\25\111\1\125\17\111"+ - "\32\0\1\126\72\0\1\127\1\115\2\0\1\115\2\0"+ - "\43\115\1\0\2\115\2\0\1\115\2\0\35\115\1\130"+ - "\5\115\1\0\2\115\2\0\1\115\2\0\31\115\1\131"+ - "\11\115\1\0\2\115\2\0\1\115\2\0\25\115\1\132"+ - "\15\115\1\0\2\115\2\0\1\115\2\0\34\115\1\133"+ - "\6\115\1\0\1\115\20\0\1\134\32\0\1\111\2\0"+ - "\1\111\2\0\37\111\1\135\5\111\32\0\1\136\72\0"+ - "\1\137\1\115\2\0\1\115\2\0\27\115\1\140\13\115"+ - "\1\0\2\115\2\0\1\115\2\0\41\115\1\141\1\115"+ - "\1\0\2\115\2\0\1\115\2\0\37\115\1\142\3\115"+ - "\1\0\2\115\2\0\1\115\2\0\31\115\1\143\11\115"+ - "\1\0\1\115\1\111\2\0\1\111\2\0\25\111\1\144"+ - "\17\111\32\0\1\145\72\0\1\146\1\115\2\0\1\115"+ - "\2\0\30\115\1\147\12\115\1\0\2\115\2\0\1\115"+ - "\2\0\30\115\1\150\12\115\1\0\2\115\2\0\1\115"+ - "\2\0\25\115\1\151\15\115\1\0\2\115\2\0\1\115"+ - "\2\0\36\115\1\152\4\115\1\0\1\115\1\111\2\0"+ - "\1\111\2\0\33\111\1\153\11\111\32\0\1\154\72\0"+ - "\1\155\1\115\2\0\1\115\2\0\37\115\1\156\3\115"+ - "\1\0\2\115\2\0\1\115\2\0\33\115\1\157\7\115"+ - "\1\0\2\115\2\0\1\115\2\0\36\115\1\160\4\115"+ - "\1\0\1\115\32\0\1\161\72\0\1\162\1\115\2\0"+ - "\1\115\2\0\25\115\1\163\15\115\1\0\2\115\2\0"+ - "\1\115\2\0\30\115\1\164\12\115\1\0\1\115\32\0"+ - "\1\165\72\0\1\166\1\115\2\0\1\115\2\0\32\115"+ - "\1\147\10\115\1\0\2\115\2\0\1\115\2\0\41\115"+ - "\1\167\1\115\1\0\1\115\32\0\1\170\72\0\1\171"+ - "\32\0\1\172\72\0\1\173\32\0\1\174\72\0\1\175"+ - "\32\0\1\176\72\0\1\177\32\0\1\200\72\0\1\201"+ - "\32\0\1\202\72\0\1\203\32\0\1\204\72\0\1\205"+ - "\32\0\1\206\72\0\1\207\32\0\1\210\72\0\1\211"+ - "\32\0\1\212\72\0\1\213\32\0\1\214\72\0\1\215"+ - "\32\0\1\216\72\0\1\216"; + "\2\24\1\23\1\25\2\23\1\26\1\27\1\30\1\31"+ + "\10\23\1\32\1\33\1\34\1\35\1\36\15\23\1\37"+ + "\1\40\1\41\1\23\1\42\1\24\1\20\1\42\1\24"+ + "\1\23\1\25\2\23\1\26\1\27\1\30\1\31\11\23"+ + "\1\33\1\34\1\35\1\36\15\23\1\37\1\40\1\41"+ + "\1\20\2\43\1\20\2\43\6\20\1\21\34\20\1\40"+ + "\2\20\2\44\1\20\2\44\6\20\1\21\36\20\1\23"+ + "\2\45\1\20\2\45\1\23\1\46\1\47\1\23\1\50"+ + "\1\23\1\30\1\51\1\23\1\47\1\23\1\47\1\23"+ + "\1\52\3\23\1\47\1\23\1\47\1\23\15\47\1\23"+ + "\1\40\1\23\1\20\2\24\1\20\2\24\2\20\1\47"+ + "\2\20\1\53\1\21\1\51\1\20\1\47\1\20\1\47"+ + "\5\20\1\47\1\20\1\47\1\20\15\47\13\20\1\54"+ + "\3\20\1\21\10\20\1\55\5\20\15\54\17\20\1\21"+ + "\11\20\1\56\24\20\1\57\1\60\1\61\1\20\2\61"+ + "\6\57\1\62\33\57\1\37\1\40\2\57\1\60\1\61"+ + "\1\20\2\61\6\57\1\62\34\57\1\40\1\57\1\63"+ + "\2\24\1\63\2\24\1\64\1\63\1\65\1\66\2\63"+ + "\1\67\3\63\1\70\1\63\1\71\1\63\1\72\6\63"+ + "\15\65\1\63\1\40\1\63\1\73\1\74\1\24\1\73"+ + "\2\74\42\73\1\75\1\76\1\73\1\77\1\100\1\24"+ + "\1\77\2\100\1\101\42\77\1\102\1\77\1\103\1\104"+ + "\1\24\1\103\2\104\3\103\1\101\37\103\1\105\1\103"+ + "\67\0\1\106\3\0\1\107\46\0\1\110\3\0\1\111"+ + "\33\0\2\24\1\0\2\24\45\0\1\112\2\0\1\112"+ + "\2\0\36\112\1\113\6\112\12\0\2\23\13\0\1\23"+ + "\1\0\1\23\53\0\1\114\72\0\1\115\1\0\1\42"+ + "\2\0\1\42\47\0\2\43\1\0\2\43\46\0\2\44"+ + "\1\0\2\44\46\0\2\45\1\0\2\45\55\0\1\47"+ + "\6\0\1\47\1\0\1\47\5\0\1\47\1\0\1\47"+ + "\1\0\15\47\13\0\1\54\5\0\2\54\1\0\2\54"+ + "\10\0\15\54\3\0\1\116\2\0\1\116\2\0\26\116"+ + "\1\117\3\116\1\120\3\116\1\121\1\116\1\122\2\116"+ + "\1\0\1\116\1\0\2\61\1\0\2\61\55\0\1\65"+ + "\10\0\1\65\11\0\15\65\23\0\1\123\32\0\2\73"+ + "\1\0\45\73\2\0\2\73\1\74\1\24\1\73\2\74"+ + "\42\73\2\0\1\73\2\77\1\0\3\77\1\0\45\77"+ + "\1\100\1\24\1\77\2\100\1\0\44\77\2\103\1\0"+ + "\6\103\1\0\42\103\1\104\1\24\1\103\2\104\3\103"+ + "\1\0\41\103\14\0\1\124\56\0\1\125\32\0\1\112"+ + "\2\0\1\112\2\0\46\112\2\0\1\112\2\0\25\112"+ + "\1\126\17\112\32\0\1\127\72\0\1\130\1\116\2\0"+ + "\1\116\2\0\43\116\1\0\2\116\2\0\1\116\2\0"+ + "\35\116\1\131\5\116\1\0\2\116\2\0\1\116\2\0"+ + "\31\116\1\132\11\116\1\0\2\116\2\0\1\116\2\0"+ + "\25\116\1\133\15\116\1\0\2\116\2\0\1\116\2\0"+ + "\34\116\1\134\6\116\1\0\1\116\20\0\1\135\32\0"+ + "\1\112\2\0\1\112\2\0\37\112\1\136\5\112\32\0"+ + "\1\137\72\0\1\140\1\116\2\0\1\116\2\0\27\116"+ + "\1\141\13\116\1\0\2\116\2\0\1\116\2\0\41\116"+ + "\1\142\1\116\1\0\2\116\2\0\1\116\2\0\37\116"+ + "\1\143\3\116\1\0\2\116\2\0\1\116\2\0\31\116"+ + "\1\144\11\116\1\0\1\116\1\112\2\0\1\112\2\0"+ + "\25\112\1\145\17\112\32\0\1\146\72\0\1\147\1\116"+ + "\2\0\1\116\2\0\30\116\1\150\12\116\1\0\2\116"+ + "\2\0\1\116\2\0\30\116\1\151\12\116\1\0\2\116"+ + "\2\0\1\116\2\0\25\116\1\152\15\116\1\0\2\116"+ + "\2\0\1\116\2\0\36\116\1\153\4\116\1\0\1\116"+ + "\1\112\2\0\1\112\2\0\33\112\1\154\11\112\32\0"+ + "\1\155\72\0\1\156\1\116\2\0\1\116\2\0\37\116"+ + "\1\157\3\116\1\0\2\116\2\0\1\116\2\0\33\116"+ + "\1\160\7\116\1\0\2\116\2\0\1\116\2\0\36\116"+ + "\1\161\4\116\1\0\1\116\32\0\1\162\72\0\1\163"+ + "\1\116\2\0\1\116\2\0\25\116\1\164\15\116\1\0"+ + "\2\116\2\0\1\116\2\0\30\116\1\165\12\116\1\0"+ + "\1\116\32\0\1\166\72\0\1\167\1\116\2\0\1\116"+ + "\2\0\32\116\1\150\10\116\1\0\2\116\2\0\1\116"+ + "\2\0\41\116\1\170\1\116\1\0\1\116\32\0\1\171"+ + "\72\0\1\172\32\0\1\173\72\0\1\174\32\0\1\175"+ + "\72\0\1\176\32\0\1\177\72\0\1\200\32\0\1\201"+ + "\72\0\1\202\32\0\1\203\72\0\1\204\32\0\1\205"+ + "\72\0\1\206\32\0\1\207\72\0\1\210\32\0\1\211"+ + "\72\0\1\212\32\0\1\213\72\0\1\214\32\0\1\215"+ + "\72\0\1\216\32\0\1\217\72\0\1\217"; private static int [] zzUnpacktrans() { int [] result = new int[4429]; @@ -499,15 +500,15 @@ class _JavaDocLexer implements FlexLexer { private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\17\0\1\11\2\1\1\11\1\1\3\11\2\1\1\11"+ - "\1\1\1\11\1\1\2\11\5\1\1\11\1\1\4\11"+ - "\1\1\1\11\1\1\1\11\3\1\2\11\1\1\1\11"+ - "\2\1\2\11\2\1\2\11\2\1\1\11\4\1\1\0"+ - "\1\11\2\0\2\1\2\0\5\1\1\0\2\11\7\1"+ - "\1\11\61\1\1\11"; + "\17\0\1\11\2\1\1\11\1\1\3\11\1\1\1\11"+ + "\1\1\1\11\1\1\1\11\1\1\2\11\5\1\1\11"+ + "\1\1\4\11\1\1\1\11\1\1\1\11\3\1\2\11"+ + "\1\1\1\11\2\1\2\11\2\1\2\11\2\1\1\11"+ + "\4\1\1\0\1\11\2\0\2\1\2\0\5\1\1\0"+ + "\2\11\7\1\1\11\61\1\1\11"; private static int [] zzUnpackAttribute() { - int [] result = new int[142]; + int [] result = new int[143]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -848,17 +849,17 @@ class _JavaDocLexer implements FlexLexer { { return myTokenTypes.badCharacter(); } // fall through - case 42: break; + case 43: break; case 2: { yybegin(COMMENT_DATA); return myTokenTypes.commentData(); } // fall through - case 43: break; + case 44: break; case 3: { return myTokenTypes.space(); } // fall through - case 44: break; + case 45: break; case 4: { yybegin(COMMENT_DATA); if(myMarkdownMode) { @@ -867,7 +868,7 @@ class _JavaDocLexer implements FlexLexer { return myTokenTypes.commentData(); } // fall through - case 45: break; + case 46: break; case 5: { yybegin(COMMENT_DATA); if(myMarkdownMode) { @@ -876,7 +877,7 @@ class _JavaDocLexer implements FlexLexer { return myTokenTypes.commentData(); } // fall through - case 46: break; + case 47: break; case 6: { yybegin(COMMENT_DATA); if(myMarkdownMode) { @@ -885,17 +886,26 @@ class _JavaDocLexer implements FlexLexer { return myTokenTypes.commentData(); } // fall through - case 47: break; + case 48: break; case 7: { yybegin(COMMENT_DATA); + if(myMarkdownMode) { + return myTokenTypes.comma(); + } + return myTokenTypes.commentData(); + } + // fall through + case 49: break; + case 8: + { yybegin(COMMENT_DATA); if(myMarkdownMode) { return myTokenTypes.leftBracket(); } return myTokenTypes.commentData(); } // fall through - case 48: break; - case 8: + case 50: break; + case 9: { yybegin(COMMENT_DATA); if(myMarkdownMode) { return myTokenTypes.rightBracket(); @@ -903,8 +913,8 @@ class _JavaDocLexer implements FlexLexer { return myTokenTypes.commentData(); } // fall through - case 49: break; - case 9: + case 51: break; + case 10: { yybegin(COMMENT_DATA); if(myMarkdownMode) { return myTokenTypes.inlineCodeFence(); @@ -912,8 +922,8 @@ class _JavaDocLexer implements FlexLexer { return myTokenTypes.commentData(); } // fall through - case 50: break; - case 10: + case 52: break; + case 11: { if (checkAhead('@')) { yybegin(INLINE_TAG_NAME); return myTokenTypes.inlineTagStart(); @@ -924,56 +934,56 @@ class _JavaDocLexer implements FlexLexer { } } // fall through - case 51: break; - case 11: + case 53: break; + case 12: { yybegin(COMMENT_DATA); return myTokenTypes.inlineTagEnd(); } // fall through - case 52: break; - case 12: + case 54: break; + case 13: { return myTokenTypes.commentData(); } // fall through - case 53: break; - case 13: + case 55: break; + case 14: { if (checkAhead('<') || checkAhead('\"')) yybegin(COMMENT_DATA); else if (checkAhead('\u007b')) yybegin(COMMENT_DATA); // lbrace - there's a error in JLex when typing lbrace directly else yybegin(DOC_TAG_VALUE); return myTokenTypes.space(); } // fall through - case 54: break; - case 14: + case 56: break; + case 15: { yybegin(DOC_TAG_VALUE); return myTokenTypes.space(); } // fall through - case 55: break; - case 15: + case 57: break; + case 16: { yybegin(COMMENT_DATA); return myTokenTypes.space(); } // fall through - case 56: break; - case 16: + case 58: break; + case 17: { return myTokenTypes.tagValueSharp(); } // fall through - case 57: break; - case 17: + case 59: break; + case 18: { return myTokenTypes.tagValueToken(); } // fall through - case 58: break; - case 18: + case 60: break; + case 19: { yybegin(DOC_TAG_VALUE_IN_PAREN); return myTokenTypes.tagValueLParen(); } // fall through - case 59: break; - case 19: + case 61: break; + case 20: { return myTokenTypes.tagValueComma(); } // fall through - case 60: break; - case 20: + case 62: break; + case 21: { if (myJdk15Enabled) { yybegin(DOC_TAG_VALUE_IN_LTGT); return myTokenTypes.tagValueLT(); @@ -984,61 +994,61 @@ class _JavaDocLexer implements FlexLexer { } } // fall through - case 61: break; - case 21: + case 63: break; + case 22: { yybegin(DOC_TAG_VALUE); return myTokenTypes.tagValueRParen(); } // fall through - case 62: break; - case 22: + case 64: break; + case 23: { yybegin(COMMENT_DATA); return myTokenTypes.tagValueGT(); } // fall through - case 63: break; - case 23: + case 65: break; + case 24: { yybegin(CODE_TAG); return myTokenTypes.commentData(); } // fall through - case 64: break; - case 24: + case 66: break; + case 25: { yybegin(CODE_TAG); return myTokenTypes.space(); } // fall through - case 65: break; - case 25: + case 67: break; + case 26: { yybegin(SNIPPET_TAG_COMMENT_DATA_UNTIL_COLON); return myTokenTypes.commentData(); } // fall through - case 66: break; - case 26: + case 68: break; + case 27: { yybegin(SNIPPET_ATTRIBUTE_VALUE_DOUBLE_QUOTES); return myTokenTypes.tagValueQuote(); } // fall through - case 67: break; - case 27: + case 69: break; + case 28: { yybegin(SNIPPET_ATTRIBUTE_VALUE_SINGLE_QUOTES); return myTokenTypes.tagValueQuote(); } // fall through - case 68: break; - case 28: + case 70: break; + case 29: { if (myMarkdownMode) { return myTokenTypes.commentData(); } return myTokenTypes.commentLeadingAsterisks(); } // fall through - case 69: break; - case 29: + case 71: break; + case 30: { yybegin(SNIPPET_TAG_BODY_DATA); return myTokenTypes.tagValueColon(); } // fall through - case 70: break; - case 30: + case 72: break; + case 31: { mySnippetBracesLevel++; return myTokenTypes.commentData(); } // fall through - case 71: break; - case 31: + case 73: break; + case 32: { if (mySnippetBracesLevel > 0) { mySnippetBracesLevel--; return myTokenTypes.commentData(); @@ -1048,26 +1058,26 @@ class _JavaDocLexer implements FlexLexer { } } // fall through - case 72: break; - case 32: + case 74: break; + case 33: { yybegin(SNIPPET_TAG_COMMENT_DATA_UNTIL_COLON); return myTokenTypes.tagValueQuote(); } // fall through - case 73: break; - case 33: + case 75: break; + case 34: { if(myMarkdownMode) { return myTokenTypes.commentData(); } return myTokenTypes.commentEnd(); } // fall through - case 74: break; - case 34: + case 76: break; + case 35: { yybegin(TAG_DOC_SPACE); return myTokenTypes.tagName(); } // fall through - case 75: break; - case 35: + case 77: break; + case 36: { if(myMarkdownMode) { return myTokenTypes.badCharacter(); } @@ -1075,8 +1085,8 @@ class _JavaDocLexer implements FlexLexer { return myTokenTypes.commentStart(); } // fall through - case 76: break; - case 36: + case 78: break; + case 37: { if(myMarkdownMode) { yybegin(COMMENT_DATA_START); return myTokenTypes.commentLeadingAsterisks(); @@ -1084,8 +1094,8 @@ class _JavaDocLexer implements FlexLexer { return myTokenTypes.badCharacter(); } // fall through - case 77: break; - case 37: + case 79: break; + case 38: { yybegin(COMMENT_DATA); if(myMarkdownMode) { return myTokenTypes.codeFence(); @@ -1093,30 +1103,30 @@ class _JavaDocLexer implements FlexLexer { return myTokenTypes.commentData(); } // fall through - case 78: break; - case 38: + case 80: break; + case 39: { if (myMarkdownMode) { return myTokenTypes.commentLeadingAsterisks(); } return myTokenTypes.commentData(); } // fall through - case 79: break; - case 39: + case 81: break; + case 40: { yybegin(CODE_TAG_SPACE); return myTokenTypes.tagName(); } // fall through - case 80: break; - case 40: + case 82: break; + case 41: { yybegin(PARAM_TAG_SPACE); return myTokenTypes.tagName(); } // fall through - case 81: break; - case 41: + case 83: break; + case 42: { yybegin(SNIPPET_TAG_COMMENT_DATA_UNTIL_COLON); return myTokenTypes.tagName(); } // fall through - case 82: break; + case 84: break; default: zzScanError(ZZ_NO_MATCH); } diff --git a/java/java-frontback-psi-impl/src/com/intellij/lang/java/lexer/JavaTypeEscapeLexer.java b/java/java-frontback-psi-impl/src/com/intellij/lang/java/lexer/JavaTypeEscapeLexer.java index eb125a9d7d4d..5102155aee10 100644 --- a/java/java-frontback-psi-impl/src/com/intellij/lang/java/lexer/JavaTypeEscapeLexer.java +++ b/java/java-frontback-psi-impl/src/com/intellij/lang/java/lexer/JavaTypeEscapeLexer.java @@ -4,6 +4,7 @@ package com.intellij.lang.java.lexer; import com.intellij.lexer.Lexer; import com.intellij.lexer.MergeFunction; import com.intellij.lexer.MergingLexerAdapterBase; +import com.intellij.psi.JavaTokenType; import com.intellij.psi.TokenType; import com.intellij.psi.tree.IElementType; @@ -29,16 +30,15 @@ public class JavaTypeEscapeLexer extends MergingLexerAdapterBase { private static class EscapeMarkdownFunction implements MergeFunction { @Override public IElementType merge(IElementType type, Lexer originalLexer) { - if(type != TokenType.BAD_CHARACTER) return type; + if (type != TokenType.BAD_CHARACTER) return type; - CharSequence tokenText = originalLexer.getTokenSequence(); - if (tokenText.length() != 1 || (tokenText.charAt(0) != '[' && tokenText.charAt(0) != ']')) { + final IElementType tokenType = originalLexer.getTokenType(); + if (tokenType != JavaTokenType.LBRACKET && tokenType != JavaTokenType.RBRACKET) { return type; } - type = originalLexer.getTokenType(); originalLexer.advance(); - return type; + return tokenType; } } } diff --git a/java/java-frontback-psi-impl/src/com/intellij/lang/java/lexer/_JavaDocLexer.flex b/java/java-frontback-psi-impl/src/com/intellij/lang/java/lexer/_JavaDocLexer.flex index 40ba91837226..fb3b692df57a 100644 --- a/java/java-frontback-psi-impl/src/com/intellij/lang/java/lexer/_JavaDocLexer.flex +++ b/java/java-frontback-psi-impl/src/com/intellij/lang/java/lexer/_JavaDocLexer.flex @@ -136,6 +136,14 @@ LEADING_TOKEN_MARKDOWN="///" (\\\() { yybegin(COMMENT_DATA); return myTokenTypes.commentData(); } (\\\)) { yybegin(COMMENT_DATA); return myTokenTypes.commentData(); } + [,] { + yybegin(COMMENT_DATA); + if(myMarkdownMode) { + return myTokenTypes.comma(); + } + return myTokenTypes.commentData(); + } + "`" { yybegin(COMMENT_DATA); if(myMarkdownMode) { diff --git a/java/java-frontback-psi-impl/src/com/intellij/lang/java/parser/BasicJavaDocParser.java b/java/java-frontback-psi-impl/src/com/intellij/lang/java/parser/BasicJavaDocParser.java index 4bf0d129fb55..1222090f9968 100644 --- a/java/java-frontback-psi-impl/src/com/intellij/lang/java/parser/BasicJavaDocParser.java +++ b/java/java-frontback-psi-impl/src/com/intellij/lang/java/parser/BasicJavaDocParser.java @@ -333,14 +333,19 @@ public final class BasicJavaDocParser { builder.advanceLexer(); builder.remapCurrentToken(JavaDocTokenType.DOC_TAG_VALUE_TOKEN); - // A method only has parenthesis and a single comment data token + // A method only has parenthesis and a few comment data, separated by commas builder.advanceLexer(); if (builder.getTokenType() == JavaDocTokenType.DOC_LPAREN) { builder.advanceLexer(); PsiBuilder.Marker subValue = builder.mark(); - if (getTokenType(builder) == JavaDocTokenType.DOC_COMMENT_DATA) { - builder.remapCurrentToken(javaDocElementTypeContainer.DOC_TYPE_HOLDER); + while(!builder.eof()) { + IElementType type = getTokenType(builder); + if (type == JavaDocTokenType.DOC_COMMENT_DATA) { + builder.remapCurrentToken(javaDocElementTypeContainer.DOC_TYPE_HOLDER); + } else if (type != JavaDocTokenType.DOC_COMMA) { + break; + } builder.advanceLexer(); } diff --git a/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java b/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java index 20c1ea2dd5be..cc5847b642a9 100644 --- a/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java +++ b/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java @@ -37,7 +37,10 @@ import com.intellij.psi.util.PsiUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import static com.intellij.openapi.util.Pair.pair; @@ -2017,7 +2020,7 @@ public final class JavaSpacePropertyProcessor extends JavaElementVisitor { Boolean result = ourTokenStickingMatrix.get(key); if (result == null) { - Lexer lexer = JavaParserDefinition.createLexer(LanguageLevel.HIGHEST); + Lexer lexer = JavaParserDefinition.createLexerWithMarkdownEscape(LanguageLevel.HIGHEST); String text1 = unescapeTokenText(token1, type1), text2 = unescapeTokenText(token2, type2); lexer.start(text1 + text2); IElementType reparsedType1 = lexer.getTokenType(); diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocTagImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocTagImpl.java index dfb9199655c7..08209c7716bc 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocTagImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocTagImpl.java @@ -23,7 +23,7 @@ public class PsiDocTagImpl extends CompositePsiElement implements PsiDocTag, Con DOC_TAG_VALUE_ELEMENT, DOC_METHOD_OR_FIELD_REF, DOC_PARAMETER_REF); private static final TokenSet VALUE_BIT_SET = TokenSet.orSet(TAG_VALUE_BIT_SET, TokenSet.create( DOC_TAG_VALUE_TOKEN, JAVA_CODE_REFERENCE, DOC_COMMENT_DATA, DOC_INLINE_TAG, DOC_REFERENCE_HOLDER, DOC_SHARP, DOC_LBRACKET, DOC_RBRACKET, - DOC_LPAREN, DOC_RPAREN, DOC_CODE_FENCE, DOC_INLINE_CODE_FENCE, DOC_MARKDOWN_CODE_BLOCK)); + DOC_LPAREN, DOC_RPAREN, DOC_CODE_FENCE, DOC_INLINE_CODE_FENCE, DOC_MARKDOWN_CODE_BLOCK, DOC_COMMA)); public PsiDocTagImpl() { super(DOC_TAG); diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiInlineDocTagImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiInlineDocTagImpl.java index c6cbad428845..346e48ae6288 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiInlineDocTagImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiInlineDocTagImpl.java @@ -25,7 +25,7 @@ public class PsiInlineDocTagImpl extends CompositePsiElement implements PsiInlin static final TokenSet VALUE_BIT_SET = TokenSet.orSet(TAG_VALUE_BIT_SET, TokenSet.create( JAVA_CODE_REFERENCE, DOC_TAG_VALUE_TOKEN, WHITE_SPACE, DOC_COMMENT_DATA, DOC_INLINE_TAG, DOC_REFERENCE_HOLDER, DOC_COMMENT_BAD_CHARACTER, DOC_SNIPPET_TAG_VALUE, - DOC_SHARP, DOC_LBRACKET, DOC_RBRACKET, DOC_LPAREN, DOC_RPAREN, DOC_CODE_FENCE, DOC_INLINE_CODE_FENCE, DOC_MARKDOWN_CODE_BLOCK)); + DOC_SHARP, DOC_LBRACKET, DOC_RBRACKET, DOC_LPAREN, DOC_RPAREN, DOC_CODE_FENCE, DOC_INLINE_CODE_FENCE, DOC_MARKDOWN_CODE_BLOCK, DOC_COMMA)); public PsiInlineDocTagImpl() { super(DOC_INLINE_TAG); diff --git a/java/java-tests/testData/psi/parser-full/javadocParsing/CodeBlockMarkdown02.txt b/java/java-tests/testData/psi/parser-full/javadocParsing/CodeBlockMarkdown02.txt index d95aca04e884..12d0221e8c75 100644 --- a/java/java-tests/testData/psi/parser-full/javadocParsing/CodeBlockMarkdown02.txt +++ b/java/java-tests/testData/psi/parser-full/javadocParsing/CodeBlockMarkdown02.txt @@ -10,7 +10,9 @@ PsiJavaFile:CodeBlockMarkdown02.java PsiDocToken:DOC_COMMENT_DATA('~~~') PsiWhiteSpace('\n') PsiDocToken:DOC_COMMENT_LEADING_ASTERISKS('///') - PsiDocToken:DOC_COMMENT_DATA(' Inside squigly code block, but the backtick codeblock has priority') + PsiDocToken:DOC_COMMENT_DATA(' Inside squigly code block') + PsiDocToken:DOC_COMMENT_DATA(',') + PsiDocToken:DOC_COMMENT_DATA(' but the backtick codeblock has priority') PsiWhiteSpace('\n') PsiDocToken:DOC_COMMENT_LEADING_ASTERISKS('///') PsiDocToken:DOC_COMMENT_DATA(' ') diff --git a/java/java-tests/testData/psi/parser-full/javadocParsing/CodeBlockMarkdown02_node.txt b/java/java-tests/testData/psi/parser-full/javadocParsing/CodeBlockMarkdown02_node.txt index 7189822bb460..668d05cb7982 100644 --- a/java/java-tests/testData/psi/parser-full/javadocParsing/CodeBlockMarkdown02_node.txt +++ b/java/java-tests/testData/psi/parser-full/javadocParsing/CodeBlockMarkdown02_node.txt @@ -11,6 +11,8 @@ java.FILE WHITE_SPACE DOC_COMMENT_LEADING_ASTERISKS DOC_COMMENT_DATA + DOC_COMMENT_DATA + DOC_COMMENT_DATA WHITE_SPACE DOC_COMMENT_LEADING_ASTERISKS DOC_COMMENT_DATA diff --git a/java/java-tests/testData/psi/parser-full/javadocParsing/CodeBlockMarkdown05.txt b/java/java-tests/testData/psi/parser-full/javadocParsing/CodeBlockMarkdown05.txt index 029fdf1960e7..24ed7fb6012b 100644 --- a/java/java-tests/testData/psi/parser-full/javadocParsing/CodeBlockMarkdown05.txt +++ b/java/java-tests/testData/psi/parser-full/javadocParsing/CodeBlockMarkdown05.txt @@ -6,7 +6,9 @@ PsiJavaFile:CodeBlockMarkdown05.java PsiDocToken:DOC_INLINE_CODE_FENCE('`') PsiWhiteSpace('\n') PsiDocToken:DOC_COMMENT_LEADING_ASTERISKS('///') - PsiDocToken:DOC_COMMENT_DATA(' According to markdown rules, this is inline') + PsiDocToken:DOC_COMMENT_DATA(' According to markdown rules') + PsiDocToken:DOC_COMMENT_DATA(',') + PsiDocToken:DOC_COMMENT_DATA(' this is inline') PsiWhiteSpace('\n') PsiDocToken:DOC_COMMENT_LEADING_ASTERISKS('///') PsiDocToken:DOC_COMMENT_DATA(' ') diff --git a/java/java-tests/testData/psi/parser-full/javadocParsing/CodeBlockMarkdown05_node.txt b/java/java-tests/testData/psi/parser-full/javadocParsing/CodeBlockMarkdown05_node.txt index 9e059a3be54a..55ccb0f700bd 100644 --- a/java/java-tests/testData/psi/parser-full/javadocParsing/CodeBlockMarkdown05_node.txt +++ b/java/java-tests/testData/psi/parser-full/javadocParsing/CodeBlockMarkdown05_node.txt @@ -7,6 +7,8 @@ java.FILE WHITE_SPACE DOC_COMMENT_LEADING_ASTERISKS DOC_COMMENT_DATA + DOC_COMMENT_DATA + DOC_COMMENT_DATA WHITE_SPACE DOC_COMMENT_LEADING_ASTERISKS DOC_COMMENT_DATA diff --git a/java/java-tests/testData/psi/parser-full/javadocParsing/ReferenceLinkMarkdown11.java b/java/java-tests/testData/psi/parser-full/javadocParsing/ReferenceLinkMarkdown11.java index d023c07b8d00..6817af7f0992 100644 --- a/java/java-tests/testData/psi/parser-full/javadocParsing/ReferenceLinkMarkdown11.java +++ b/java/java-tests/testData/psi/parser-full/javadocParsing/ReferenceLinkMarkdown11.java @@ -1,2 +1,2 @@ -/// [java.lang.String#copyValueOf(char\[\])] +/// [java.lang.String#copyValueOf(char\[\], int, int)] class C{} \ No newline at end of file diff --git a/java/java-tests/testData/psi/parser-full/javadocParsing/ReferenceLinkMarkdown11.txt b/java/java-tests/testData/psi/parser-full/javadocParsing/ReferenceLinkMarkdown11.txt index d50adb983518..8e3838333b3c 100644 --- a/java/java-tests/testData/psi/parser-full/javadocParsing/ReferenceLinkMarkdown11.txt +++ b/java/java-tests/testData/psi/parser-full/javadocParsing/ReferenceLinkMarkdown11.txt @@ -33,6 +33,16 @@ PsiJavaFile:ReferenceLinkMarkdown11.java PsiKeyword:char('char') PsiJavaToken:LBRACKET('\[') PsiJavaToken:RBRACKET('\]') + PsiDocToken:DOC_COMMA(',') + PsiElement(DOC_TYPE_HOLDER) + PsiWhiteSpace(' ') + PsiTypeElement:int + PsiKeyword:int('int') + PsiDocToken:DOC_COMMA(',') + PsiElement(DOC_TYPE_HOLDER) + PsiWhiteSpace(' ') + PsiTypeElement:int + PsiKeyword:int('int') PsiDocToken:DOC_RPAREN(')') PsiDocToken:DOC_RBRACKET(']') PsiWhiteSpace('\n') diff --git a/java/java-tests/testData/psi/parser-full/javadocParsing/ReferenceLinkMarkdown11_node.txt b/java/java-tests/testData/psi/parser-full/javadocParsing/ReferenceLinkMarkdown11_node.txt index c76446f52662..62d844e6f0da 100644 --- a/java/java-tests/testData/psi/parser-full/javadocParsing/ReferenceLinkMarkdown11_node.txt +++ b/java/java-tests/testData/psi/parser-full/javadocParsing/ReferenceLinkMarkdown11_node.txt @@ -33,6 +33,16 @@ java.FILE CHAR_KEYWORD LBRACKET RBRACKET + DOC_COMMA + DOC_TYPE_HOLDER + WHITE_SPACE + TYPE + INT_KEYWORD + DOC_COMMA + DOC_TYPE_HOLDER + WHITE_SPACE + TYPE + INT_KEYWORD DOC_RPAREN DOC_RBRACKET WHITE_SPACE diff --git a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols01Markdown.txt b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols01Markdown.txt index 21d1817a88c6..3e4d51e75bb3 100644 --- a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols01Markdown.txt +++ b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols01Markdown.txt @@ -18,7 +18,9 @@ PsiJavaFile:Symbols01Markdown.java PsiDocToken:DOC_COMMENT_DATA('{') PsiDocToken:DOC_LBRACKET('[') PsiDocToken:DOC_RBRACKET(']') - PsiDocToken:DOC_COMMENT_DATA('":;'?><,./') + PsiDocToken:DOC_COMMENT_DATA('":;'?><') + PsiDocToken:DOC_COMMA(',') + PsiDocToken:DOC_COMMENT_DATA('./') PsiWhiteSpace('\n') PsiDocToken:DOC_COMMENT_LEADING_ASTERISKS('///') PsiWhiteSpace('\n\n') diff --git a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols01Markdown_node.txt b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols01Markdown_node.txt index 0f8cd4863c44..c41c3dbb668a 100644 --- a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols01Markdown_node.txt +++ b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols01Markdown_node.txt @@ -19,6 +19,8 @@ java.FILE DOC_LBRACKET DOC_RBRACKET DOC_COMMENT_DATA + DOC_COMMA + DOC_COMMENT_DATA WHITE_SPACE DOC_COMMENT_LEADING_ASTERISKS WHITE_SPACE diff --git a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols02Markdown.txt b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols02Markdown.txt index 668db6909a18..618c7ee8ff4b 100644 --- a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols02Markdown.txt +++ b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols02Markdown.txt @@ -28,7 +28,9 @@ PsiJavaFile:Symbols02Markdown.java PsiDocToken:DOC_COMMENT_DATA('{') PsiDocToken:DOC_LBRACKET('[') PsiDocToken:DOC_RBRACKET(']') - PsiDocToken:DOC_COMMENT_DATA('":;'?><,./') + PsiDocToken:DOC_COMMENT_DATA('":;'?><') + PsiDocToken:DOC_COMMA(',') + PsiDocToken:DOC_COMMENT_DATA('./') PsiWhiteSpace('\n') PsiDocToken:DOC_COMMENT_LEADING_ASTERISKS('///') PsiWhiteSpace('\n\n') diff --git a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols02Markdown_node.txt b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols02Markdown_node.txt index 721a06a48d18..255c30c29ef4 100644 --- a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols02Markdown_node.txt +++ b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols02Markdown_node.txt @@ -29,6 +29,8 @@ java.FILE DOC_LBRACKET DOC_RBRACKET DOC_COMMENT_DATA + DOC_COMMA + DOC_COMMENT_DATA WHITE_SPACE DOC_COMMENT_LEADING_ASTERISKS WHITE_SPACE diff --git a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols03Markdown.txt b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols03Markdown.txt index 8ba70a064043..f2b5e9962057 100644 --- a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols03Markdown.txt +++ b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols03Markdown.txt @@ -29,7 +29,9 @@ PsiJavaFile:Symbols03Markdown.java PsiDocToken:DOC_COMMENT_DATA('{') PsiDocToken:DOC_LBRACKET('[') PsiDocToken:DOC_RBRACKET(']') - PsiDocToken:DOC_COMMENT_DATA('":;'?><,./') + PsiDocToken:DOC_COMMENT_DATA('":;'?><') + PsiDocToken:DOC_COMMA(',') + PsiDocToken:DOC_COMMENT_DATA('./') PsiWhiteSpace('\n') PsiDocToken:DOC_COMMENT_LEADING_ASTERISKS('///') PsiWhiteSpace('\n\n') diff --git a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols03Markdown_node.txt b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols03Markdown_node.txt index fc842c312c19..7ff9e7b5f144 100644 --- a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols03Markdown_node.txt +++ b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols03Markdown_node.txt @@ -30,6 +30,8 @@ java.FILE DOC_LBRACKET DOC_RBRACKET DOC_COMMENT_DATA + DOC_COMMA + DOC_COMMENT_DATA WHITE_SPACE DOC_COMMENT_LEADING_ASTERISKS WHITE_SPACE diff --git a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols04Markdown.txt b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols04Markdown.txt index 772aabde32b8..6265256cf6c1 100644 --- a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols04Markdown.txt +++ b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols04Markdown.txt @@ -29,7 +29,9 @@ PsiJavaFile:Symbols04Markdown.java PsiDocToken:DOC_COMMENT_DATA('}') PsiDocToken:DOC_LBRACKET('[') PsiDocToken:DOC_RBRACKET(']') - PsiDocToken:DOC_COMMENT_DATA('":;'?><,./') + PsiDocToken:DOC_COMMENT_DATA('":;'?><') + PsiDocToken:DOC_COMMA(',') + PsiDocToken:DOC_COMMENT_DATA('./') PsiWhiteSpace('\n') PsiDocToken:DOC_COMMENT_LEADING_ASTERISKS('///') PsiWhiteSpace('\n\n') diff --git a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols04Markdown_node.txt b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols04Markdown_node.txt index 8d2c1d3597a0..23fecaa9ef16 100644 --- a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols04Markdown_node.txt +++ b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols04Markdown_node.txt @@ -30,6 +30,8 @@ java.FILE DOC_LBRACKET DOC_RBRACKET DOC_COMMENT_DATA + DOC_COMMA + DOC_COMMENT_DATA WHITE_SPACE DOC_COMMENT_LEADING_ASTERISKS WHITE_SPACE diff --git a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols05Markdown.txt b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols05Markdown.txt index e18d17fbe5ae..70da7a7c9126 100644 --- a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols05Markdown.txt +++ b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols05Markdown.txt @@ -29,7 +29,9 @@ PsiJavaFile:Symbols05Markdown.java PsiDocToken:DOC_COMMENT_DATA('}') PsiDocToken:DOC_LBRACKET('[') PsiDocToken:DOC_RBRACKET(']') - PsiDocToken:DOC_COMMENT_DATA('":;'?><,./') + PsiDocToken:DOC_COMMENT_DATA('":;'?><') + PsiDocToken:DOC_COMMA(',') + PsiDocToken:DOC_COMMENT_DATA('./') PsiDocToken:DOC_INLINE_TAG_END('}') PsiDocToken:DOC_COMMENT_DATA(' Yes!') PsiWhiteSpace('\n') diff --git a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols05Markdown_node.txt b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols05Markdown_node.txt index a31dca767e41..f0fd99c8b757 100644 --- a/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols05Markdown_node.txt +++ b/java/java-tests/testData/psi/parser-full/javadocParsing/Symbols05Markdown_node.txt @@ -30,6 +30,8 @@ java.FILE DOC_LBRACKET DOC_RBRACKET DOC_COMMENT_DATA + DOC_COMMA + DOC_COMMENT_DATA DOC_INLINE_TAG_END DOC_COMMENT_DATA WHITE_SPACE diff --git a/java/java-tests/testSrc/com/intellij/java/psi/formatter/java/JavadocFormatterTest.kt b/java/java-tests/testSrc/com/intellij/java/psi/formatter/java/JavadocFormatterTest.kt index 558cba7ffe18..a9ef44c34b22 100644 --- a/java/java-tests/testSrc/com/intellij/java/psi/formatter/java/JavadocFormatterTest.kt +++ b/java/java-tests/testSrc/com/intellij/java/psi/formatter/java/JavadocFormatterTest.kt @@ -1932,4 +1932,19 @@ public class Test { } """.trimIndent()) } + + fun testBracketsInReferenceLink(){ + doTextTest(""" + /// [String#copyValueOf(char \[ \], int, int)] + public class Main { + void test(char[] foo) {} + } + """.trimIndent(), """ + /// [String#copyValueOf(char\[\], int, int)] + public class Main { + void test(char[] foo) { + } + } + """.trimIndent()) + } } \ No newline at end of file