Safe casts supported

This commit is contained in:
Andrey Breslav
2011-04-08 15:52:13 +04:00
parent 6b1f435b99
commit 85f0c03708
10 changed files with 474 additions and 254 deletions
+1 -1
View File
@@ -139,7 +139,7 @@ inOperation
;
typeOperation
: "as" : ":"
: "as" : "as?" : ":"
;
isOPeration
@@ -80,6 +80,7 @@ public class JetHighlighter extends SyntaxHighlighterBase {
fillMap(keys1, JetTokens.KEYWORDS, JET_KEYWORD);
keys1.put(JetTokens.AS_SAFE, JET_KEYWORD);
keys1.put(JetTokens.LABEL_IDENTIFIER, JET_LABEL_IDENTIFIER);
keys1.put(JetTokens.ATAT, JET_LABEL_IDENTIFIER);
keys1.put(JetTokens.FIELD_IDENTIFIER, JET_FIELD_IDENTIFIER);
@@ -99,7 +99,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
}
},
COLON_AS(COLON, AS_KEYWORD) {
COLON_AS(COLON, AS_KEYWORD, AS_SAFE) {
@Override
public JetNodeType parseRightHandSide(IElementType operation, JetExpressionParsing parser) {
parser.myJetParsing.parseTypeRef();
@@ -587,14 +587,20 @@ public class JetTypeInferrer {
if (actualType != null && !semanticServices.getTypeChecker().isSubtypeOf(actualType, targetType)) {
semanticServices.getErrorHandler().typeMismatch(expression.getLeft(), targetType, actualType);
}
result = targetType;
}
else if (operationType == JetTokens.AS_KEYWORD) {
// TODO : Check for cast impossibility
result = targetType;
}
else if (operationType == JetTokens.AS_SAFE) {
// TODO : Check for cast impossibility
result = TypeUtils.makeNullable(targetType);
}
else {
semanticServices.getErrorHandler().genericError(expression.getOperationSign().getNode(), "Unsupported binary operation");
}
result = targetType;
}
}
@@ -129,6 +129,7 @@ RAW_STRING_LITERAL = {THREE_QUO} {QUO_STRING_CHAR}* {THREE_QUO}?
<YYINITIAL> "!==" { return JetTokens.EXCLEQEQEQ; }
<YYINITIAL> "!in" { return JetTokens.NOT_IN; }
<YYINITIAL> "!is" { return JetTokens.NOT_IS; }
<YYINITIAL> "as?" { return JetTokens.AS_SAFE; }
<YYINITIAL> "++" { return JetTokens.PLUSPLUS ; }
<YYINITIAL> "--" { return JetTokens.MINUSMINUS; }
<YYINITIAL> "<=" { return JetTokens.LTEQ ; }
@@ -55,10 +55,12 @@ public interface JetTokens {
JetKeywordToken CAPITALIZED_THIS_KEYWORD = JetKeywordToken.keyword("This");
JetToken AS_SAFE = new JetToken("as?");
JetToken IDENTIFIER = new JetToken("IDENTIFIER");
JetToken LABEL_IDENTIFIER = new JetToken("LABEL_IDENTIFIER");
JetToken FIELD_IDENTIFIER = new JetToken("FIELD_IDENTIFIER");
JetToken FIELD_IDENTIFIER = new JetToken("FIELD_IDENTIFIER");
JetToken LBRACKET = new JetToken("LBRACKET");
JetToken RBRACKET = new JetToken("RBRACKET");
JetToken LBRACE = new JetToken("LBRACE");
@@ -88,7 +90,7 @@ public interface JetTokens {
JetToken OROR = new JetToken("OROR");
JetToken SAFE_ACCESS = new JetToken("SAFE_ACCESS");
JetToken ELVIS = new JetToken("ELVIS");
// JetToken MAP = new JetToken("MAP");
// JetToken MAP = new JetToken("MAP");
// JetToken FILTER = new JetToken("FILTER");
JetToken QUEST = new JetToken("QUEST");
JetToken COLON = new JetToken("COLON");
@@ -105,12 +107,12 @@ public interface JetTokens {
JetToken HASH = new JetToken("HASH");
JetToken AT = new JetToken("AT");
JetToken ATAT = new JetToken("ATAT");
TokenSet LABELS = TokenSet.create(AT, ATAT, LABEL_IDENTIFIER);
JetToken COMMA = new JetToken("COMMA");
JetToken EOL_OR_SEMICOLON = new JetToken("EOL_OR_SEMICOLON");
JetKeywordToken WRAPS_KEYWORD = JetKeywordToken.softKeyword("wraps");
JetKeywordToken IMPORT_KEYWORD = JetKeywordToken.softKeyword("import");
JetKeywordToken WHERE_KEYWORD = JetKeywordToken.softKeyword("where");
@@ -129,6 +131,7 @@ public interface JetTokens {
JetKeywordToken PROTECTED_KEYWORD = JetKeywordToken.softKeyword("protected");
JetKeywordToken CATCH_KEYWORD = JetKeywordToken.softKeyword("catch");
JetKeywordToken OUT_KEYWORD = JetKeywordToken.softKeyword("out");
JetKeywordToken FINALLY_KEYWORD = JetKeywordToken.softKeyword("finally");
// TODO: support this as an annotation on arguments. Then, they it probably can not be a soft keyword
@@ -152,13 +155,12 @@ public interface JetTokens {
OPEN_KEYWORD, ATTRIBUTE_KEYWORD, OVERRIDE_KEYWORD, PRIVATE_KEYWORD, PUBLIC_KEYWORD, INTERNAL_KEYWORD,
PROTECTED_KEYWORD, REF_KEYWORD, OUT_KEYWORD, IN_KEYWORD
);
TokenSet WHITE_SPACE_OR_COMMENT_BIT_SET = TokenSet.create(WHITE_SPACE, BLOCK_COMMENT, EOL_COMMENT, DOC_COMMENT);
TokenSet WHITESPACES = TokenSet.create(TokenType.WHITE_SPACE);
TokenSet COMMENTS = TokenSet.create(EOL_COMMENT, BLOCK_COMMENT, DOC_COMMENT);
TokenSet STRINGS = TokenSet.create(CHARACTER_LITERAL, STRING_LITERAL, RAW_STRING_LITERAL);
TokenSet OPERATIONS = TokenSet.create(AS_KEYWORD, IS_KEYWORD, IN_KEYWORD, DOT, PLUSPLUS, MINUSMINUS, MUL, PLUS,
TokenSet STRINGS = TokenSet.create(CHARACTER_LITERAL, STRING_LITERAL, RAW_STRING_LITERAL);
TokenSet OPERATIONS = TokenSet.create(AS_KEYWORD, AS_SAFE, IS_KEYWORD, IN_KEYWORD, DOT, PLUSPLUS, MINUSMINUS, MUL, PLUS,
MINUS, EXCL, DIV, PERC, LT, GT, LTEQ, GTEQ, EQEQEQ, ARROW, EXCLEQEQEQ, EQEQ, EXCLEQ, ANDAND, OROR,
SAFE_ACCESS, ELVIS,
// MAP, FILTER,
+252 -245
View File
@@ -1,4 +1,4 @@
/* The following code was generated by JFlex 1.4.3 on 4/7/11 5:16 PM */
/* The following code was generated by JFlex 1.4.3 on 4/8/11 3:38 PM */
/* It's an automatically generated code. Do not modify it. */
package org.jetbrains.jet.lexer;
@@ -13,7 +13,7 @@ import org.jetbrains.jet.lexer.JetTokens;
/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3
* on 4/7/11 5:16 PM from the specification file
* on 4/8/11 3:38 PM from the specification file
* <tt>/Users/abreslav/work/jet/idea/src/org/jetbrains/jet/lexer/Jet.flex</tt>
*/
class _JetLexer implements FlexLexer {
@@ -38,14 +38,14 @@ class _JetLexer implements FlexLexer {
*/
private static final String ZZ_CMAP_PACKED =
"\11\5\1\3\1\13\1\0\1\3\1\0\16\5\4\0\1\3\1\57"+
"\1\25\1\100\1\7\1\67\1\63\1\23\1\74\1\75\1\12\1\60"+
"\1\77\1\21\1\17\1\11\1\14\11\1\1\66\1\76\1\61\1\56"+
"\1\62\1\65\1\10\1\2\1\16\2\2\1\20\1\2\5\4\1\4"+
"\1\25\1\100\1\7\1\67\1\64\1\23\1\74\1\75\1\12\1\61"+
"\1\77\1\21\1\17\1\11\1\14\11\1\1\66\1\76\1\62\1\56"+
"\1\63\1\60\1\10\1\2\1\16\2\2\1\20\1\2\5\4\1\4"+
"\3\4\1\22\3\4\1\53\3\4\1\15\2\4\1\70\1\24\1\71"+
"\1\0\1\4\1\6\1\27\1\45\1\34\1\55\1\31\1\44\1\4"+
"\1\50\1\37\1\46\1\52\1\51\1\30\1\26\1\40\1\33\1\4"+
"\1\42\1\32\1\36\1\41\1\54\1\47\1\35\1\43\1\4\1\72"+
"\1\64\1\73\1\0\41\5\2\0\4\4\4\0\1\4\2\0\1\5"+
"\1\65\1\73\1\0\41\5\2\0\4\4\4\0\1\4\2\0\1\5"+
"\7\0\1\4\4\0\1\4\5\0\27\4\1\0\37\4\1\0\u013f\4"+
"\31\0\162\4\4\0\14\4\16\0\5\4\11\0\1\4\21\0\130\5"+
"\5\0\23\5\12\0\1\4\13\0\1\4\1\0\3\4\1\0\1\4"+
@@ -141,7 +141,7 @@ class _JetLexer implements FlexLexer {
private static final String ZZ_ACTION_PACKED_0 =
"\1\0\1\1\1\2\1\3\1\4\1\1\1\3\1\5"+
"\1\6\1\7\1\2\1\10\1\11\1\12\1\13\16\3"+
"\1\14\1\15\1\16\1\17\1\20\2\1\1\21\1\22"+
"\1\14\1\15\1\16\1\17\1\20\1\21\2\1\1\22"+
"\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\32"+
"\1\33\1\34\1\0\1\35\1\0\1\36\1\0\1\37"+
"\1\0\1\40\1\41\1\42\1\43\1\44\1\35\2\2"+
@@ -149,16 +149,17 @@ class _JetLexer implements FlexLexer {
"\1\51\7\3\1\52\1\53\1\54\11\3\1\55\1\56"+
"\1\57\1\0\1\60\1\61\1\62\1\63\1\64\1\65"+
"\1\66\1\67\1\70\1\71\1\72\1\35\1\3\2\0"+
"\1\42\1\73\4\0\1\13\1\74\1\3\1\75\6\3"+
"\1\76\6\3\1\77\1\100\4\3\1\101\1\102\1\103"+
"\1\104\1\105\1\106\1\36\1\37\1\0\2\73\1\35"+
"\2\0\1\3\1\107\1\3\1\110\2\3\1\111\1\112"+
"\1\113\5\3\1\114\1\3\1\115\1\42\2\0\3\3"+
"\1\116\1\3\1\117\2\3\1\120\1\121\1\122\1\74"+
"\3\3\1\123\1\124\1\125\5\3\1\126\1\127\1\130";
"\1\42\1\73\4\0\1\13\1\74\1\3\1\75\1\3"+
"\1\76\5\3\1\77\6\3\1\100\1\101\4\3\1\102"+
"\1\103\1\104\1\105\1\106\1\107\1\36\1\37\1\0"+
"\2\73\1\35\2\0\1\3\1\110\1\3\1\111\2\3"+
"\1\112\1\113\1\114\5\3\1\115\1\3\1\116\1\42"+
"\2\0\3\3\1\117\1\3\1\120\2\3\1\121\1\122"+
"\1\123\1\74\3\3\1\124\1\125\1\126\5\3\1\127"+
"\1\130\1\131";
private static int [] zzUnpackAction() {
int [] result = new int[204];
int [] result = new int[205];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
@@ -192,26 +193,26 @@ class _JetLexer implements FlexLexer {
"\0\u09a6\0\u09e7\0\u0a28\0\u0a69\0\u0aaa\0\u0aeb\0\u0b2c\0\101"+
"\0\u0b6d\0\u0bae\0\101\0\101\0\u0bef\0\u0c30\0\u0c71\0\u0cb2"+
"\0\101\0\101\0\101\0\101\0\101\0\u0cf3\0\u0d34\0\u0d75"+
"\0\u0db6\0\u0df7\0\u0e38\0\u0e79\0\303\0\u0eba\0\u0efb\0\u0f3c"+
"\0\u0f7d\0\u0fbe\0\u0fff\0\u1040\0\303\0\303\0\303\0\u1081"+
"\0\u10c2\0\u1103\0\u1144\0\u1185\0\u11c6\0\u1207\0\u1248\0\u1289"+
"\0\303\0\u12ca\0\101\0\u130b\0\u134c\0\101\0\101\0\101"+
"\0\101\0\101\0\101\0\101\0\101\0\101\0\101\0\u138d"+
"\0\101\0\u13ce\0\u140f\0\u1450\0\u1491\0\u14d2\0\u1513\0\u1554"+
"\0\u1595\0\101\0\u15d6\0\u1617\0\303\0\u1658\0\u1699\0\u16da"+
"\0\u171b\0\u175c\0\u179d\0\303\0\u17de\0\u181f\0\u1860\0\u18a1"+
"\0\u18e2\0\u1923\0\303\0\303\0\u1964\0\u19a5\0\u19e6\0\u1a27"+
"\0\303\0\303\0\101\0\101\0\101\0\101\0\101\0\101"+
"\0\u1a68\0\u1aa9\0\101\0\u1aea\0\u138d\0\u1b2b\0\u1b6c\0\303"+
"\0\u1bad\0\303\0\u1bee\0\u1c2f\0\303\0\u1c70\0\303\0\u1cb1"+
"\0\u1cf2\0\u1d33\0\u1d74\0\u1db5\0\303\0\u1df6\0\303\0\101"+
"\0\u1e37\0\u1e78\0\u1eb9\0\u1efa\0\u1f3b\0\303\0\u1f7c\0\303"+
"\0\u1fbd\0\u1ffe\0\303\0\303\0\303\0\101\0\u203f\0\u2080"+
"\0\u20c1\0\303\0\303\0\303\0\u2102\0\u2143\0\u2184\0\u21c5"+
"\0\u2206\0\303\0\303\0\303";
"\0\u0db6\0\u0df7\0\u0e38\0\u0e79\0\u0eba\0\u0efb\0\u0f3c\0\u0f7d"+
"\0\u0fbe\0\u0fff\0\u1040\0\u1081\0\303\0\303\0\303\0\u10c2"+
"\0\u1103\0\u1144\0\u1185\0\u11c6\0\u1207\0\u1248\0\u1289\0\u12ca"+
"\0\303\0\u130b\0\101\0\u134c\0\u138d\0\101\0\101\0\101"+
"\0\101\0\101\0\101\0\101\0\101\0\101\0\101\0\u13ce"+
"\0\101\0\u140f\0\u1450\0\u1491\0\u14d2\0\u1513\0\u1554\0\u1595"+
"\0\u15d6\0\101\0\u1617\0\u1658\0\303\0\u1699\0\101\0\u16da"+
"\0\u171b\0\u175c\0\u179d\0\u17de\0\303\0\u181f\0\u1860\0\u18a1"+
"\0\u18e2\0\u1923\0\u1964\0\303\0\303\0\u19a5\0\u19e6\0\u1a27"+
"\0\u1a68\0\303\0\303\0\101\0\101\0\101\0\101\0\101"+
"\0\101\0\u1aa9\0\u1aea\0\101\0\u1b2b\0\u13ce\0\u1b6c\0\u1bad"+
"\0\303\0\u1bee\0\303\0\u1c2f\0\u1c70\0\303\0\u1cb1\0\303"+
"\0\u1cf2\0\u1d33\0\u1d74\0\u1db5\0\u1df6\0\303\0\u1e37\0\303"+
"\0\101\0\u1e78\0\u1eb9\0\u1efa\0\u1f3b\0\u1f7c\0\303\0\u1fbd"+
"\0\303\0\u1ffe\0\u203f\0\303\0\303\0\303\0\101\0\u2080"+
"\0\u20c1\0\u2102\0\303\0\303\0\303\0\u2143\0\u2184\0\u21c5"+
"\0\u2206\0\u2247\0\303\0\303\0\303";
private static int [] zzUnpackRowMap() {
int [] result = new int[204];
int [] result = new int[205];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
@@ -254,8 +255,8 @@ class _JetLexer implements FlexLexer {
"\1\71\1\72\43\0\1\73\100\0\1\74\23\0\1\75"+
"\12\0\1\75\1\76\1\77\1\61\1\62\10\0\1\62"+
"\3\0\1\76\7\0\1\77\34\0\1\100\12\0\1\100"+
"\2\0\1\101\102\0\1\102\34\0\1\103\3\0\1\104"+
"\16\0\13\16\1\0\7\16\1\105\1\106\54\16\13\107"+
"\2\0\1\101\102\0\1\102\34\0\1\103\4\0\1\104"+
"\15\0\13\16\1\0\7\16\1\105\1\106\54\16\13\107"+
"\1\0\10\107\1\110\1\111\53\107\1\0\2\4\1\0"+
"\2\4\1\0\1\4\4\0\3\4\1\0\1\4\1\0"+
"\1\4\3\0\1\4\1\112\1\4\1\113\7\4\1\114"+
@@ -287,11 +288,11 @@ class _JetLexer implements FlexLexer {
"\1\0\1\4\3\0\1\4\1\140\26\4\24\0\2\4"+
"\1\0\2\4\1\0\1\4\4\0\3\4\1\0\1\4"+
"\1\0\1\4\3\0\12\4\1\141\15\4\101\0\1\142"+
"\3\0\1\143\55\0\1\144\16\0\1\145\100\0\1\146"+
"\1\0\1\147\76\0\1\150\100\0\1\151\105\0\1\152"+
"\101\0\1\153\33\0\1\154\46\0\1\155\70\0\1\156"+
"\4\0\1\143\54\0\1\144\16\0\1\145\41\0\1\146"+
"\46\0\1\147\70\0\1\150\2\0\1\151\75\0\1\152"+
"\100\0\1\153\106\0\1\154\101\0\1\155\71\0\1\156"+
"\23\0\1\100\12\0\1\100\2\0\1\157\62\0\1\160"+
"\12\0\1\160\4\0\1\160\36\0\1\160\21\0\2\63"+
"\12\0\1\160\4\0\1\160\37\0\1\160\20\0\2\63"+
"\1\0\2\63\1\161\1\63\4\0\3\63\1\0\1\63"+
"\1\0\1\63\3\0\30\63\24\0\2\64\1\0\2\64"+
"\1\0\1\64\4\0\3\64\1\0\1\64\1\0\1\64"+
@@ -316,140 +317,142 @@ class _JetLexer implements FlexLexer {
"\2\4\1\0\1\4\4\0\3\4\1\0\1\4\1\0"+
"\1\4\3\0\23\4\1\176\4\4\24\0\2\4\1\0"+
"\2\4\1\0\1\4\4\0\3\4\1\0\1\4\1\0"+
"\1\4\3\0\10\4\1\177\17\4\24\0\2\4\1\0"+
"\1\4\3\0\30\4\2\0\1\177\21\0\2\4\1\0"+
"\2\4\1\0\1\4\4\0\3\4\1\0\1\4\1\0"+
"\1\4\3\0\4\4\1\200\23\4\24\0\2\4\1\0"+
"\1\4\3\0\10\4\1\200\17\4\24\0\2\4\1\0"+
"\2\4\1\0\1\4\4\0\3\4\1\0\1\4\1\0"+
"\1\4\3\0\1\201\27\4\24\0\2\4\1\0\2\4"+
"\1\4\3\0\4\4\1\201\23\4\24\0\2\4\1\0"+
"\2\4\1\0\1\4\4\0\3\4\1\0\1\4\1\0"+
"\1\4\3\0\1\202\27\4\24\0\2\4\1\0\2\4"+
"\1\0\1\4\4\0\3\4\1\0\1\4\1\0\1\4"+
"\3\0\1\4\1\202\26\4\24\0\2\4\1\0\2\4"+
"\3\0\1\4\1\203\26\4\24\0\2\4\1\0\2\4"+
"\1\0\1\4\4\0\3\4\1\0\1\4\1\0\1\4"+
"\3\0\13\4\1\203\1\4\1\204\12\4\24\0\2\4"+
"\3\0\13\4\1\204\1\4\1\205\12\4\24\0\2\4"+
"\1\0\2\4\1\0\1\4\4\0\3\4\1\0\1\4"+
"\1\0\1\4\3\0\5\4\1\205\22\4\24\0\2\4"+
"\1\0\1\4\3\0\5\4\1\206\22\4\24\0\2\4"+
"\1\0\2\4\1\0\1\4\4\0\3\4\1\0\1\4"+
"\1\0\1\4\3\0\11\4\1\206\2\4\1\207\13\4"+
"\1\0\1\4\3\0\11\4\1\207\2\4\1\210\13\4"+
"\24\0\2\4\1\0\2\4\1\0\1\4\4\0\3\4"+
"\1\0\1\4\1\0\1\4\3\0\20\4\1\210\7\4"+
"\1\0\1\4\1\0\1\4\3\0\20\4\1\211\7\4"+
"\24\0\2\4\1\0\2\4\1\0\1\4\4\0\3\4"+
"\1\0\1\4\1\0\1\4\3\0\10\4\1\211\17\4"+
"\1\0\1\4\1\0\1\4\3\0\10\4\1\212\17\4"+
"\24\0\2\4\1\0\2\4\1\0\1\4\4\0\3\4"+
"\1\0\1\4\1\0\1\4\3\0\23\4\1\212\4\4"+
"\1\0\1\4\1\0\1\4\3\0\23\4\1\213\4\4"+
"\24\0\2\4\1\0\2\4\1\0\1\4\4\0\3\4"+
"\1\0\1\4\1\0\1\4\3\0\14\4\1\213\13\4"+
"\1\0\1\4\1\0\1\4\3\0\14\4\1\214\13\4"+
"\24\0\2\4\1\0\2\4\1\0\1\4\4\0\3\4"+
"\1\0\1\4\1\0\1\4\3\0\1\214\27\4\24\0"+
"\1\0\1\4\1\0\1\4\3\0\1\215\27\4\24\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\3\4\1\215\24\4\24\0"+
"\1\4\1\0\1\4\3\0\3\4\1\216\24\4\24\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\3\4\1\216\5\4\1\217"+
"\1\4\1\0\1\4\3\0\3\4\1\217\5\4\1\220"+
"\16\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+
"\3\4\1\0\1\4\1\0\1\4\3\0\11\4\1\220"+
"\3\4\1\0\1\4\1\0\1\4\3\0\11\4\1\221"+
"\16\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+
"\3\4\1\0\1\4\1\0\1\4\3\0\14\4\1\221"+
"\6\4\1\222\4\4\101\0\1\223\50\0\1\224\3\0"+
"\1\225\124\0\1\226\23\0\1\160\12\0\1\160\65\0"+
"\2\162\1\0\2\162\1\227\1\162\4\0\3\162\1\0"+
"\3\4\1\0\1\4\1\0\1\4\3\0\14\4\1\222"+
"\6\4\1\223\4\4\101\0\1\224\50\0\1\225\3\0"+
"\1\226\124\0\1\227\23\0\1\160\12\0\1\160\65\0"+
"\2\162\1\0\2\162\1\230\1\162\4\0\3\162\1\0"+
"\1\162\1\0\1\162\3\0\30\162\24\0\2\163\1\0"+
"\2\163\1\230\1\163\4\0\3\163\1\0\1\163\1\0"+
"\1\163\3\0\30\163\23\0\12\164\1\231\66\164\11\232"+
"\1\233\1\165\66\232\1\0\1\100\12\0\1\100\65\0"+
"\2\234\11\0\1\234\1\0\1\234\1\157\1\234\6\0"+
"\1\234\1\0\1\234\2\0\1\234\7\0\2\234\7\0"+
"\1\234\24\0\1\160\12\0\1\160\4\0\1\235\36\0"+
"\1\235\37\0\1\157\61\0\25\173\1\236\53\173\1\0"+
"\2\163\1\231\1\163\4\0\3\163\1\0\1\163\1\0"+
"\1\163\3\0\30\163\23\0\12\164\1\232\66\164\11\233"+
"\1\234\1\165\66\233\1\0\1\100\12\0\1\100\65\0"+
"\2\235\11\0\1\235\1\0\1\235\1\157\1\235\6\0"+
"\1\235\1\0\1\235\2\0\1\235\7\0\2\235\7\0"+
"\1\235\24\0\1\160\12\0\1\160\4\0\1\236\37\0"+
"\1\236\36\0\1\157\61\0\25\173\1\237\53\173\1\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\3\4\1\237\24\4\24\0"+
"\1\4\1\0\1\4\3\0\3\4\1\240\24\4\24\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\23\4\1\240\4\4\24\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\3\4\1\241\24\4\24\0"+
"\1\4\1\0\1\4\3\0\23\4\1\241\4\4\24\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\3\4\1\242\24\4\24\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\10\4\1\243\17\4\24\0"+
"\1\4\1\0\1\4\3\0\3\4\1\243\24\4\24\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\4\4\1\244\23\4\24\0"+
"\1\4\1\0\1\4\3\0\10\4\1\244\17\4\24\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\3\4\1\245\24\4\24\0"+
"\1\4\1\0\1\4\3\0\4\4\1\245\23\4\24\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\3\4\1\246\24\4\24\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\4\4\1\247\23\4\24\0"+
"\1\4\1\0\1\4\3\0\3\4\1\247\24\4\24\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\12\4\1\250\15\4\24\0"+
"\1\4\1\0\1\4\3\0\4\4\1\250\23\4\24\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\3\4\1\251\24\4\24\0"+
"\1\4\1\0\1\4\3\0\12\4\1\251\15\4\24\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\13\4\1\252\14\4\24\0"+
"\1\4\1\0\1\4\3\0\3\4\1\252\24\4\24\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\4\4\1\253\23\4\24\0"+
"\1\4\1\0\1\4\3\0\13\4\1\253\14\4\24\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\1\4\1\254\26\4\24\0"+
"\1\4\1\0\1\4\3\0\4\4\1\254\23\4\24\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\1\255\27\4\24\0\2\4"+
"\1\0\2\4\1\0\1\4\4\0\3\4\1\0\1\4"+
"\1\0\1\4\3\0\23\4\1\256\4\4\24\0\2\4"+
"\1\0\2\4\1\0\1\4\4\0\3\4\1\0\1\4"+
"\1\0\1\4\3\0\4\4\1\257\23\4\23\0\11\164"+
"\1\260\1\231\66\164\12\232\1\261\66\232\1\0\2\234"+
"\11\0\1\234\1\0\1\234\1\0\1\234\1\0\1\170"+
"\4\0\1\234\1\0\1\234\1\0\1\170\1\234\7\0"+
"\2\234\7\0\1\234\23\0\25\173\1\262\53\173\1\0"+
"\1\4\1\0\1\4\3\0\1\4\1\255\26\4\24\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\4\4\1\263\23\4\24\0"+
"\1\4\1\0\1\4\3\0\1\256\27\4\24\0\2\4"+
"\1\0\2\4\1\0\1\4\4\0\3\4\1\0\1\4"+
"\1\0\1\4\3\0\23\4\1\257\4\4\24\0\2\4"+
"\1\0\2\4\1\0\1\4\4\0\3\4\1\0\1\4"+
"\1\0\1\4\3\0\4\4\1\260\23\4\23\0\11\164"+
"\1\261\1\232\66\164\12\233\1\262\66\233\1\0\2\235"+
"\11\0\1\235\1\0\1\235\1\0\1\235\1\0\1\170"+
"\4\0\1\235\1\0\1\235\1\0\1\170\1\235\7\0"+
"\2\235\7\0\1\235\23\0\25\173\1\263\53\173\1\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\1\264\27\4\24\0\2\4"+
"\1\4\1\0\1\4\3\0\4\4\1\264\23\4\24\0"+
"\2\4\1\0\2\4\1\0\1\4\4\0\3\4\1\0"+
"\1\4\1\0\1\4\3\0\1\265\27\4\24\0\2\4"+
"\1\0\2\4\1\0\1\4\4\0\3\4\1\0\1\4"+
"\1\0\1\4\3\0\11\4\1\265\16\4\24\0\2\4"+
"\1\0\1\4\3\0\11\4\1\266\16\4\24\0\2\4"+
"\1\0\2\4\1\0\1\4\4\0\3\4\1\0\1\4"+
"\1\0\1\4\3\0\4\4\1\266\23\4\24\0\2\4"+
"\1\0\1\4\3\0\4\4\1\267\23\4\24\0\2\4"+
"\1\0\2\4\1\0\1\4\4\0\3\4\1\0\1\4"+
"\1\0\1\4\3\0\12\4\1\267\15\4\24\0\2\4"+
"\1\0\1\4\3\0\12\4\1\270\15\4\24\0\2\4"+
"\1\0\2\4\1\0\1\4\4\0\3\4\1\0\1\4"+
"\1\0\1\4\3\0\21\4\1\270\6\4\24\0\2\4"+
"\1\0\1\4\3\0\21\4\1\271\6\4\24\0\2\4"+
"\1\0\2\4\1\0\1\4\4\0\3\4\1\0\1\4"+
"\1\0\1\4\3\0\6\4\1\271\21\4\24\0\2\4"+
"\1\0\1\4\3\0\6\4\1\272\21\4\24\0\2\4"+
"\1\0\2\4\1\0\1\4\4\0\3\4\1\0\1\4"+
"\1\0\1\4\3\0\14\4\1\272\13\4\24\0\2\4"+
"\1\0\1\4\3\0\14\4\1\273\13\4\24\0\2\4"+
"\1\0\2\4\1\0\1\4\4\0\3\4\1\0\1\4"+
"\1\0\1\4\3\0\3\4\1\273\24\4\24\0\2\4"+
"\1\0\1\4\3\0\3\4\1\274\24\4\24\0\2\4"+
"\1\0\2\4\1\0\1\4\4\0\3\4\1\0\1\4"+
"\1\0\1\4\3\0\24\4\1\274\3\4\24\0\2\4"+
"\1\0\1\4\3\0\24\4\1\275\3\4\24\0\2\4"+
"\1\0\2\4\1\0\1\4\4\0\3\4\1\0\1\4"+
"\1\0\1\4\3\0\3\4\1\275\24\4\23\0\11\232"+
"\1\233\1\261\66\232\25\173\1\276\53\173\1\0\2\4"+
"\1\0\1\4\3\0\3\4\1\276\24\4\23\0\11\233"+
"\1\234\1\262\66\233\25\173\1\277\53\173\1\0\2\4"+
"\1\0\2\4\1\0\1\4\4\0\3\4\1\0\1\4"+
"\1\0\1\4\3\0\5\4\1\277\22\4\24\0\2\4"+
"\1\0\1\4\3\0\5\4\1\300\22\4\24\0\2\4"+
"\1\0\2\4\1\0\1\4\4\0\3\4\1\0\1\4"+
"\1\0\1\4\3\0\4\4\1\300\23\4\24\0\2\4"+
"\1\0\1\4\3\0\4\4\1\301\23\4\24\0\2\4"+
"\1\0\2\4\1\0\1\4\4\0\3\4\1\0\1\4"+
"\1\0\1\4\3\0\1\301\27\4\24\0\2\4\1\0"+
"\1\0\1\4\3\0\1\302\27\4\24\0\2\4\1\0"+
"\2\4\1\0\1\4\4\0\3\4\1\0\1\4\1\0"+
"\1\4\3\0\16\4\1\302\11\4\24\0\2\4\1\0"+
"\1\4\3\0\16\4\1\303\11\4\24\0\2\4\1\0"+
"\2\4\1\0\1\4\4\0\3\4\1\0\1\4\1\0"+
"\1\4\3\0\10\4\1\303\17\4\24\0\2\4\1\0"+
"\1\4\3\0\10\4\1\304\17\4\24\0\2\4\1\0"+
"\2\4\1\0\1\4\4\0\3\4\1\0\1\4\1\0"+
"\1\4\3\0\1\304\27\4\24\0\2\4\1\0\2\4"+
"\1\4\3\0\1\305\27\4\24\0\2\4\1\0\2\4"+
"\1\0\1\4\4\0\3\4\1\0\1\4\1\0\1\4"+
"\3\0\1\4\1\305\26\4\24\0\2\4\1\0\2\4"+
"\3\0\1\4\1\306\26\4\24\0\2\4\1\0\2\4"+
"\1\0\1\4\4\0\3\4\1\0\1\4\1\0\1\4"+
"\3\0\11\4\1\306\16\4\24\0\2\4\1\0\2\4"+
"\3\0\11\4\1\307\16\4\24\0\2\4\1\0\2\4"+
"\1\0\1\4\4\0\3\4\1\0\1\4\1\0\1\4"+
"\3\0\13\4\1\307\14\4\24\0\2\4\1\0\2\4"+
"\3\0\13\4\1\310\14\4\24\0\2\4\1\0\2\4"+
"\1\0\1\4\4\0\3\4\1\0\1\4\1\0\1\4"+
"\3\0\6\4\1\310\21\4\24\0\2\4\1\0\2\4"+
"\3\0\6\4\1\311\21\4\24\0\2\4\1\0\2\4"+
"\1\0\1\4\4\0\3\4\1\0\1\4\1\0\1\4"+
"\3\0\12\4\1\311\15\4\24\0\2\4\1\0\2\4"+
"\1\0\1\4\4\0\3\4\1\0\1\4\1\0\1\4"+
"\3\0\3\4\1\312\24\4\24\0\2\4\1\0\2\4"+
"\3\0\12\4\1\312\15\4\24\0\2\4\1\0\2\4"+
"\1\0\1\4\4\0\3\4\1\0\1\4\1\0\1\4"+
"\3\0\3\4\1\313\24\4\24\0\2\4\1\0\2\4"+
"\1\0\1\4\4\0\3\4\1\0\1\4\1\0\1\4"+
"\3\0\1\314\27\4\23\0";
"\3\0\3\4\1\314\24\4\24\0\2\4\1\0\2\4"+
"\1\0\1\4\4\0\3\4\1\0\1\4\1\0\1\4"+
"\3\0\1\315\27\4\23\0";
private static int [] zzUnpackTrans() {
int [] result = new int[8775];
int [] result = new int[8840];
int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
@@ -493,12 +496,12 @@ class _JetLexer implements FlexLexer {
"\1\0\1\11\43\1\1\11\1\1\11\11\1\0\1\1"+
"\1\0\1\1\1\0\1\1\1\0\1\11\2\1\2\11"+
"\4\1\5\11\35\1\1\11\1\0\1\1\12\11\1\1"+
"\1\11\2\0\2\1\4\0\1\11\30\1\6\11\1\0"+
"\1\1\1\11\1\1\2\0\21\1\1\11\2\0\13\1"+
"\1\11\16\1";
"\1\11\2\0\2\1\4\0\1\11\4\1\1\11\24\1"+
"\6\11\1\0\1\1\1\11\1\1\2\0\21\1\1\11"+
"\2\0\13\1\1\11\16\1";
private static int [] zzUnpackAttribute() {
int [] result = new int[204];
int [] result = new int[205];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
@@ -806,355 +809,359 @@ class _JetLexer implements FlexLexer {
case 3:
{ return JetTokens.IDENTIFIER;
}
case 89: break;
case 63:
case 90: break;
case 64:
{ return JetTokens.FOR_KEYWORD ;
}
case 90: break;
case 85:
case 91: break;
case 86:
{ return JetTokens.RETURN_KEYWORD ;
}
case 91: break;
case 71:
case 92: break;
case 72:
{ return JetTokens.NULL_KEYWORD ;
}
case 92: break;
case 15:
case 93: break;
case 16:
{ return JetTokens.LT ;
}
case 93: break;
case 94: break;
case 45:
{ return JetTokens.DO_KEYWORD ;
}
case 94: break;
case 14:
case 95: break;
case 15:
{ return JetTokens.PLUS ;
}
case 95: break;
case 96: break;
case 60:
{ return JetTokens.RAW_STRING_LITERAL;
}
case 96: break;
case 49:
case 97: break;
case 51:
{ return JetTokens.PLUSEQ ;
}
case 97: break;
case 98: break;
case 27:
{ return JetTokens.COMMA ;
}
case 98: break;
case 16:
case 99: break;
case 17:
{ return JetTokens.GT ;
}
case 99: break;
case 100: break;
case 4:
{ return JetTokens.WHITE_SPACE;
}
case 100: break;
case 83:
case 101: break;
case 84:
{ return JetTokens.TYPEOF_KEYWORD ;
}
case 101: break;
case 102: break;
case 25:
{ return JetTokens.RPAR ;
}
case 102: break;
case 103: break;
case 47:
{ return JetTokens.DOUBLE_ARROW;
}
case 103: break;
case 73:
case 104: break;
case 74:
{ return JetTokens.TRUE_KEYWORD ;
}
case 104: break;
case 105: break;
case 30:
{ return JetTokens.FIELD_IDENTIFIER;
}
case 105: break;
case 53:
case 106: break;
case 55:
{ return JetTokens.ANDAND ;
}
case 106: break;
case 107: break;
case 59:
{ return JetTokens.DOC_COMMENT;
}
case 107: break;
case 108: break;
case 29:
{ return JetTokens.FLOAT_LITERAL;
}
case 108: break;
case 109: break;
case 33:
{ return JetTokens.EOL_COMMENT;
}
case 109: break;
case 76:
case 110: break;
case 77:
{ return JetTokens.WHEN_KEYWORD ;
}
case 110: break;
case 111: break;
case 18:
{ return JetTokens.COLON ;
}
case 111: break;
case 51:
case 112: break;
case 53:
{ return JetTokens.LTEQ ;
}
case 112: break;
case 113: break;
case 40:
{ return JetTokens.ARROW ;
}
case 113: break;
case 114: break;
case 20:
{ return JetTokens.LBRACKET ;
}
case 114: break;
case 115: break;
case 58:
{ yypushback(2); return JetTokens.INTEGER_LITERAL;
}
case 115: break;
case 116: break;
case 10:
{ return JetTokens.CHARACTER_LITERAL;
}
case 116: break;
case 65:
case 117: break;
case 66:
{ return JetTokens.VAR_KEYWORD ;
}
case 117: break;
case 52:
case 118: break;
case 54:
{ return JetTokens.GTEQ ;
}
case 118: break;
case 119: break;
case 2:
{ return JetTokens.INTEGER_LITERAL;
}
case 119: break;
case 120: break;
case 23:
{ return JetTokens.RBRACE ;
}
case 120: break;
case 78:
case 121: break;
case 79:
{ return JetTokens.CLASS_KEYWORD ;
}
case 121: break;
case 122: break;
case 13:
{ return JetTokens.EXCL ;
}
case 122: break;
case 62:
case 123: break;
case 63:
{ return JetTokens.TRY_KEYWORD ;
}
case 123: break;
case 124: break;
case 48:
{ return JetTokens.EXCLEQ ;
}
case 124: break;
case 125: break;
case 39:
{ return JetTokens.MINUSEQ ;
}
case 125: break;
case 79:
case 126: break;
case 80:
{ return JetTokens.THROW_KEYWORD ;
}
case 126: break;
case 82:
case 127: break;
case 83:
{ return JetTokens.WHILE_KEYWORD ;
}
case 127: break;
case 128: break;
case 38:
{ return JetTokens.MINUSMINUS;
}
case 128: break;
case 86:
case 129: break;
case 87:
{ return JetTokens.CONTINUE_KEYWORD ;
}
case 129: break;
case 130: break;
case 32:
{ return JetTokens.ATAT ;
}
case 130: break;
case 68:
case 131: break;
case 69:
{ return JetTokens.NOT_IN;
}
case 131: break;
case 132: break;
case 6:
{ return JetTokens.DIV ;
}
case 132: break;
case 56:
case 133: break;
case 50:
{ return JetTokens.ELVIS ;
}
case 133: break;
case 134: break;
case 31:
{ return JetTokens.LABEL_IDENTIFIER;
}
case 134: break;
case 17:
case 135: break;
case 14:
{ return JetTokens.QUEST ;
}
case 135: break;
case 54:
case 136: break;
case 56:
{ return JetTokens.OROR ;
}
case 136: break;
case 137: break;
case 19:
{ return JetTokens.PERC ;
}
case 137: break;
case 70:
case 138: break;
case 71:
{ return JetTokens.EXCLEQEQEQ;
}
case 138: break;
case 139: break;
case 57:
{ return JetTokens.PERCEQ ;
}
case 139: break;
case 140: break;
case 37:
{ return JetTokens.RANGE ;
}
case 140: break;
case 141: break;
case 1:
{ return TokenType.BAD_CHARACTER;
}
case 141: break;
case 55:
case 142: break;
case 49:
{ return JetTokens.SAFE_ACCESS;
}
case 142: break;
case 87:
case 143: break;
case 88:
{ return JetTokens.NAMESPACE_KEYWORD ;
}
case 143: break;
case 69:
case 144: break;
case 70:
{ return JetTokens.NOT_IS;
}
case 144: break;
case 145: break;
case 7:
{ return JetTokens.MUL ;
}
case 145: break;
case 146: break;
case 21:
{ return JetTokens.RBRACKET ;
}
case 146: break;
case 50:
case 147: break;
case 52:
{ return JetTokens.PLUSPLUS ;
}
case 147: break;
case 75:
case 148: break;
case 76:
{ return JetTokens.THIS_KEYWORD ;
}
case 148: break;
case 149: break;
case 8:
{ return JetTokens.DOT ;
}
case 149: break;
case 150: break;
case 26:
{ return JetTokens.SEMICOLON ;
}
case 150: break;
case 151: break;
case 44:
{ return JetTokens.IF_KEYWORD ;
}
case 151: break;
case 152: break;
case 12:
{ return JetTokens.EQ ;
}
case 152: break;
case 153: break;
case 5:
{ return JetTokens.AT ;
}
case 153: break;
case 154: break;
case 62:
{ return JetTokens.AS_SAFE;
}
case 155: break;
case 24:
{ return JetTokens.LPAR ;
}
case 154: break;
case 156: break;
case 9:
{ return JetTokens.MINUS ;
}
case 155: break;
case 80:
case 157: break;
case 81:
{ return JetTokens.FALSE_KEYWORD ;
}
case 156: break;
case 74:
case 158: break;
case 75:
{ return JetTokens.TYPE_KEYWORD ;
}
case 157: break;
case 64:
case 159: break;
case 65:
{ return JetTokens.FUN_KEYWORD ;
}
case 158: break;
case 160: break;
case 43:
{ return JetTokens.IS_KEYWORD ;
}
case 159: break;
case 161: break;
case 35:
{ return JetTokens.DIVEQ ;
}
case 160: break;
case 88:
case 162: break;
case 89:
{ return JetTokens.EXTENSION_KEYWORD ;
}
case 161: break;
case 72:
case 163: break;
case 73:
{ return JetTokens.ELSE_KEYWORD ;
}
case 162: break;
case 164: break;
case 41:
{ return JetTokens.AS_KEYWORD ;
}
case 163: break;
case 165: break;
case 42:
{ return JetTokens.IN_KEYWORD ;
}
case 164: break;
case 166: break;
case 46:
{ return JetTokens.EQEQ ;
}
case 165: break;
case 66:
case 167: break;
case 67:
{ return JetTokens.VAL_KEYWORD ;
}
case 166: break;
case 67:
case 168: break;
case 68:
{ return JetTokens.EQEQEQ ;
}
case 167: break;
case 77:
case 169: break;
case 78:
{ return JetTokens.CAPITALIZED_THIS_KEYWORD ;
}
case 168: break;
case 170: break;
case 61:
{ return JetTokens.NEW_KEYWORD ;
}
case 169: break;
case 171: break;
case 36:
{ return JetTokens.MULTEQ ;
}
case 170: break;
case 172: break;
case 11:
{ return JetTokens.STRING_LITERAL;
}
case 171: break;
case 173: break;
case 22:
{ return JetTokens.LBRACE ;
}
case 172: break;
case 84:
case 174: break;
case 85:
{ return JetTokens.OBJECT_KEYWORD ;
}
case 173: break;
case 81:
case 175: break;
case 82:
{ return JetTokens.BREAK_KEYWORD ;
}
case 174: break;
case 176: break;
case 34:
{ return JetTokens.BLOCK_COMMENT;
}
case 175: break;
case 177: break;
case 28:
{ return JetTokens.HASH ;
}
case 176: break;
case 178: break;
default:
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
zzAtEOF = true;
+16
View File
@@ -0,0 +1,16 @@
fun test() : Unit {
var x : Int? = 0
var y : Int = 0
x : Int?
y : Int
x as Int : Int
y as Int : Int
x as Int? : Int?
y as Int? : Int?
x as? Int : Int?
y as? Int : Int?
x as? Int? : Int?
y as? Int? : Int?
()
}
+6
View File
@@ -38,12 +38,18 @@ fun foo() {
t as Any<T>?
t as Any.Any<T>.Any<T>
t as {() : T}
t as? Any<T>?
t as? Any.Any<T>.Any<T>
t as? {() : T}
t : Any * 1
t : Any? * 1
t as Any<T>? * 1
t as Any.Any<T>.Any<T> * 1
t as {() : T} * 1
t as? Any<T>? * 1
t as? Any.Any<T>.Any<T> * 1
t as? {() : T} * 1
++t : Any + 1
a.b : Any + 1
+181
View File
@@ -803,6 +803,86 @@ JetFile: Precedence.jet
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('T')
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n ')
BINARY_WITH_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('t')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(as?)('as?')
PsiWhiteSpace(' ')
TYPE_REFERENCE
NULLABLE_TYPE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Any')
TYPE_ARGUMENT_LIST
PsiElement(LT)('<')
TYPE_PROJECTION
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('T')
PsiElement(GT)('>')
PsiElement(QUEST)('?')
PsiWhiteSpace('\n ')
BINARY_WITH_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('t')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(as?)('as?')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
USER_TYPE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Any')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Any')
TYPE_ARGUMENT_LIST
PsiElement(LT)('<')
TYPE_PROJECTION
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('T')
PsiElement(GT)('>')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Any')
TYPE_ARGUMENT_LIST
PsiElement(LT)('<')
TYPE_PROJECTION
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('T')
PsiElement(GT)('>')
PsiWhiteSpace('\n ')
BINARY_WITH_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('t')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(as?)('as?')
PsiWhiteSpace(' ')
TYPE_REFERENCE
FUNCTION_TYPE
PsiElement(LBRACE)('{')
VALUE_PARAMETER_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('T')
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n\n ')
BINARY_EXPRESSION
BINARY_WITH_TYPE
@@ -944,6 +1024,107 @@ JetFile: Precedence.jet
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiWhiteSpace('\n ')
BINARY_EXPRESSION
BINARY_WITH_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('t')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(as?)('as?')
PsiWhiteSpace(' ')
TYPE_REFERENCE
NULLABLE_TYPE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Any')
TYPE_ARGUMENT_LIST
PsiElement(LT)('<')
TYPE_PROJECTION
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('T')
PsiElement(GT)('>')
PsiElement(QUEST)('?')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(MUL)('*')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiWhiteSpace('\n ')
BINARY_EXPRESSION
BINARY_WITH_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('t')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(as?)('as?')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
USER_TYPE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Any')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Any')
TYPE_ARGUMENT_LIST
PsiElement(LT)('<')
TYPE_PROJECTION
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('T')
PsiElement(GT)('>')
PsiElement(DOT)('.')
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('Any')
TYPE_ARGUMENT_LIST
PsiElement(LT)('<')
TYPE_PROJECTION
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('T')
PsiElement(GT)('>')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(MUL)('*')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiWhiteSpace('\n ')
BINARY_EXPRESSION
BINARY_WITH_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('t')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(as?)('as?')
PsiWhiteSpace(' ')
TYPE_REFERENCE
FUNCTION_TYPE
PsiElement(LBRACE)('{')
VALUE_PARAMETER_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiWhiteSpace(' ')
PsiElement(COLON)(':')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
REFERENCE_EXPRESSION
PsiElement(IDENTIFIER)('T')
PsiElement(RBRACE)('}')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
PsiElement(MUL)('*')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('1')
PsiWhiteSpace('\n\n ')
BINARY_EXPRESSION
BINARY_WITH_TYPE