From d4020a422b09df6680d372d42c8ecde39cde5e6a Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Fri, 8 Jul 2011 20:27:40 +0400 Subject: [PATCH] JET-180 Rename typeof to typeinfo, type or make it a function --- grammar/src/expressions.grm | 3 - idea/src/jet/Library.jet | 3 + idea/src/org/jetbrains/jet/JetNodeTypes.java | 1 - .../jet/codegen/ExpressionCodegen.java | 6 - .../jet/lang/cfg/JetControlFlowProcessor.java | 6 - .../lang/parsing/JetExpressionParsing.java | 51 +- .../jet/lang/psi/JetTypeofExpression.java | 22 - .../jetbrains/jet/lang/psi/JetVisitor.java | 4 - .../jet/lang/types/JetTypeInferrer.java | 6 - idea/src/org/jetbrains/jet/lexer/Jet.flex | 1 - .../org/jetbrains/jet/lexer/JetTokens.java | 5 +- .../org/jetbrains/jet/lexer/_JetLexer.java | 593 +++++++++--------- .../codegen/typeInfo/typeOfOperator.jet | 2 +- idea/testData/psi/SimpleExpressions.jet | 1 - idea/testData/psi/SimpleExpressions.txt | 20 - .../jet/types/JetTypeCheckerTest.java | 4 +- 16 files changed, 300 insertions(+), 428 deletions(-) delete mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetTypeofExpression.java diff --git a/grammar/src/expressions.grm b/grammar/src/expressions.grm index f795fd5259c..6d6e4bba935 100644 --- a/grammar/src/expressions.grm +++ b/grammar/src/expressions.grm @@ -117,10 +117,7 @@ atomicExpression : if : when : try - : "typeof" "(" expression ")" -// : "new" constructorInvocation : objectLiteral -// : declaration : jump : loop : SimpleName diff --git a/idea/src/jet/Library.jet b/idea/src/jet/Library.jet index 04df29fc7ae..6f5f84d2bf2 100644 --- a/idea/src/jet/Library.jet +++ b/idea/src/jet/Library.jet @@ -5,6 +5,9 @@ namespace typeinfo { fun isSubtypeOf(other : TypeInfo<*>) : Boolean fun isInstance(obj : Any?) : Boolean } + + fun typeinfo() : TypeInfo + fun typeinfo(expression : T) : TypeInfo } namespace io { diff --git a/idea/src/org/jetbrains/jet/JetNodeTypes.java b/idea/src/org/jetbrains/jet/JetNodeTypes.java index 4197a857a53..32d3d7410d0 100644 --- a/idea/src/org/jetbrains/jet/JetNodeTypes.java +++ b/idea/src/org/jetbrains/jet/JetNodeTypes.java @@ -73,7 +73,6 @@ public interface JetNodeTypes { JetNodeType TUPLE = new JetNodeType("TUPLE", JetTupleExpression.class); JetNodeType PARENTHESIZED = new JetNodeType("PARENTHESIZED", JetParenthesizedExpression.class); - JetNodeType TYPEOF = new JetNodeType("TYPEOF", JetTypeofExpression.class); JetNodeType RETURN = new JetNodeType("RETURN", JetReturnExpression.class); JetNodeType THROW = new JetNodeType("THROW", JetThrowExpression.class); JetNodeType CONTINUE = new JetNodeType("CONTINUE", JetContinueExpression.class); diff --git a/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index 6c4ecb427e7..36c28f15ba6 100644 --- a/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -1643,12 +1643,6 @@ public class ExpressionCodegen extends JetVisitor { } } - @Override - public void visitTypeofExpression(JetTypeofExpression expression) { - gen(expression.getBaseExpression(), JET_OBJECT_TYPE); - v.invokeinterface("jet/JetObject", "getTypeInfo", "()Ljet/typeinfo/TypeInfo;"); - } - @Override public void visitIsExpression(final JetIsExpression expression) { final StackValue match = StackValue.expression(OBJECT_TYPE, expression.getLeftHandSide(), this); diff --git a/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java b/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java index 09073b30ebe..bac7f3e697a 100644 --- a/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java +++ b/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java @@ -603,12 +603,6 @@ public class JetControlFlowProcessor { builder.read(expression); } - @Override - public void visitTypeofExpression(JetTypeofExpression expression) { - value(expression.getBaseExpression(), false, false); - builder.read(expression); - } - @Override public void visitIsExpression(JetIsExpression expression) { value(expression.getLeftHandSide(), false, inCondition); diff --git a/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java b/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java index 49d839fe92a..0a4c90e2f51 100644 --- a/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java +++ b/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java @@ -21,8 +21,7 @@ public class JetExpressionParsing extends AbstractJetParsing { private static final TokenSet TYPE_ARGUMENT_LIST_STOPPERS = TokenSet.create( INTEGER_LITERAL, LONG_LITERAL, FLOAT_LITERAL, CHARACTER_LITERAL, STRING_LITERAL, RAW_STRING_LITERAL, NAMESPACE_KEYWORD, AS_KEYWORD, TYPE_KEYWORD, CLASS_KEYWORD, THIS_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, - FUN_KEYWORD, EXTENSION_KEYWORD, FOR_KEYWORD, NULL_KEYWORD, TYPEOF_KEYWORD, -// NEW_KEYWORD, + FUN_KEYWORD, EXTENSION_KEYWORD, FOR_KEYWORD, NULL_KEYWORD, TRUE_KEYWORD, FALSE_KEYWORD, IS_KEYWORD, THROW_KEYWORD, RETURN_KEYWORD, BREAK_KEYWORD, CONTINUE_KEYWORD, OBJECT_KEYWORD, IF_KEYWORD, TRY_KEYWORD, ELSE_KEYWORD, WHILE_KEYWORD, DO_KEYWORD, WHEN_KEYWORD, RBRACKET, RBRACE, RPAR, PLUSPLUS, MINUSMINUS, MUL, PLUS, MINUS, EXCL, DIV, PERC, LTEQ, @@ -54,8 +53,6 @@ public class JetExpressionParsing extends AbstractJetParsing { IF_KEYWORD, // if WHEN_KEYWORD, // when TRY_KEYWORD, // try - TYPEOF_KEYWORD, // typeof -// NEW_KEYWORD, // new OBJECT_KEYWORD, // object // jump @@ -468,8 +465,6 @@ public class JetExpressionParsing extends AbstractJetParsing { * atomicExpression * : tupleLiteral // or parenthesized element * : "this" getEntryPoint? ("<" type ">")? - * : "typeof" "(" element ")" - * : "new" constructorInvocation * : objectLiteral * : jump * : if @@ -495,12 +490,6 @@ public class JetExpressionParsing extends AbstractJetParsing { else if (at(THIS_KEYWORD)) { parseThisExpression(); } - else if (at(TYPEOF_KEYWORD)) { - parseTypeOf(); - } -// else if (at(NEW_KEYWORD)) { -// parseNew(); -// } else if (at(OBJECT_KEYWORD)) { parseObjectLiteral(); } @@ -1431,44 +1420,6 @@ public class JetExpressionParsing extends AbstractJetParsing { marker.done(THROW); } -// /* -// * "new" constructorInvocation // identical to new functionCall -// * -// * constructorInvocation -// * : userType callSuffix -// */ -// private void parseNew() { -// assert _at(NEW_KEYWORD); -// -// PsiBuilder.Marker creation = mark(); -// advance(); // NEW_KEYWORD -// -// myJetParsing.parseTypeRef(); -// parseCallSuffix(); -// -// creation.done(NEW); -// } - - /* - * "typeof" "(" element ")" - */ - private void parseTypeOf() { - assert _at(TYPEOF_KEYWORD); - - PsiBuilder.Marker typeof = mark(); - advance(); // TYPEOF_KEYWORD - - myBuilder.disableNewlines(); - expect(LPAR, "Expecting '('"); - - parseExpression(); - - expect(RPAR, "Expecting ')'"); - myBuilder.restoreNewlinesState(); - - typeof.done(TYPEOF); - } - /* * tupleLiteral // Ambiguity when after a SimpleName (infix call). In this case (e) is treated as an element in parentheses * // to put a tuple, write write ((e)) diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetTypeofExpression.java b/idea/src/org/jetbrains/jet/lang/psi/JetTypeofExpression.java deleted file mode 100644 index 9e1a60b4877..00000000000 --- a/idea/src/org/jetbrains/jet/lang/psi/JetTypeofExpression.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.jetbrains.jet.lang.psi; - -import com.intellij.lang.ASTNode; -import org.jetbrains.annotations.NotNull; - -/** - * @author max - */ -public class JetTypeofExpression extends JetExpression { - public JetTypeofExpression(@NotNull ASTNode node) { - super(node); - } - - @Override - public void accept(JetVisitor visitor) { - visitor.visitTypeofExpression(this); - } - - public JetExpression getBaseExpression() { - return findChildByClass(JetExpression.class); - } -} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java b/idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java index a8f935e841d..74fe39886ba 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java @@ -166,10 +166,6 @@ public class JetVisitor extends PsiElementVisitor { visitExpression(expression); } - public void visitTypeofExpression(JetTypeofExpression expression) { - visitExpression(expression); - } - public void visitBinaryExpression(JetBinaryExpression expression) { visitExpression(expression); } diff --git a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java index 8db448c1dce..3bbe4fd2b59 100644 --- a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java +++ b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java @@ -1113,12 +1113,6 @@ public class JetTypeInferrer { result = JetStandardClasses.getNothingType(); } - @Override - public void visitTypeofExpression(JetTypeofExpression expression) { - JetType type = services.safeGetType(context.scope, expression.getBaseExpression(), false, NO_EXPECTED_TYPE); // TODO - result = semanticServices.getStandardLibrary().getTypeInfoType(type); - } - @Override public void visitBinaryWithTypeRHSExpression(JetBinaryExpressionWithTypeRHS expression) { IElementType operationType = expression.getOperationSign().getReferencedNameElementType(); diff --git a/idea/src/org/jetbrains/jet/lexer/Jet.flex b/idea/src/org/jetbrains/jet/lexer/Jet.flex index c9dca68f6d0..edfc34276eb 100644 --- a/idea/src/org/jetbrains/jet/lexer/Jet.flex +++ b/idea/src/org/jetbrains/jet/lexer/Jet.flex @@ -95,7 +95,6 @@ RAW_STRING_LITERAL = {THREE_QUO} {QUO_STRING_CHAR}* {THREE_QUO}? "extension" { return JetTokens.EXTENSION_KEYWORD ;} "continue" { return JetTokens.CONTINUE_KEYWORD ;} "return" { return JetTokens.RETURN_KEYWORD ;} - "typeof" { return JetTokens.TYPEOF_KEYWORD ;} "object" { return JetTokens.OBJECT_KEYWORD ;} "while" { return JetTokens.WHILE_KEYWORD ;} "break" { return JetTokens.BREAK_KEYWORD ;} diff --git a/idea/src/org/jetbrains/jet/lexer/JetTokens.java b/idea/src/org/jetbrains/jet/lexer/JetTokens.java index 4fd4edb52c6..f104524c20e 100644 --- a/idea/src/org/jetbrains/jet/lexer/JetTokens.java +++ b/idea/src/org/jetbrains/jet/lexer/JetTokens.java @@ -34,8 +34,6 @@ public interface JetTokens { JetKeywordToken EXTENSION_KEYWORD = JetKeywordToken.keyword("extension"); JetKeywordToken FOR_KEYWORD = JetKeywordToken.keyword("for"); JetKeywordToken NULL_KEYWORD = JetKeywordToken.keyword("null"); - JetKeywordToken TYPEOF_KEYWORD = JetKeywordToken.keyword("typeof"); -// JetKeywordToken NEW_KEYWORD = JetKeywordToken.keyword("new"); JetKeywordToken TRUE_KEYWORD = JetKeywordToken.keyword("true"); JetKeywordToken FALSE_KEYWORD = JetKeywordToken.keyword("false"); JetKeywordToken IS_KEYWORD = JetKeywordToken.keyword("is"); @@ -139,8 +137,7 @@ public interface JetTokens { TokenSet KEYWORDS = TokenSet.create(NAMESPACE_KEYWORD, AS_KEYWORD, TYPE_KEYWORD, CLASS_KEYWORD, THIS_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, FUN_KEYWORD, EXTENSION_KEYWORD, FOR_KEYWORD, - NULL_KEYWORD, TYPEOF_KEYWORD, -// NEW_KEYWORD, + NULL_KEYWORD, TRUE_KEYWORD, FALSE_KEYWORD, IS_KEYWORD, IN_KEYWORD, THROW_KEYWORD, RETURN_KEYWORD, BREAK_KEYWORD, CONTINUE_KEYWORD, OBJECT_KEYWORD, IF_KEYWORD, ELSE_KEYWORD, WHILE_KEYWORD, DO_KEYWORD, TRY_KEYWORD, WHEN_KEYWORD, diff --git a/idea/src/org/jetbrains/jet/lexer/_JetLexer.java b/idea/src/org/jetbrains/jet/lexer/_JetLexer.java index 9df7d3dbddb..7b1b4fb7617 100644 --- a/idea/src/org/jetbrains/jet/lexer/_JetLexer.java +++ b/idea/src/org/jetbrains/jet/lexer/_JetLexer.java @@ -1,19 +1,17 @@ -/* The following code was generated by JFlex 1.4.3 on 6/15/11 2:54 PM */ +/* The following code was generated by JFlex 1.4.3 on 7/8/11 8:13 PM */ /* It's an automatically generated code. Do not modify it. */ package org.jetbrains.jet.lexer; -import com.intellij.lexer.*; -import com.intellij.psi.*; +import com.intellij.lexer.FlexLexer; +import com.intellij.psi.TokenType; import com.intellij.psi.tree.IElementType; -import org.jetbrains.jet.lexer.JetTokens; - /** * This class is a scanner generated by * JFlex 1.4.3 - * on 6/15/11 2:54 PM from the specification file + * on 7/8/11 8:13 PM from the specification file * /Users/abreslav/work/jet/idea/src/org/jetbrains/jet/lexer/Jet.flex */ class _JetLexer implements FlexLexer { @@ -42,9 +40,9 @@ class _JetLexer implements FlexLexer { "\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\0\1\4\1\6\1\27\1\43\1\34\1\55\1\31\1\51\1\4"+ + "\1\46\1\37\1\44\1\50\1\47\1\30\1\26\1\40\1\33\1\4"+ + "\1\42\1\32\1\36\1\41\1\54\1\45\1\35\1\52\1\4\1\72"+ "\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"+ @@ -150,15 +148,15 @@ class _JetLexer implements FlexLexer { "\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\2\3\1\75\5\3"+ - "\1\76\6\3\1\77\1\100\4\3\1\101\1\102\1\103"+ + "\1\76\11\3\1\77\1\100\1\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\3\1\113\3\3\1\114\2\3\1\115\1\42\2\0"+ + "\3\3\1\116\1\117\2\3\1\120\1\121\1\122\1\74"+ + "\3\3\1\123\1\124\5\3\1\125\1\126\1\127"; private static int [] zzUnpackAction() { - int [] result = new int[203]; + int [] result = new int[201]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -200,18 +198,18 @@ class _JetLexer implements FlexLexer { "\0\u13ce\0\u140f\0\u1450\0\u1491\0\u14d2\0\u1513\0\u1554\0\u1595"+ "\0\101\0\u15d6\0\u1617\0\u1658\0\101\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\u1923\0\u1964\0\u19a5\0\u19e6\0\303\0\303\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\303\0\u1bee\0\u1c2f\0\303\0\303\0\u1c70\0\303\0\u1cb1"+ + "\0\u1cf2\0\u1d33\0\303\0\u1d74\0\u1db5\0\303\0\101\0\u1df6"+ + "\0\u1e37\0\u1e78\0\u1eb9\0\u1efa\0\303\0\303\0\u1f3b\0\u1f7c"+ + "\0\303\0\303\0\303\0\101\0\u1fbd\0\u1ffe\0\u203f\0\303"+ + "\0\303\0\u2080\0\u20c1\0\u2102\0\u2143\0\u2184\0\303\0\303"+ + "\0\303"; private static int [] zzUnpackRowMap() { - int [] result = new int[203]; + int [] result = new int[201]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -238,7 +236,7 @@ class _JetLexer implements FlexLexer { "\1\10\1\11\1\12\1\5\1\13\2\4\1\14\1\4"+ "\1\15\1\4\1\16\1\2\1\17\1\20\1\21\1\4"+ "\1\22\2\4\1\23\1\4\1\24\1\25\1\26\1\4"+ - "\1\27\1\4\1\30\1\31\1\4\1\32\3\4\1\33"+ + "\1\27\1\30\1\4\1\31\3\4\1\32\1\4\1\33"+ "\1\34\1\35\1\36\1\37\1\40\1\41\1\42\1\43"+ "\1\44\1\45\1\46\1\47\1\50\1\51\1\52\1\53"+ "\1\54\1\55\1\56\1\57\1\60\102\0\1\3\12\0"+ @@ -253,7 +251,7 @@ class _JetLexer implements FlexLexer { "\2\66\1\0\1\66\1\0\1\66\3\0\30\66\34\0"+ "\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"+ + "\3\0\1\76\5\0\1\77\36\0\1\100\12\0\1\100"+ "\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"+ @@ -262,194 +260,191 @@ class _JetLexer implements FlexLexer { "\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\114\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\7\4\1\115\13\4\1\116"+ - "\4\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ + "\1\4\1\0\1\4\3\0\7\4\1\115\11\4\1\116"+ + "\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\12\4\1\117"+ - "\10\4\1\120\4\4\24\0\2\4\1\0\2\4\1\0"+ + "\6\4\1\120\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"+ - "\14\4\1\121\1\122\4\4\1\123\5\4\24\0\2\4"+ + "\14\4\1\121\3\4\1\122\3\4\1\123\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\1\124\3\4\1\125\16\4"+ + "\1\126\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\15\4"+ + "\1\127\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\3\4"+ + "\1\130\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\14\4"+ + "\1\131\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\132\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\1\4"+ + "\1\133\10\4\1\134\1\135\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\20\4\1\136\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\1\4\1\137\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\140\15\4\101\0\1\141\4\0"+ + "\1\142\54\0\1\143\16\0\1\144\41\0\1\145\46\0"+ + "\1\146\70\0\1\147\2\0\1\150\75\0\1\151\100\0"+ + "\1\152\106\0\1\153\101\0\1\154\71\0\1\155\23\0"+ + "\1\100\12\0\1\100\2\0\1\156\62\0\1\157\12\0"+ + "\1\157\4\0\1\157\37\0\1\157\20\0\2\63\1\0"+ + "\2\63\1\160\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\3\0"+ + "\30\64\25\0\1\161\1\0\1\161\2\0\1\161\5\0"+ + "\2\161\1\0\1\161\1\0\1\161\3\0\30\161\24\0"+ + "\2\66\1\0\2\66\1\0\1\66\4\0\3\66\1\0"+ + "\1\66\1\0\1\66\3\0\30\66\25\0\1\162\1\0"+ + "\1\162\2\0\1\162\5\0\2\162\1\0\1\162\1\0"+ + "\1\162\3\0\30\162\23\0\13\71\1\0\65\71\12\163"+ + "\1\164\66\163\1\0\1\75\12\0\1\75\2\0\1\165"+ + "\1\62\10\0\1\62\50\0\2\76\11\0\1\76\1\0"+ + "\1\76\1\166\1\76\1\0\1\167\4\0\1\76\1\0"+ + "\1\76\1\0\1\167\1\76\6\0\1\76\5\0\1\76"+ + "\3\0\1\76\24\0\1\77\12\0\1\77\2\0\1\170"+ + "\62\0\1\100\12\0\1\100\3\0\1\62\10\0\1\62"+ + "\47\0\13\16\1\0\65\16\13\107\1\0\10\107\1\110"+ + "\1\171\66\107\1\0\65\107\25\0\1\172\54\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\124\3\4\1\125\11\4\1\126"+ + "\1\0\1\4\3\0\2\4\1\173\25\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\174\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\30\4\2\0\1\175\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\10\4\1\176\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\4\4\1\177\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\200\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\201\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\202\10\4\1\203\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\11\4\1\204\2\4\1\205"+ + "\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\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\16\4\1\207"+ "\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\17\4\1\127"+ - "\10\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\130"+ + "\3\4\1\0\1\4\1\0\1\4\3\0\10\4\1\210"+ + "\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\211"+ "\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\4\1\131"+ - "\10\4\1\132\1\133\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\14\4\1\134\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\22\4\1\135\5\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\22\4\1\136\5\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\137\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\140\15\4\101\0\1\141\4\0\1\142"+ - "\54\0\1\143\16\0\1\144\41\0\1\145\46\0\1\146"+ - "\70\0\1\147\2\0\1\150\75\0\1\151\100\0\1\152"+ - "\106\0\1\153\101\0\1\154\71\0\1\155\23\0\1\100"+ - "\12\0\1\100\2\0\1\156\62\0\1\157\12\0\1\157"+ - "\4\0\1\157\37\0\1\157\20\0\2\63\1\0\2\63"+ - "\1\160\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\3\0\30\64"+ - "\25\0\1\161\1\0\1\161\2\0\1\161\5\0\2\161"+ - "\1\0\1\161\1\0\1\161\3\0\30\161\24\0\2\66"+ - "\1\0\2\66\1\0\1\66\4\0\3\66\1\0\1\66"+ - "\1\0\1\66\3\0\30\66\25\0\1\162\1\0\1\162"+ - "\2\0\1\162\5\0\2\162\1\0\1\162\1\0\1\162"+ - "\3\0\30\162\23\0\13\71\1\0\65\71\12\163\1\164"+ - "\66\163\1\0\1\75\12\0\1\75\2\0\1\165\1\62"+ - "\10\0\1\62\50\0\2\76\11\0\1\76\1\0\1\76"+ - "\1\166\1\76\1\0\1\167\4\0\1\76\1\0\1\76"+ - "\1\0\1\167\1\76\7\0\2\76\7\0\1\76\24\0"+ - "\1\77\12\0\1\77\2\0\1\170\62\0\1\100\12\0"+ - "\1\100\3\0\1\62\10\0\1\62\47\0\13\16\1\0"+ - "\65\16\13\107\1\0\10\107\1\110\1\171\66\107\1\0"+ - "\65\107\25\0\1\172\54\0\2\4\1\0\2\4\1\0"+ + "\3\4\1\0\1\4\1\0\1\4\3\0\3\4\1\212"+ + "\5\4\1\213\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"+ - "\2\4\1\173\25\4\24\0\2\4\1\0\2\4\1\0"+ + "\21\4\1\214\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"+ - "\23\4\1\174\4\4\24\0\2\4\1\0\2\4\1\0"+ + "\14\4\1\215\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"+ - "\30\4\2\0\1\175\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"+ - "\10\4\1\176\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"+ - "\4\4\1\177\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\200\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\201\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\202\1\4\1\203\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\204\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\205\2\4\1\206\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\207\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\210\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\211\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\212\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\213\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\214\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\215\5\4\1\216\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\217\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\220\6\4\1\221"+ - "\4\4\101\0\1\222\50\0\1\223\3\0\1\224\124\0"+ - "\1\225\23\0\1\157\12\0\1\157\65\0\2\161\1\0"+ - "\2\161\1\226\1\161\4\0\3\161\1\0\1\161\1\0"+ - "\1\161\3\0\30\161\24\0\2\162\1\0\2\162\1\227"+ - "\1\162\4\0\3\162\1\0\1\162\1\0\1\162\3\0"+ - "\30\162\23\0\12\163\1\230\66\163\11\231\1\232\1\164"+ - "\66\231\1\0\1\100\12\0\1\100\65\0\2\233\11\0"+ - "\1\233\1\0\1\233\1\156\1\233\6\0\1\233\1\0"+ - "\1\233\2\0\1\233\7\0\2\233\7\0\1\233\24\0"+ - "\1\157\12\0\1\157\4\0\1\234\37\0\1\234\36\0"+ - "\1\156\61\0\25\172\1\235\53\172\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\236\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\237\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\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\3\4\1\241\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\242\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\4\4\1\243\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\244\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\245\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\246\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\247\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\250\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\13\4\1\251\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\4\4\1\252\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\4\1\253\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\1\254\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\255\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\256\23\4\23\0\11\163\1\257\1\230"+ - "\66\163\12\231\1\260\66\231\1\0\2\233\11\0\1\233"+ - "\1\0\1\233\1\0\1\233\1\0\1\167\4\0\1\233"+ - "\1\0\1\233\1\0\1\167\1\233\7\0\2\233\7\0"+ - "\1\233\23\0\25\172\1\261\53\172\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\4\4\1\262\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\263\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\264\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\265\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\266\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\267\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\270\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\271\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\272\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\273\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\274\24\4\23\0\11\231\1\232\1\260"+ - "\66\231\25\172\1\275\53\172\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\276\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\277\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\300\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\301\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\302\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\303\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\304\26\4\24\0\2\4\1\0\2\4\1\0\1\4"+ + "\1\216\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\305\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\306\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\307\21\4\24\0\2\4\1\0\2\4\1\0\1\4"+ + "\1\217\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\220\4\4\1\221\6\4\101\0\1\222\50\0\1\223"+ + "\3\0\1\224\124\0\1\225\23\0\1\157\12\0\1\157"+ + "\65\0\2\161\1\0\2\161\1\226\1\161\4\0\3\161"+ + "\1\0\1\161\1\0\1\161\3\0\30\161\24\0\2\162"+ + "\1\0\2\162\1\227\1\162\4\0\3\162\1\0\1\162"+ + "\1\0\1\162\3\0\30\162\23\0\12\163\1\230\66\163"+ + "\11\231\1\232\1\164\66\231\1\0\1\100\12\0\1\100"+ + "\65\0\2\233\11\0\1\233\1\0\1\233\1\156\1\233"+ + "\6\0\1\233\1\0\1\233\2\0\1\233\6\0\1\233"+ + "\5\0\1\233\3\0\1\233\24\0\1\157\12\0\1\157"+ + "\4\0\1\234\37\0\1\234\36\0\1\156\61\0\25\172"+ + "\1\235\53\172\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\236\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\21\4"+ + "\1\237\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\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\3\4"+ + "\1\241\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\242\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\4\4"+ + "\1\243\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\244\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\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\12\4"+ - "\1\310\15\4\24\0\2\4\1\0\2\4\1\0\1\4"+ + "\1\246\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\311\24\4\24\0\2\4\1\0\2\4\1\0\1\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\3\4"+ - "\1\312\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\313"+ - "\27\4\23\0"; + "\1\250\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\13\4"+ + "\1\251\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\252\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\1\253"+ + "\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\21\4\1\254"+ + "\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\4\4\1\255"+ + "\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\4\4\1\256"+ + "\23\4\23\0\11\163\1\257\1\230\66\163\12\231\1\260"+ + "\66\231\1\0\2\233\11\0\1\233\1\0\1\233\1\0"+ + "\1\233\1\0\1\167\4\0\1\233\1\0\1\233\1\0"+ + "\1\167\1\233\6\0\1\233\5\0\1\233\3\0\1\233"+ + "\23\0\25\172\1\261\53\172\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\4\4\1\262\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\263\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\264\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\265\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"+ + "\17\4\1\266\10\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\267\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\270\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"+ + "\22\4\1\271\5\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\272\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\273\24\4\23\0\11\231\1\232\1\260\66\231"+ + "\25\172\1\274\53\172\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\275\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\276\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\277\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\10\4"+ + "\1\300\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\301"+ + "\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\302"+ + "\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\303"+ + "\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\304"+ + "\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\305"+ + "\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\306"+ + "\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\307"+ + "\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\310"+ + "\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\311\27\4"+ + "\23\0"; private static int [] zzUnpackTrans() { - int [] result = new int[8775]; + int [] result = new int[8645]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -495,10 +490,10 @@ class _JetLexer implements FlexLexer { "\4\1\5\11\34\1\1\11\1\0\1\1\12\11\1\1"+ "\1\11\2\0\2\1\4\0\1\11\3\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"; + "\2\0\12\1\1\11\15\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[203]; + int [] result = new int[201]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -806,355 +801,351 @@ class _JetLexer implements FlexLexer { case 3: { return JetTokens.IDENTIFIER; } - case 89: break; + case 88: break; case 63: { return JetTokens.FOR_KEYWORD ; } - case 90: break; - case 85: + case 89: break; + case 84: { return JetTokens.RETURN_KEYWORD ; } - case 91: break; + case 90: break; case 71: { return JetTokens.NULL_KEYWORD ; } - case 92: break; + case 91: break; case 16: { return JetTokens.LT ; } - case 93: break; + case 92: break; case 45: { return JetTokens.DO_KEYWORD ; } - case 94: break; + case 93: break; case 15: { return JetTokens.PLUS ; } - case 95: break; + case 94: break; case 60: { return JetTokens.RAW_STRING_LITERAL; } - case 96: break; + case 95: break; case 51: { return JetTokens.PLUSEQ ; } - case 97: break; + case 96: break; case 27: { return JetTokens.COMMA ; } - case 98: break; + case 97: break; case 17: { return JetTokens.GT ; } - case 99: break; + case 98: break; case 4: { return JetTokens.WHITE_SPACE; } - case 100: break; - case 83: - { return JetTokens.TYPEOF_KEYWORD ; - } - case 101: break; + case 99: break; case 25: { return JetTokens.RPAR ; } - case 102: break; + case 100: break; case 47: { return JetTokens.DOUBLE_ARROW; } - case 103: break; + case 101: break; case 73: { return JetTokens.TRUE_KEYWORD ; } - case 104: break; + case 102: break; case 30: { return JetTokens.FIELD_IDENTIFIER; } - case 105: break; + case 103: break; case 55: { return JetTokens.ANDAND ; } - case 106: break; + case 104: break; case 59: { return JetTokens.DOC_COMMENT; } - case 107: break; + case 105: break; case 29: { return JetTokens.FLOAT_LITERAL; } - case 108: break; + case 106: break; case 33: { return JetTokens.EOL_COMMENT; } - case 109: break; + case 107: break; case 76: { return JetTokens.WHEN_KEYWORD ; } - case 110: break; + case 108: break; case 18: { return JetTokens.COLON ; } - case 111: break; + case 109: break; case 53: { return JetTokens.LTEQ ; } - case 112: break; + case 110: break; case 40: { return JetTokens.ARROW ; } - case 113: break; + case 111: break; case 20: { return JetTokens.LBRACKET ; } - case 114: break; + case 112: break; case 58: { yypushback(2); return JetTokens.INTEGER_LITERAL; } - case 115: break; + case 113: break; case 10: { return JetTokens.CHARACTER_LITERAL; } - case 116: break; + case 114: break; case 65: { return JetTokens.VAR_KEYWORD ; } - case 117: break; + case 115: break; case 54: { return JetTokens.GTEQ ; } - case 118: break; + case 116: break; case 2: { return JetTokens.INTEGER_LITERAL; } - case 119: break; + case 117: break; case 23: { return JetTokens.RBRACE ; } - case 120: break; + case 118: break; case 78: { return JetTokens.CLASS_KEYWORD ; } - case 121: break; + case 119: break; case 13: { return JetTokens.EXCL ; } - case 122: break; + case 120: break; case 62: { return JetTokens.TRY_KEYWORD ; } - case 123: break; + case 121: break; case 48: { return JetTokens.EXCLEQ ; } - case 124: break; + case 122: break; case 39: { return JetTokens.MINUSEQ ; } - case 125: break; + case 123: break; case 79: { return JetTokens.THROW_KEYWORD ; } - case 126: break; - case 82: + case 124: break; + case 81: { return JetTokens.WHILE_KEYWORD ; } - case 127: break; + case 125: break; case 38: { return JetTokens.MINUSMINUS; } - case 128: break; - case 86: + case 126: break; + case 85: { return JetTokens.CONTINUE_KEYWORD ; } - case 129: break; + case 127: break; case 32: { return JetTokens.ATAT ; } - case 130: break; + case 128: break; case 68: { return JetTokens.NOT_IN; } - case 131: break; + case 129: break; case 6: { return JetTokens.DIV ; } - case 132: break; + case 130: break; case 50: { return JetTokens.ELVIS ; } - case 133: break; + case 131: break; case 31: { return JetTokens.LABEL_IDENTIFIER; } - case 134: break; + case 132: break; case 14: { return JetTokens.QUEST ; } - case 135: break; + case 133: break; case 56: { return JetTokens.OROR ; } - case 136: break; + case 134: break; case 19: { return JetTokens.PERC ; } - case 137: break; + case 135: break; case 70: { return JetTokens.EXCLEQEQEQ; } - case 138: break; + case 136: break; case 57: { return JetTokens.PERCEQ ; } - case 139: break; + case 137: break; case 37: { return JetTokens.RANGE ; } - case 140: break; + case 138: break; case 1: { return TokenType.BAD_CHARACTER; } - case 141: break; + case 139: break; case 49: { return JetTokens.SAFE_ACCESS; } - case 142: break; - case 87: + case 140: break; + case 86: { return JetTokens.NAMESPACE_KEYWORD ; } - case 143: break; + case 141: break; case 69: { return JetTokens.NOT_IS; } - case 144: break; + case 142: break; case 7: { return JetTokens.MUL ; } - case 145: break; + case 143: break; case 21: { return JetTokens.RBRACKET ; } - case 146: break; + case 144: break; case 52: { return JetTokens.PLUSPLUS ; } - case 147: break; - case 75: + case 145: break; + case 74: { return JetTokens.THIS_KEYWORD ; } - case 148: break; + case 146: break; case 8: { return JetTokens.DOT ; } - case 149: break; + case 147: break; case 26: { return JetTokens.SEMICOLON ; } - case 150: break; + case 148: break; case 44: { return JetTokens.IF_KEYWORD ; } - case 151: break; + case 149: break; case 12: { return JetTokens.EQ ; } - case 152: break; + case 150: break; case 5: { return JetTokens.AT ; } - case 153: break; + case 151: break; case 61: { return JetTokens.AS_SAFE; } - case 154: break; + case 152: break; case 24: { return JetTokens.LPAR ; } - case 155: break; + case 153: break; case 9: { return JetTokens.MINUS ; } - case 156: break; - case 80: + case 154: break; + case 82: { return JetTokens.FALSE_KEYWORD ; } - case 157: break; - case 74: + case 155: break; + case 75: { return JetTokens.TYPE_KEYWORD ; } - case 158: break; + case 156: break; case 64: { return JetTokens.FUN_KEYWORD ; } - case 159: break; + case 157: break; case 43: { return JetTokens.IS_KEYWORD ; } - case 160: break; + case 158: break; case 35: { return JetTokens.DIVEQ ; } - case 161: break; - case 88: + case 159: break; + case 87: { return JetTokens.EXTENSION_KEYWORD ; } - case 162: break; + case 160: break; case 72: { return JetTokens.ELSE_KEYWORD ; } - case 163: break; + case 161: break; case 41: { return JetTokens.AS_KEYWORD ; } - case 164: break; + case 162: break; case 42: { return JetTokens.IN_KEYWORD ; } - case 165: break; + case 163: break; case 46: { return JetTokens.EQEQ ; } - case 166: break; + case 164: break; case 66: { return JetTokens.VAL_KEYWORD ; } - case 167: break; + case 165: break; case 67: { return JetTokens.EQEQEQ ; } - case 168: break; + case 166: break; case 77: { return JetTokens.CAPITALIZED_THIS_KEYWORD ; } - case 169: break; + case 167: break; case 36: { return JetTokens.MULTEQ ; } - case 170: break; + case 168: break; case 11: { return JetTokens.STRING_LITERAL; } - case 171: break; + case 169: break; case 22: { return JetTokens.LBRACE ; } - case 172: break; - case 84: + case 170: break; + case 83: { return JetTokens.OBJECT_KEYWORD ; } - case 173: break; - case 81: + case 171: break; + case 80: { return JetTokens.BREAK_KEYWORD ; } - case 174: break; + case 172: break; case 34: { return JetTokens.BLOCK_COMMENT; } - case 175: break; + case 173: break; case 28: { return JetTokens.HASH ; } - case 176: break; + case 174: break; default: if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { zzAtEOF = true; diff --git a/idea/testData/codegen/typeInfo/typeOfOperator.jet b/idea/testData/codegen/typeInfo/typeOfOperator.jet index 93ee9dd699a..4c75a371da9 100644 --- a/idea/testData/codegen/typeInfo/typeOfOperator.jet +++ b/idea/testData/codegen/typeInfo/typeOfOperator.jet @@ -3,5 +3,5 @@ class Point() { fun foo() : typeinfo.TypeInfo { val p = Point(); - return typeof(p); + return typeinfo.typeinfo(p); } diff --git a/idea/testData/psi/SimpleExpressions.jet b/idea/testData/psi/SimpleExpressions.jet index 77baed79fa6..2bdebc0f908 100644 --- a/idea/testData/psi/SimpleExpressions.jet +++ b/idea/testData/psi/SimpleExpressions.jet @@ -18,7 +18,6 @@ fun a( a : foo = this, a : foo = (10), a : foo = (10, "A", 0xf), - a : foo = typeof(10), a : foo = Foo(bar), a : foo = Foo(bar), a : foo = Foo(), diff --git a/idea/testData/psi/SimpleExpressions.txt b/idea/testData/psi/SimpleExpressions.txt index d6fe274a2c9..545a786a89b 100644 --- a/idea/testData/psi/SimpleExpressions.txt +++ b/idea/testData/psi/SimpleExpressions.txt @@ -334,26 +334,6 @@ JetFile: SimpleExpressions.jet PsiElement(RPAR)(')') PsiElement(COMMA)(',') PsiWhiteSpace('\n ') - VALUE_PARAMETER - PsiElement(IDENTIFIER)('a') - PsiWhiteSpace(' ') - PsiElement(COLON)(':') - PsiWhiteSpace(' ') - TYPE_REFERENCE - USER_TYPE - REFERENCE_EXPRESSION - PsiElement(IDENTIFIER)('foo') - PsiWhiteSpace(' ') - PsiElement(EQ)('=') - PsiWhiteSpace(' ') - TYPEOF - PsiElement(typeof)('typeof') - PsiElement(LPAR)('(') - INTEGER_CONSTANT - PsiElement(INTEGER_LITERAL)('10') - PsiElement(RPAR)(')') - PsiElement(COMMA)(',') - PsiWhiteSpace('\n ') VALUE_PARAMETER PsiElement(IDENTIFIER)('a') PsiWhiteSpace(' ') diff --git a/idea/tests/org/jetbrains/jet/types/JetTypeCheckerTest.java b/idea/tests/org/jetbrains/jet/types/JetTypeCheckerTest.java index fc046fd5ac3..1263601bc83 100644 --- a/idea/tests/org/jetbrains/jet/types/JetTypeCheckerTest.java +++ b/idea/tests/org/jetbrains/jet/types/JetTypeCheckerTest.java @@ -86,8 +86,8 @@ public class JetTypeCheckerTest extends LightDaemonAnalyzerTestCase { } public void testTypeInfo() throws Exception { - assertType("typeof(1)", "typeinfo.TypeInfo"); - assertType("typeof(typeof(1))", "typeinfo.TypeInfo>"); + assertType("typeinfo.typeinfo", "typeinfo.TypeInfo"); + assertType("typeinfo.typeinfo>", "typeinfo.TypeInfo>"); } public void testJumps() throws Exception {