Use switch case statement instead of sequence of if comparisons in parser
This commit is contained in:
@@ -21,7 +21,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.kotlin.lexer.KtToken;
|
import org.jetbrains.kotlin.lexer.KtToken;
|
||||||
|
|
||||||
public class KDocToken extends KtToken {
|
public class KDocToken extends KtToken {
|
||||||
public KDocToken(@NotNull @NonNls String debugName) {
|
public KDocToken(@NotNull @NonNls String debugName, int tokenId) {
|
||||||
super(debugName);
|
super(debugName, tokenId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,14 +50,23 @@ public interface KDocTokens {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
KDocToken START = new KDocToken("KDOC_START");
|
int START_Id = 0;
|
||||||
KDocToken END = new KDocToken("KDOC_END");
|
int END_Id = 1;
|
||||||
KDocToken LEADING_ASTERISK = new KDocToken("KDOC_LEADING_ASTERISK");
|
int LEADING_ASTERISK_Id = 2;
|
||||||
|
int TEXT_Id = 3;
|
||||||
|
int CODE_BLOCK_TEXT_Id = 4;
|
||||||
|
int TAG_NAME_Id = 5;
|
||||||
|
int MARKDOWN_ESCAPED_CHAR_Id = 6;
|
||||||
|
int MARKDOWN_INLINE_LINK_Id = 7;
|
||||||
|
|
||||||
KDocToken TEXT = new KDocToken("KDOC_TEXT");
|
KDocToken START = new KDocToken("KDOC_START", START_Id);
|
||||||
KDocToken CODE_BLOCK_TEXT = new KDocToken("KDOC_CODE_BLOCK_TEXT");
|
KDocToken END = new KDocToken("KDOC_END", END_Id);
|
||||||
|
KDocToken LEADING_ASTERISK = new KDocToken("KDOC_LEADING_ASTERISK", LEADING_ASTERISK_Id);
|
||||||
|
|
||||||
KDocToken TAG_NAME = new KDocToken("KDOC_TAG_NAME");
|
KDocToken TEXT = new KDocToken("KDOC_TEXT", TEXT_Id);
|
||||||
|
KDocToken CODE_BLOCK_TEXT = new KDocToken("KDOC_CODE_BLOCK_TEXT", CODE_BLOCK_TEXT_Id);
|
||||||
|
|
||||||
|
KDocToken TAG_NAME = new KDocToken("KDOC_TAG_NAME", TAG_NAME_Id);
|
||||||
ILazyParseableElementType MARKDOWN_LINK = new ILazyParseableElementType("KDOC_MARKDOWN_LINK", KotlinLanguage.INSTANCE) {
|
ILazyParseableElementType MARKDOWN_LINK = new ILazyParseableElementType("KDOC_MARKDOWN_LINK", KotlinLanguage.INSTANCE) {
|
||||||
@Override
|
@Override
|
||||||
public ASTNode parseContents(ASTNode chameleon) {
|
public ASTNode parseContents(ASTNode chameleon) {
|
||||||
@@ -65,9 +74,8 @@ public interface KDocTokens {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
KDocToken MARKDOWN_ESCAPED_CHAR = new KDocToken("KDOC_MARKDOWN_ESCAPED_CHAR");
|
KDocToken MARKDOWN_ESCAPED_CHAR = new KDocToken("KDOC_MARKDOWN_ESCAPED_CHAR", MARKDOWN_ESCAPED_CHAR_Id);
|
||||||
KDocToken MARKDOWN_INLINE_LINK = new KDocToken("KDOC_MARKDOWN_INLINE_LINK");
|
KDocToken MARKDOWN_INLINE_LINK = new KDocToken("KDOC_MARKDOWN_INLINE_LINK", MARKDOWN_INLINE_LINK_Id);
|
||||||
|
|
||||||
TokenSet KDOC_HIGHLIGHT_TOKENS = TokenSet.create(START, END, LEADING_ASTERISK, TEXT, CODE_BLOCK_TEXT, MARKDOWN_LINK, MARKDOWN_ESCAPED_CHAR, MARKDOWN_INLINE_LINK);
|
TokenSet KDOC_HIGHLIGHT_TOKENS = TokenSet.create(START, END, LEADING_ASTERISK, TEXT, CODE_BLOCK_TEXT, MARKDOWN_LINK, MARKDOWN_ESCAPED_CHAR, MARKDOWN_INLINE_LINK);
|
||||||
TokenSet CONTENT_TOKENS = TokenSet.create(TEXT, CODE_BLOCK_TEXT, TAG_NAME, MARKDOWN_LINK, MARKDOWN_ESCAPED_CHAR, MARKDOWN_INLINE_LINK);
|
TokenSet CONTENT_TOKENS = TokenSet.create(TEXT, CODE_BLOCK_TEXT, TAG_NAME, MARKDOWN_LINK, MARKDOWN_ESCAPED_CHAR, MARKDOWN_INLINE_LINK);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,25 +24,25 @@ public class KtKeywordToken extends KtSingleValueToken {
|
|||||||
/**
|
/**
|
||||||
* Generate keyword (identifier that has a keyword meaning in all possible contexts)
|
* Generate keyword (identifier that has a keyword meaning in all possible contexts)
|
||||||
*/
|
*/
|
||||||
public static KtKeywordToken keyword(String value) {
|
public static KtKeywordToken keyword(String value, int tokenId) {
|
||||||
return keyword(value, value);
|
return keyword(value, value, tokenId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static KtKeywordToken keyword(String debugName, String value) {
|
public static KtKeywordToken keyword(String debugName, String value, int tokenId) {
|
||||||
return new KtKeywordToken(debugName, value, false);
|
return new KtKeywordToken(debugName, value, false, tokenId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate soft keyword (identifier that has a keyword meaning only in some contexts)
|
* Generate soft keyword (identifier that has a keyword meaning only in some contexts)
|
||||||
*/
|
*/
|
||||||
public static KtKeywordToken softKeyword(String value) {
|
public static KtKeywordToken softKeyword(String value, int tokenId) {
|
||||||
return new KtKeywordToken(value, value, true);
|
return new KtKeywordToken(value, value, true, tokenId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final boolean myIsSoft;
|
private final boolean myIsSoft;
|
||||||
|
|
||||||
protected KtKeywordToken(@NotNull @NonNls String debugName, @NotNull @NonNls String value, boolean isSoft) {
|
protected KtKeywordToken(@NotNull @NonNls String debugName, @NotNull @NonNls String value, boolean isSoft, int tokenId) {
|
||||||
super(debugName, value);
|
super(debugName, value, tokenId);
|
||||||
myIsSoft = isSoft;
|
myIsSoft = isSoft;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,18 +25,18 @@ public final class KtModifierKeywordToken extends KtKeywordToken {
|
|||||||
/**
|
/**
|
||||||
* Generate keyword (identifier that has a keyword meaning in all possible contexts)
|
* Generate keyword (identifier that has a keyword meaning in all possible contexts)
|
||||||
*/
|
*/
|
||||||
public static KtModifierKeywordToken keywordModifier(String value) {
|
public static KtModifierKeywordToken keywordModifier(String value, int tokenId) {
|
||||||
return new KtModifierKeywordToken(value, value, false);
|
return new KtModifierKeywordToken(value, value, false, tokenId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate soft keyword (identifier that has a keyword meaning only in some contexts)
|
* Generate soft keyword (identifier that has a keyword meaning only in some contexts)
|
||||||
*/
|
*/
|
||||||
public static KtModifierKeywordToken softKeywordModifier(String value) {
|
public static KtModifierKeywordToken softKeywordModifier(String value, int tokenId) {
|
||||||
return new KtModifierKeywordToken(value, value, true);
|
return new KtModifierKeywordToken(value, value, true, tokenId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private KtModifierKeywordToken(@NotNull @NonNls String debugName, @NotNull @NonNls String value, boolean isSoft) {
|
private KtModifierKeywordToken(@NotNull @NonNls String debugName, @NotNull @NonNls String value, boolean isSoft, int tokenId) {
|
||||||
super(debugName, value, isSoft);
|
super(debugName, value, isSoft, tokenId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,11 +20,10 @@ import org.jetbrains.annotations.NonNls;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public class KtSingleValueToken extends KtToken {
|
public class KtSingleValueToken extends KtToken {
|
||||||
|
|
||||||
private final String myValue;
|
private final String myValue;
|
||||||
|
|
||||||
public KtSingleValueToken(@NotNull @NonNls String debugName, @NotNull @NonNls String value) {
|
public KtSingleValueToken(@NotNull @NonNls String debugName, @NotNull @NonNls String value, int tokenId) {
|
||||||
super(debugName);
|
super(debugName, tokenId);
|
||||||
myValue = value;
|
myValue = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,10 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.kotlin.idea.KotlinLanguage;
|
import org.jetbrains.kotlin.idea.KotlinLanguage;
|
||||||
|
|
||||||
public class KtToken extends IElementType {
|
public class KtToken extends IElementType {
|
||||||
public KtToken(@NotNull @NonNls String debugName) {
|
public final int tokenId;
|
||||||
|
|
||||||
|
public KtToken(@NotNull @NonNls String debugName, int tokenId) {
|
||||||
super(debugName, KotlinLanguage.INSTANCE);
|
super(debugName, KotlinLanguage.INSTANCE);
|
||||||
|
this.tokenId = tokenId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,181 +26,331 @@ import static org.jetbrains.kotlin.KtNodeTypes.DOT_QUALIFIED_EXPRESSION;
|
|||||||
import static org.jetbrains.kotlin.KtNodeTypes.SAFE_ACCESS_EXPRESSION;
|
import static org.jetbrains.kotlin.KtNodeTypes.SAFE_ACCESS_EXPRESSION;
|
||||||
|
|
||||||
public interface KtTokens {
|
public interface KtTokens {
|
||||||
KtToken EOF = new KtToken("EOF");
|
int INVALID_Id = 0;
|
||||||
|
int EOF_Id = 1;
|
||||||
|
int RESERVED_Id = 2;
|
||||||
|
int BLOCK_COMMENT_Id = 3;
|
||||||
|
int EOL_COMMENT_Id = 4;
|
||||||
|
int SHEBANG_COMMENT_Id = 5;
|
||||||
|
int INTEGER_LITERAL_Id = 6;
|
||||||
|
int FLOAT_LITERAL_Id = 7;
|
||||||
|
int CHARACTER_LITERAL_Id = 8;
|
||||||
|
int CLOSING_QUOTE_Id = 9;
|
||||||
|
int OPEN_QUOTE_Id = 10;
|
||||||
|
int REGULAR_STRING_PART_Id = 11;
|
||||||
|
int ESCAPE_SEQUENCE_Id = 12;
|
||||||
|
int SHORT_TEMPLATE_ENTRY_START_Id = 13;
|
||||||
|
int LONG_TEMPLATE_ENTRY_START_Id = 14;
|
||||||
|
int LONG_TEMPLATE_ENTRY_END_Id = 15;
|
||||||
|
int DANGLING_NEWLINE_Id = 16;
|
||||||
|
int PACKAGE_KEYWORD_Id = 17;
|
||||||
|
int AS_KEYWORD_Id = 18;
|
||||||
|
int TYPE_ALIAS_KEYWORD_Id = 19;
|
||||||
|
int CLASS_KEYWORD_Id = 20;
|
||||||
|
int THIS_KEYWORD_Id = 21;
|
||||||
|
int SUPER_KEYWORD_Id = 22;
|
||||||
|
int VAL_KEYWORD_Id = 23;
|
||||||
|
int VAR_KEYWORD_Id = 24;
|
||||||
|
int FUN_KEYWORD_Id = 25;
|
||||||
|
int FOR_KEYWORD_Id = 26;
|
||||||
|
int NULL_KEYWORD_Id = 27;
|
||||||
|
int TRUE_KEYWORD_Id = 28;
|
||||||
|
int FALSE_KEYWORD_Id = 29;
|
||||||
|
int IS_KEYWORD_Id = 30;
|
||||||
|
int IN_KEYWORD_Id = 31;
|
||||||
|
int THROW_KEYWORD_Id = 32;
|
||||||
|
int RETURN_KEYWORD_Id = 33;
|
||||||
|
int BREAK_KEYWORD_Id = 34;
|
||||||
|
int CONTINUE_KEYWORD_Id = 35;
|
||||||
|
int OBJECT_KEYWORD_Id = 36;
|
||||||
|
int IF_KEYWORD_Id = 37;
|
||||||
|
int TRY_KEYWORD_Id = 38;
|
||||||
|
int ELSE_KEYWORD_Id = 39;
|
||||||
|
int WHILE_KEYWORD_Id = 40;
|
||||||
|
int DO_KEYWORD_Id = 41;
|
||||||
|
int WHEN_KEYWORD_Id = 42;
|
||||||
|
int INTERFACE_KEYWORD_Id = 43;
|
||||||
|
int TYPEOF_KEYWORD_Id = 44;
|
||||||
|
int AS_SAFE_Id = 45;
|
||||||
|
int IDENTIFIER_Id = 46;
|
||||||
|
int FIELD_IDENTIFIER_Id = 47;
|
||||||
|
int LBRACKET_Id = 48;
|
||||||
|
int RBRACKET_Id = 49;
|
||||||
|
int LBRACE_Id = 50;
|
||||||
|
int RBRACE_Id = 51;
|
||||||
|
int LPAR_Id = 52;
|
||||||
|
int RPAR_Id = 53;
|
||||||
|
int DOT_Id = 54;
|
||||||
|
int PLUSPLUS_Id = 55;
|
||||||
|
int MINUSMINUS_Id = 56;
|
||||||
|
int MUL_Id = 57;
|
||||||
|
int PLUS_Id = 58;
|
||||||
|
int MINUS_Id = 59;
|
||||||
|
int EXCL_Id = 60;
|
||||||
|
int DIV_Id = 61;
|
||||||
|
int PERC_Id = 62;
|
||||||
|
int LT_Id = 63;
|
||||||
|
int GT_Id = 64;
|
||||||
|
int LTEQ_Id = 65;
|
||||||
|
int GTEQ_Id = 66;
|
||||||
|
int EQEQEQ_Id = 67;
|
||||||
|
int ARROW_Id = 68;
|
||||||
|
int DOUBLE_ARROW_Id = 69;
|
||||||
|
int EXCLEQEQEQ_Id = 70;
|
||||||
|
int EQEQ_Id = 71;
|
||||||
|
int EXCLEQ_Id = 72;
|
||||||
|
int EXCLEXCL_Id = 73;
|
||||||
|
int ANDAND_Id = 74;
|
||||||
|
int AND_Id = 75;
|
||||||
|
int OROR_Id = 76;
|
||||||
|
int SAFE_ACCESS_Id = 77;
|
||||||
|
int ELVIS_Id = 78;
|
||||||
|
int QUEST_Id = 79;
|
||||||
|
int COLONCOLON_Id = 80;
|
||||||
|
int COLON_Id = 81;
|
||||||
|
int SEMICOLON_Id = 82;
|
||||||
|
int DOUBLE_SEMICOLON_Id = 83;
|
||||||
|
int RANGE_Id = 84;
|
||||||
|
int RANGE_UNTIL_Id = 85;
|
||||||
|
int EQ_Id = 86;
|
||||||
|
int MULTEQ_Id = 87;
|
||||||
|
int DIVEQ_Id = 88;
|
||||||
|
int PERCEQ_Id = 89;
|
||||||
|
int PLUSEQ_Id = 90;
|
||||||
|
int MINUSEQ_Id = 91;
|
||||||
|
int NOT_IN_Id = 92;
|
||||||
|
int NOT_IS_Id = 93;
|
||||||
|
int HASH_Id = 94;
|
||||||
|
int AT_Id = 95;
|
||||||
|
int COMMA_Id = 96;
|
||||||
|
int EOL_OR_SEMICOLON_Id = 97;
|
||||||
|
int FILE_KEYWORD_Id = 98;
|
||||||
|
int FIELD_KEYWORD_Id = 99;
|
||||||
|
int PROPERTY_KEYWORD_Id = 100;
|
||||||
|
int RECEIVER_KEYWORD_Id = 101;
|
||||||
|
int PARAM_KEYWORD_Id = 102;
|
||||||
|
int SETPARAM_KEYWORD_Id = 103;
|
||||||
|
int DELEGATE_KEYWORD_Id = 104;
|
||||||
|
int IMPORT_KEYWORD_Id = 105;
|
||||||
|
int WHERE_KEYWORD_Id = 106;
|
||||||
|
int BY_KEYWORD_Id = 107;
|
||||||
|
int GET_KEYWORD_Id = 108;
|
||||||
|
int SET_KEYWORD_Id = 109;
|
||||||
|
int CONSTRUCTOR_KEYWORD_Id = 110;
|
||||||
|
int INIT_KEYWORD_Id = 111;
|
||||||
|
int CONTEXT_KEYWORD_Id = 112;
|
||||||
|
int ABSTRACT_KEYWORD_Id = 113;
|
||||||
|
int ENUM_KEYWORD_Id = 114;
|
||||||
|
int CONTRACT_KEYWORD_Id = 115;
|
||||||
|
int OPEN_KEYWORD_Id = 116;
|
||||||
|
int INNER_KEYWORD_Id = 117;
|
||||||
|
int OVERRIDE_KEYWORD_Id = 118;
|
||||||
|
int PRIVATE_KEYWORD_Id = 119;
|
||||||
|
int PUBLIC_KEYWORD_Id = 120;
|
||||||
|
int INTERNAL_KEYWORD_Id = 121;
|
||||||
|
int PROTECTED_KEYWORD_Id = 122;
|
||||||
|
int CATCH_KEYWORD_Id = 123;
|
||||||
|
int OUT_KEYWORD_Id = 124;
|
||||||
|
int VARARG_KEYWORD_Id = 125;
|
||||||
|
int REIFIED_KEYWORD_Id = 126;
|
||||||
|
int DYNAMIC_KEYWORD_Id = 127;
|
||||||
|
int COMPANION_KEYWORD_Id = 128;
|
||||||
|
int SEALED_KEYWORD_Id = 129;
|
||||||
|
int FINALLY_KEYWORD_Id = 130;
|
||||||
|
int FINAL_KEYWORD_Id = 131;
|
||||||
|
int LATEINIT_KEYWORD_Id = 132;
|
||||||
|
int DATA_KEYWORD_Id = 133;
|
||||||
|
int VALUE_KEYWORD_Id = 134;
|
||||||
|
int INLINE_KEYWORD_Id = 135;
|
||||||
|
int NOINLINE_KEYWORD_Id = 136;
|
||||||
|
int TAILREC_KEYWORD_Id = 137;
|
||||||
|
int EXTERNAL_KEYWORD_Id = 138;
|
||||||
|
int ANNOTATION_KEYWORD_Id = 139;
|
||||||
|
int CROSSINLINE_KEYWORD_Id = 140;
|
||||||
|
int OPERATOR_KEYWORD_Id = 141;
|
||||||
|
int INFIX_KEYWORD_Id = 142;
|
||||||
|
int CONST_KEYWORD_Id = 143;
|
||||||
|
int SUSPEND_KEYWORD_Id = 144;
|
||||||
|
int HEADER_KEYWORD_Id = 145;
|
||||||
|
int IMPL_KEYWORD_Id = 146;
|
||||||
|
int EXPECT_KEYWORD_Id = 147;
|
||||||
|
int ACTUAL_KEYWORD_Id = 148;
|
||||||
|
|
||||||
KtToken RESERVED = new KtToken("RESERVED");
|
KtToken EOF = new KtToken("EOF", EOF_Id);
|
||||||
|
|
||||||
KtToken BLOCK_COMMENT = new KtToken("BLOCK_COMMENT");
|
KtToken RESERVED = new KtToken("RESERVED", RESERVED_Id);
|
||||||
KtToken EOL_COMMENT = new KtToken("EOL_COMMENT");
|
|
||||||
KtToken SHEBANG_COMMENT = new KtToken("SHEBANG_COMMENT");
|
KtToken BLOCK_COMMENT = new KtToken("BLOCK_COMMENT", BLOCK_COMMENT_Id);
|
||||||
|
KtToken EOL_COMMENT = new KtToken("EOL_COMMENT", EOL_COMMENT_Id);
|
||||||
|
KtToken SHEBANG_COMMENT = new KtToken("SHEBANG_COMMENT", SHEBANG_COMMENT_Id);
|
||||||
|
|
||||||
//KtToken DOC_COMMENT = new KtToken("DOC_COMMENT");
|
|
||||||
IElementType DOC_COMMENT = KDocTokens.KDOC;
|
IElementType DOC_COMMENT = KDocTokens.KDOC;
|
||||||
|
|
||||||
IElementType WHITE_SPACE = TokenType.WHITE_SPACE;
|
IElementType WHITE_SPACE = TokenType.WHITE_SPACE;
|
||||||
|
|
||||||
KtToken INTEGER_LITERAL = new KtToken("INTEGER_LITERAL");
|
KtToken INTEGER_LITERAL = new KtToken("INTEGER_LITERAL", INTEGER_LITERAL_Id);
|
||||||
KtToken FLOAT_LITERAL = new KtToken("FLOAT_CONSTANT");
|
KtToken FLOAT_LITERAL = new KtToken("FLOAT_CONSTANT", FLOAT_LITERAL_Id);
|
||||||
KtToken CHARACTER_LITERAL = new KtToken("CHARACTER_LITERAL");
|
KtToken CHARACTER_LITERAL = new KtToken("CHARACTER_LITERAL", CHARACTER_LITERAL_Id);
|
||||||
|
|
||||||
KtToken CLOSING_QUOTE = new KtToken("CLOSING_QUOTE");
|
KtToken CLOSING_QUOTE = new KtToken("CLOSING_QUOTE", CLOSING_QUOTE_Id);
|
||||||
KtToken OPEN_QUOTE = new KtToken("OPEN_QUOTE");
|
KtToken OPEN_QUOTE = new KtToken("OPEN_QUOTE", OPEN_QUOTE_Id);
|
||||||
KtToken REGULAR_STRING_PART = new KtToken("REGULAR_STRING_PART");
|
KtToken REGULAR_STRING_PART = new KtToken("REGULAR_STRING_PART", REGULAR_STRING_PART_Id);
|
||||||
KtToken ESCAPE_SEQUENCE = new KtToken("ESCAPE_SEQUENCE");
|
KtToken ESCAPE_SEQUENCE = new KtToken("ESCAPE_SEQUENCE", ESCAPE_SEQUENCE_Id);
|
||||||
KtToken SHORT_TEMPLATE_ENTRY_START = new KtToken("SHORT_TEMPLATE_ENTRY_START");
|
KtToken SHORT_TEMPLATE_ENTRY_START = new KtToken("SHORT_TEMPLATE_ENTRY_START", SHORT_TEMPLATE_ENTRY_START_Id);
|
||||||
KtToken LONG_TEMPLATE_ENTRY_START = new KtToken("LONG_TEMPLATE_ENTRY_START");
|
KtToken LONG_TEMPLATE_ENTRY_START = new KtToken("LONG_TEMPLATE_ENTRY_START", LONG_TEMPLATE_ENTRY_START_Id);
|
||||||
KtToken LONG_TEMPLATE_ENTRY_END = new KtToken("LONG_TEMPLATE_ENTRY_END");
|
KtToken LONG_TEMPLATE_ENTRY_END = new KtToken("LONG_TEMPLATE_ENTRY_END", LONG_TEMPLATE_ENTRY_END_Id);
|
||||||
KtToken DANGLING_NEWLINE = new KtToken("DANGLING_NEWLINE");
|
KtToken DANGLING_NEWLINE = new KtToken("DANGLING_NEWLINE", DANGLING_NEWLINE_Id);
|
||||||
|
|
||||||
KtKeywordToken PACKAGE_KEYWORD = KtKeywordToken.keyword("package");
|
KtKeywordToken PACKAGE_KEYWORD = KtKeywordToken.keyword("package", PACKAGE_KEYWORD_Id);
|
||||||
KtKeywordToken AS_KEYWORD = KtKeywordToken.keyword("as");
|
KtKeywordToken AS_KEYWORD = KtKeywordToken.keyword("as", AS_KEYWORD_Id);
|
||||||
KtKeywordToken TYPE_ALIAS_KEYWORD = KtKeywordToken.keyword("typealias");
|
KtKeywordToken TYPE_ALIAS_KEYWORD = KtKeywordToken.keyword("typealias", TYPE_ALIAS_KEYWORD_Id);
|
||||||
KtKeywordToken CLASS_KEYWORD = KtKeywordToken.keyword("class");
|
KtKeywordToken CLASS_KEYWORD = KtKeywordToken.keyword("class", CLASS_KEYWORD_Id);
|
||||||
KtKeywordToken THIS_KEYWORD = KtKeywordToken.keyword("this");
|
KtKeywordToken THIS_KEYWORD = KtKeywordToken.keyword("this", THIS_KEYWORD_Id);
|
||||||
KtKeywordToken SUPER_KEYWORD = KtKeywordToken.keyword("super");
|
KtKeywordToken SUPER_KEYWORD = KtKeywordToken.keyword("super", SUPER_KEYWORD_Id);
|
||||||
KtKeywordToken VAL_KEYWORD = KtKeywordToken.keyword("val");
|
KtKeywordToken VAL_KEYWORD = KtKeywordToken.keyword("val", VAL_KEYWORD_Id);
|
||||||
KtKeywordToken VAR_KEYWORD = KtKeywordToken.keyword("var");
|
KtKeywordToken VAR_KEYWORD = KtKeywordToken.keyword("var", VAR_KEYWORD_Id);
|
||||||
KtModifierKeywordToken FUN_KEYWORD = KtModifierKeywordToken.keywordModifier("fun");
|
KtModifierKeywordToken FUN_KEYWORD = KtModifierKeywordToken.keywordModifier("fun", FUN_KEYWORD_Id);
|
||||||
KtKeywordToken FOR_KEYWORD = KtKeywordToken.keyword("for");
|
KtKeywordToken FOR_KEYWORD = KtKeywordToken.keyword("for", FOR_KEYWORD_Id);
|
||||||
KtKeywordToken NULL_KEYWORD = KtKeywordToken.keyword("null");
|
KtKeywordToken NULL_KEYWORD = KtKeywordToken.keyword("null", NULL_KEYWORD_Id);
|
||||||
KtKeywordToken TRUE_KEYWORD = KtKeywordToken.keyword("true");
|
KtKeywordToken TRUE_KEYWORD = KtKeywordToken.keyword("true", TRUE_KEYWORD_Id);
|
||||||
KtKeywordToken FALSE_KEYWORD = KtKeywordToken.keyword("false");
|
KtKeywordToken FALSE_KEYWORD = KtKeywordToken.keyword("false", FALSE_KEYWORD_Id);
|
||||||
KtKeywordToken IS_KEYWORD = KtKeywordToken.keyword("is");
|
KtKeywordToken IS_KEYWORD = KtKeywordToken.keyword("is", IS_KEYWORD_Id);
|
||||||
KtModifierKeywordToken IN_KEYWORD = KtModifierKeywordToken.keywordModifier("in");
|
KtModifierKeywordToken IN_KEYWORD = KtModifierKeywordToken.keywordModifier("in", IN_KEYWORD_Id);
|
||||||
KtKeywordToken THROW_KEYWORD = KtKeywordToken.keyword("throw");
|
KtKeywordToken THROW_KEYWORD = KtKeywordToken.keyword("throw", THROW_KEYWORD_Id);
|
||||||
KtKeywordToken RETURN_KEYWORD = KtKeywordToken.keyword("return");
|
KtKeywordToken RETURN_KEYWORD = KtKeywordToken.keyword("return", RETURN_KEYWORD_Id);
|
||||||
KtKeywordToken BREAK_KEYWORD = KtKeywordToken.keyword("break");
|
KtKeywordToken BREAK_KEYWORD = KtKeywordToken.keyword("break", BREAK_KEYWORD_Id);
|
||||||
KtKeywordToken CONTINUE_KEYWORD = KtKeywordToken.keyword("continue");
|
KtKeywordToken CONTINUE_KEYWORD = KtKeywordToken.keyword("continue", CONTINUE_KEYWORD_Id);
|
||||||
KtKeywordToken OBJECT_KEYWORD = KtKeywordToken.keyword("object");
|
KtKeywordToken OBJECT_KEYWORD = KtKeywordToken.keyword("object", OBJECT_KEYWORD_Id);
|
||||||
KtKeywordToken IF_KEYWORD = KtKeywordToken.keyword("if");
|
KtKeywordToken IF_KEYWORD = KtKeywordToken.keyword("if", IF_KEYWORD_Id);
|
||||||
KtKeywordToken TRY_KEYWORD = KtKeywordToken.keyword("try");
|
KtKeywordToken TRY_KEYWORD = KtKeywordToken.keyword("try", TRY_KEYWORD_Id);
|
||||||
KtKeywordToken ELSE_KEYWORD = KtKeywordToken.keyword("else");
|
KtKeywordToken ELSE_KEYWORD = KtKeywordToken.keyword("else", ELSE_KEYWORD_Id);
|
||||||
KtKeywordToken WHILE_KEYWORD = KtKeywordToken.keyword("while");
|
KtKeywordToken WHILE_KEYWORD = KtKeywordToken.keyword("while", WHILE_KEYWORD_Id);
|
||||||
KtKeywordToken DO_KEYWORD = KtKeywordToken.keyword("do");
|
KtKeywordToken DO_KEYWORD = KtKeywordToken.keyword("do", DO_KEYWORD_Id);
|
||||||
KtKeywordToken WHEN_KEYWORD = KtKeywordToken.keyword("when");
|
KtKeywordToken WHEN_KEYWORD = KtKeywordToken.keyword("when", WHEN_KEYWORD_Id);
|
||||||
KtKeywordToken INTERFACE_KEYWORD = KtKeywordToken.keyword("interface");
|
KtKeywordToken INTERFACE_KEYWORD = KtKeywordToken.keyword("interface", INTERFACE_KEYWORD_Id);
|
||||||
|
|
||||||
// Reserved for future use:
|
// Reserved for future use:
|
||||||
KtKeywordToken TYPEOF_KEYWORD = KtKeywordToken.keyword("typeof");
|
KtKeywordToken TYPEOF_KEYWORD = KtKeywordToken.keyword("typeof", TYPEOF_KEYWORD_Id);
|
||||||
|
|
||||||
KtToken AS_SAFE = KtKeywordToken.keyword("AS_SAFE");//new KtToken("as?");
|
KtToken AS_SAFE = KtKeywordToken.keyword("AS_SAFE", AS_SAFE_Id);
|
||||||
|
|
||||||
KtToken IDENTIFIER = new KtToken("IDENTIFIER");
|
KtToken IDENTIFIER = new KtToken("IDENTIFIER", IDENTIFIER_Id);
|
||||||
|
|
||||||
KtToken FIELD_IDENTIFIER = new KtToken("FIELD_IDENTIFIER");
|
KtToken FIELD_IDENTIFIER = new KtToken("FIELD_IDENTIFIER", FIELD_IDENTIFIER_Id);
|
||||||
KtSingleValueToken LBRACKET = new KtSingleValueToken("LBRACKET", "[");
|
KtSingleValueToken LBRACKET = new KtSingleValueToken("LBRACKET", "[", LBRACKET_Id);
|
||||||
KtSingleValueToken RBRACKET = new KtSingleValueToken("RBRACKET", "]");
|
KtSingleValueToken RBRACKET = new KtSingleValueToken("RBRACKET", "]", RBRACKET_Id);
|
||||||
KtSingleValueToken LBRACE = new KtSingleValueToken("LBRACE", "{");
|
KtSingleValueToken LBRACE = new KtSingleValueToken("LBRACE", "{", LBRACE_Id);
|
||||||
KtSingleValueToken RBRACE = new KtSingleValueToken("RBRACE", "}");
|
KtSingleValueToken RBRACE = new KtSingleValueToken("RBRACE", "}", RBRACE_Id);
|
||||||
KtSingleValueToken LPAR = new KtSingleValueToken("LPAR", "(");
|
KtSingleValueToken LPAR = new KtSingleValueToken("LPAR", "(", LPAR_Id);
|
||||||
KtSingleValueToken RPAR = new KtSingleValueToken("RPAR", ")");
|
KtSingleValueToken RPAR = new KtSingleValueToken("RPAR", ")", RPAR_Id);
|
||||||
KtSingleValueToken DOT = new KtSingleValueToken("DOT", ".");
|
KtSingleValueToken DOT = new KtSingleValueToken("DOT", ".", DOT_Id);
|
||||||
KtSingleValueToken PLUSPLUS = new KtSingleValueToken("PLUSPLUS", "++");
|
KtSingleValueToken PLUSPLUS = new KtSingleValueToken("PLUSPLUS", "++", PLUSPLUS_Id);
|
||||||
KtSingleValueToken MINUSMINUS = new KtSingleValueToken("MINUSMINUS", "--");
|
KtSingleValueToken MINUSMINUS = new KtSingleValueToken("MINUSMINUS", "--", MINUSMINUS_Id);
|
||||||
KtSingleValueToken MUL = new KtSingleValueToken("MUL", "*");
|
KtSingleValueToken MUL = new KtSingleValueToken("MUL", "*", MUL_Id);
|
||||||
KtSingleValueToken PLUS = new KtSingleValueToken("PLUS", "+");
|
KtSingleValueToken PLUS = new KtSingleValueToken("PLUS", "+", PLUS_Id);
|
||||||
KtSingleValueToken MINUS = new KtSingleValueToken("MINUS", "-");
|
KtSingleValueToken MINUS = new KtSingleValueToken("MINUS", "-", MINUS_Id);
|
||||||
KtSingleValueToken EXCL = new KtSingleValueToken("EXCL", "!");
|
KtSingleValueToken EXCL = new KtSingleValueToken("EXCL", "!", EXCL_Id);
|
||||||
KtSingleValueToken DIV = new KtSingleValueToken("DIV", "/");
|
KtSingleValueToken DIV = new KtSingleValueToken("DIV", "/", DIV_Id);
|
||||||
KtSingleValueToken PERC = new KtSingleValueToken("PERC", "%");
|
KtSingleValueToken PERC = new KtSingleValueToken("PERC", "%", PERC_Id);
|
||||||
KtSingleValueToken LT = new KtSingleValueToken("LT", "<");
|
KtSingleValueToken LT = new KtSingleValueToken("LT", "<", LT_Id);
|
||||||
KtSingleValueToken GT = new KtSingleValueToken("GT", ">");
|
KtSingleValueToken GT = new KtSingleValueToken("GT", ">", GT_Id);
|
||||||
KtSingleValueToken LTEQ = new KtSingleValueToken("LTEQ", "<=");
|
KtSingleValueToken LTEQ = new KtSingleValueToken("LTEQ", "<=", LTEQ_Id);
|
||||||
KtSingleValueToken GTEQ = new KtSingleValueToken("GTEQ", ">=");
|
KtSingleValueToken GTEQ = new KtSingleValueToken("GTEQ", ">=", GTEQ_Id);
|
||||||
KtSingleValueToken EQEQEQ = new KtSingleValueToken("EQEQEQ", "===");
|
KtSingleValueToken EQEQEQ = new KtSingleValueToken("EQEQEQ", "===", EQEQEQ_Id);
|
||||||
KtSingleValueToken ARROW = new KtSingleValueToken("ARROW", "->");
|
KtSingleValueToken ARROW = new KtSingleValueToken("ARROW", "->", ARROW_Id);
|
||||||
KtSingleValueToken DOUBLE_ARROW = new KtSingleValueToken("DOUBLE_ARROW", "=>");
|
KtSingleValueToken DOUBLE_ARROW = new KtSingleValueToken("DOUBLE_ARROW", "=>", DOUBLE_ARROW_Id);
|
||||||
KtSingleValueToken EXCLEQEQEQ = new KtSingleValueToken("EXCLEQEQEQ", "!==");
|
KtSingleValueToken EXCLEQEQEQ = new KtSingleValueToken("EXCLEQEQEQ", "!==", EXCLEQEQEQ_Id);
|
||||||
KtSingleValueToken EQEQ = new KtSingleValueToken("EQEQ", "==");
|
KtSingleValueToken EQEQ = new KtSingleValueToken("EQEQ", "==", EQEQ_Id);
|
||||||
KtSingleValueToken EXCLEQ = new KtSingleValueToken("EXCLEQ", "!=");
|
KtSingleValueToken EXCLEQ = new KtSingleValueToken("EXCLEQ", "!=", EXCLEQ_Id);
|
||||||
KtSingleValueToken EXCLEXCL = new KtSingleValueToken("EXCLEXCL", "!!");
|
KtSingleValueToken EXCLEXCL = new KtSingleValueToken("EXCLEXCL", "!!", EXCLEXCL_Id);
|
||||||
KtSingleValueToken ANDAND = new KtSingleValueToken("ANDAND", "&&");
|
KtSingleValueToken ANDAND = new KtSingleValueToken("ANDAND", "&&", ANDAND_Id);
|
||||||
KtSingleValueToken AND = new KtSingleValueToken("AND", "&");
|
KtSingleValueToken AND = new KtSingleValueToken("AND", "&", AND_Id);
|
||||||
KtSingleValueToken OROR = new KtSingleValueToken("OROR", "||");
|
KtSingleValueToken OROR = new KtSingleValueToken("OROR", "||", OROR_Id);
|
||||||
KtSingleValueToken SAFE_ACCESS = new KtSingleValueToken("SAFE_ACCESS", "?.");
|
KtSingleValueToken SAFE_ACCESS = new KtSingleValueToken("SAFE_ACCESS", "?.", SAFE_ACCESS_Id);
|
||||||
KtSingleValueToken ELVIS = new KtSingleValueToken("ELVIS", "?:");
|
KtSingleValueToken ELVIS = new KtSingleValueToken("ELVIS", "?:", ELVIS_Id);
|
||||||
KtSingleValueToken QUEST = new KtSingleValueToken("QUEST", "?");
|
KtSingleValueToken QUEST = new KtSingleValueToken("QUEST", "?", QUEST_Id);
|
||||||
KtSingleValueToken COLONCOLON = new KtSingleValueToken("COLONCOLON", "::");
|
KtSingleValueToken COLONCOLON = new KtSingleValueToken("COLONCOLON", "::", COLONCOLON_Id);
|
||||||
KtSingleValueToken COLON = new KtSingleValueToken("COLON", ":");
|
KtSingleValueToken COLON = new KtSingleValueToken("COLON", ":", COLON_Id);
|
||||||
KtSingleValueToken SEMICOLON = new KtSingleValueToken("SEMICOLON", ";");
|
KtSingleValueToken SEMICOLON = new KtSingleValueToken("SEMICOLON", ";", SEMICOLON_Id);
|
||||||
KtSingleValueToken DOUBLE_SEMICOLON = new KtSingleValueToken("DOUBLE_SEMICOLON", ";;");
|
KtSingleValueToken DOUBLE_SEMICOLON = new KtSingleValueToken("DOUBLE_SEMICOLON", ";;", DOUBLE_SEMICOLON_Id);
|
||||||
KtSingleValueToken RANGE = new KtSingleValueToken("RANGE", "..");
|
KtSingleValueToken RANGE = new KtSingleValueToken("RANGE", "..", RANGE_Id);
|
||||||
KtSingleValueToken RANGE_UNTIL = new KtSingleValueToken("RANGE_UNTIL", "..<");
|
KtSingleValueToken RANGE_UNTIL = new KtSingleValueToken("RANGE_UNTIL", "..<", RANGE_UNTIL_Id);
|
||||||
KtSingleValueToken EQ = new KtSingleValueToken("EQ", "=");
|
KtSingleValueToken EQ = new KtSingleValueToken("EQ", "=", EQ_Id);
|
||||||
KtSingleValueToken MULTEQ = new KtSingleValueToken("MULTEQ", "*=");
|
KtSingleValueToken MULTEQ = new KtSingleValueToken("MULTEQ", "*=", MULTEQ_Id);
|
||||||
KtSingleValueToken DIVEQ = new KtSingleValueToken("DIVEQ", "/=");
|
KtSingleValueToken DIVEQ = new KtSingleValueToken("DIVEQ", "/=", DIVEQ_Id);
|
||||||
KtSingleValueToken PERCEQ = new KtSingleValueToken("PERCEQ", "%=");
|
KtSingleValueToken PERCEQ = new KtSingleValueToken("PERCEQ", "%=", PERCEQ_Id);
|
||||||
KtSingleValueToken PLUSEQ = new KtSingleValueToken("PLUSEQ", "+=");
|
KtSingleValueToken PLUSEQ = new KtSingleValueToken("PLUSEQ", "+=", PLUSEQ_Id);
|
||||||
KtSingleValueToken MINUSEQ = new KtSingleValueToken("MINUSEQ", "-=");
|
KtSingleValueToken MINUSEQ = new KtSingleValueToken("MINUSEQ", "-=", MINUSEQ_Id);
|
||||||
KtKeywordToken NOT_IN = KtKeywordToken.keyword("NOT_IN", "!in");
|
KtKeywordToken NOT_IN = KtKeywordToken.keyword("NOT_IN", "!in", NOT_IN_Id);
|
||||||
KtKeywordToken NOT_IS = KtKeywordToken.keyword("NOT_IS", "!is");
|
KtKeywordToken NOT_IS = KtKeywordToken.keyword("NOT_IS", "!is", NOT_IS_Id);
|
||||||
KtSingleValueToken HASH = new KtSingleValueToken("HASH", "#");
|
KtSingleValueToken HASH = new KtSingleValueToken("HASH", "#", HASH_Id);
|
||||||
KtSingleValueToken AT = new KtSingleValueToken("AT", "@");
|
KtSingleValueToken AT = new KtSingleValueToken("AT", "@", AT_Id);
|
||||||
|
|
||||||
KtSingleValueToken COMMA = new KtSingleValueToken("COMMA", ",");
|
KtSingleValueToken COMMA = new KtSingleValueToken("COMMA", ",", COMMA_Id);
|
||||||
|
|
||||||
KtToken EOL_OR_SEMICOLON = new KtToken("EOL_OR_SEMICOLON");
|
KtToken EOL_OR_SEMICOLON = new KtToken("EOL_OR_SEMICOLON", EOL_OR_SEMICOLON_Id);
|
||||||
KtKeywordToken FILE_KEYWORD = KtKeywordToken.softKeyword("file");
|
KtKeywordToken FILE_KEYWORD = KtKeywordToken.softKeyword("file", FILE_KEYWORD_Id);
|
||||||
KtKeywordToken FIELD_KEYWORD = KtKeywordToken.softKeyword("field");
|
KtKeywordToken FIELD_KEYWORD = KtKeywordToken.softKeyword("field", FIELD_KEYWORD_Id);
|
||||||
KtKeywordToken PROPERTY_KEYWORD = KtKeywordToken.softKeyword("property");
|
KtKeywordToken PROPERTY_KEYWORD = KtKeywordToken.softKeyword("property", PROPERTY_KEYWORD_Id);
|
||||||
KtKeywordToken RECEIVER_KEYWORD = KtKeywordToken.softKeyword("receiver");
|
KtKeywordToken RECEIVER_KEYWORD = KtKeywordToken.softKeyword("receiver", RECEIVER_KEYWORD_Id);
|
||||||
KtKeywordToken PARAM_KEYWORD = KtKeywordToken.softKeyword("param");
|
KtKeywordToken PARAM_KEYWORD = KtKeywordToken.softKeyword("param", PARAM_KEYWORD_Id);
|
||||||
KtKeywordToken SETPARAM_KEYWORD = KtKeywordToken.softKeyword("setparam");
|
KtKeywordToken SETPARAM_KEYWORD = KtKeywordToken.softKeyword("setparam", SETPARAM_KEYWORD_Id);
|
||||||
KtKeywordToken DELEGATE_KEYWORD = KtKeywordToken.softKeyword("delegate");
|
KtKeywordToken DELEGATE_KEYWORD = KtKeywordToken.softKeyword("delegate", DELEGATE_KEYWORD_Id);
|
||||||
KtKeywordToken IMPORT_KEYWORD = KtKeywordToken.softKeyword("import");
|
KtKeywordToken IMPORT_KEYWORD = KtKeywordToken.softKeyword("import", IMPORT_KEYWORD_Id);
|
||||||
KtKeywordToken WHERE_KEYWORD = KtKeywordToken.softKeyword("where");
|
KtKeywordToken WHERE_KEYWORD = KtKeywordToken.softKeyword("where", WHERE_KEYWORD_Id);
|
||||||
KtKeywordToken BY_KEYWORD = KtKeywordToken.softKeyword("by");
|
KtKeywordToken BY_KEYWORD = KtKeywordToken.softKeyword("by", BY_KEYWORD_Id);
|
||||||
KtKeywordToken GET_KEYWORD = KtKeywordToken.softKeyword("get");
|
KtKeywordToken GET_KEYWORD = KtKeywordToken.softKeyword("get", GET_KEYWORD_Id);
|
||||||
KtKeywordToken SET_KEYWORD = KtKeywordToken.softKeyword("set");
|
KtKeywordToken SET_KEYWORD = KtKeywordToken.softKeyword("set", SET_KEYWORD_Id);
|
||||||
KtKeywordToken CONSTRUCTOR_KEYWORD = KtKeywordToken.softKeyword("constructor");
|
KtKeywordToken CONSTRUCTOR_KEYWORD = KtKeywordToken.softKeyword("constructor", CONSTRUCTOR_KEYWORD_Id);
|
||||||
KtKeywordToken INIT_KEYWORD = KtKeywordToken.softKeyword("init");
|
KtKeywordToken INIT_KEYWORD = KtKeywordToken.softKeyword("init", INIT_KEYWORD_Id);
|
||||||
KtKeywordToken CONTEXT_KEYWORD = KtKeywordToken.softKeyword("context");
|
KtKeywordToken CONTEXT_KEYWORD = KtKeywordToken.softKeyword("context", CONTEXT_KEYWORD_Id);
|
||||||
|
|
||||||
KtModifierKeywordToken ABSTRACT_KEYWORD = KtModifierKeywordToken.softKeywordModifier("abstract");
|
KtModifierKeywordToken ABSTRACT_KEYWORD = KtModifierKeywordToken.softKeywordModifier("abstract", ABSTRACT_KEYWORD_Id);
|
||||||
KtModifierKeywordToken ENUM_KEYWORD = KtModifierKeywordToken.softKeywordModifier("enum");
|
KtModifierKeywordToken ENUM_KEYWORD = KtModifierKeywordToken.softKeywordModifier("enum", ENUM_KEYWORD_Id);
|
||||||
KtModifierKeywordToken CONTRACT_KEYWORD = KtModifierKeywordToken.softKeywordModifier("contract");
|
KtModifierKeywordToken CONTRACT_KEYWORD = KtModifierKeywordToken.softKeywordModifier("contract", CONTRACT_KEYWORD_Id);
|
||||||
KtModifierKeywordToken OPEN_KEYWORD = KtModifierKeywordToken.softKeywordModifier("open");
|
KtModifierKeywordToken OPEN_KEYWORD = KtModifierKeywordToken.softKeywordModifier("open", OPEN_KEYWORD_Id);
|
||||||
KtModifierKeywordToken INNER_KEYWORD = KtModifierKeywordToken.softKeywordModifier("inner");
|
KtModifierKeywordToken INNER_KEYWORD = KtModifierKeywordToken.softKeywordModifier("inner", INNER_KEYWORD_Id);
|
||||||
KtModifierKeywordToken OVERRIDE_KEYWORD = KtModifierKeywordToken.softKeywordModifier("override");
|
KtModifierKeywordToken OVERRIDE_KEYWORD = KtModifierKeywordToken.softKeywordModifier("override", OVERRIDE_KEYWORD_Id);
|
||||||
KtModifierKeywordToken PRIVATE_KEYWORD = KtModifierKeywordToken.softKeywordModifier("private");
|
KtModifierKeywordToken PRIVATE_KEYWORD = KtModifierKeywordToken.softKeywordModifier("private", PRIVATE_KEYWORD_Id);
|
||||||
KtModifierKeywordToken PUBLIC_KEYWORD = KtModifierKeywordToken.softKeywordModifier("public");
|
KtModifierKeywordToken PUBLIC_KEYWORD = KtModifierKeywordToken.softKeywordModifier("public", PUBLIC_KEYWORD_Id);
|
||||||
KtModifierKeywordToken INTERNAL_KEYWORD = KtModifierKeywordToken.softKeywordModifier("internal");
|
KtModifierKeywordToken INTERNAL_KEYWORD = KtModifierKeywordToken.softKeywordModifier("internal", INTERNAL_KEYWORD_Id);
|
||||||
KtModifierKeywordToken PROTECTED_KEYWORD = KtModifierKeywordToken.softKeywordModifier("protected");
|
KtModifierKeywordToken PROTECTED_KEYWORD = KtModifierKeywordToken.softKeywordModifier("protected", PROTECTED_KEYWORD_Id);
|
||||||
KtKeywordToken CATCH_KEYWORD = KtKeywordToken.softKeyword("catch");
|
KtKeywordToken CATCH_KEYWORD = KtKeywordToken.softKeyword("catch", CATCH_KEYWORD_Id);
|
||||||
KtModifierKeywordToken OUT_KEYWORD = KtModifierKeywordToken.softKeywordModifier("out");
|
KtModifierKeywordToken OUT_KEYWORD = KtModifierKeywordToken.softKeywordModifier("out", OUT_KEYWORD_Id);
|
||||||
KtModifierKeywordToken VARARG_KEYWORD = KtModifierKeywordToken.softKeywordModifier("vararg");
|
KtModifierKeywordToken VARARG_KEYWORD = KtModifierKeywordToken.softKeywordModifier("vararg", VARARG_KEYWORD_Id);
|
||||||
KtModifierKeywordToken REIFIED_KEYWORD = KtModifierKeywordToken.softKeywordModifier("reified");
|
KtModifierKeywordToken REIFIED_KEYWORD = KtModifierKeywordToken.softKeywordModifier("reified", REIFIED_KEYWORD_Id);
|
||||||
KtKeywordToken DYNAMIC_KEYWORD = KtKeywordToken.softKeyword("dynamic");
|
KtKeywordToken DYNAMIC_KEYWORD = KtKeywordToken.softKeyword("dynamic", DYNAMIC_KEYWORD_Id);
|
||||||
KtModifierKeywordToken COMPANION_KEYWORD = KtModifierKeywordToken.softKeywordModifier("companion");
|
KtModifierKeywordToken COMPANION_KEYWORD = KtModifierKeywordToken.softKeywordModifier("companion", COMPANION_KEYWORD_Id);
|
||||||
KtModifierKeywordToken SEALED_KEYWORD = KtModifierKeywordToken.softKeywordModifier("sealed");
|
KtModifierKeywordToken SEALED_KEYWORD = KtModifierKeywordToken.softKeywordModifier("sealed", SEALED_KEYWORD_Id);
|
||||||
|
|
||||||
KtModifierKeywordToken DEFAULT_VISIBILITY_KEYWORD = PUBLIC_KEYWORD;
|
KtModifierKeywordToken DEFAULT_VISIBILITY_KEYWORD = PUBLIC_KEYWORD;
|
||||||
|
|
||||||
KtKeywordToken FINALLY_KEYWORD = KtKeywordToken.softKeyword("finally");
|
KtKeywordToken FINALLY_KEYWORD = KtKeywordToken.softKeyword("finally", FINALLY_KEYWORD_Id);
|
||||||
KtModifierKeywordToken FINAL_KEYWORD = KtModifierKeywordToken.softKeywordModifier("final");
|
KtModifierKeywordToken FINAL_KEYWORD = KtModifierKeywordToken.softKeywordModifier("final", FINAL_KEYWORD_Id);
|
||||||
|
|
||||||
KtModifierKeywordToken LATEINIT_KEYWORD = KtModifierKeywordToken.softKeywordModifier("lateinit");
|
KtModifierKeywordToken LATEINIT_KEYWORD = KtModifierKeywordToken.softKeywordModifier("lateinit", LATEINIT_KEYWORD_Id);
|
||||||
|
|
||||||
KtModifierKeywordToken DATA_KEYWORD = KtModifierKeywordToken.softKeywordModifier("data");
|
KtModifierKeywordToken DATA_KEYWORD = KtModifierKeywordToken.softKeywordModifier("data", DATA_KEYWORD_Id);
|
||||||
KtModifierKeywordToken VALUE_KEYWORD = KtModifierKeywordToken.softKeywordModifier("value");
|
KtModifierKeywordToken VALUE_KEYWORD = KtModifierKeywordToken.softKeywordModifier("value", VALUE_KEYWORD_Id);
|
||||||
KtModifierKeywordToken INLINE_KEYWORD = KtModifierKeywordToken.softKeywordModifier("inline");
|
KtModifierKeywordToken INLINE_KEYWORD = KtModifierKeywordToken.softKeywordModifier("inline", INLINE_KEYWORD_Id);
|
||||||
KtModifierKeywordToken NOINLINE_KEYWORD = KtModifierKeywordToken.softKeywordModifier("noinline");
|
KtModifierKeywordToken NOINLINE_KEYWORD = KtModifierKeywordToken.softKeywordModifier("noinline", NOINLINE_KEYWORD_Id);
|
||||||
KtModifierKeywordToken TAILREC_KEYWORD = KtModifierKeywordToken.softKeywordModifier("tailrec");
|
KtModifierKeywordToken TAILREC_KEYWORD = KtModifierKeywordToken.softKeywordModifier("tailrec", TAILREC_KEYWORD_Id);
|
||||||
KtModifierKeywordToken EXTERNAL_KEYWORD = KtModifierKeywordToken.softKeywordModifier("external");
|
KtModifierKeywordToken EXTERNAL_KEYWORD = KtModifierKeywordToken.softKeywordModifier("external", EXTERNAL_KEYWORD_Id);
|
||||||
KtModifierKeywordToken ANNOTATION_KEYWORD = KtModifierKeywordToken.softKeywordModifier("annotation");
|
KtModifierKeywordToken ANNOTATION_KEYWORD = KtModifierKeywordToken.softKeywordModifier("annotation", ANNOTATION_KEYWORD_Id);
|
||||||
KtModifierKeywordToken CROSSINLINE_KEYWORD = KtModifierKeywordToken.softKeywordModifier("crossinline");
|
KtModifierKeywordToken CROSSINLINE_KEYWORD = KtModifierKeywordToken.softKeywordModifier("crossinline", CROSSINLINE_KEYWORD_Id);
|
||||||
KtModifierKeywordToken OPERATOR_KEYWORD = KtModifierKeywordToken.softKeywordModifier("operator");
|
KtModifierKeywordToken OPERATOR_KEYWORD = KtModifierKeywordToken.softKeywordModifier("operator", OPERATOR_KEYWORD_Id);
|
||||||
KtModifierKeywordToken INFIX_KEYWORD = KtModifierKeywordToken.softKeywordModifier("infix");
|
KtModifierKeywordToken INFIX_KEYWORD = KtModifierKeywordToken.softKeywordModifier("infix", INFIX_KEYWORD_Id);
|
||||||
|
|
||||||
KtModifierKeywordToken CONST_KEYWORD = KtModifierKeywordToken.softKeywordModifier("const");
|
KtModifierKeywordToken CONST_KEYWORD = KtModifierKeywordToken.softKeywordModifier("const", CONST_KEYWORD_Id);
|
||||||
|
|
||||||
KtModifierKeywordToken SUSPEND_KEYWORD = KtModifierKeywordToken.softKeywordModifier("suspend");
|
KtModifierKeywordToken SUSPEND_KEYWORD = KtModifierKeywordToken.softKeywordModifier("suspend", SUSPEND_KEYWORD_Id);
|
||||||
|
|
||||||
KtModifierKeywordToken HEADER_KEYWORD = KtModifierKeywordToken.softKeywordModifier("header");
|
KtModifierKeywordToken HEADER_KEYWORD = KtModifierKeywordToken.softKeywordModifier("header", HEADER_KEYWORD_Id);
|
||||||
KtModifierKeywordToken IMPL_KEYWORD = KtModifierKeywordToken.softKeywordModifier("impl");
|
KtModifierKeywordToken IMPL_KEYWORD = KtModifierKeywordToken.softKeywordModifier("impl", IMPL_KEYWORD_Id);
|
||||||
|
|
||||||
|
KtModifierKeywordToken EXPECT_KEYWORD = KtModifierKeywordToken.softKeywordModifier("expect", EXPECT_KEYWORD_Id);
|
||||||
|
KtModifierKeywordToken ACTUAL_KEYWORD = KtModifierKeywordToken.softKeywordModifier("actual", ACTUAL_KEYWORD_Id);
|
||||||
|
|
||||||
KtModifierKeywordToken EXPECT_KEYWORD = KtModifierKeywordToken.softKeywordModifier("expect");
|
|
||||||
KtModifierKeywordToken ACTUAL_KEYWORD = KtModifierKeywordToken.softKeywordModifier("actual");
|
|
||||||
|
|
||||||
TokenSet KEYWORDS = TokenSet.create(PACKAGE_KEYWORD, AS_KEYWORD, TYPE_ALIAS_KEYWORD, CLASS_KEYWORD, INTERFACE_KEYWORD,
|
TokenSet KEYWORDS = TokenSet.create(PACKAGE_KEYWORD, AS_KEYWORD, TYPE_ALIAS_KEYWORD, CLASS_KEYWORD, INTERFACE_KEYWORD,
|
||||||
THIS_KEYWORD, SUPER_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, FUN_KEYWORD, FOR_KEYWORD,
|
THIS_KEYWORD, SUPER_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, FUN_KEYWORD, FOR_KEYWORD,
|
||||||
|
|||||||
@@ -144,6 +144,11 @@ import static org.jetbrains.kotlin.lexer.KtTokens.*;
|
|||||||
myBuilder.advanceLexer();
|
myBuilder.advanceLexer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected int getTokenId() {
|
||||||
|
IElementType elementType = tt();
|
||||||
|
return (elementType instanceof KtToken) ? ((KtToken)elementType).tokenId : INVALID_Id;
|
||||||
|
}
|
||||||
|
|
||||||
protected IElementType tt() {
|
protected IElementType tt() {
|
||||||
return myBuilder.getTokenType();
|
return myBuilder.getTokenType();
|
||||||
}
|
}
|
||||||
@@ -302,39 +307,42 @@ import static org.jetbrains.kotlin.lexer.KtTokens.*;
|
|||||||
pattern.isTopLevel(openAngleBrackets, openBrackets, openBraces, openParentheses))) {
|
pattern.isTopLevel(openAngleBrackets, openBrackets, openBraces, openParentheses))) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (at(LPAR)) {
|
switch (getTokenId()) {
|
||||||
openParentheses++;
|
case LPAR_Id:
|
||||||
opens.push(LPAR);
|
openParentheses++;
|
||||||
}
|
opens.push(LPAR);
|
||||||
else if (at(LT)) {
|
break;
|
||||||
openAngleBrackets++;
|
case LT_Id:
|
||||||
opens.push(LT);
|
openAngleBrackets++;
|
||||||
}
|
opens.push(LT);
|
||||||
else if (at(LBRACE)) {
|
break;
|
||||||
openBraces++;
|
case LBRACE_Id:
|
||||||
opens.push(LBRACE);
|
openBraces++;
|
||||||
}
|
opens.push(LBRACE);
|
||||||
else if (at(LBRACKET)) {
|
break;
|
||||||
openBrackets++;
|
case LBRACKET_Id:
|
||||||
opens.push(LBRACKET);
|
openBrackets++;
|
||||||
}
|
opens.push(LBRACKET);
|
||||||
else if (at(RPAR)) {
|
break;
|
||||||
openParentheses--;
|
case RPAR_Id:
|
||||||
if (opens.isEmpty() || opens.pop() != LPAR) {
|
openParentheses--;
|
||||||
if (pattern.handleUnmatchedClosing(RPAR)) {
|
if (opens.isEmpty() || opens.pop() != LPAR) {
|
||||||
break;
|
if (pattern.handleUnmatchedClosing(RPAR)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
}
|
case GT_Id:
|
||||||
else if (at(GT)) {
|
openAngleBrackets--;
|
||||||
openAngleBrackets--;
|
break;
|
||||||
}
|
case RBRACE_Id:
|
||||||
else if (at(RBRACE)) {
|
openBraces--;
|
||||||
openBraces--;
|
break;
|
||||||
}
|
case RBRACKET_Id:
|
||||||
else if (at(RBRACKET)) {
|
openBrackets--;
|
||||||
openBrackets--;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
advance(); // skip token
|
advance(); // skip token
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -630,66 +630,104 @@ public class KotlinExpressionParsing extends AbstractKotlinParsing {
|
|||||||
private boolean parseAtomicExpression() {
|
private boolean parseAtomicExpression() {
|
||||||
boolean ok = true;
|
boolean ok = true;
|
||||||
|
|
||||||
if (at(LPAR)) {
|
switch (getTokenId()) {
|
||||||
parseParenthesizedExpression();
|
case LPAR_Id:
|
||||||
|
parseParenthesizedExpression();
|
||||||
|
break;
|
||||||
|
case LBRACKET_Id:
|
||||||
|
parseCollectionLiteralExpression();
|
||||||
|
break;
|
||||||
|
case THIS_KEYWORD_Id:
|
||||||
|
parseThisExpression();
|
||||||
|
break;
|
||||||
|
case SUPER_KEYWORD_Id:
|
||||||
|
parseSuperExpression();
|
||||||
|
break;
|
||||||
|
case OBJECT_KEYWORD_Id:
|
||||||
|
parseObjectLiteral();
|
||||||
|
break;
|
||||||
|
case THROW_KEYWORD_Id:
|
||||||
|
parseThrow();
|
||||||
|
break;
|
||||||
|
case RETURN_KEYWORD_Id:
|
||||||
|
parseReturn();
|
||||||
|
break;
|
||||||
|
case CONTINUE_KEYWORD_Id:
|
||||||
|
parseJump(CONTINUE);
|
||||||
|
break;
|
||||||
|
case BREAK_KEYWORD_Id:
|
||||||
|
parseJump(BREAK);
|
||||||
|
break;
|
||||||
|
case IF_KEYWORD_Id:
|
||||||
|
parseIf();
|
||||||
|
break;
|
||||||
|
case WHEN_KEYWORD_Id:
|
||||||
|
parseWhen();
|
||||||
|
break;
|
||||||
|
case TRY_KEYWORD_Id:
|
||||||
|
parseTry();
|
||||||
|
break;
|
||||||
|
case FOR_KEYWORD_Id:
|
||||||
|
parseFor();
|
||||||
|
break;
|
||||||
|
case WHILE_KEYWORD_Id:
|
||||||
|
parseWhile();
|
||||||
|
break;
|
||||||
|
case DO_KEYWORD_Id:
|
||||||
|
parseDoWhile();
|
||||||
|
break;
|
||||||
|
case IDENTIFIER_Id:
|
||||||
|
parseSimpleNameExpression();
|
||||||
|
break;
|
||||||
|
case LBRACE_Id:
|
||||||
|
parseFunctionLiteral();
|
||||||
|
break;
|
||||||
|
case OPEN_QUOTE_Id:
|
||||||
|
parseStringTemplate();
|
||||||
|
break;
|
||||||
|
/*
|
||||||
|
* literalConstant
|
||||||
|
* : "true" | "false"
|
||||||
|
* : stringTemplate
|
||||||
|
* : NoEscapeString
|
||||||
|
* : IntegerLiteral
|
||||||
|
* : CharacterLiteral
|
||||||
|
* : FloatLiteral
|
||||||
|
* : "null"
|
||||||
|
* ;
|
||||||
|
*/
|
||||||
|
case TRUE_KEYWORD_Id:
|
||||||
|
case FALSE_KEYWORD_Id:
|
||||||
|
parseOneTokenExpression(BOOLEAN_CONSTANT);
|
||||||
|
break;
|
||||||
|
case INTEGER_LITERAL_Id:
|
||||||
|
parseOneTokenExpression(INTEGER_CONSTANT);
|
||||||
|
break;
|
||||||
|
case CHARACTER_LITERAL_Id:
|
||||||
|
parseOneTokenExpression(CHARACTER_CONSTANT);
|
||||||
|
break;
|
||||||
|
case FLOAT_LITERAL_Id:
|
||||||
|
parseOneTokenExpression(FLOAT_CONSTANT);
|
||||||
|
break;
|
||||||
|
case NULL_KEYWORD_Id:
|
||||||
|
parseOneTokenExpression(NULL);
|
||||||
|
break;
|
||||||
|
case CLASS_KEYWORD_Id:
|
||||||
|
case INTERFACE_KEYWORD_Id:
|
||||||
|
case FUN_KEYWORD_Id:
|
||||||
|
case VAL_KEYWORD_Id:
|
||||||
|
case VAR_KEYWORD_Id:
|
||||||
|
case TYPE_ALIAS_KEYWORD_Id:
|
||||||
|
if (!parseLocalDeclaration(/* rollbackIfDefinitelyNotExpression = */ myBuilder.newlineBeforeCurrentToken(), false)) {
|
||||||
|
ok = false;
|
||||||
|
}
|
||||||
|
// declaration was parsed, do nothing
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ok = false;
|
||||||
}
|
}
|
||||||
else if (at(LBRACKET)) {
|
|
||||||
parseCollectionLiteralExpression();
|
if (!ok) {
|
||||||
}
|
|
||||||
else if (at(THIS_KEYWORD)) {
|
|
||||||
parseThisExpression();
|
|
||||||
}
|
|
||||||
else if (at(SUPER_KEYWORD)) {
|
|
||||||
parseSuperExpression();
|
|
||||||
}
|
|
||||||
else if (at(OBJECT_KEYWORD)) {
|
|
||||||
parseObjectLiteral();
|
|
||||||
}
|
|
||||||
else if (at(THROW_KEYWORD)) {
|
|
||||||
parseThrow();
|
|
||||||
}
|
|
||||||
else if (at(RETURN_KEYWORD)) {
|
|
||||||
parseReturn();
|
|
||||||
}
|
|
||||||
else if (at(CONTINUE_KEYWORD)) {
|
|
||||||
parseJump(CONTINUE);
|
|
||||||
}
|
|
||||||
else if (at(BREAK_KEYWORD)) {
|
|
||||||
parseJump(BREAK);
|
|
||||||
}
|
|
||||||
else if (at(IF_KEYWORD)) {
|
|
||||||
parseIf();
|
|
||||||
}
|
|
||||||
else if (at(WHEN_KEYWORD)) {
|
|
||||||
parseWhen();
|
|
||||||
}
|
|
||||||
else if (at(TRY_KEYWORD)) {
|
|
||||||
parseTry();
|
|
||||||
}
|
|
||||||
else if (at(FOR_KEYWORD)) {
|
|
||||||
parseFor();
|
|
||||||
}
|
|
||||||
else if (at(WHILE_KEYWORD)) {
|
|
||||||
parseWhile();
|
|
||||||
}
|
|
||||||
else if (at(DO_KEYWORD)) {
|
|
||||||
parseDoWhile();
|
|
||||||
}
|
|
||||||
else if (atSet(LOCAL_DECLARATION_FIRST) &&
|
|
||||||
parseLocalDeclaration(/* rollbackIfDefinitelyNotExpression = */ myBuilder.newlineBeforeCurrentToken(), false)) {
|
|
||||||
// declaration was parsed, do nothing
|
|
||||||
}
|
|
||||||
else if (at(IDENTIFIER)) {
|
|
||||||
parseSimpleNameExpression();
|
|
||||||
}
|
|
||||||
else if (at(LBRACE)) {
|
|
||||||
parseFunctionLiteral();
|
|
||||||
}
|
|
||||||
else if (at(OPEN_QUOTE)) {
|
|
||||||
parseStringTemplate();
|
|
||||||
}
|
|
||||||
else if (!parseLiteralConstant()) {
|
|
||||||
ok = false;
|
|
||||||
// TODO: better recovery if FIRST(element) did not match
|
// TODO: better recovery if FIRST(element) did not match
|
||||||
errorWithRecovery("Expecting an element", TokenSet.orSet(EXPRESSION_FOLLOW, TokenSet.create(LONG_TEMPLATE_ENTRY_END)));
|
errorWithRecovery("Expecting an element", TokenSet.orSet(EXPRESSION_FOLLOW, TokenSet.create(LONG_TEMPLATE_ENTRY_END)));
|
||||||
}
|
}
|
||||||
@@ -804,39 +842,6 @@ public class KotlinExpressionParsing extends AbstractKotlinParsing {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* literalConstant
|
|
||||||
* : "true" | "false"
|
|
||||||
* : stringTemplate
|
|
||||||
* : NoEscapeString
|
|
||||||
* : IntegerLiteral
|
|
||||||
* : CharacterLiteral
|
|
||||||
* : FloatLiteral
|
|
||||||
* : "null"
|
|
||||||
* ;
|
|
||||||
*/
|
|
||||||
private boolean parseLiteralConstant() {
|
|
||||||
if (at(TRUE_KEYWORD) || at(FALSE_KEYWORD)) {
|
|
||||||
parseOneTokenExpression(BOOLEAN_CONSTANT);
|
|
||||||
}
|
|
||||||
else if (at(INTEGER_LITERAL)) {
|
|
||||||
parseOneTokenExpression(INTEGER_CONSTANT);
|
|
||||||
}
|
|
||||||
else if (at(CHARACTER_LITERAL)) {
|
|
||||||
parseOneTokenExpression(CHARACTER_CONSTANT);
|
|
||||||
}
|
|
||||||
else if (at(FLOAT_LITERAL)) {
|
|
||||||
parseOneTokenExpression(FLOAT_CONSTANT);
|
|
||||||
}
|
|
||||||
else if (at(NULL_KEYWORD)) {
|
|
||||||
parseOneTokenExpression(NULL);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* when
|
* when
|
||||||
* : "when" ("(" (modifiers "val" SimpleName "=")? element ")")? "{"
|
* : "when" ("(" (modifiers "val" SimpleName "=")? element ")")? "{"
|
||||||
@@ -963,39 +968,45 @@ public class KotlinExpressionParsing extends AbstractKotlinParsing {
|
|||||||
private void parseWhenCondition() {
|
private void parseWhenCondition() {
|
||||||
PsiBuilder.Marker condition = mark();
|
PsiBuilder.Marker condition = mark();
|
||||||
myBuilder.disableNewlines();
|
myBuilder.disableNewlines();
|
||||||
if (at(IN_KEYWORD) || at(NOT_IN)) {
|
switch (getTokenId()) {
|
||||||
PsiBuilder.Marker mark = mark();
|
case IN_KEYWORD_Id:
|
||||||
advance(); // IN_KEYWORD or NOT_IN
|
case NOT_IN_Id:
|
||||||
mark.done(OPERATION_REFERENCE);
|
PsiBuilder.Marker mark = mark();
|
||||||
|
advance(); // IN_KEYWORD or NOT_IN
|
||||||
|
mark.done(OPERATION_REFERENCE);
|
||||||
|
|
||||||
|
|
||||||
if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_ARROW)) {
|
if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_ARROW)) {
|
||||||
error("Expecting an element");
|
error("Expecting an element");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
parseExpression();
|
parseExpression();
|
||||||
}
|
}
|
||||||
condition.done(WHEN_CONDITION_IN_RANGE);
|
condition.done(WHEN_CONDITION_IN_RANGE);
|
||||||
}
|
break;
|
||||||
else if (at(IS_KEYWORD) || at(NOT_IS)) {
|
case IS_KEYWORD_Id:
|
||||||
advance(); // IS_KEYWORD or NOT_IS
|
case NOT_IS_Id:
|
||||||
|
advance(); // IS_KEYWORD or NOT_IS
|
||||||
|
|
||||||
if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_ARROW)) {
|
if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_ARROW)) {
|
||||||
error("Expecting a type");
|
error("Expecting a type");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
myKotlinParsing.parseTypeRef();
|
myKotlinParsing.parseTypeRef();
|
||||||
}
|
}
|
||||||
condition.done(WHEN_CONDITION_IS_PATTERN);
|
condition.done(WHEN_CONDITION_IS_PATTERN);
|
||||||
}
|
break;
|
||||||
else {
|
case RBRACE_Id:
|
||||||
if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_ARROW)) {
|
case ELSE_KEYWORD_Id:
|
||||||
|
case ARROW_Id:
|
||||||
|
case DOT_Id:
|
||||||
error("Expecting an expression, is-condition or in-condition");
|
error("Expecting an expression, is-condition or in-condition");
|
||||||
}
|
condition.done(WHEN_CONDITION_EXPRESSION);
|
||||||
else {
|
break;
|
||||||
|
default:
|
||||||
parseExpression();
|
parseExpression();
|
||||||
}
|
condition.done(WHEN_CONDITION_EXPRESSION);
|
||||||
condition.done(WHEN_CONDITION_EXPRESSION);
|
break;
|
||||||
}
|
}
|
||||||
myBuilder.restoreNewlinesState();
|
myBuilder.restoreNewlinesState();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -497,25 +497,24 @@ public class KotlinParsing extends AbstractKotlinParsing {
|
|||||||
@NotNull NameParsingMode nameParsingModeForObject,
|
@NotNull NameParsingMode nameParsingModeForObject,
|
||||||
@NotNull DeclarationParsingMode declarationParsingMode
|
@NotNull DeclarationParsingMode declarationParsingMode
|
||||||
) {
|
) {
|
||||||
IElementType keywordToken = tt();
|
switch (getTokenId()) {
|
||||||
|
case CLASS_KEYWORD_Id:
|
||||||
if (keywordToken == CLASS_KEYWORD || keywordToken == INTERFACE_KEYWORD) {
|
case INTERFACE_KEYWORD_Id:
|
||||||
return parseClass(detector.isEnumDetected(), true);
|
return parseClass(detector.isEnumDetected(), true);
|
||||||
}
|
case FUN_KEYWORD_Id:
|
||||||
else if (keywordToken == FUN_KEYWORD) {
|
return parseFunction();
|
||||||
return parseFunction();
|
case VAL_KEYWORD_Id:
|
||||||
}
|
case VAR_KEYWORD_Id:
|
||||||
else if (keywordToken == VAL_KEYWORD || keywordToken == VAR_KEYWORD) {
|
return parseProperty(declarationParsingMode);
|
||||||
return parseProperty(declarationParsingMode);
|
case TYPE_ALIAS_KEYWORD_Id:
|
||||||
}
|
return parseTypeAlias();
|
||||||
else if (keywordToken == TYPE_ALIAS_KEYWORD) {
|
case OBJECT_KEYWORD_Id:
|
||||||
return parseTypeAlias();
|
parseObject(nameParsingModeForObject, true);
|
||||||
}
|
return OBJECT_DECLARATION;
|
||||||
else if (keywordToken == OBJECT_KEYWORD) {
|
case IDENTIFIER_Id:
|
||||||
parseObject(nameParsingModeForObject, true);
|
if (detector.isEnumDetected() && declarationParsingMode.canBeEnumUsedAsSoftKeyword) {
|
||||||
return OBJECT_DECLARATION;
|
return parseClass(true, false);
|
||||||
} else if (keywordToken == IDENTIFIER && detector.isEnumDetected() && declarationParsingMode.canBeEnumUsedAsSoftKeyword) {
|
}
|
||||||
return parseClass(true, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
Reference in New Issue
Block a user