mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
fix(JavaDoc): Inline code block support
GitOrigin-RevId: ac902221d848139b9a92559b0f61558cfb259319
This commit is contained in:
committed by
intellij-monorepo-bot
parent
2bd10fba65
commit
d03ded346a
@@ -26,4 +26,7 @@ public interface JavaDocCommentTokenTypes extends DocCommentTokenTypes {
|
||||
default IElementType sharp() {
|
||||
return commentData();
|
||||
}
|
||||
default IElementType inlineCodeFence() {
|
||||
return commentData();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -135,4 +135,9 @@ public final class JavaDocTokenTypes implements JavaDocCommentTokenTypes {
|
||||
public IElementType sharp() {
|
||||
return JavaDocTokenType.DOC_SHARP;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IElementType inlineCodeFence() {
|
||||
return JavaDocTokenType.DOC_INLINE_CODE_FENCE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ public interface JavaDocTokenType {
|
||||
IElementType DOC_LPAREN = new IJavaDocElementType("DOC_LPAREN");
|
||||
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_COMMENT_BAD_CHARACTER = new IJavaDocElementType("DOC_COMMENT_BAD_CHARACTER");
|
||||
|
||||
@@ -44,6 +45,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_SHARP, DOC_INLINE_CODE_FENCE
|
||||
);
|
||||
}
|
||||
+233
-213
@@ -57,21 +57,22 @@ class _JavaDocLexer implements FlexLexer {
|
||||
"\1\u1000\1\u0100\1\u1100\1\u1200\1\u1300\1\u0100\1\u1400\1\u1500"+
|
||||
"\1\u1600\1\u1700\1\u1800\1\u1900\1\u1a00\1\u1b00\1\u0100\1\u1c00"+
|
||||
"\1\u1d00\1\u1e00\12\u1f00\1\u2000\1\u2100\1\u2200\1\u1f00\1\u2300"+
|
||||
"\1\u2400\2\u1f00\31\u0100\1\u1b00\121\u0100\1\u2500\4\u0100\1\u2600"+
|
||||
"\1\u0100\1\u2700\1\u2800\1\u2900\1\u2a00\1\u2b00\1\u2c00\53\u0100"+
|
||||
"\1\u2d00\10\u2e00\31\u1f00\1\u0100\1\u2f00\1\u3000\1\u0100\1\u3100"+
|
||||
"\1\u3200\1\u3300\1\u3400\1\u3500\1\u3600\1\u3700\1\u3800\1\u3900"+
|
||||
"\1\u0100\1\u3a00\1\u3b00\1\u3c00\1\u3d00\1\u3e00\1\u3f00\1\u4000"+
|
||||
"\1\u4100\1\u4200\1\u4300\1\u4400\1\u4500\1\u4600\1\u4700\1\u4800"+
|
||||
"\1\u4900\1\u4a00\1\u4b00\1\u4c00\1\u4d00\1\u1f00\1\u4e00\1\u4f00"+
|
||||
"\1\u5000\1\u5100\3\u0100\1\u5200\1\u5300\1\u5400\12\u1f00\4\u0100"+
|
||||
"\1\u5500\17\u1f00\2\u0100\1\u5600\41\u1f00\2\u0100\1\u5700\1\u5800"+
|
||||
"\2\u1f00\1\u5900\1\u5a00\27\u0100\1\u5b00\4\u0100\1\u5c00\1\u5d00"+
|
||||
"\42\u1f00\1\u0100\1\u5e00\1\u5f00\11\u1f00\1\u6000\27\u1f00\1\u6100"+
|
||||
"\1\u6200\1\u6300\1\u6400\11\u1f00\1\u6500\1\u6600\5\u1f00\1\u6700"+
|
||||
"\1\u6800\2\u1f00\1\u6900\1\u1f00\1\u6a00\21\u1f00\246\u0100\1\u6b00"+
|
||||
"\20\u0100\1\u6c00\1\u6d00\25\u0100\1\u6e00\34\u0100\1\u6f00\14\u1f00"+
|
||||
"\2\u0100\1\u7000\5\u1f00\23\u0100\1\u7100\u0dec\u1f00";
|
||||
"\1\u2400\2\u1f00\31\u0100\1\u1b00\126\u0100\1\u2500\1\u0100\1\u2600"+
|
||||
"\1\u2700\1\u2800\1\u2900\1\u2a00\1\u2b00\53\u0100\1\u2c00\10\u2d00"+
|
||||
"\31\u1f00\1\u0100\1\u2e00\1\u2f00\1\u0100\1\u3000\1\u3100\1\u3200"+
|
||||
"\1\u3300\1\u3400\1\u3500\1\u3600\1\u3700\1\u3800\1\u0100\1\u3900"+
|
||||
"\1\u3a00\1\u3b00\1\u3c00\1\u3d00\1\u3e00\1\u3f00\1\u4000\1\u4100"+
|
||||
"\1\u4200\1\u4300\1\u4400\1\u4500\1\u4600\1\u4700\1\u4800\1\u4900"+
|
||||
"\1\u4a00\1\u4b00\1\u4c00\1\u1f00\1\u4d00\1\u4e00\1\u4f00\1\u5000"+
|
||||
"\3\u0100\1\u5100\1\u5200\1\u5300\11\u1f00\1\u5400\4\u0100\1\u5500"+
|
||||
"\17\u1f00\2\u0100\1\u5600\41\u1f00\2\u0100\1\u5700\1\u5800\2\u1f00"+
|
||||
"\1\u5900\1\u5a00\27\u0100\1\u5b00\4\u0100\1\u5c00\1\u5d00\41\u1f00"+
|
||||
"\1\u5e00\1\u0100\1\u5f00\1\u6000\11\u1f00\1\u6100\27\u1f00\1\u6200"+
|
||||
"\1\u6300\1\u6400\1\u6500\7\u1f00\1\u6600\1\u6700\1\u6800\1\u6900"+
|
||||
"\1\u1f00\1\u6a00\2\u1f00\1\u6b00\1\u6c00\1\u6d00\2\u1f00\1\u6e00"+
|
||||
"\1\u1f00\1\u6f00\21\u1f00\246\u0100\1\u7000\20\u0100\1\u7100\1\u7200"+
|
||||
"\25\u0100\1\u7300\34\u0100\1\u7400\14\u1f00\2\u0100\1\u7500\5\u1f00"+
|
||||
"\23\u0100\1\u7600\17\u0100\1\u7700\u0ddc\u1f00";
|
||||
|
||||
private static int [] zzUnpackcmap_top() {
|
||||
int [] result = new int[4352];
|
||||
@@ -119,74 +120,74 @@ class _JavaDocLexer implements FlexLexer {
|
||||
"\1\10\1\0\36\10\35\0\131\10\13\0\1\10\30\0"+
|
||||
"\41\10\11\0\2\10\4\0\1\10\3\0\30\10\4\0"+
|
||||
"\1\10\11\0\1\10\3\0\1\10\27\0\31\10\7\0"+
|
||||
"\13\10\65\0\25\10\1\0\22\10\74\0\66\10\3\0"+
|
||||
"\1\10\22\0\1\10\7\0\12\10\17\0\20\10\4\0"+
|
||||
"\10\10\2\0\2\10\2\0\26\10\1\0\7\10\1\0"+
|
||||
"\1\10\3\0\4\10\3\0\1\10\20\0\1\10\15\0"+
|
||||
"\2\10\1\0\3\10\16\0\4\10\7\0\2\10\10\0"+
|
||||
"\6\10\4\0\2\10\2\0\26\10\1\0\7\10\1\0"+
|
||||
"\2\10\1\0\2\10\1\0\2\10\37\0\4\10\1\0"+
|
||||
"\1\10\23\0\3\10\20\0\11\10\1\0\3\10\1\0"+
|
||||
"\13\10\5\0\30\10\1\0\6\10\21\0\52\10\72\0"+
|
||||
"\66\10\3\0\1\10\22\0\1\10\7\0\12\10\17\0"+
|
||||
"\20\10\4\0\10\10\2\0\2\10\2\0\26\10\1\0"+
|
||||
"\7\10\1\0\1\10\3\0\4\10\3\0\1\10\20\0"+
|
||||
"\1\10\15\0\2\10\1\0\3\10\16\0\4\10\7\0"+
|
||||
"\2\10\10\0\6\10\4\0\2\10\2\0\26\10\1\0"+
|
||||
"\7\10\1\0\2\10\1\0\2\10\1\0\2\10\37\0"+
|
||||
"\4\10\1\0\1\10\23\0\3\10\20\0\11\10\1\0"+
|
||||
"\3\10\1\0\26\10\1\0\7\10\1\0\2\10\1\0"+
|
||||
"\5\10\3\0\1\10\22\0\1\10\17\0\2\10\17\0"+
|
||||
"\1\10\7\0\1\10\13\0\10\10\2\0\2\10\2\0"+
|
||||
"\26\10\1\0\7\10\1\0\2\10\1\0\5\10\3\0"+
|
||||
"\1\10\22\0\1\10\17\0\2\10\17\0\1\10\7\0"+
|
||||
"\1\10\13\0\10\10\2\0\2\10\2\0\26\10\1\0"+
|
||||
"\7\10\1\0\2\10\1\0\5\10\3\0\1\10\36\0"+
|
||||
"\2\10\1\0\3\10\17\0\1\10\21\0\1\10\1\0"+
|
||||
"\6\10\3\0\3\10\1\0\4\10\3\0\2\10\1\0"+
|
||||
"\1\10\1\0\2\10\3\0\2\10\3\0\3\10\3\0"+
|
||||
"\14\10\26\0\1\10\50\0\1\10\13\0\10\10\1\0"+
|
||||
"\3\10\1\0\27\10\1\0\20\10\3\0\1\10\32\0"+
|
||||
"\3\10\5\0\2\10\36\0\1\10\4\0\10\10\1\0"+
|
||||
"\3\10\1\0\27\10\1\0\12\10\1\0\5\10\3\0"+
|
||||
"\1\10\40\0\1\10\1\0\2\10\17\0\2\10\21\0"+
|
||||
"\11\10\1\0\3\10\1\0\51\10\2\0\1\10\20\0"+
|
||||
"\1\10\5\0\3\10\10\0\3\10\30\0\6\10\5\0"+
|
||||
"\22\10\3\0\30\10\1\0\11\10\1\0\1\10\2\0"+
|
||||
"\7\10\72\0\60\10\1\0\2\10\13\0\10\10\72\0"+
|
||||
"\2\10\1\0\1\10\1\0\5\10\1\0\30\10\1\0"+
|
||||
"\1\10\1\0\12\10\1\0\2\10\11\0\1\10\2\0"+
|
||||
"\5\10\1\0\1\10\25\0\4\10\40\0\1\10\77\0"+
|
||||
"\10\10\1\0\44\10\33\0\5\10\163\0\53\10\24\0"+
|
||||
"\1\10\20\0\6\10\4\0\4\10\3\0\1\10\3\0"+
|
||||
"\2\10\7\0\3\10\4\0\15\10\14\0\1\10\21\0"+
|
||||
"\46\10\1\0\1\10\5\0\1\10\2\0\53\10\1\0"+
|
||||
"\115\10\1\0\4\10\2\0\7\10\1\0\1\10\1\0"+
|
||||
"\4\10\2\0\51\10\1\0\4\10\2\0\41\10\1\0"+
|
||||
"\4\10\2\0\7\10\1\0\1\10\1\0\4\10\2\0"+
|
||||
"\17\10\1\0\71\10\1\0\4\10\2\0\103\10\45\0"+
|
||||
"\20\10\20\0\126\10\2\0\6\10\3\0\u016c\10\2\0"+
|
||||
"\21\10\1\0\32\10\5\0\113\10\3\0\13\10\7\0"+
|
||||
"\15\10\1\0\4\10\16\0\22\10\16\0\22\10\16\0"+
|
||||
"\15\10\1\0\3\10\17\0\64\10\43\0\1\10\3\0"+
|
||||
"\2\10\103\0\131\10\7\0\5\10\2\0\42\10\1\0"+
|
||||
"\1\10\5\0\106\10\12\0\37\10\61\0\36\10\2\0"+
|
||||
"\5\10\13\0\54\10\4\0\32\10\66\0\27\10\11\0"+
|
||||
"\65\10\122\0\1\10\135\0\57\10\21\0\7\10\67\0"+
|
||||
"\36\10\15\0\2\10\12\0\54\10\32\0\44\10\51\0"+
|
||||
"\3\10\12\0\44\10\2\0\11\10\7\0\53\10\2\0"+
|
||||
"\3\10\51\0\4\10\1\0\6\10\1\0\2\10\3\0"+
|
||||
"\1\10\5\0\300\10\100\0\26\10\2\0\6\10\2\0"+
|
||||
"\46\10\2\0\6\10\2\0\10\10\1\0\1\10\1\0"+
|
||||
"\1\10\1\0\1\10\1\0\37\10\2\0\65\10\1\0"+
|
||||
"\7\10\1\0\1\10\3\0\3\10\1\0\7\10\3\0"+
|
||||
"\4\10\2\0\6\10\4\0\15\10\5\0\3\10\1\0"+
|
||||
"\7\10\53\0\2\3\25\0\2\10\23\0\1\10\34\0"+
|
||||
"\1\10\15\0\1\10\20\0\15\10\3\0\40\10\102\0"+
|
||||
"\1\10\4\0\1\10\2\0\12\10\1\0\1\10\3\0"+
|
||||
"\5\10\6\0\1\10\1\0\1\10\1\0\1\10\1\0"+
|
||||
"\4\10\1\0\13\10\2\0\4\10\5\0\5\10\4\0"+
|
||||
"\1\10\21\0\51\10\u0177\0\57\10\1\0\57\10\1\0"+
|
||||
"\205\10\6\0\4\10\3\0\2\10\14\0\46\10\1\0"+
|
||||
"\1\10\5\0\1\10\2\0\70\10\7\0\1\10\20\0"+
|
||||
"\27\10\11\0\7\10\1\0\7\10\1\0\7\10\1\0"+
|
||||
"\1\10\36\0\2\10\1\0\3\10\17\0\1\10\21\0"+
|
||||
"\1\10\1\0\6\10\3\0\3\10\1\0\4\10\3\0"+
|
||||
"\2\10\1\0\1\10\1\0\2\10\3\0\2\10\3\0"+
|
||||
"\3\10\3\0\14\10\26\0\1\10\50\0\1\10\13\0"+
|
||||
"\10\10\1\0\3\10\1\0\27\10\1\0\20\10\3\0"+
|
||||
"\1\10\32\0\3\10\2\0\1\10\2\0\2\10\36\0"+
|
||||
"\1\10\4\0\10\10\1\0\3\10\1\0\27\10\1\0"+
|
||||
"\12\10\1\0\5\10\3\0\1\10\37\0\2\10\1\0"+
|
||||
"\2\10\17\0\2\10\21\0\11\10\1\0\3\10\1\0"+
|
||||
"\51\10\2\0\1\10\20\0\1\10\5\0\3\10\10\0"+
|
||||
"\3\10\30\0\6\10\5\0\22\10\3\0\30\10\1\0"+
|
||||
"\11\10\1\0\1\10\2\0\7\10\72\0\60\10\1\0"+
|
||||
"\2\10\13\0\10\10\72\0\2\10\1\0\1\10\1\0"+
|
||||
"\5\10\1\0\30\10\1\0\1\10\1\0\12\10\1\0"+
|
||||
"\2\10\11\0\1\10\2\0\5\10\1\0\1\10\25\0"+
|
||||
"\4\10\40\0\1\10\77\0\10\10\1\0\44\10\33\0"+
|
||||
"\5\10\163\0\53\10\24\0\1\10\20\0\6\10\4\0"+
|
||||
"\4\10\3\0\1\10\3\0\2\10\7\0\3\10\4\0"+
|
||||
"\15\10\14\0\1\10\21\0\46\10\1\0\1\10\5\0"+
|
||||
"\1\10\2\0\53\10\1\0\115\10\1\0\4\10\2\0"+
|
||||
"\7\10\1\0\1\10\1\0\4\10\2\0\51\10\1\0"+
|
||||
"\4\10\2\0\41\10\1\0\4\10\2\0\7\10\1\0"+
|
||||
"\1\10\1\0\4\10\2\0\17\10\1\0\71\10\1\0"+
|
||||
"\4\10\2\0\103\10\45\0\20\10\20\0\126\10\2\0"+
|
||||
"\6\10\3\0\u016c\10\2\0\21\10\1\0\32\10\5\0"+
|
||||
"\113\10\3\0\13\10\7\0\22\10\15\0\23\10\16\0"+
|
||||
"\22\10\16\0\15\10\1\0\3\10\17\0\64\10\43\0"+
|
||||
"\1\10\3\0\2\10\103\0\131\10\7\0\5\10\2\0"+
|
||||
"\42\10\1\0\1\10\5\0\106\10\12\0\37\10\61\0"+
|
||||
"\36\10\2\0\5\10\13\0\54\10\4\0\32\10\66\0"+
|
||||
"\27\10\11\0\65\10\122\0\1\10\135\0\57\10\21\0"+
|
||||
"\10\10\66\0\36\10\15\0\2\10\12\0\54\10\32\0"+
|
||||
"\44\10\51\0\3\10\12\0\44\10\2\0\11\10\7\0"+
|
||||
"\53\10\2\0\3\10\51\0\4\10\1\0\6\10\1\0"+
|
||||
"\2\10\3\0\1\10\5\0\300\10\100\0\26\10\2\0"+
|
||||
"\6\10\2\0\46\10\2\0\6\10\2\0\10\10\1\0"+
|
||||
"\1\10\1\0\1\10\1\0\1\10\1\0\37\10\2\0"+
|
||||
"\65\10\1\0\7\10\1\0\1\10\3\0\3\10\1\0"+
|
||||
"\7\10\3\0\4\10\2\0\6\10\4\0\15\10\5\0"+
|
||||
"\3\10\1\0\7\10\53\0\2\3\25\0\2\10\23\0"+
|
||||
"\1\10\34\0\1\10\15\0\1\10\20\0\15\10\3\0"+
|
||||
"\41\10\101\0\1\10\4\0\1\10\2\0\12\10\1\0"+
|
||||
"\1\10\3\0\5\10\6\0\1\10\1\0\1\10\1\0"+
|
||||
"\1\10\1\0\4\10\1\0\13\10\2\0\4\10\5\0"+
|
||||
"\5\10\4\0\1\10\21\0\51\10\u0177\0\345\10\6\0"+
|
||||
"\4\10\3\0\2\10\14\0\46\10\1\0\1\10\5\0"+
|
||||
"\1\10\2\0\70\10\7\0\1\10\20\0\27\10\11\0"+
|
||||
"\7\10\1\0\7\10\1\0\7\10\1\0\7\10\1\0"+
|
||||
"\7\10\120\0\1\10\325\0\3\10\31\0\11\10\7\0"+
|
||||
"\5\10\2\0\5\10\4\0\126\10\6\0\3\10\1\0"+
|
||||
"\132\10\1\0\4\10\5\0\53\10\1\0\136\10\21\0"+
|
||||
"\40\10\60\0\u010d\10\3\0\215\10\103\0\56\10\2\0"+
|
||||
"\15\10\3\0\20\10\12\0\2\10\24\0\57\10\20\0"+
|
||||
"\37\10\2\0\120\10\47\0\11\10\2\0\147\10\2\0"+
|
||||
"\65\10\2\0\11\10\52\0\15\10\1\0\3\10\1\0"+
|
||||
"\7\10\1\0\7\10\1\0\7\10\1\0\7\10\120\0"+
|
||||
"\1\10\325\0\3\10\31\0\11\10\7\0\5\10\2\0"+
|
||||
"\5\10\4\0\126\10\6\0\3\10\1\0\132\10\1\0"+
|
||||
"\4\10\5\0\53\10\1\0\136\10\21\0\40\10\60\0"+
|
||||
"\235\10\103\0\56\10\2\0\15\10\3\0\20\10\12\0"+
|
||||
"\2\10\24\0\57\10\20\0\37\10\2\0\120\10\47\0"+
|
||||
"\11\10\2\0\147\10\2\0\100\10\5\0\2\10\1\0"+
|
||||
"\1\10\1\0\5\10\30\0\20\10\1\0\3\10\1\0"+
|
||||
"\4\10\1\0\27\10\25\0\1\10\7\0\64\10\16\0"+
|
||||
"\62\10\76\0\6\10\3\0\1\10\1\0\2\10\13\0"+
|
||||
"\34\10\12\0\27\10\31\0\35\10\7\0\57\10\34\0"+
|
||||
@@ -210,66 +211,76 @@ class _JavaDocLexer implements FlexLexer {
|
||||
"\105\0\65\10\u010b\0\35\10\3\0\61\10\57\0\40\10"+
|
||||
"\15\0\36\10\5\0\46\10\12\0\36\10\2\0\44\10"+
|
||||
"\4\0\10\10\1\0\5\10\52\0\236\10\22\0\44\10"+
|
||||
"\4\0\44\10\4\0\50\10\10\0\64\10\234\0\67\10"+
|
||||
"\11\0\26\10\12\0\10\10\230\0\6\10\2\0\1\10"+
|
||||
"\1\0\54\10\1\0\2\10\3\0\1\10\2\0\27\10"+
|
||||
"\12\0\27\10\11\0\37\10\101\0\23\10\1\0\2\10"+
|
||||
"\12\0\26\10\12\0\32\10\106\0\70\10\6\0\2\10"+
|
||||
"\100\0\1\10\17\0\4\10\1\0\3\10\1\0\35\10"+
|
||||
"\52\0\35\10\3\0\35\10\43\0\10\10\1\0\34\10"+
|
||||
"\33\0\66\10\12\0\26\10\12\0\23\10\15\0\22\10"+
|
||||
"\156\0\111\10\67\0\63\10\15\0\63\10\15\0\44\10"+
|
||||
"\u015c\0\52\10\6\0\2\10\116\0\35\10\12\0\1\10"+
|
||||
"\10\0\26\10\152\0\25\10\33\0\27\10\14\0\65\10"+
|
||||
"\113\0\55\10\40\0\31\10\32\0\44\10\35\0\1\10"+
|
||||
"\2\0\1\10\10\0\43\10\3\0\1\10\14\0\60\10"+
|
||||
"\16\0\4\10\25\0\1\10\1\0\1\10\43\0\22\10"+
|
||||
"\1\0\31\10\124\0\7\10\1\0\1\10\1\0\4\10"+
|
||||
"\1\0\17\10\1\0\12\10\7\0\57\10\46\0\10\10"+
|
||||
"\2\0\2\10\2\0\26\10\1\0\7\10\1\0\2\10"+
|
||||
"\1\0\5\10\3\0\1\10\22\0\1\10\14\0\5\10"+
|
||||
"\236\0\65\10\22\0\4\10\24\0\3\10\36\0\60\10"+
|
||||
"\24\0\2\10\1\0\1\10\270\0\57\10\51\0\4\10"+
|
||||
"\44\0\60\10\24\0\1\10\73\0\53\10\15\0\1\10"+
|
||||
"\107\0\33\10\345\0\54\10\164\0\100\10\37\0\10\10"+
|
||||
"\4\0\44\10\4\0\50\10\10\0\64\10\14\0\13\10"+
|
||||
"\1\0\17\10\1\0\7\10\1\0\2\10\1\0\13\10"+
|
||||
"\1\0\17\10\1\0\7\10\1\0\2\10\103\0\67\10"+
|
||||
"\11\0\26\10\12\0\10\10\30\0\6\10\1\0\52\10"+
|
||||
"\1\0\11\10\105\0\6\10\2\0\1\10\1\0\54\10"+
|
||||
"\1\0\2\10\3\0\1\10\2\0\27\10\12\0\27\10"+
|
||||
"\11\0\37\10\101\0\23\10\1\0\2\10\12\0\26\10"+
|
||||
"\12\0\32\10\106\0\70\10\6\0\2\10\100\0\1\10"+
|
||||
"\17\0\4\10\1\0\3\10\1\0\35\10\52\0\35\10"+
|
||||
"\3\0\35\10\43\0\10\10\1\0\34\10\33\0\66\10"+
|
||||
"\12\0\26\10\12\0\23\10\15\0\22\10\156\0\111\10"+
|
||||
"\67\0\63\10\15\0\63\10\15\0\44\10\u015c\0\52\10"+
|
||||
"\6\0\2\10\116\0\35\10\12\0\1\10\10\0\26\10"+
|
||||
"\52\0\22\10\56\0\25\10\33\0\27\10\14\0\65\10"+
|
||||
"\71\0\2\10\2\0\1\10\15\0\55\10\40\0\31\10"+
|
||||
"\32\0\44\10\35\0\1\10\2\0\1\10\10\0\43\10"+
|
||||
"\3\0\1\10\14\0\60\10\16\0\4\10\25\0\1\10"+
|
||||
"\1\0\1\10\43\0\22\10\1\0\31\10\23\0\2\10"+
|
||||
"\77\0\7\10\1\0\1\10\1\0\4\10\1\0\17\10"+
|
||||
"\1\0\12\10\7\0\57\10\46\0\10\10\2\0\2\10"+
|
||||
"\2\0\26\10\1\0\7\10\1\0\2\10\1\0\5\10"+
|
||||
"\3\0\1\10\22\0\1\10\14\0\5\10\236\0\65\10"+
|
||||
"\22\0\4\10\24\0\3\10\36\0\60\10\24\0\2\10"+
|
||||
"\1\0\1\10\270\0\57\10\51\0\4\10\44\0\60\10"+
|
||||
"\24\0\1\10\73\0\53\10\15\0\1\10\107\0\33\10"+
|
||||
"\45\0\7\10\271\0\54\10\164\0\100\10\37\0\10\10"+
|
||||
"\2\0\1\10\2\0\10\10\1\0\2\10\1\0\30\10"+
|
||||
"\17\0\1\10\1\0\1\10\136\0\10\10\2\0\47\10"+
|
||||
"\20\0\1\10\1\0\1\10\34\0\1\10\12\0\50\10"+
|
||||
"\7\0\1\10\25\0\1\10\13\0\56\10\23\0\1\10"+
|
||||
"\42\0\71\10\7\0\11\10\1\0\45\10\21\0\1\10"+
|
||||
"\22\0\111\10\7\0\11\10\1\0\45\10\21\0\1\10"+
|
||||
"\61\0\36\10\160\0\7\10\1\0\2\10\1\0\46\10"+
|
||||
"\25\0\1\10\31\0\6\10\1\0\2\10\1\0\40\10"+
|
||||
"\16\0\1\10\u0147\0\23\10\275\0\1\10\54\0\4\10"+
|
||||
"\37\0\232\10\146\0\157\10\21\0\304\10\274\0\57\10"+
|
||||
"\321\0\107\10\271\0\71\10\7\0\37\10\161\0\36\10"+
|
||||
"\22\0\60\10\20\0\4\10\37\0\25\10\5\0\23\10"+
|
||||
"\260\0\100\10\200\0\113\10\5\0\1\10\102\0\15\10"+
|
||||
"\100\0\2\10\1\0\1\10\34\0\370\10\10\0\326\10"+
|
||||
"\52\0\11\10\367\0\37\10\61\0\3\10\21\0\4\10"+
|
||||
"\10\0\u018c\10\4\0\153\10\5\0\15\10\3\0\11\10"+
|
||||
"\7\0\12\10\146\0\125\10\1\0\107\10\1\0\2\10"+
|
||||
"\2\0\1\10\2\0\2\10\2\0\4\10\1\0\14\10"+
|
||||
"\1\0\1\10\1\0\7\10\1\0\101\10\1\0\4\10"+
|
||||
"\2\0\10\10\1\0\7\10\1\0\34\10\1\0\4\10"+
|
||||
"\1\0\5\10\1\0\1\10\3\0\7\10\1\0\u0154\10"+
|
||||
"\2\0\31\10\1\0\31\10\1\0\37\10\1\0\31\10"+
|
||||
"\1\0\37\10\1\0\31\10\1\0\37\10\1\0\31\10"+
|
||||
"\1\0\37\10\1\0\31\10\1\0\10\10\64\0\55\10"+
|
||||
"\12\0\7\10\20\0\1\10\u0171\0\54\10\23\0\306\10"+
|
||||
"\73\0\104\10\7\0\1\10\u0164\0\1\10\117\0\4\10"+
|
||||
"\1\0\33\10\1\0\2\10\1\0\1\10\2\0\1\10"+
|
||||
"\1\0\12\10\1\0\4\10\1\0\1\10\1\0\1\10"+
|
||||
"\6\0\1\10\4\0\1\10\1\0\1\10\1\0\1\10"+
|
||||
"\1\0\3\10\1\0\2\10\1\0\1\10\2\0\1\10"+
|
||||
"\1\0\1\10\1\0\1\10\1\0\1\10\1\0\1\10"+
|
||||
"\1\0\2\10\1\0\1\10\2\0\4\10\1\0\7\10"+
|
||||
"\1\0\4\10\1\0\4\10\1\0\1\10\1\0\12\10"+
|
||||
"\1\0\21\10\5\0\3\10\1\0\5\10\1\0\21\10"+
|
||||
"\104\0\336\10\42\0\65\10\13\0\336\10\2\0\u0182\10"+
|
||||
"\16\0\u0131\10\37\0\36\10\342\0\113\10\265\0";
|
||||
"\16\0\1\10\u0147\0\23\10\17\0\1\10\1\0\15\10"+
|
||||
"\1\0\42\10\174\0\1\10\54\0\4\10\37\0\232\10"+
|
||||
"\146\0\157\10\21\0\304\10\u014c\0\141\10\17\0\60\10"+
|
||||
"\21\0\6\10\271\0\107\10\271\0\71\10\7\0\37\10"+
|
||||
"\21\0\117\10\21\0\36\10\22\0\60\10\20\0\4\10"+
|
||||
"\37\0\25\10\5\0\23\10\260\0\100\10\200\0\113\10"+
|
||||
"\5\0\1\10\102\0\15\10\100\0\2\10\1\0\1\10"+
|
||||
"\34\0\370\10\10\0\326\10\52\0\11\10\u01e7\0\4\10"+
|
||||
"\1\0\7\10\1\0\2\10\1\0\43\10\17\0\1\10"+
|
||||
"\35\0\3\10\2\0\1\10\16\0\4\10\10\0\u018c\10"+
|
||||
"\4\0\153\10\5\0\15\10\3\0\11\10\7\0\12\10"+
|
||||
"\146\0\125\10\1\0\107\10\1\0\2\10\2\0\1\10"+
|
||||
"\2\0\2\10\2\0\4\10\1\0\14\10\1\0\1\10"+
|
||||
"\1\0\7\10\1\0\101\10\1\0\4\10\2\0\10\10"+
|
||||
"\1\0\7\10\1\0\34\10\1\0\4\10\1\0\5\10"+
|
||||
"\1\0\1\10\3\0\7\10\1\0\u0154\10\2\0\31\10"+
|
||||
"\1\0\31\10\1\0\37\10\1\0\31\10\1\0\37\10"+
|
||||
"\1\0\31\10\1\0\37\10\1\0\31\10\1\0\37\10"+
|
||||
"\1\0\31\10\1\0\10\10\64\0\37\10\6\0\6\10"+
|
||||
"\u0105\0\76\10\222\0\55\10\12\0\7\10\20\0\1\10"+
|
||||
"\u0141\0\36\10\22\0\54\10\23\0\1\10\320\0\34\10"+
|
||||
"\364\0\7\10\1\0\4\10\1\0\2\10\1\0\17\10"+
|
||||
"\1\0\305\10\73\0\104\10\7\0\1\10\u0164\0\1\10"+
|
||||
"\117\0\4\10\1\0\33\10\1\0\2\10\1\0\1\10"+
|
||||
"\2\0\1\10\1\0\12\10\1\0\4\10\1\0\1\10"+
|
||||
"\1\0\1\10\6\0\1\10\4\0\1\10\1\0\1\10"+
|
||||
"\1\0\1\10\1\0\3\10\1\0\2\10\1\0\1\10"+
|
||||
"\2\0\1\10\1\0\1\10\1\0\1\10\1\0\1\10"+
|
||||
"\1\0\1\10\1\0\2\10\1\0\1\10\2\0\4\10"+
|
||||
"\1\0\7\10\1\0\4\10\1\0\4\10\1\0\1\10"+
|
||||
"\1\0\12\10\1\0\21\10\5\0\3\10\1\0\5\10"+
|
||||
"\1\0\21\10\104\0\340\10\40\0\72\10\6\0\336\10"+
|
||||
"\2\0\u0182\10\16\0\u0131\10\37\0\36\10\342\0\113\10"+
|
||||
"\5\0\u0160\10\120\0";
|
||||
|
||||
private static int [] zzUnpackcmap_blocks() {
|
||||
int [] result = new int[29184];
|
||||
int [] result = new int[30720];
|
||||
int offset = 0;
|
||||
offset = zzUnpackcmap_blocks(ZZ_CMAP_BLOCKS_PACKED_0, offset, result);
|
||||
return result;
|
||||
@@ -294,15 +305,15 @@ class _JavaDocLexer implements FlexLexer {
|
||||
|
||||
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\2\1\11\1\12\1\2\1\13"+
|
||||
"\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23"+
|
||||
"\1\24\1\20\1\25\1\1\2\26\1\27\1\26\1\30"+
|
||||
"\1\31\1\20\1\32\1\33\1\30\1\34\1\20\1\13"+
|
||||
"\1\3\1\35\1\36\1\20\1\3\1\37\1\12\1\20"+
|
||||
"\1\3\1\12\1\0\1\40\2\0\2\41\2\0\5\41"+
|
||||
"\1\0\1\42\1\43\1\41\2\44\4\41\1\45\1\41"+
|
||||
"\2\44\5\41\2\44\1\46\3\41\1\47\2\44\1\41"+
|
||||
"\1\47\1\41\2\44\2\41\2\44\1\50\27\44";
|
||||
"\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";
|
||||
|
||||
private static int [] zzUnpackAction() {
|
||||
int [] result = new int[142];
|
||||
@@ -837,17 +848,17 @@ class _JavaDocLexer implements FlexLexer {
|
||||
{ return myTokenTypes.badCharacter();
|
||||
}
|
||||
// fall through
|
||||
case 41: break;
|
||||
case 42: break;
|
||||
case 2:
|
||||
{ yybegin(COMMENT_DATA); return myTokenTypes.commentData();
|
||||
}
|
||||
// fall through
|
||||
case 42: break;
|
||||
case 43: break;
|
||||
case 3:
|
||||
{ return myTokenTypes.space();
|
||||
}
|
||||
// fall through
|
||||
case 43: break;
|
||||
case 44: break;
|
||||
case 4:
|
||||
{ yybegin(COMMENT_DATA);
|
||||
if(myMarkdownMode) {
|
||||
@@ -856,7 +867,7 @@ class _JavaDocLexer implements FlexLexer {
|
||||
return myTokenTypes.commentData();
|
||||
}
|
||||
// fall through
|
||||
case 44: break;
|
||||
case 45: break;
|
||||
case 5:
|
||||
{ yybegin(COMMENT_DATA);
|
||||
if(myMarkdownMode) {
|
||||
@@ -865,7 +876,7 @@ class _JavaDocLexer implements FlexLexer {
|
||||
return myTokenTypes.commentData();
|
||||
}
|
||||
// fall through
|
||||
case 45: break;
|
||||
case 46: break;
|
||||
case 6:
|
||||
{ yybegin(COMMENT_DATA);
|
||||
if(myMarkdownMode) {
|
||||
@@ -874,7 +885,7 @@ class _JavaDocLexer implements FlexLexer {
|
||||
return myTokenTypes.commentData();
|
||||
}
|
||||
// fall through
|
||||
case 46: break;
|
||||
case 47: break;
|
||||
case 7:
|
||||
{ yybegin(COMMENT_DATA);
|
||||
if(myMarkdownMode) {
|
||||
@@ -883,7 +894,7 @@ class _JavaDocLexer implements FlexLexer {
|
||||
return myTokenTypes.commentData();
|
||||
}
|
||||
// fall through
|
||||
case 47: break;
|
||||
case 48: break;
|
||||
case 8:
|
||||
{ yybegin(COMMENT_DATA);
|
||||
if(myMarkdownMode) {
|
||||
@@ -892,8 +903,17 @@ class _JavaDocLexer implements FlexLexer {
|
||||
return myTokenTypes.commentData();
|
||||
}
|
||||
// fall through
|
||||
case 48: break;
|
||||
case 49: break;
|
||||
case 9:
|
||||
{ yybegin(COMMENT_DATA);
|
||||
if(myMarkdownMode) {
|
||||
return myTokenTypes.inlineCodeFence();
|
||||
}
|
||||
return myTokenTypes.commentData();
|
||||
}
|
||||
// fall through
|
||||
case 50: break;
|
||||
case 10:
|
||||
{ if (checkAhead('@')) {
|
||||
yybegin(INLINE_TAG_NAME);
|
||||
return myTokenTypes.inlineTagStart();
|
||||
@@ -904,56 +924,56 @@ class _JavaDocLexer implements FlexLexer {
|
||||
}
|
||||
}
|
||||
// fall through
|
||||
case 49: break;
|
||||
case 10:
|
||||
case 51: break;
|
||||
case 11:
|
||||
{ yybegin(COMMENT_DATA); return myTokenTypes.inlineTagEnd();
|
||||
}
|
||||
// fall through
|
||||
case 50: break;
|
||||
case 11:
|
||||
case 52: break;
|
||||
case 12:
|
||||
{ return myTokenTypes.commentData();
|
||||
}
|
||||
// fall through
|
||||
case 51: break;
|
||||
case 12:
|
||||
case 53: break;
|
||||
case 13:
|
||||
{ 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 52: break;
|
||||
case 13:
|
||||
case 54: break;
|
||||
case 14:
|
||||
{ yybegin(DOC_TAG_VALUE); return myTokenTypes.space();
|
||||
}
|
||||
// fall through
|
||||
case 53: break;
|
||||
case 14:
|
||||
case 55: break;
|
||||
case 15:
|
||||
{ yybegin(COMMENT_DATA); return myTokenTypes.space();
|
||||
}
|
||||
// fall through
|
||||
case 54: break;
|
||||
case 15:
|
||||
case 56: break;
|
||||
case 16:
|
||||
{ return myTokenTypes.tagValueSharp();
|
||||
}
|
||||
// fall through
|
||||
case 55: break;
|
||||
case 16:
|
||||
case 57: break;
|
||||
case 17:
|
||||
{ return myTokenTypes.tagValueToken();
|
||||
}
|
||||
// fall through
|
||||
case 56: break;
|
||||
case 17:
|
||||
case 58: break;
|
||||
case 18:
|
||||
{ yybegin(DOC_TAG_VALUE_IN_PAREN); return myTokenTypes.tagValueLParen();
|
||||
}
|
||||
// fall through
|
||||
case 57: break;
|
||||
case 18:
|
||||
case 59: break;
|
||||
case 19:
|
||||
{ return myTokenTypes.tagValueComma();
|
||||
}
|
||||
// fall through
|
||||
case 58: break;
|
||||
case 19:
|
||||
case 60: break;
|
||||
case 20:
|
||||
{ if (myJdk15Enabled) {
|
||||
yybegin(DOC_TAG_VALUE_IN_LTGT);
|
||||
return myTokenTypes.tagValueLT();
|
||||
@@ -964,61 +984,61 @@ class _JavaDocLexer implements FlexLexer {
|
||||
}
|
||||
}
|
||||
// fall through
|
||||
case 59: break;
|
||||
case 20:
|
||||
case 61: break;
|
||||
case 21:
|
||||
{ yybegin(DOC_TAG_VALUE); return myTokenTypes.tagValueRParen();
|
||||
}
|
||||
// fall through
|
||||
case 60: break;
|
||||
case 21:
|
||||
case 62: break;
|
||||
case 22:
|
||||
{ yybegin(COMMENT_DATA); return myTokenTypes.tagValueGT();
|
||||
}
|
||||
// fall through
|
||||
case 61: break;
|
||||
case 22:
|
||||
case 63: break;
|
||||
case 23:
|
||||
{ yybegin(CODE_TAG); return myTokenTypes.commentData();
|
||||
}
|
||||
// fall through
|
||||
case 62: break;
|
||||
case 23:
|
||||
case 64: break;
|
||||
case 24:
|
||||
{ yybegin(CODE_TAG); return myTokenTypes.space();
|
||||
}
|
||||
// fall through
|
||||
case 63: break;
|
||||
case 24:
|
||||
case 65: break;
|
||||
case 25:
|
||||
{ yybegin(SNIPPET_TAG_COMMENT_DATA_UNTIL_COLON); return myTokenTypes.commentData();
|
||||
}
|
||||
// fall through
|
||||
case 64: break;
|
||||
case 25:
|
||||
case 66: break;
|
||||
case 26:
|
||||
{ yybegin(SNIPPET_ATTRIBUTE_VALUE_DOUBLE_QUOTES); return myTokenTypes.tagValueQuote();
|
||||
}
|
||||
// fall through
|
||||
case 65: break;
|
||||
case 26:
|
||||
case 67: break;
|
||||
case 27:
|
||||
{ yybegin(SNIPPET_ATTRIBUTE_VALUE_SINGLE_QUOTES); return myTokenTypes.tagValueQuote();
|
||||
}
|
||||
// fall through
|
||||
case 66: break;
|
||||
case 27:
|
||||
case 68: break;
|
||||
case 28:
|
||||
{ if (myMarkdownMode) {
|
||||
return myTokenTypes.commentData();
|
||||
}
|
||||
return myTokenTypes.commentLeadingAsterisks();
|
||||
}
|
||||
// fall through
|
||||
case 67: break;
|
||||
case 28:
|
||||
case 69: break;
|
||||
case 29:
|
||||
{ yybegin(SNIPPET_TAG_BODY_DATA); return myTokenTypes.tagValueColon();
|
||||
}
|
||||
// fall through
|
||||
case 68: break;
|
||||
case 29:
|
||||
case 70: break;
|
||||
case 30:
|
||||
{ mySnippetBracesLevel++; return myTokenTypes.commentData();
|
||||
}
|
||||
// fall through
|
||||
case 69: break;
|
||||
case 30:
|
||||
case 71: break;
|
||||
case 31:
|
||||
{ if (mySnippetBracesLevel > 0) {
|
||||
mySnippetBracesLevel--;
|
||||
return myTokenTypes.commentData();
|
||||
@@ -1028,26 +1048,26 @@ class _JavaDocLexer implements FlexLexer {
|
||||
}
|
||||
}
|
||||
// fall through
|
||||
case 70: break;
|
||||
case 31:
|
||||
case 72: break;
|
||||
case 32:
|
||||
{ yybegin(SNIPPET_TAG_COMMENT_DATA_UNTIL_COLON); return myTokenTypes.tagValueQuote();
|
||||
}
|
||||
// fall through
|
||||
case 71: break;
|
||||
case 32:
|
||||
case 73: break;
|
||||
case 33:
|
||||
{ if(myMarkdownMode) {
|
||||
return myTokenTypes.commentData();
|
||||
}
|
||||
return myTokenTypes.commentEnd();
|
||||
}
|
||||
// fall through
|
||||
case 72: break;
|
||||
case 33:
|
||||
case 74: break;
|
||||
case 34:
|
||||
{ yybegin(TAG_DOC_SPACE); return myTokenTypes.tagName();
|
||||
}
|
||||
// fall through
|
||||
case 73: break;
|
||||
case 34:
|
||||
case 75: break;
|
||||
case 35:
|
||||
{ if(myMarkdownMode) {
|
||||
return myTokenTypes.badCharacter();
|
||||
}
|
||||
@@ -1055,8 +1075,8 @@ class _JavaDocLexer implements FlexLexer {
|
||||
return myTokenTypes.commentStart();
|
||||
}
|
||||
// fall through
|
||||
case 74: break;
|
||||
case 35:
|
||||
case 76: break;
|
||||
case 36:
|
||||
{ if(myMarkdownMode) {
|
||||
yybegin(COMMENT_DATA_START);
|
||||
return myTokenTypes.commentLeadingAsterisks();
|
||||
@@ -1064,8 +1084,8 @@ class _JavaDocLexer implements FlexLexer {
|
||||
return myTokenTypes.badCharacter();
|
||||
}
|
||||
// fall through
|
||||
case 75: break;
|
||||
case 36:
|
||||
case 77: break;
|
||||
case 37:
|
||||
{ yybegin(COMMENT_DATA);
|
||||
if(myMarkdownMode) {
|
||||
return myTokenTypes.codeFence();
|
||||
@@ -1073,30 +1093,30 @@ class _JavaDocLexer implements FlexLexer {
|
||||
return myTokenTypes.commentData();
|
||||
}
|
||||
// fall through
|
||||
case 76: break;
|
||||
case 37:
|
||||
case 78: break;
|
||||
case 38:
|
||||
{ if (myMarkdownMode) {
|
||||
return myTokenTypes.commentLeadingAsterisks();
|
||||
}
|
||||
return myTokenTypes.commentData();
|
||||
}
|
||||
// fall through
|
||||
case 77: break;
|
||||
case 38:
|
||||
case 79: break;
|
||||
case 39:
|
||||
{ yybegin(CODE_TAG_SPACE); return myTokenTypes.tagName();
|
||||
}
|
||||
// fall through
|
||||
case 78: break;
|
||||
case 39:
|
||||
case 80: break;
|
||||
case 40:
|
||||
{ yybegin(PARAM_TAG_SPACE); return myTokenTypes.tagName();
|
||||
}
|
||||
// fall through
|
||||
case 79: break;
|
||||
case 40:
|
||||
case 81: break;
|
||||
case 41:
|
||||
{ yybegin(SNIPPET_TAG_COMMENT_DATA_UNTIL_COLON); return myTokenTypes.tagName();
|
||||
}
|
||||
// fall through
|
||||
case 80: break;
|
||||
case 82: break;
|
||||
default:
|
||||
zzScanError(ZZ_NO_MATCH);
|
||||
}
|
||||
|
||||
@@ -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.inlineCodeFence();
|
||||
}
|
||||
return myTokenTypes.commentData();
|
||||
}
|
||||
|
||||
"#" {
|
||||
yybegin(COMMENT_DATA);
|
||||
if(myMarkdownMode) {
|
||||
|
||||
+42
-4
@@ -162,6 +162,9 @@ public final class BasicJavaDocParser {
|
||||
parseSimpleTagValue(builder, javaDocElementTypeContainer);
|
||||
}
|
||||
}
|
||||
else if (tokenType == JavaDocTokenType.DOC_INLINE_CODE_FENCE) {
|
||||
parseInlineCodeBlock(builder, javaDocElementTypeContainer);
|
||||
}
|
||||
else if (tokenType == JavaDocTokenType.DOC_CODE_FENCE) {
|
||||
parseCodeBlock(builder, javaDocElementTypeContainer);
|
||||
}
|
||||
@@ -173,6 +176,33 @@ public final class BasicJavaDocParser {
|
||||
}
|
||||
}
|
||||
|
||||
private static void parseInlineCodeBlock(PsiBuilder builder,
|
||||
@NotNull AbstractBasicJavaDocElementTypeFactory.JavaDocElementTypeContainer javaDocElementTypeContainer) {
|
||||
PsiBuilder.Marker tag = builder.mark();
|
||||
IElementType stopElementType = findInlineToken(builder, JavaDocTokenType.DOC_INLINE_CODE_FENCE);
|
||||
int endOffset = builder.getCurrentOffset();
|
||||
tag.rollbackTo();
|
||||
|
||||
|
||||
if (stopElementType != JavaDocTokenType.DOC_INLINE_CODE_FENCE) {
|
||||
// Bail out, no end
|
||||
builder.advanceLexer();
|
||||
return;
|
||||
}
|
||||
|
||||
tag = builder.mark();
|
||||
builder.advanceLexer();
|
||||
while (builder.getCurrentOffset() < endOffset && !builder.eof()) {
|
||||
builder.remapCurrentToken(JavaDocTokenType.DOC_COMMENT_DATA);
|
||||
builder.advanceLexer();
|
||||
}
|
||||
if(!builder.eof()) {
|
||||
builder.advanceLexer();
|
||||
}
|
||||
|
||||
tag.done(javaDocElementTypeContainer.DOC_MARKDOWN_CODE_BLOCK);
|
||||
}
|
||||
|
||||
private static void parseCodeBlock(PsiBuilder builder,
|
||||
AbstractBasicJavaDocElementTypeFactory.@NotNull JavaDocElementTypeContainer javaDocElementTypeContainer) {
|
||||
if (getBraceScope(builder) > 0) {
|
||||
@@ -201,7 +231,8 @@ public final class BasicJavaDocParser {
|
||||
}
|
||||
|
||||
/** Ensure a reference link is good before parsing it */
|
||||
private static void parseMarkdownReferenceChecked(PsiBuilder builder, @NotNull AbstractBasicJavaDocElementTypeFactory.JavaDocElementTypeContainer javaDocElementTypeContainer) {
|
||||
private static void parseMarkdownReferenceChecked(PsiBuilder builder,
|
||||
@NotNull AbstractBasicJavaDocElementTypeFactory.JavaDocElementTypeContainer javaDocElementTypeContainer) {
|
||||
boolean hasLabel = true;
|
||||
PsiBuilder.Marker tag = builder.mark();
|
||||
|
||||
@@ -328,9 +359,16 @@ public final class BasicJavaDocParser {
|
||||
refStart.drop();
|
||||
}
|
||||
|
||||
|
||||
private static @Nullable IElementType findInlineToken(@NotNull PsiBuilder builder, IElementType needle) {
|
||||
return findInlineToken(builder, needle, null, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Look for the token provided by `needle`, taking into account markdown line break rules
|
||||
* @param travelToken The token that is either allowed or disallowed to encounter while looking for the `needle`
|
||||
*
|
||||
* @param travelToken The token that is either allowed or disallowed to encounter while looking for the `needle`
|
||||
* When `null`, no check is performed
|
||||
* @param isTravelTokenDisallowed When `true`, the `travelToken` will abort the search
|
||||
* When `false`, encountering something other than `travelToken` or `needle` will abort the search
|
||||
* @return The last token encountered during the search.
|
||||
@@ -338,7 +376,7 @@ public final class BasicJavaDocParser {
|
||||
@Contract(mutates = "param1")
|
||||
private static @Nullable IElementType findInlineToken(@NotNull PsiBuilder builder,
|
||||
IElementType needle,
|
||||
IElementType travelToken,
|
||||
@Nullable IElementType travelToken,
|
||||
boolean isTravelTokenDisallowed) {
|
||||
IElementType token = null;
|
||||
IElementType previousToken;
|
||||
@@ -350,7 +388,7 @@ public final class BasicJavaDocParser {
|
||||
return token;
|
||||
}
|
||||
boolean travelTokenFound = travelToken == token;
|
||||
if ((isTravelTokenDisallowed && travelTokenFound) || (!isTravelTokenDisallowed && !travelTokenFound)) {
|
||||
if ((travelToken != null) && ((isTravelTokenDisallowed && travelTokenFound) || (!isTravelTokenDisallowed && !travelTokenFound))) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
+2
@@ -198,6 +198,8 @@ public abstract class AbstractBasicJavadocParsingTest extends AbstractBasicJavaP
|
||||
public void testCodeBlockMarkdown01() { doTest(true); }
|
||||
public void testCodeBlockMarkdown02() { doTest(true); }
|
||||
public void testCodeBlockMarkdown03() { doTest(true); }
|
||||
public void testCodeBlockMarkdown04() { doTest(true); }
|
||||
public void testCodeBlockMarkdown05() { doTest(true); }
|
||||
|
||||
public void testReferenceLinkMarkdown00() { doTest(true); }
|
||||
public void testReferenceLinkMarkdown01() { doTest(true); }
|
||||
|
||||
@@ -1857,7 +1857,11 @@ public class JavaDocInfoGenerator {
|
||||
}
|
||||
}
|
||||
else if (element instanceof PsiMarkdownCodeBlock markdownCodeBlock) {
|
||||
appendStyledCodeBlock(subBuffer, element.getProject(), markdownCodeBlock.getCodeLanguage(), markdownCodeBlock.getCodeText());
|
||||
if (markdownCodeBlock.isInline()) {
|
||||
appendWrappedWithInlineCodeTag(subBuffer, markdownCodeBlock.getCodeText());
|
||||
} else {
|
||||
appendStyledCodeBlock(subBuffer, element.getProject(), markdownCodeBlock.getCodeLanguage(), markdownCodeBlock.getCodeText());
|
||||
}
|
||||
}
|
||||
else if (element instanceof PsiMarkdownReferenceLink) {
|
||||
generateMarkdownLinkValue((PsiMarkdownReferenceLink)element, subBuffer);
|
||||
|
||||
@@ -13,6 +13,9 @@ public interface PsiMarkdownCodeBlock extends PsiElement {
|
||||
@NotNull
|
||||
String getCodeText();
|
||||
|
||||
/** @return The language for this code block */
|
||||
/** @return The language for this code block. An inline code block has no language info */
|
||||
@Nullable Language getCodeLanguage();
|
||||
|
||||
/** @return Whether the code block is a single line block */
|
||||
boolean isInline();
|
||||
}
|
||||
|
||||
@@ -22,7 +22,8 @@ public class PsiDocTagImpl extends CompositePsiElement implements PsiDocTag, Con
|
||||
private static final TokenSet TAG_VALUE_BIT_SET = TokenSet.create(
|
||||
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_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));
|
||||
|
||||
public PsiDocTagImpl() {
|
||||
super(DOC_TAG);
|
||||
|
||||
+3
-2
@@ -23,8 +23,9 @@ import org.jetbrains.annotations.NotNull;
|
||||
public class PsiInlineDocTagImpl extends CompositePsiElement implements PsiInlineDocTag, Constants {
|
||||
private static final TokenSet TAG_VALUE_BIT_SET = TokenSet.create(DOC_TAG_VALUE_ELEMENT, DOC_METHOD_OR_FIELD_REF);
|
||||
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));
|
||||
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));
|
||||
|
||||
public PsiInlineDocTagImpl() {
|
||||
super(DOC_INLINE_TAG);
|
||||
|
||||
+14
-1
@@ -12,6 +12,7 @@ import com.intellij.psi.impl.source.tree.CompositePsiElement;
|
||||
import com.intellij.psi.impl.source.tree.JavaDocElementType;
|
||||
import com.intellij.psi.javadoc.PsiMarkdownCodeBlock;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.tree.TokenSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -52,7 +53,9 @@ public class PsiMarkdownCodeBlockImpl extends CompositePsiElement implements Psi
|
||||
|
||||
while (child != null) {
|
||||
IElementType i = child.getElementType();
|
||||
if (i != JavaDocTokenType.DOC_CODE_FENCE && i != JavaDocTokenType.DOC_COMMENT_LEADING_ASTERISKS) {
|
||||
if (i != JavaDocTokenType.DOC_CODE_FENCE &&
|
||||
i != JavaDocTokenType.DOC_COMMENT_LEADING_ASTERISKS &&
|
||||
i != JavaDocTokenType.DOC_INLINE_CODE_FENCE) {
|
||||
builder.append(child.getText());
|
||||
}
|
||||
child = child.getTreeNext();
|
||||
@@ -60,6 +63,11 @@ public class PsiMarkdownCodeBlockImpl extends CompositePsiElement implements Psi
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInline() {
|
||||
return getFirstChildNode().getTokenType() == JavaDocTokenType.DOC_INLINE_CODE_FENCE;
|
||||
}
|
||||
|
||||
private @Nullable String getLanguageInfo() {
|
||||
if (!hasLanguageInfo()) return null;
|
||||
return getChildren()[1].getText().trim();
|
||||
@@ -67,8 +75,13 @@ public class PsiMarkdownCodeBlockImpl extends CompositePsiElement implements Psi
|
||||
|
||||
/** @return True if the block has language info. It doesn't always translate to a {@link com.intellij.lang.Language} */
|
||||
private boolean hasLanguageInfo() {
|
||||
if (isInline()) return false;
|
||||
|
||||
PsiElement[] children = getChildren();
|
||||
if (children.length < 2) return false;
|
||||
// If the code block is written on only one line (why), there is no language info as well
|
||||
if (findChildByType(TokenSet.WHITE_SPACE) == null) return false;
|
||||
|
||||
PsiElement languageInfoChild = children[1];
|
||||
if (languageInfoChild.getNode().getElementType() != JavaDocTokenType.DOC_COMMENT_DATA) return false;
|
||||
return !languageInfoChild.getText().trim().isEmpty();
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">MarkdownCodeBlock</span></pre></div><div class='content'><p>Java code block</p> <pre><code><span style="color:#000080;font-weight:bold;">new </span><span style="">String();<br></span><span style="">System.out.println(</span><span style="color:#008000;font-weight:bold;">"Hello Markdown"</span><span style="">);</span></code></pre>
|
||||
<p>Xml code block</p> <pre><code><span style=""><</span><span style="color:#000080;font-weight:bold;">hello</span><span style="">></span><span style=""><br></span><span style="">  </span><span style=""><</span><span style="color:#000080;font-weight:bold;">markdown </span><span style="">/></span><span style=""><br></span><span style=""></</span><span style="color:#000080;font-weight:bold;">hello</span><span style="">></span></code></pre>
|
||||
<p>"Inline" java code block</p> <pre><code><span style="">System.out.println(</span><span style="color:#008000;font-weight:bold;">"Hello Markdown"</span><span style="">);</span></code></pre>
|
||||
</div><table class='sections'><p></table>
|
||||
@@ -10,4 +10,6 @@
|
||||
/// <markdown />
|
||||
/// </hello>
|
||||
/// ```
|
||||
/// "Inline" java code block
|
||||
/// ```System.out.println("Hello Markdown");```
|
||||
class MarkdownCodeBlock {}
|
||||
@@ -0,0 +1,3 @@
|
||||
<html><head><base href="placeholder"></head><body><div class='definition'><pre><span style="color:#000080;font-weight:bold;">class</span> <span style="color:#000000;">MarkdownCodeBlock</span></pre></div><div class='content'><p>Single liner code block:
|
||||
<code>Hello world</code></p><p>No tags are interpreted inside them
|
||||
<code>{@link java.lang.String niceLink}</code></p></div><table class='sections'><p></table>
|
||||
@@ -0,0 +1,7 @@
|
||||
|
||||
/// Single liner code block:
|
||||
/// `Hello world`
|
||||
///
|
||||
/// No tags are interpreted inside them
|
||||
/// `{@link java.lang.String niceLink}`
|
||||
class MarkdownCodeBlock {}
|
||||
@@ -0,0 +1 @@
|
||||
/// `Single line codeblock`
|
||||
@@ -0,0 +1,10 @@
|
||||
PsiJavaFile:CodeBlockMarkdown04.java
|
||||
PsiDocComment
|
||||
PsiDocToken:DOC_COMMENT_LEADING_ASTERISKS('///')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiMarkdownCodeBlock:
|
||||
PsiDocToken:DOC_INLINE_CODE_FENCE('`')
|
||||
PsiDocToken:DOC_COMMENT_DATA('Single line codeblock')
|
||||
PsiDocToken:DOC_INLINE_CODE_FENCE('`')
|
||||
PsiImportList
|
||||
<empty list>
|
||||
@@ -0,0 +1,10 @@
|
||||
java.FILE
|
||||
DOC_COMMENT
|
||||
DOC_COMMENT_LEADING_ASTERISKS
|
||||
WHITE_SPACE
|
||||
DOC_CODE_BLOCK
|
||||
DOC_INLINE_CODE_FENCE
|
||||
DOC_COMMENT_DATA
|
||||
DOC_INLINE_CODE_FENCE
|
||||
IMPORT_LIST
|
||||
<empty list>
|
||||
@@ -0,0 +1,3 @@
|
||||
/// `
|
||||
/// According to markdown rules, this is inline
|
||||
/// `
|
||||
@@ -0,0 +1,15 @@
|
||||
PsiJavaFile:CodeBlockMarkdown05.java
|
||||
PsiDocComment
|
||||
PsiDocToken:DOC_COMMENT_LEADING_ASTERISKS('///')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiMarkdownCodeBlock:
|
||||
PsiDocToken:DOC_INLINE_CODE_FENCE('`')
|
||||
PsiWhiteSpace('\n')
|
||||
PsiDocToken:DOC_COMMENT_LEADING_ASTERISKS('///')
|
||||
PsiDocToken:DOC_COMMENT_DATA(' According to markdown rules, this is inline')
|
||||
PsiWhiteSpace('\n')
|
||||
PsiDocToken:DOC_COMMENT_LEADING_ASTERISKS('///')
|
||||
PsiDocToken:DOC_COMMENT_DATA(' ')
|
||||
PsiDocToken:DOC_INLINE_CODE_FENCE('`')
|
||||
PsiImportList
|
||||
<empty list>
|
||||
@@ -0,0 +1,15 @@
|
||||
java.FILE
|
||||
DOC_COMMENT
|
||||
DOC_COMMENT_LEADING_ASTERISKS
|
||||
WHITE_SPACE
|
||||
DOC_CODE_BLOCK
|
||||
DOC_INLINE_CODE_FENCE
|
||||
WHITE_SPACE
|
||||
DOC_COMMENT_LEADING_ASTERISKS
|
||||
DOC_COMMENT_DATA
|
||||
WHITE_SPACE
|
||||
DOC_COMMENT_LEADING_ASTERISKS
|
||||
DOC_COMMENT_DATA
|
||||
DOC_INLINE_CODE_FENCE
|
||||
IMPORT_LIST
|
||||
<empty list>
|
||||
@@ -6,7 +6,9 @@ PsiJavaFile:Symbols01Markdown.java
|
||||
PsiDocToken:DOC_COMMENT_LEADING_ASTERISKS('///')
|
||||
PsiWhiteSpace('\n')
|
||||
PsiDocToken:DOC_COMMENT_LEADING_ASTERISKS('///')
|
||||
PsiDocToken:DOC_COMMENT_DATA(' ~`!@')
|
||||
PsiDocToken:DOC_COMMENT_DATA(' ~')
|
||||
PsiDocToken:DOC_INLINE_CODE_FENCE('`')
|
||||
PsiDocToken:DOC_COMMENT_DATA('!@')
|
||||
PsiDocToken:DOC_SHARP('#')
|
||||
PsiDocToken:DOC_COMMENT_DATA('$%^&*')
|
||||
PsiDocToken:DOC_LPAREN('(')
|
||||
|
||||
@@ -7,6 +7,8 @@ java.FILE
|
||||
WHITE_SPACE
|
||||
DOC_COMMENT_LEADING_ASTERISKS
|
||||
DOC_COMMENT_DATA
|
||||
DOC_INLINE_CODE_FENCE
|
||||
DOC_COMMENT_DATA
|
||||
DOC_SHARP
|
||||
DOC_COMMENT_DATA
|
||||
DOC_LPAREN
|
||||
|
||||
@@ -16,7 +16,9 @@ PsiJavaFile:Symbols02Markdown.java
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiDocToken:DOC_COMMENT_DATA('~`!@')
|
||||
PsiDocToken:DOC_COMMENT_DATA('~')
|
||||
PsiDocToken:DOC_INLINE_CODE_FENCE('`')
|
||||
PsiDocToken:DOC_COMMENT_DATA('!@')
|
||||
PsiDocToken:DOC_SHARP('#')
|
||||
PsiDocToken:DOC_COMMENT_DATA('$%^&*')
|
||||
PsiDocToken:DOC_LPAREN('(')
|
||||
|
||||
@@ -17,6 +17,8 @@ java.FILE
|
||||
<empty list>
|
||||
WHITE_SPACE
|
||||
DOC_COMMENT_DATA
|
||||
DOC_INLINE_CODE_FENCE
|
||||
DOC_COMMENT_DATA
|
||||
DOC_SHARP
|
||||
DOC_COMMENT_DATA
|
||||
DOC_LPAREN
|
||||
|
||||
@@ -17,7 +17,9 @@ PsiJavaFile:Symbols03Markdown.java
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiDocToken:DOC_COMMENT_DATA('~`!@')
|
||||
PsiDocToken:DOC_COMMENT_DATA('~')
|
||||
PsiDocToken:DOC_INLINE_CODE_FENCE('`')
|
||||
PsiDocToken:DOC_COMMENT_DATA('!@')
|
||||
PsiDocToken:DOC_SHARP('#')
|
||||
PsiDocToken:DOC_COMMENT_DATA('$%^&*')
|
||||
PsiDocToken:DOC_LPAREN('(')
|
||||
|
||||
@@ -18,6 +18,8 @@ java.FILE
|
||||
<empty list>
|
||||
WHITE_SPACE
|
||||
DOC_COMMENT_DATA
|
||||
DOC_INLINE_CODE_FENCE
|
||||
DOC_COMMENT_DATA
|
||||
DOC_SHARP
|
||||
DOC_COMMENT_DATA
|
||||
DOC_LPAREN
|
||||
|
||||
@@ -17,7 +17,9 @@ PsiJavaFile:Symbols04Markdown.java
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiDocToken:DOC_COMMENT_DATA('~`!@')
|
||||
PsiDocToken:DOC_COMMENT_DATA('~')
|
||||
PsiDocToken:DOC_INLINE_CODE_FENCE('`')
|
||||
PsiDocToken:DOC_COMMENT_DATA('!@')
|
||||
PsiDocToken:DOC_SHARP('#')
|
||||
PsiDocToken:DOC_COMMENT_DATA('$%^&*')
|
||||
PsiDocToken:DOC_LPAREN('(')
|
||||
|
||||
@@ -18,6 +18,8 @@ java.FILE
|
||||
<empty list>
|
||||
WHITE_SPACE
|
||||
DOC_COMMENT_DATA
|
||||
DOC_INLINE_CODE_FENCE
|
||||
DOC_COMMENT_DATA
|
||||
DOC_SHARP
|
||||
DOC_COMMENT_DATA
|
||||
DOC_LPAREN
|
||||
|
||||
@@ -17,7 +17,9 @@ PsiJavaFile:Symbols05Markdown.java
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiDocToken:DOC_COMMENT_DATA('~`!@')
|
||||
PsiDocToken:DOC_COMMENT_DATA('~')
|
||||
PsiDocToken:DOC_INLINE_CODE_FENCE('`')
|
||||
PsiDocToken:DOC_COMMENT_DATA('!@')
|
||||
PsiDocToken:DOC_SHARP('#')
|
||||
PsiDocToken:DOC_COMMENT_DATA('$%^&*')
|
||||
PsiDocToken:DOC_LPAREN('(')
|
||||
|
||||
@@ -18,6 +18,8 @@ java.FILE
|
||||
<empty list>
|
||||
WHITE_SPACE
|
||||
DOC_COMMENT_DATA
|
||||
DOC_INLINE_CODE_FENCE
|
||||
DOC_COMMENT_DATA
|
||||
DOC_SHARP
|
||||
DOC_COMMENT_DATA
|
||||
DOC_LPAREN
|
||||
|
||||
+2
@@ -203,6 +203,8 @@ public class JavaDocInfoGeneratorTest extends JavaCodeInsightTestCase {
|
||||
public void testHtmlCodeInMarkdown() {
|
||||
doTestMethod();
|
||||
}
|
||||
public void testMarkdownInlineCodeBlock() { doTestClass(); }
|
||||
|
||||
|
||||
public void testRepeatableAnnotations() {
|
||||
useJava8();
|
||||
|
||||
Reference in New Issue
Block a user