From 19136019e44a08b4899691a2c682b4809818ea36 Mon Sep 17 00:00:00 2001 From: Victor Petukhov Date: Mon, 23 May 2022 14:24:35 +0200 Subject: [PATCH] [Parser] Support of parsing until operator ^KT-52419 Fixed --- .../kotlin/kdoc/lexer/_KDocLexer.java | 7 +- .../org/jetbrains/kotlin/lexer/Kotlin.flex | 1 + .../org/jetbrains/kotlin/lexer/KtTokens.java | 3 +- .../org/jetbrains/kotlin/lexer/_JetLexer.java | 603 +++++++++--------- .../parsing/KotlinExpressionParsing.java | 4 +- .../testData/psi/operators/untilOperator.kt | 5 + .../testData/psi/operators/untilOperator.txt | 42 ++ .../kotlin/parsing/ParsingTestGenerated.java | 18 + 8 files changed, 380 insertions(+), 303 deletions(-) create mode 100644 compiler/testData/psi/operators/untilOperator.kt create mode 100644 compiler/testData/psi/operators/untilOperator.txt diff --git a/compiler/psi/src/org/jetbrains/kotlin/kdoc/lexer/_KDocLexer.java b/compiler/psi/src/org/jetbrains/kotlin/kdoc/lexer/_KDocLexer.java index 8e661ec5a33..cac5ef64a3d 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/kdoc/lexer/_KDocLexer.java +++ b/compiler/psi/src/org/jetbrains/kotlin/kdoc/lexer/_KDocLexer.java @@ -6,13 +6,14 @@ import com.intellij.lexer.FlexLexer; import com.intellij.psi.TokenType; import com.intellij.psi.tree.IElementType; import com.intellij.util.text.CharArrayUtil; +import java.lang.Character; import org.jetbrains.kotlin.kdoc.parser.KDocKnownTag; /** * This class is a scanner generated by * JFlex 1.7.0 - * from the specification file /Users/jetbrains/projects/dup_kotlin/kotlin/compiler/psi/src/org/jetbrains/kotlin/kdoc/lexer/KDoc.flex + * from the specification file /Users/victor.petukhov/IdeaProjects/kotlin-jps/compiler/psi/src/org/jetbrains/kotlin/kdoc/lexer/KDoc.flex */ class _KDocLexer implements FlexLexer { @@ -417,7 +418,7 @@ class _KDocLexer implements FlexLexer { /** * Refills the input buffer. * - * @return false, iff there was new input. + * @return {@code false}, iff there was new input. * * @exception java.io.IOException if any I/O-Error occurs */ @@ -453,7 +454,7 @@ class _KDocLexer implements FlexLexer { /** - * Returns the character at position pos from the + * Returns the character at position {@code pos} from the * matched text. * * It is equivalent to yytext().charAt(pos), but faster diff --git a/compiler/psi/src/org/jetbrains/kotlin/lexer/Kotlin.flex b/compiler/psi/src/org/jetbrains/kotlin/lexer/Kotlin.flex index cbd9c9595a5..65a5ea9b97d 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/lexer/Kotlin.flex +++ b/compiler/psi/src/org/jetbrains/kotlin/lexer/Kotlin.flex @@ -296,6 +296,7 @@ LONELY_BACKTICK=` "->" { return KtTokens.ARROW ; } "=>" { return KtTokens.DOUBLE_ARROW; } ".." { return KtTokens.RANGE ; } +"..<" { return KtTokens.RANGE_UNTIL; } "::" { return KtTokens.COLONCOLON; } "[" { return KtTokens.LBRACKET ; } "]" { return KtTokens.RBRACKET ; } diff --git a/compiler/psi/src/org/jetbrains/kotlin/lexer/KtTokens.java b/compiler/psi/src/org/jetbrains/kotlin/lexer/KtTokens.java index 35876a4bde0..4346d238bc7 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/lexer/KtTokens.java +++ b/compiler/psi/src/org/jetbrains/kotlin/lexer/KtTokens.java @@ -125,6 +125,7 @@ public interface KtTokens { KtSingleValueToken SEMICOLON = new KtSingleValueToken("SEMICOLON", ";"); KtSingleValueToken DOUBLE_SEMICOLON = new KtSingleValueToken("DOUBLE_SEMICOLON", ";;"); KtSingleValueToken RANGE = new KtSingleValueToken("RANGE", ".."); + KtSingleValueToken RANGE_UNTIL = new KtSingleValueToken("RANGE_UNTIL", "..<"); KtSingleValueToken EQ = new KtSingleValueToken("EQ", "="); KtSingleValueToken MULTEQ = new KtSingleValueToken("MULTEQ", "*="); KtSingleValueToken DIVEQ = new KtSingleValueToken("DIVEQ", "/="); @@ -264,7 +265,7 @@ public interface KtTokens { TokenSet OPERATIONS = TokenSet.create(AS_KEYWORD, AS_SAFE, IS_KEYWORD, IN_KEYWORD, DOT, PLUSPLUS, MINUSMINUS, EXCLEXCL, MUL, PLUS, MINUS, EXCL, DIV, PERC, LT, GT, LTEQ, GTEQ, EQEQEQ, EXCLEQEQEQ, EQEQ, EXCLEQ, ANDAND, OROR, SAFE_ACCESS, ELVIS, - RANGE, EQ, MULTEQ, DIVEQ, PERCEQ, PLUSEQ, MINUSEQ, + RANGE, RANGE_UNTIL, EQ, MULTEQ, DIVEQ, PERCEQ, PLUSEQ, MINUSEQ, NOT_IN, NOT_IS, IDENTIFIER); diff --git a/compiler/psi/src/org/jetbrains/kotlin/lexer/_JetLexer.java b/compiler/psi/src/org/jetbrains/kotlin/lexer/_JetLexer.java index 784e1ac231f..26a56713533 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/lexer/_JetLexer.java +++ b/compiler/psi/src/org/jetbrains/kotlin/lexer/_JetLexer.java @@ -2,16 +2,19 @@ package org.jetbrains.kotlin.lexer; -import com.intellij.lexer.FlexLexer; -import com.intellij.psi.TokenType; +import java.util.*; +import com.intellij.lexer.*; +import com.intellij.psi.*; import com.intellij.psi.tree.IElementType; import com.intellij.util.containers.Stack; +import org.jetbrains.kotlin.lexer.KotlinLexerException; +import org.jetbrains.kotlin.lexer.KtTokens; /** * This class is a scanner generated by * JFlex 1.7.0 - * from the specification file /Users/jetbrains/projects/dup_kotlin/kotlin/compiler/psi/src/org/jetbrains/kotlin/lexer/Kotlin.flex + * from the specification file /Users/victor.petukhov/IdeaProjects/kotlin-jps/compiler/psi/src/org/jetbrains/kotlin/lexer/Kotlin.flex */ class _JetLexer implements FlexLexer { @@ -184,16 +187,17 @@ class _JetLexer implements FlexLexer { "\1\70\1\71\1\72\1\73\1\74\1\75\1\76\1\77"+ "\1\100\1\101\1\0\1\102\2\103\2\0\1\42\1\104"+ "\1\105\1\0\1\106\1\46\1\3\1\0\1\107\1\110"+ - "\1\111\1\112\1\0\1\113\1\114\4\3\1\115\4\3"+ - "\1\116\2\3\1\117\1\3\1\120\6\3\1\121\1\122"+ - "\1\123\2\0\1\124\2\42\1\47\1\125\1\126\1\127"+ - "\2\3\1\130\3\3\1\131\1\132\7\3\1\133\1\101"+ - "\1\0\1\134\1\135\3\3\1\136\2\3\1\137\1\140"+ - "\2\3\1\141\1\142\1\0\1\3\1\143\2\3\1\144"+ - "\1\3\1\145\2\3\1\146\3\3\1\147\1\150\1\151"; + "\1\111\1\112\1\0\1\113\1\114\1\115\4\3\1\116"+ + "\4\3\1\117\2\3\1\120\1\3\1\121\6\3\1\122"+ + "\1\123\1\124\2\0\1\125\2\42\1\47\1\126\1\127"+ + "\1\130\2\3\1\131\3\3\1\132\1\133\7\3\1\134"+ + "\1\101\1\0\1\135\1\136\3\3\1\137\2\3\1\140"+ + "\1\141\2\3\1\142\1\143\1\0\1\3\1\144\2\3"+ + "\1\145\1\3\1\146\2\3\1\147\3\3\1\150\1\151"+ + "\1\152"; private static int [] zzUnpackAction() { - int [] result = new int[231]; + int [] result = new int[232]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -236,20 +240,20 @@ class _JetLexer implements FlexLexer { "\0\u0198\0\u0198\0\u0198\0\u0198\0\u0198\0\u0198\0\u0198\0\u1870"+ "\0\u18b4\0\u0198\0\u0198\0\u18f8\0\u193c\0\u1980\0\u19c4\0\u0198"+ "\0\u0198\0\u1a08\0\u0198\0\u1a4c\0\u0198\0\u1a90\0\u1ad4\0\u1b18"+ - "\0\u1b18\0\u0198\0\u1b5c\0\u0198\0\u0198\0\u1ba0\0\u1be4\0\u1c28"+ - "\0\u1c6c\0\u0220\0\u1cb0\0\u1cf4\0\u1d38\0\u1d7c\0\u0198\0\u1dc0"+ - "\0\u1e04\0\u0220\0\u1e48\0\u0220\0\u1e8c\0\u1ed0\0\u1f14\0\u1f58"+ - "\0\u1f9c\0\u1fe0\0\u0220\0\u0220\0\u0198\0\u2024\0\u2068\0\u193c"+ - "\0\u0198\0\u20ac\0\u0198\0\u0198\0\u0198\0\u0220\0\u20f0\0\u2134"+ - "\0\u0220\0\u2178\0\u21bc\0\u2200\0\u0220\0\u0220\0\u2244\0\u2288"+ - "\0\u22cc\0\u2310\0\u2354\0\u2398\0\u23dc\0\u0220\0\u0198\0\u2420"+ - "\0\u0cc0\0\u0220\0\u2464\0\u24a8\0\u24ec\0\u0220\0\u2530\0\u2574"+ - "\0\u0220\0\u0220\0\u25b8\0\u25fc\0\u0220\0\u0220\0\u2640\0\u2684"+ - "\0\u0220\0\u26c8\0\u270c\0\u0220\0\u2750\0\u0220\0\u2794\0\u27d8"+ - "\0\u0220\0\u281c\0\u2860\0\u28a4\0\u0220\0\u0220\0\u0220"; + "\0\u1b18\0\u0198\0\u1b5c\0\u0198\0\u0198\0\u0198\0\u1ba0\0\u1be4"+ + "\0\u1c28\0\u1c6c\0\u0220\0\u1cb0\0\u1cf4\0\u1d38\0\u1d7c\0\u0198"+ + "\0\u1dc0\0\u1e04\0\u0220\0\u1e48\0\u0220\0\u1e8c\0\u1ed0\0\u1f14"+ + "\0\u1f58\0\u1f9c\0\u1fe0\0\u0220\0\u0220\0\u0198\0\u2024\0\u2068"+ + "\0\u193c\0\u0198\0\u20ac\0\u0198\0\u0198\0\u0198\0\u0220\0\u20f0"+ + "\0\u2134\0\u0220\0\u2178\0\u21bc\0\u2200\0\u0220\0\u0220\0\u2244"+ + "\0\u2288\0\u22cc\0\u2310\0\u2354\0\u2398\0\u23dc\0\u0220\0\u0198"+ + "\0\u2420\0\u0cc0\0\u0220\0\u2464\0\u24a8\0\u24ec\0\u0220\0\u2530"+ + "\0\u2574\0\u0220\0\u0220\0\u25b8\0\u25fc\0\u0220\0\u0220\0\u2640"+ + "\0\u2684\0\u0220\0\u26c8\0\u270c\0\u0220\0\u2750\0\u0220\0\u2794"+ + "\0\u27d8\0\u0220\0\u281c\0\u2860\0\u28a4\0\u0220\0\u0220\0\u0220"; private static int [] zzUnpackRowMap() { - int [] result = new int[231]; + int [] result = new int[232]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -363,157 +367,157 @@ class _JetLexer implements FlexLexer { "\2\0\2\125\3\0\1\125\3\0\1\125\23\0\2\126"+ "\12\0\1\126\2\0\1\106\1\107\1\212\5\0\1\107"+ "\14\0\1\106\37\0\2\127\12\0\1\127\5\0\1\111"+ - "\1\112\16\0\1\112\4\0\1\111\55\0\1\224\61\0"+ - "\10\23\1\0\73\23\31\0\1\225\53\0\3\11\1\0"+ - "\2\11\6\0\5\11\1\0\2\11\3\0\1\11\2\0"+ - "\2\11\1\226\1\11\2\0\6\11\1\227\12\11\23\0"+ + "\1\112\16\0\1\112\4\0\1\111\55\0\1\224\42\0"+ + "\1\225\16\0\10\23\1\0\73\23\31\0\1\226\53\0"+ "\3\11\1\0\2\11\6\0\5\11\1\0\2\11\3\0"+ - "\1\11\2\0\4\11\2\0\1\11\1\230\17\11\23\0"+ + "\1\11\2\0\2\11\1\227\1\11\2\0\6\11\1\230"+ + "\12\11\23\0\3\11\1\0\2\11\6\0\5\11\1\0"+ + "\2\11\3\0\1\11\2\0\4\11\2\0\1\11\1\231"+ + "\17\11\23\0\3\11\1\0\2\11\6\0\5\11\1\0"+ + "\2\11\3\0\1\232\2\0\4\11\2\0\1\233\20\11"+ + "\23\0\3\11\1\0\2\11\6\0\5\11\1\0\2\11"+ + "\3\0\1\11\2\0\1\234\3\11\2\0\21\11\23\0"+ "\3\11\1\0\2\11\6\0\5\11\1\0\2\11\3\0"+ - "\1\231\2\0\4\11\2\0\1\232\20\11\23\0\3\11"+ + "\1\11\2\0\4\11\2\0\1\11\1\235\17\11\23\0"+ + "\3\11\1\0\2\11\6\0\5\11\1\0\2\11\3\0"+ + "\1\11\2\0\4\11\2\0\10\11\1\236\10\11\23\0"+ + "\3\11\1\0\2\11\6\0\5\11\1\0\2\11\3\0"+ + "\1\11\2\0\3\11\1\237\2\0\21\11\23\0\3\11"+ "\1\0\2\11\6\0\5\11\1\0\2\11\3\0\1\11"+ - "\2\0\1\233\3\11\2\0\21\11\23\0\3\11\1\0"+ + "\2\0\4\11\2\0\21\11\1\0\1\240\21\0\3\11"+ + "\1\0\2\11\6\0\5\11\1\0\2\11\3\0\1\11"+ + "\2\0\4\11\2\0\4\11\1\241\14\11\23\0\3\11"+ + "\1\0\2\11\6\0\5\11\1\0\2\11\3\0\1\11"+ + "\2\0\1\242\3\11\2\0\21\11\23\0\3\11\1\0"+ "\2\11\6\0\5\11\1\0\2\11\3\0\1\11\2\0"+ - "\4\11\2\0\1\11\1\234\17\11\23\0\3\11\1\0"+ + "\4\11\2\0\5\11\1\243\13\11\23\0\3\11\1\0"+ "\2\11\6\0\5\11\1\0\2\11\3\0\1\11\2\0"+ - "\4\11\2\0\10\11\1\235\10\11\23\0\3\11\1\0"+ + "\4\11\2\0\4\11\1\244\14\11\23\0\3\11\1\0"+ "\2\11\6\0\5\11\1\0\2\11\3\0\1\11\2\0"+ - "\3\11\1\236\2\0\21\11\23\0\3\11\1\0\2\11"+ - "\6\0\5\11\1\0\2\11\3\0\1\11\2\0\4\11"+ - "\2\0\21\11\1\0\1\237\21\0\3\11\1\0\2\11"+ - "\6\0\5\11\1\0\2\11\3\0\1\11\2\0\4\11"+ - "\2\0\4\11\1\240\14\11\23\0\3\11\1\0\2\11"+ - "\6\0\5\11\1\0\2\11\3\0\1\11\2\0\1\241"+ + "\4\11\2\0\6\11\1\245\12\11\23\0\3\11\1\0"+ + "\2\11\6\0\5\11\1\0\2\11\3\0\1\11\2\0"+ + "\4\11\2\0\3\11\1\246\15\11\23\0\3\11\1\0"+ + "\2\11\6\0\5\11\1\0\2\11\3\0\1\11\2\0"+ + "\4\11\2\0\5\11\1\247\13\11\23\0\3\11\1\0"+ + "\2\11\6\0\5\11\1\0\2\11\3\0\1\11\2\0"+ + "\4\11\2\0\15\11\1\250\3\11\23\0\3\11\1\0"+ + "\2\11\6\0\5\11\1\0\2\11\3\0\1\11\2\0"+ + "\4\11\2\0\2\11\1\251\16\11\23\0\3\11\1\0"+ + "\2\11\6\0\5\11\1\0\2\11\3\0\1\11\2\0"+ + "\2\11\1\252\1\11\2\0\2\11\1\253\16\11\23\0"+ + "\3\11\1\0\2\11\6\0\5\11\1\0\2\11\3\0"+ + "\1\11\2\0\4\11\2\0\4\11\1\254\1\11\1\255"+ + "\12\11\104\0\1\256\22\0\3\200\1\0\2\200\6\0"+ + "\5\200\1\0\2\200\3\0\1\200\2\0\4\200\2\0"+ + "\21\200\22\0\7\257\2\0\73\257\1\0\1\260\1\0"+ + "\1\260\11\0\1\260\1\0\1\260\3\0\2\260\16\0"+ + "\2\260\3\0\2\260\3\0\1\260\3\0\1\260\53\0"+ + "\1\261\52\0\7\206\1\262\1\0\73\206\1\0\3\76"+ + "\1\0\2\76\6\0\5\76\1\0\2\76\3\0\1\76"+ + "\2\0\2\76\1\263\1\76\2\0\21\76\44\0\1\213"+ + "\62\0\2\214\12\0\1\214\5\0\1\111\24\0\1\111"+ + "\33\0\7\216\1\264\1\0\73\216\12\0\1\265\72\0"+ + "\3\266\1\0\2\266\6\0\5\266\1\0\2\266\3\0"+ + "\1\266\2\0\4\266\2\0\21\266\23\0\1\127\13\0"+ + "\1\127\67\0\3\11\1\0\2\11\6\0\5\11\1\0"+ + "\2\11\3\0\1\11\2\0\3\11\1\267\2\0\21\11"+ + "\23\0\3\11\1\0\2\11\6\0\5\11\1\0\2\11"+ + "\3\0\1\11\2\0\4\11\2\0\11\11\1\270\7\11"+ + "\23\0\3\11\1\0\2\11\6\0\5\11\1\0\2\11"+ + "\3\0\1\11\2\0\4\11\2\0\2\11\1\271\16\11"+ + "\23\0\3\11\1\0\2\11\6\0\5\11\1\0\2\11"+ + "\3\0\1\11\2\0\4\11\2\0\2\11\1\272\16\11"+ + "\23\0\3\11\1\0\2\11\6\0\5\11\1\0\2\11"+ + "\3\0\1\11\2\0\4\11\2\0\2\11\1\273\16\11"+ + "\23\0\3\11\1\0\2\11\6\0\5\11\1\0\2\11"+ + "\3\0\1\11\2\0\4\11\2\0\2\11\1\274\16\11"+ + "\23\0\3\11\1\0\2\11\6\0\5\11\1\0\2\11"+ + "\3\0\1\11\2\0\4\11\2\0\12\11\1\275\6\11"+ + "\23\0\3\11\1\0\2\11\6\0\5\11\1\0\2\11"+ + "\3\0\1\11\2\0\4\11\2\0\2\11\1\276\16\11"+ + "\23\0\3\11\1\0\2\11\6\0\5\11\1\0\2\11"+ + "\3\0\1\11\2\0\4\11\2\0\4\11\1\277\14\11"+ + "\23\0\3\11\1\0\2\11\6\0\5\11\1\0\2\11"+ + "\3\0\1\300\2\0\4\11\2\0\21\11\23\0\3\11"+ + "\1\0\2\11\6\0\5\11\1\0\2\11\3\0\1\11"+ + "\2\0\3\11\1\301\2\0\21\11\23\0\3\11\1\0"+ + "\2\11\6\0\5\11\1\0\2\11\3\0\1\11\2\0"+ + "\3\11\1\302\2\0\21\11\23\0\3\11\1\0\2\11"+ + "\6\0\5\11\1\0\2\11\3\0\1\11\2\0\1\303"+ "\3\11\2\0\21\11\23\0\3\11\1\0\2\11\6\0"+ "\5\11\1\0\2\11\3\0\1\11\2\0\4\11\2\0"+ - "\5\11\1\242\13\11\23\0\3\11\1\0\2\11\6\0"+ + "\2\11\1\304\16\11\23\0\3\11\1\0\2\11\6\0"+ "\5\11\1\0\2\11\3\0\1\11\2\0\4\11\2\0"+ - "\4\11\1\243\14\11\23\0\3\11\1\0\2\11\6\0"+ + "\3\11\1\305\15\11\23\0\3\11\1\0\2\11\6\0"+ "\5\11\1\0\2\11\3\0\1\11\2\0\4\11\2\0"+ - "\6\11\1\244\12\11\23\0\3\11\1\0\2\11\6\0"+ + "\4\11\1\306\14\11\23\0\3\11\1\0\2\11\6\0"+ "\5\11\1\0\2\11\3\0\1\11\2\0\4\11\2\0"+ - "\3\11\1\245\15\11\23\0\3\11\1\0\2\11\6\0"+ + "\5\11\1\307\13\11\22\0\7\257\1\310\1\0\73\257"+ + "\1\0\1\311\1\0\1\311\11\0\1\311\1\0\1\311"+ + "\3\0\2\311\16\0\2\311\3\0\2\311\3\0\1\311"+ + "\3\0\1\311\23\0\3\76\1\0\2\76\6\0\5\76"+ + "\1\0\2\76\3\0\1\76\2\0\3\76\1\312\2\0"+ + "\21\76\23\0\3\11\1\0\2\11\6\0\5\11\1\0"+ + "\2\11\3\0\1\11\2\0\4\11\2\0\16\11\1\313"+ + "\2\11\23\0\3\11\1\0\2\11\6\0\5\11\1\0"+ + "\2\11\3\0\1\11\2\0\4\11\2\0\3\11\1\314"+ + "\5\11\1\315\7\11\23\0\3\11\1\0\2\11\6\0"+ "\5\11\1\0\2\11\3\0\1\11\2\0\4\11\2\0"+ - "\5\11\1\246\13\11\23\0\3\11\1\0\2\11\6\0"+ + "\6\11\1\316\12\11\23\0\3\11\1\0\2\11\6\0"+ "\5\11\1\0\2\11\3\0\1\11\2\0\4\11\2\0"+ - "\15\11\1\247\3\11\23\0\3\11\1\0\2\11\6\0"+ + "\6\11\1\317\12\11\23\0\3\11\1\0\2\11\6\0"+ "\5\11\1\0\2\11\3\0\1\11\2\0\4\11\2\0"+ - "\2\11\1\250\16\11\23\0\3\11\1\0\2\11\6\0"+ - "\5\11\1\0\2\11\3\0\1\11\2\0\2\11\1\251"+ - "\1\11\2\0\2\11\1\252\16\11\23\0\3\11\1\0"+ - "\2\11\6\0\5\11\1\0\2\11\3\0\1\11\2\0"+ - "\4\11\2\0\4\11\1\253\1\11\1\254\12\11\104\0"+ - "\1\255\22\0\3\200\1\0\2\200\6\0\5\200\1\0"+ - "\2\200\3\0\1\200\2\0\4\200\2\0\21\200\22\0"+ - "\7\256\2\0\73\256\1\0\1\257\1\0\1\257\11\0"+ - "\1\257\1\0\1\257\3\0\2\257\16\0\2\257\3\0"+ - "\2\257\3\0\1\257\3\0\1\257\53\0\1\260\52\0"+ - "\7\206\1\261\1\0\73\206\1\0\3\76\1\0\2\76"+ - "\6\0\5\76\1\0\2\76\3\0\1\76\2\0\2\76"+ - "\1\262\1\76\2\0\21\76\44\0\1\213\62\0\2\214"+ - "\12\0\1\214\5\0\1\111\24\0\1\111\33\0\7\216"+ - "\1\263\1\0\73\216\12\0\1\264\72\0\3\265\1\0"+ - "\2\265\6\0\5\265\1\0\2\265\3\0\1\265\2\0"+ - "\4\265\2\0\21\265\23\0\1\127\13\0\1\127\67\0"+ - "\3\11\1\0\2\11\6\0\5\11\1\0\2\11\3\0"+ - "\1\11\2\0\3\11\1\266\2\0\21\11\23\0\3\11"+ - "\1\0\2\11\6\0\5\11\1\0\2\11\3\0\1\11"+ - "\2\0\4\11\2\0\11\11\1\267\7\11\23\0\3\11"+ - "\1\0\2\11\6\0\5\11\1\0\2\11\3\0\1\11"+ - "\2\0\4\11\2\0\2\11\1\270\16\11\23\0\3\11"+ - "\1\0\2\11\6\0\5\11\1\0\2\11\3\0\1\11"+ - "\2\0\4\11\2\0\2\11\1\271\16\11\23\0\3\11"+ - "\1\0\2\11\6\0\5\11\1\0\2\11\3\0\1\11"+ - "\2\0\4\11\2\0\2\11\1\272\16\11\23\0\3\11"+ - "\1\0\2\11\6\0\5\11\1\0\2\11\3\0\1\11"+ - "\2\0\4\11\2\0\2\11\1\273\16\11\23\0\3\11"+ - "\1\0\2\11\6\0\5\11\1\0\2\11\3\0\1\11"+ - "\2\0\4\11\2\0\12\11\1\274\6\11\23\0\3\11"+ - "\1\0\2\11\6\0\5\11\1\0\2\11\3\0\1\11"+ - "\2\0\4\11\2\0\2\11\1\275\16\11\23\0\3\11"+ - "\1\0\2\11\6\0\5\11\1\0\2\11\3\0\1\11"+ - "\2\0\4\11\2\0\4\11\1\276\14\11\23\0\3\11"+ - "\1\0\2\11\6\0\5\11\1\0\2\11\3\0\1\277"+ - "\2\0\4\11\2\0\21\11\23\0\3\11\1\0\2\11"+ - "\6\0\5\11\1\0\2\11\3\0\1\11\2\0\3\11"+ - "\1\300\2\0\21\11\23\0\3\11\1\0\2\11\6\0"+ - "\5\11\1\0\2\11\3\0\1\11\2\0\3\11\1\301"+ + "\3\11\1\320\15\11\23\0\3\11\1\0\2\11\6\0"+ + "\5\11\1\0\2\11\3\0\1\11\2\0\4\11\2\0"+ + "\6\11\1\321\12\11\23\0\3\11\1\0\2\11\6\0"+ + "\5\11\1\0\2\11\3\0\1\11\2\0\4\11\2\0"+ + "\2\11\1\322\16\11\23\0\3\11\1\0\2\11\6\0"+ + "\5\11\1\0\2\11\3\0\1\11\2\0\3\11\1\323"+ "\2\0\21\11\23\0\3\11\1\0\2\11\6\0\5\11"+ - "\1\0\2\11\3\0\1\11\2\0\1\302\3\11\2\0"+ - "\21\11\23\0\3\11\1\0\2\11\6\0\5\11\1\0"+ - "\2\11\3\0\1\11\2\0\4\11\2\0\2\11\1\303"+ - "\16\11\23\0\3\11\1\0\2\11\6\0\5\11\1\0"+ - "\2\11\3\0\1\11\2\0\4\11\2\0\3\11\1\304"+ - "\15\11\23\0\3\11\1\0\2\11\6\0\5\11\1\0"+ - "\2\11\3\0\1\11\2\0\4\11\2\0\4\11\1\305"+ - "\14\11\23\0\3\11\1\0\2\11\6\0\5\11\1\0"+ - "\2\11\3\0\1\11\2\0\4\11\2\0\5\11\1\306"+ - "\13\11\22\0\7\256\1\307\1\0\73\256\1\0\1\310"+ - "\1\0\1\310\11\0\1\310\1\0\1\310\3\0\2\310"+ - "\16\0\2\310\3\0\2\310\3\0\1\310\3\0\1\310"+ - "\23\0\3\76\1\0\2\76\6\0\5\76\1\0\2\76"+ - "\3\0\1\76\2\0\3\76\1\311\2\0\21\76\23\0"+ - "\3\11\1\0\2\11\6\0\5\11\1\0\2\11\3\0"+ - "\1\11\2\0\4\11\2\0\16\11\1\312\2\11\23\0"+ - "\3\11\1\0\2\11\6\0\5\11\1\0\2\11\3\0"+ - "\1\11\2\0\4\11\2\0\3\11\1\313\5\11\1\314"+ - "\7\11\23\0\3\11\1\0\2\11\6\0\5\11\1\0"+ - "\2\11\3\0\1\11\2\0\4\11\2\0\6\11\1\315"+ - "\12\11\23\0\3\11\1\0\2\11\6\0\5\11\1\0"+ - "\2\11\3\0\1\11\2\0\4\11\2\0\6\11\1\316"+ - "\12\11\23\0\3\11\1\0\2\11\6\0\5\11\1\0"+ - "\2\11\3\0\1\11\2\0\4\11\2\0\3\11\1\317"+ - "\15\11\23\0\3\11\1\0\2\11\6\0\5\11\1\0"+ - "\2\11\3\0\1\11\2\0\4\11\2\0\6\11\1\320"+ - "\12\11\23\0\3\11\1\0\2\11\6\0\5\11\1\0"+ - "\2\11\3\0\1\11\2\0\4\11\2\0\2\11\1\321"+ - "\16\11\23\0\3\11\1\0\2\11\6\0\5\11\1\0"+ - "\2\11\3\0\1\11\2\0\3\11\1\322\2\0\21\11"+ - "\23\0\3\11\1\0\2\11\6\0\5\11\1\0\2\11"+ - "\3\0\1\11\2\0\2\11\1\323\1\11\2\0\21\11"+ - "\23\0\3\11\1\0\2\11\6\0\5\11\1\0\2\11"+ - "\3\0\1\11\2\0\4\11\2\0\10\11\1\324\10\11"+ - "\23\0\3\11\1\0\2\11\6\0\5\11\1\0\2\11"+ - "\3\0\1\11\2\0\4\11\2\0\12\11\1\325\6\11"+ - "\23\0\3\11\1\0\2\11\6\0\5\11\1\0\2\11"+ - "\3\0\1\11\2\0\4\11\2\0\2\11\1\326\16\11"+ - "\23\0\1\327\1\0\1\327\11\0\1\327\1\0\1\327"+ - "\3\0\2\327\16\0\2\327\3\0\2\327\3\0\1\327"+ - "\3\0\1\327\23\0\3\11\1\0\2\11\6\0\5\11"+ - "\1\0\2\11\3\0\1\11\2\0\4\11\2\0\4\11"+ - "\1\330\14\11\23\0\3\11\1\0\2\11\6\0\5\11"+ - "\1\0\2\11\3\0\1\11\2\0\4\11\2\0\7\11"+ - "\1\331\11\11\23\0\3\11\1\0\2\11\6\0\5\11"+ - "\1\0\2\11\3\0\1\11\2\0\4\11\2\0\7\11"+ - "\1\332\11\11\23\0\3\11\1\0\2\11\6\0\5\11"+ - "\1\0\2\11\3\0\1\11\2\0\4\11\2\0\13\11"+ - "\1\333\5\11\23\0\3\11\1\0\2\11\6\0\5\11"+ - "\1\0\2\11\3\0\1\11\2\0\4\11\2\0\5\11"+ - "\1\334\13\11\23\0\3\11\1\0\2\11\6\0\5\11"+ - "\1\0\2\11\3\0\1\11\2\0\4\11\2\0\5\11"+ - "\1\335\13\11\23\0\3\11\1\0\2\11\6\0\5\11"+ - "\1\0\2\11\3\0\1\11\2\0\1\336\3\11\2\0"+ - "\21\11\23\0\1\203\1\0\1\203\11\0\1\203\1\0"+ - "\1\203\3\0\2\203\16\0\2\203\3\0\2\203\3\0"+ - "\1\203\3\0\1\203\23\0\3\11\1\0\2\11\6\0"+ - "\5\11\1\0\2\11\3\0\1\11\2\0\2\11\1\337"+ - "\1\11\2\0\21\11\23\0\3\11\1\0\2\11\6\0"+ + "\1\0\2\11\3\0\1\11\2\0\2\11\1\324\1\11"+ + "\2\0\21\11\23\0\3\11\1\0\2\11\6\0\5\11"+ + "\1\0\2\11\3\0\1\11\2\0\4\11\2\0\10\11"+ + "\1\325\10\11\23\0\3\11\1\0\2\11\6\0\5\11"+ + "\1\0\2\11\3\0\1\11\2\0\4\11\2\0\12\11"+ + "\1\326\6\11\23\0\3\11\1\0\2\11\6\0\5\11"+ + "\1\0\2\11\3\0\1\11\2\0\4\11\2\0\2\11"+ + "\1\327\16\11\23\0\1\330\1\0\1\330\11\0\1\330"+ + "\1\0\1\330\3\0\2\330\16\0\2\330\3\0\2\330"+ + "\3\0\1\330\3\0\1\330\23\0\3\11\1\0\2\11"+ + "\6\0\5\11\1\0\2\11\3\0\1\11\2\0\4\11"+ + "\2\0\4\11\1\331\14\11\23\0\3\11\1\0\2\11"+ + "\6\0\5\11\1\0\2\11\3\0\1\11\2\0\4\11"+ + "\2\0\7\11\1\332\11\11\23\0\3\11\1\0\2\11"+ + "\6\0\5\11\1\0\2\11\3\0\1\11\2\0\4\11"+ + "\2\0\7\11\1\333\11\11\23\0\3\11\1\0\2\11"+ + "\6\0\5\11\1\0\2\11\3\0\1\11\2\0\4\11"+ + "\2\0\13\11\1\334\5\11\23\0\3\11\1\0\2\11"+ + "\6\0\5\11\1\0\2\11\3\0\1\11\2\0\4\11"+ + "\2\0\5\11\1\335\13\11\23\0\3\11\1\0\2\11"+ + "\6\0\5\11\1\0\2\11\3\0\1\11\2\0\4\11"+ + "\2\0\5\11\1\336\13\11\23\0\3\11\1\0\2\11"+ + "\6\0\5\11\1\0\2\11\3\0\1\11\2\0\1\337"+ + "\3\11\2\0\21\11\23\0\1\203\1\0\1\203\11\0"+ + "\1\203\1\0\1\203\3\0\2\203\16\0\2\203\3\0"+ + "\2\203\3\0\1\203\3\0\1\203\23\0\3\11\1\0"+ + "\2\11\6\0\5\11\1\0\2\11\3\0\1\11\2\0"+ + "\2\11\1\340\1\11\2\0\21\11\23\0\3\11\1\0"+ + "\2\11\6\0\5\11\1\0\2\11\3\0\1\11\2\0"+ + "\4\11\2\0\3\11\1\341\15\11\23\0\3\11\1\0"+ + "\2\11\6\0\5\11\1\0\2\11\3\0\1\11\2\0"+ + "\4\11\2\0\2\11\1\342\16\11\23\0\3\11\1\0"+ + "\2\11\6\0\5\11\1\0\2\11\3\0\1\343\2\0"+ + "\4\11\2\0\21\11\23\0\3\11\1\0\2\11\6\0"+ "\5\11\1\0\2\11\3\0\1\11\2\0\4\11\2\0"+ - "\3\11\1\340\15\11\23\0\3\11\1\0\2\11\6\0"+ + "\3\11\1\344\15\11\23\0\3\11\1\0\2\11\6\0"+ "\5\11\1\0\2\11\3\0\1\11\2\0\4\11\2\0"+ - "\2\11\1\341\16\11\23\0\3\11\1\0\2\11\6\0"+ - "\5\11\1\0\2\11\3\0\1\342\2\0\4\11\2\0"+ - "\21\11\23\0\3\11\1\0\2\11\6\0\5\11\1\0"+ - "\2\11\3\0\1\11\2\0\4\11\2\0\3\11\1\343"+ - "\15\11\23\0\3\11\1\0\2\11\6\0\5\11\1\0"+ - "\2\11\3\0\1\11\2\0\4\11\2\0\10\11\1\344"+ - "\10\11\23\0\3\11\1\0\2\11\6\0\5\11\1\0"+ - "\2\11\3\0\1\11\2\0\4\11\2\0\2\11\1\345"+ - "\16\11\23\0\3\11\1\0\2\11\6\0\5\11\1\0"+ - "\2\11\3\0\1\11\2\0\3\11\1\346\2\0\21\11"+ - "\23\0\3\11\1\0\2\11\6\0\5\11\1\0\2\11"+ - "\3\0\1\11\2\0\4\11\2\0\2\11\1\347\16\11"+ - "\22\0"; + "\10\11\1\345\10\11\23\0\3\11\1\0\2\11\6\0"+ + "\5\11\1\0\2\11\3\0\1\11\2\0\4\11\2\0"+ + "\2\11\1\346\16\11\23\0\3\11\1\0\2\11\6\0"+ + "\5\11\1\0\2\11\3\0\1\11\2\0\3\11\1\347"+ + "\2\0\21\11\23\0\3\11\1\0\2\11\6\0\5\11"+ + "\1\0\2\11\3\0\1\11\2\0\4\11\2\0\2\11"+ + "\1\350\16\11\22\0"; private static int [] zzUnpackTrans() { int [] result = new int[10472]; @@ -561,12 +565,12 @@ class _JetLexer implements FlexLexer { "\1\0\1\1\1\0\4\1\4\11\1\1\1\0\7\1"+ "\1\11\20\1\11\11\1\1\1\0\2\11\1\1\2\0"+ "\1\1\2\11\1\0\1\11\1\1\1\11\1\0\3\1"+ - "\1\11\1\0\2\11\11\1\1\11\15\1\1\11\2\0"+ + "\1\11\1\0\3\11\11\1\1\11\15\1\1\11\2\0"+ "\1\1\1\11\1\1\3\11\21\1\1\11\1\0\16\1"+ "\1\0\20\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[231]; + int [] result = new int[232]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -928,14 +932,14 @@ class _JetLexer implements FlexLexer { zzStartRead = commentStart; return commentStateToTokenType(state); } // fall though - case 232: break; + case 233: break; case DOC_COMMENT: { int state = yystate(); popState(); zzStartRead = commentStart; return commentStateToTokenType(state); } // fall though - case 233: break; + case 234: break; default: return null; } @@ -946,182 +950,182 @@ class _JetLexer implements FlexLexer { { return TokenType.BAD_CHARACTER; } // fall through - case 106: break; + case 107: break; case 2: { return KtTokens.INTEGER_LITERAL; } // fall through - case 107: break; + case 108: break; case 3: { return KtTokens.IDENTIFIER; } // fall through - case 108: break; + case 109: break; case 4: { return KtTokens.WHITE_SPACE; } // fall through - case 109: break; + case 110: break; case 5: { pushState(UNMATCHED_BACKTICK); return TokenType.BAD_CHARACTER; } // fall through - case 110: break; + case 111: break; case 6: { return KtTokens.DIV ; } // fall through - case 111: break; + case 112: break; case 7: { return KtTokens.HASH ; } // fall through - case 112: break; + case 113: break; case 8: { return KtTokens.EXCL ; } // fall through - case 113: break; + case 114: break; case 9: { return KtTokens.DOT ; } // fall through - case 114: break; + case 115: break; case 10: { return KtTokens.MINUS ; } // fall through - case 115: break; + case 116: break; case 11: { return KtTokens.CHARACTER_LITERAL; } // fall through - case 116: break; + case 117: break; case 12: { pushState(STRING); return KtTokens.OPEN_QUOTE; } // fall through - case 117: break; + case 118: break; case 13: { return KtTokens.LBRACE ; } // fall through - case 118: break; + case 119: break; case 14: { return KtTokens.RBRACE ; } // fall through - case 119: break; + case 120: break; case 15: { return KtTokens.MUL ; } // fall through - case 120: break; + case 121: break; case 16: { return KtTokens.EQ ; } // fall through - case 121: break; + case 122: break; case 17: { return KtTokens.QUEST ; } // fall through - case 122: break; + case 123: break; case 18: { return KtTokens.PLUS ; } // fall through - case 123: break; + case 124: break; case 19: { return KtTokens.LT ; } // fall through - case 124: break; + case 125: break; case 20: { return KtTokens.AND ; } // fall through - case 125: break; + case 126: break; case 21: { return KtTokens.PERC ; } // fall through - case 126: break; + case 127: break; case 22: { return KtTokens.GT ; } // fall through - case 127: break; + case 128: break; case 23: { return KtTokens.COLON ; } // fall through - case 128: break; + case 129: break; case 24: { return KtTokens.LBRACKET ; } // fall through - case 129: break; + case 130: break; case 25: { return KtTokens.RBRACKET ; } // fall through - case 130: break; + case 131: break; case 26: { return KtTokens.LPAR ; } // fall through - case 131: break; + case 132: break; case 27: { return KtTokens.RPAR ; } // fall through - case 132: break; + case 133: break; case 28: { return KtTokens.SEMICOLON ; } // fall through - case 133: break; + case 134: break; case 29: { return KtTokens.COMMA ; } // fall through - case 134: break; + case 135: break; case 30: { return KtTokens.AT ; } // fall through - case 135: break; + case 136: break; case 31: { return KtTokens.REGULAR_STRING_PART; } // fall through - case 136: break; + case 137: break; case 32: { popState(); yypushback(1); return KtTokens.DANGLING_NEWLINE; } // fall through - case 137: break; + case 138: break; case 33: { popState(); return KtTokens.CLOSING_QUOTE; } // fall through - case 138: break; + case 139: break; case 34: { popState(); return KtTokens.IDENTIFIER; } // fall through - case 139: break; + case 140: break; case 35: { } // fall through - case 140: break; + case 141: break; case 36: { lBraceCount++; return KtTokens.LBRACE; } // fall through - case 141: break; + case 142: break; case 37: { if (lBraceCount == 0) { popState(); @@ -1131,34 +1135,34 @@ class _JetLexer implements FlexLexer { return KtTokens.RBRACE; } // fall through - case 142: break; + case 143: break; case 38: { return KtTokens.FLOAT_LITERAL; } // fall through - case 143: break; + case 144: break; case 39: { return KtTokens.FIELD_IDENTIFIER; } // fall through - case 144: break; + case 145: break; case 40: { return KtTokens.EOL_COMMENT; } // fall through - case 145: break; + case 146: break; case 41: { pushState(BLOCK_COMMENT); commentDepth = 0; commentStart = getTokenStart(); } // fall through - case 146: break; + case 147: break; case 42: { return KtTokens.DIVEQ ; } // fall through - case 147: break; + case 148: break; case 43: { if (zzCurrentPos == 0) { return KtTokens.SHEBANG_COMMENT; @@ -1169,134 +1173,134 @@ class _JetLexer implements FlexLexer { } } // fall through - case 148: break; + case 149: break; case 44: { return KtTokens.EXCLEQ ; } // fall through - case 149: break; + case 150: break; case 45: { return KtTokens.RANGE ; } // fall through - case 150: break; + case 151: break; case 46: { return KtTokens.MINUSMINUS; } // fall through - case 151: break; + case 152: break; case 47: { return KtTokens.MINUSEQ ; } // fall through - case 152: break; + case 153: break; case 48: { return KtTokens.ARROW ; } // fall through - case 153: break; + case 154: break; case 49: { return KtTokens.IS_KEYWORD ; } // fall through - case 154: break; + case 155: break; case 50: { return KtTokens.IN_KEYWORD ; } // fall through - case 155: break; + case 156: break; case 51: { return KtTokens.IF_KEYWORD ; } // fall through - case 156: break; + case 157: break; case 52: { return KtTokens.MULTEQ ; } // fall through - case 157: break; + case 158: break; case 53: { return KtTokens.AS_KEYWORD ; } // fall through - case 158: break; + case 159: break; case 54: { return KtTokens.DO_KEYWORD ; } // fall through - case 159: break; + case 160: break; case 55: { return KtTokens.EQEQ ; } // fall through - case 160: break; + case 161: break; case 56: { return KtTokens.DOUBLE_ARROW; } // fall through - case 161: break; + case 162: break; case 57: { return KtTokens.PLUSEQ ; } // fall through - case 162: break; + case 163: break; case 58: { return KtTokens.PLUSPLUS ; } // fall through - case 163: break; + case 164: break; case 59: { return KtTokens.LTEQ ; } // fall through - case 164: break; + case 165: break; case 60: { return KtTokens.ANDAND ; } // fall through - case 165: break; + case 166: break; case 61: { return KtTokens.OROR ; } // fall through - case 166: break; + case 167: break; case 62: { return KtTokens.PERCEQ ; } // fall through - case 167: break; + case 168: break; case 63: { return KtTokens.COLONCOLON; } // fall through - case 168: break; + case 169: break; case 64: { return KtTokens.DOUBLE_SEMICOLON; } // fall through - case 169: break; + case 170: break; case 65: { pushState(SHORT_TEMPLATE_ENTRY); yypushback(yylength() - 1); return KtTokens.SHORT_TEMPLATE_ENTRY_START; } // fall through - case 170: break; + case 171: break; case 66: { pushState(LONG_TEMPLATE_ENTRY); return KtTokens.LONG_TEMPLATE_ENTRY_START; } // fall through - case 171: break; + case 172: break; case 67: { return KtTokens.ESCAPE_SEQUENCE; } // fall through - case 172: break; + case 173: break; case 68: { commentDepth++; } // fall through - case 173: break; + case 174: break; case 69: { if (commentDepth > 0) { commentDepth--; @@ -1309,80 +1313,85 @@ class _JetLexer implements FlexLexer { } } // fall through - case 174: break; + case 175: break; case 70: { yypushback(2); return KtTokens.INTEGER_LITERAL; } // fall through - case 175: break; + case 176: break; case 71: { pushState(DOC_COMMENT); commentDepth = 0; commentStart = getTokenStart(); } // fall through - case 176: break; + case 177: break; case 72: { return KtTokens.NOT_IS; } // fall through - case 177: break; + case 178: break; case 73: { return KtTokens.NOT_IN; } // fall through - case 178: break; + case 179: break; case 74: { return KtTokens.EXCLEQEQEQ; } // fall through - case 179: break; + case 180: break; case 75: { return KtTokens.RESERVED ; } // fall through - case 180: break; - case 76: - { pushState(RAW_STRING); return KtTokens.OPEN_QUOTE; - } - // fall through case 181: break; - case 77: - { return KtTokens.TRY_KEYWORD ; + case 76: + { return KtTokens.RANGE_UNTIL; } // fall through case 182: break; - case 78: - { return KtTokens.AS_SAFE; + case 77: + { pushState(RAW_STRING); return KtTokens.OPEN_QUOTE; } // fall through case 183: break; - case 79: - { return KtTokens.FUN_KEYWORD ; + case 78: + { return KtTokens.TRY_KEYWORD ; } // fall through case 184: break; - case 80: - { return KtTokens.FOR_KEYWORD ; + case 79: + { return KtTokens.AS_SAFE; } // fall through case 185: break; - case 81: - { return KtTokens.VAL_KEYWORD ; + case 80: + { return KtTokens.FUN_KEYWORD ; } // fall through case 186: break; - case 82: - { return KtTokens.VAR_KEYWORD ; + case 81: + { return KtTokens.FOR_KEYWORD ; } // fall through case 187: break; - case 83: - { return KtTokens.EQEQEQ ; + case 82: + { return KtTokens.VAL_KEYWORD ; } // fall through case 188: break; + case 83: + { return KtTokens.VAR_KEYWORD ; + } + // fall through + case 189: break; case 84: + { return KtTokens.EQEQEQ ; + } + // fall through + case 190: break; + case 85: { int length = yytext().length(); if (length <= 3) { // closing """ popState(); @@ -1394,112 +1403,112 @@ class _JetLexer implements FlexLexer { } } // fall through - case 189: break; - case 85: + case 191: break; + case 86: { return KtTokens.BLOCK_COMMENT; } // fall through - case 190: break; - case 86: + case 192: break; + case 87: { yypushback(3); return KtTokens.EXCL; } // fall through - case 191: break; - case 87: + case 193: break; + case 88: { return KtTokens.THIS_KEYWORD ; } // fall through - case 192: break; - case 88: + case 194: break; + case 89: { return KtTokens.TRUE_KEYWORD ; } // fall through - case 193: break; - case 89: + case 195: break; + case 90: { return KtTokens.ELSE_KEYWORD ; } // fall through - case 194: break; - case 90: + case 196: break; + case 91: { return KtTokens.NULL_KEYWORD ; } // fall through - case 195: break; - case 91: + case 197: break; + case 92: { return KtTokens.WHEN_KEYWORD ; } // fall through - case 196: break; - case 92: + case 198: break; + case 93: { popState(); return KtTokens.THIS_KEYWORD; } // fall through - case 197: break; - case 93: + case 199: break; + case 94: { return KtTokens.THROW_KEYWORD ; } // fall through - case 198: break; - case 94: + case 200: break; + case 95: { return KtTokens.SUPER_KEYWORD ; } // fall through - case 199: break; - case 95: + case 201: break; + case 96: { return KtTokens.FALSE_KEYWORD ; } // fall through - case 200: break; - case 96: + case 202: break; + case 97: { return KtTokens.CLASS_KEYWORD ; } // fall through - case 201: break; - case 97: + case 203: break; + case 98: { return KtTokens.BREAK_KEYWORD ; } // fall through - case 202: break; - case 98: + case 204: break; + case 99: { return KtTokens.WHILE_KEYWORD ; } // fall through - case 203: break; - case 99: + case 205: break; + case 100: { return KtTokens.TYPEOF_KEYWORD ; } // fall through - case 204: break; - case 100: + case 206: break; + case 101: { return KtTokens.RETURN_KEYWORD ; } // fall through - case 205: break; - case 101: + case 207: break; + case 102: { return KtTokens.OBJECT_KEYWORD ; } // fall through - case 206: break; - case 102: + case 208: break; + case 103: { return KtTokens.PACKAGE_KEYWORD ; } // fall through - case 207: break; - case 103: + case 209: break; + case 104: { return KtTokens.CONTINUE_KEYWORD ; } // fall through - case 208: break; - case 104: + case 210: break; + case 105: { return KtTokens.TYPE_ALIAS_KEYWORD ; } // fall through - case 209: break; - case 105: + case 211: break; + case 106: { return KtTokens.INTERFACE_KEYWORD ; } // fall through - case 210: break; + case 212: break; default: zzScanError(ZZ_NO_MATCH); } diff --git a/compiler/psi/src/org/jetbrains/kotlin/parsing/KotlinExpressionParsing.java b/compiler/psi/src/org/jetbrains/kotlin/parsing/KotlinExpressionParsing.java index 0cfc190e733..5813d7b0e76 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/parsing/KotlinExpressionParsing.java +++ b/compiler/psi/src/org/jetbrains/kotlin/parsing/KotlinExpressionParsing.java @@ -70,7 +70,7 @@ public class KotlinExpressionParsing extends AbstractKotlinParsing { PLUS, MINUS, EXCL, DIV, PERC, LTEQ, // TODO GTEQ, foo=x EQEQEQ, EXCLEQEQEQ, EQEQ, EXCLEQ, ANDAND, OROR, SAFE_ACCESS, ELVIS, - SEMICOLON, RANGE, EQ, MULTEQ, DIVEQ, PERCEQ, PLUSEQ, MINUSEQ, NOT_IN, NOT_IS, + SEMICOLON, RANGE, RANGE_UNTIL, EQ, MULTEQ, DIVEQ, PERCEQ, PLUSEQ, MINUSEQ, NOT_IN, NOT_IS, COLONCOLON, COLON ); @@ -170,7 +170,7 @@ public class KotlinExpressionParsing extends AbstractKotlinParsing { MULTIPLICATIVE(MUL, DIV, PERC), ADDITIVE(PLUS, MINUS), - RANGE(KtTokens.RANGE), + RANGE(KtTokens.RANGE, RANGE_UNTIL), SIMPLE_NAME(IDENTIFIER), ELVIS(KtTokens.ELVIS), IN_OR_IS(IN_KEYWORD, NOT_IN, IS_KEYWORD, NOT_IS) { diff --git a/compiler/testData/psi/operators/untilOperator.kt b/compiler/testData/psi/operators/untilOperator.kt new file mode 100644 index 00000000000..0dc45008ce0 --- /dev/null +++ b/compiler/testData/psi/operators/untilOperator.kt @@ -0,0 +1,5 @@ +fun main() { + for (i in 0.. + IMPORT_LIST + + FUN + PsiElement(fun)('fun') + PsiWhiteSpace(' ') + PsiElement(IDENTIFIER)('main') + VALUE_PARAMETER_LIST + PsiElement(LPAR)('(') + PsiElement(RPAR)(')') + PsiWhiteSpace(' ') + BLOCK + PsiElement(LBRACE)('{') + PsiWhiteSpace('\n ') + FOR + PsiElement(for)('for') + PsiWhiteSpace(' ') + PsiElement(LPAR)('(') + VALUE_PARAMETER + PsiElement(IDENTIFIER)('i') + PsiWhiteSpace(' ') + PsiElement(in)('in') + PsiWhiteSpace(' ') + LOOP_RANGE + BINARY_EXPRESSION + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('0') + OPERATION_REFERENCE + PsiElement(RANGE_UNTIL)('..<') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('n') + PsiElement(RPAR)(')') + PsiWhiteSpace(' ') + BODY + BLOCK + PsiElement(LBRACE)('{') + PsiWhiteSpace('\n\n ') + PsiElement(RBRACE)('}') + PsiWhiteSpace('\n') + PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/compiler/tests-gen/org/jetbrains/kotlin/parsing/ParsingTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/parsing/ParsingTestGenerated.java index 38c4bdbe2d5..c255878695c 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/parsing/ParsingTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/parsing/ParsingTestGenerated.java @@ -1839,6 +1839,24 @@ public class ParsingTestGenerated extends AbstractParsingTest { } } + @TestMetadata("compiler/testData/psi/operators") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class Operators extends AbstractParsingTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doParsingTest, this, testDataFilePath); + } + + public void testAllFilesPresentInOperators() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/psi/operators"), Pattern.compile("^(.*)\\.kts?$"), null, true); + } + + @TestMetadata("untilOperator.kt") + public void testUntilOperator() throws Exception { + runTest("compiler/testData/psi/operators/untilOperator.kt"); + } + } + @TestMetadata("compiler/testData/psi/packages") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class)