diff --git a/.idea/modules.xml b/.idea/modules.xml index 9c559c5bba1..299b0102691 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -11,6 +11,7 @@ + diff --git a/compiler/frontend/src/jet/Library.jet b/compiler/frontend/src/jet/Library.jet index c54b0d2c49e..d9a849e0017 100644 --- a/compiler/frontend/src/jet/Library.jet +++ b/compiler/frontend/src/jet/Library.jet @@ -34,7 +34,7 @@ namespace io { fun readLine() : String? } -fun Any.synchronized(block : fun() : R) : R +fun Any.synchronized(block : () -> R) : R fun Any?.identityEquals(other : Any?) : Boolean // = this === other @@ -139,7 +139,7 @@ trait CharIterable : Iterable { fun Array(val size : Int) : Array -class Array(val size : Int, init : fun(Int) : T) { +class Array(val size : Int, init : (Int) -> T) { fun get(index : Int) : T fun set(index : Int, value : T) : Unit diff --git a/compiler/frontend/src/org/jetbrains/jet/JetCoreEnvironment.java b/compiler/frontend/src/org/jetbrains/jet/JetCoreEnvironment.java index 65218c54fcf..1b2e2c12e66 100644 --- a/compiler/frontend/src/org/jetbrains/jet/JetCoreEnvironment.java +++ b/compiler/frontend/src/org/jetbrains/jet/JetCoreEnvironment.java @@ -2,6 +2,7 @@ package org.jetbrains.jet; import com.intellij.core.JavaCoreEnvironment; import com.intellij.lang.java.JavaParserDefinition; +import com.intellij.mock.MockApplication; import com.intellij.openapi.Disposable; import org.jetbrains.jet.lang.parsing.JetParserDefinition; import org.jetbrains.jet.plugin.JetFileType; @@ -19,4 +20,8 @@ public class JetCoreEnvironment extends JavaCoreEnvironment { registerParserDefinition(new JavaParserDefinition()); registerParserDefinition(new JetParserDefinition()); } + + public MockApplication getApplication() { + return myApplication; + } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java index 8844d181e69..f84ec2f38cd 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java @@ -18,7 +18,7 @@ import static org.jetbrains.jet.lexer.JetTokens.*; */ public class JetExpressionParsing extends AbstractJetParsing { private static final TokenSet WHEN_CONDITION_RECOVERY_SET = TokenSet.create(RBRACE, IN_KEYWORD, NOT_IN, IS_KEYWORD, NOT_IS, ELSE_KEYWORD); - private static final TokenSet WHEN_CONDITION_RECOVERY_SET_WITH_DOUBLE_ARROW = TokenSet.create(RBRACE, IN_KEYWORD, NOT_IN, IS_KEYWORD, NOT_IS, ELSE_KEYWORD, DOUBLE_ARROW, DOT); + private static final TokenSet WHEN_CONDITION_RECOVERY_SET_WITH_ARROW = TokenSet.create(RBRACE, IN_KEYWORD, NOT_IN, IS_KEYWORD, NOT_IS, ELSE_KEYWORD, ARROW, DOT); private static final ImmutableMap KEYWORD_TEXTS = tokenSetToMap(KEYWORDS); @@ -38,8 +38,8 @@ public class JetExpressionParsing extends AbstractJetParsing { 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, // TODO GTEQ, foo=x - EQEQEQ, ARROW, DOUBLE_ARROW, EXCLEQEQEQ, EQEQ, EXCLEQ, ANDAND, OROR, SAFE_ACCESS, ELVIS, - SEMICOLON, RANGE, EQ, MULTEQ, DIVEQ, PERCEQ, PLUSEQ, MINUSEQ, NOT_IN, NOT_IS, HASH, + EQEQEQ, ARROW, ARROW, EXCLEQEQEQ, EQEQ, EXCLEQ, ANDAND, OROR, SAFE_ACCESS, ELVIS, + SEMICOLON, RANGE, EQ, MULTEQ, DIVEQ, PERCEQ, PLUSEQ, MINUSEQ, NOT_IN, NOT_IS, //HASH, COLON ); @@ -49,6 +49,7 @@ public class JetExpressionParsing extends AbstractJetParsing { // Atomic LPAR, // parenthesized + HASH, // Tuple // literal constant TRUE_KEYWORD, FALSE_KEYWORD, @@ -100,13 +101,14 @@ public class JetExpressionParsing extends AbstractJetParsing { ); /*package*/ static final TokenSet EXPRESSION_FOLLOW = TokenSet.create( - SEMICOLON, DOUBLE_ARROW, COMMA, RBRACE, RPAR, RBRACKET + SEMICOLON, ARROW, COMMA, RBRACE, RPAR, RBRACKET ); @SuppressWarnings({"UnusedDeclaration"}) private enum Precedence { POSTFIX(PLUSPLUS, MINUSMINUS, - HASH, DOT, SAFE_ACCESS, QUEST), // typeArguments? valueArguments : typeArguments : arrayAccess +// HASH, + DOT, SAFE_ACCESS, QUEST), // typeArguments? valueArguments : typeArguments : arrayAccess PREFIX(MINUS, PLUS, MINUSMINUS, PLUSPLUS, EXCL, LABEL_IDENTIFIER, AT, ATAT) { // attributes @@ -150,7 +152,7 @@ public class JetExpressionParsing extends AbstractJetParsing { EQUALITY(EQEQ, EXCLEQ, EQEQEQ, EXCLEQEQEQ), CONJUNCTION(ANDAND), DISJUNCTION(OROR), - ARROW(JetTokens.ARROW), +// ARROW(JetTokens.ARROW), ASSIGNMENT(EQ, PLUSEQ, MINUSEQ, MULTEQ, DIVEQ, PERCEQ), ; @@ -374,13 +376,13 @@ public class JetExpressionParsing extends AbstractJetParsing { expression.done(PREDICATE_EXPRESSION); } - else if (at(HASH)) { - advance(); // HASH - - expect(IDENTIFIER, "Expecting property or function name"); - - expression.done(HASH_QUALIFIED_EXPRESSION); - } +// else if (at(HASH)) { +// advance(); // HASH +// +// expect(IDENTIFIER, "Expecting property or function name"); +// +// expression.done(HASH_QUALIFIED_EXPRESSION); +// } else if (atSet(Precedence.POSTFIX.getOperations())) { parseOperationReference(); expression.done(POSTFIX_EXPRESSION); @@ -502,7 +504,10 @@ public class JetExpressionParsing extends AbstractJetParsing { // System.out.println("atom at " + myBuilder.getTokenText()); if (at(LPAR)) { - parseParenthesizedExpressionOrTuple(); + parseParenthesizedExpression(); + } + else if (at(HASH)) { + parseTupleExpression(); } else if (at(NAMESPACE_KEYWORD)) { parseOneTokenExpression(ROOT_NAMESPACE); @@ -756,13 +761,13 @@ public class JetExpressionParsing extends AbstractJetParsing { if (at(ELSE_KEYWORD)) { advance(); // ELSE_KEYWORD - if (!at(DOUBLE_ARROW)) { - errorUntil("Expecting '=>'", TokenSet.create(DOUBLE_ARROW, + if (!at(ARROW)) { + errorUntil("Expecting '=>'", TokenSet.create(ARROW, RBRACE, EOL_OR_SEMICOLON)); } - if (at(DOUBLE_ARROW)) { - advance(); // DOUBLE_ARROW + if (at(ARROW)) { + advance(); // ARROW if (atSet(WHEN_CONDITION_RECOVERY_SET)) { error("Expecting an element"); @@ -790,7 +795,7 @@ public class JetExpressionParsing extends AbstractJetParsing { if (!at(COMMA)) break; advance(); // COMMA } - expect(DOUBLE_ARROW, "Expecting '=>' or 'when'", WHEN_CONDITION_RECOVERY_SET); + expect(ARROW, "Expecting '->' or 'when'", WHEN_CONDITION_RECOVERY_SET); if (atSet(WHEN_CONDITION_RECOVERY_SET)) { error("Expecting an element"); } else { @@ -815,7 +820,7 @@ public class JetExpressionParsing extends AbstractJetParsing { mark.done(OPERATION_REFERENCE); - if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_DOUBLE_ARROW)) { + if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_ARROW)) { error("Expecting an element"); } else { parseExpression(); @@ -824,7 +829,7 @@ public class JetExpressionParsing extends AbstractJetParsing { } else if (at(IS_KEYWORD) || at(NOT_IS)) { advance(); // IS_KEYWORD or NOT_IS - if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_DOUBLE_ARROW)) { + if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_ARROW)) { error("Expecting a type or a decomposer pattern"); } else { parsePattern(); @@ -832,7 +837,7 @@ public class JetExpressionParsing extends AbstractJetParsing { condition.done(WHEN_CONDITION_IS_PATTERN); } else { PsiBuilder.Marker expressionPattern = mark(); - if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_DOUBLE_ARROW)) { + if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_ARROW)) { error("Expecting an expression, is-condition or in-condition"); } else { parseExpression(); @@ -863,9 +868,8 @@ public class JetExpressionParsing extends AbstractJetParsing { if (at(NAMESPACE_KEYWORD) || at(IDENTIFIER) || at(FUN_KEYWORD) || at(THIS_KEYWORD)) { PsiBuilder.Marker rollbackMarker = mark(); parseBinaryExpression(Precedence.ELVIS); - if (at(AT)) { + if (at(HASH)) { rollbackMarker.drop(); - advance(); // AT PsiBuilder.Marker list = mark(); parseTuplePattern(DECOMPOSER_ARGUMENT); list.done(DECOMPOSER_ARGUMENT_LIST); @@ -877,9 +881,9 @@ public class JetExpressionParsing extends AbstractJetParsing { rollbackMarker = mark(); myJetParsing.parseTypeRef(); - if (at(AT)) { - errorAndAdvance("'@' is allowed only after a decomposer element, not after a type"); - } +// if (at(AT)) { +// errorAndAdvance("'@' is allowed only after a decomposer element, not after a type"); +// } if (myBuilder.getCurrentOffset() < expressionEndOffset) { rollbackMarker.rollbackTo(); parseBinaryExpression(Precedence.ELVIS); @@ -889,7 +893,7 @@ public class JetExpressionParsing extends AbstractJetParsing { pattern.done(TYPE_PATTERN); } } - } else if (at(LPAR)) { + } else if (at(HASH)) { parseTuplePattern(TUPLE_PATTERN_ENTRY); pattern.done(TUPLE_PATTERN); } @@ -905,20 +909,21 @@ public class JetExpressionParsing extends AbstractJetParsing { } else if (parseLiteralConstant()) { pattern.done(EXPRESSION_PATTERN); } else { - errorUntil("Pattern expected", TokenSet.create(RBRACE, DOUBLE_ARROW)); + errorUntil("Pattern expected", TokenSet.create(RBRACE, ARROW)); pattern.drop(); } } /* * tuplePattern - * : "(" ((SimpleName "=")? pattern){","}? ")" + * : "#" "(" ((SimpleName "=")? pattern){","}? ")" * ; */ private void parseTuplePattern(JetNodeType entryType) { myBuilder.disableNewlines(); - expect(LPAR, "Expecting '('", getDecomposerExpressionFollow()); + expect(HASH, "Expecting a tuple pattern of the form '#(...)'", getDecomposerExpressionFollow()); + expect(LPAR, "Expecting a tuple pattern of the form '#(...)'", getDecomposerExpressionFollow()); if (!at(RPAR)) { while (true) { @@ -1059,8 +1064,8 @@ public class JetExpressionParsing extends AbstractJetParsing { /* * functionLiteral // one can use "it" as a parameter name * : "{" expressions "}" - * : "{" (modifiers SimpleName){","} "=>" statements "}" - * : "{" (type ".")? "(" (modifiers SimpleName (":" type)?){","} ")" (":" type)? "=>" expressions "}" + * : "{" (modifiers SimpleName){","} "->" statements "}" + * : "{" (type ".")? "(" (modifiers SimpleName (":" type)?){","} ")" (":" type)? "->" expressions "}" * ; */ private void parseFunctionLiteral() { @@ -1077,7 +1082,7 @@ public class JetExpressionParsing extends AbstractJetParsing { myBuilder.enableNewlines(); advance(); // LBRACE - int doubleArrowPos = matchTokenStreamPredicate(new FirstBefore(new At(DOUBLE_ARROW), new At(RBRACE)) { + int doubleArrowPos = matchTokenStreamPredicate(new FirstBefore(new At(ARROW), new At(RBRACE)) { @Override public boolean isTopLevel(int openAngleBrackets, int openBrackets, int openBraces, int openParentheses) { return openBraces == 0; @@ -1113,7 +1118,7 @@ public class JetExpressionParsing extends AbstractJetParsing { if (at(COLON)) { advance(); // COLON - if (at(DOUBLE_ARROW)) { + if (at(ARROW)) { error("Expecting a type"); } else { @@ -1130,14 +1135,14 @@ public class JetExpressionParsing extends AbstractJetParsing { int parameterNamePos = matchTokenStreamPredicate(new LastBefore(new At(IDENTIFIER), new AtOffset(doubleArrowPos))); createTruncatedBuilder(parameterNamePos).parseModifierList(MODIFIER_LIST, false); - expect(IDENTIFIER, "Expecting parameter name", TokenSet.create(DOUBLE_ARROW)); + expect(IDENTIFIER, "Expecting parameter name", TokenSet.create(ARROW)); parameter.done(VALUE_PARAMETER); if (at(COLON)) { errorUntilOffset("To specify a type of a parameter or a return type, use the full notation: {(parameter : Type) : ReturnType => ...}", doubleArrowPos); } - else if (at(DOUBLE_ARROW)) { + else if (at(ARROW)) { break; } else if (!at(COMMA)) { @@ -1151,7 +1156,7 @@ public class JetExpressionParsing extends AbstractJetParsing { parameterList.done(VALUE_PARAMETER_LIST); } - expectNoAdvance(DOUBLE_ARROW, "Expecting '=>'"); + expectNoAdvance(ARROW, "Expecting '=>'"); } else { if (preferBlock) { @@ -1180,7 +1185,7 @@ public class JetExpressionParsing extends AbstractJetParsing { */ private void parseFunctionLiteralParameterList() { PsiBuilder.Marker list = mark(); - expect(LPAR, "Expecting a parameter list in parentheses (...)", TokenSet.create(DOUBLE_ARROW, COLON)); + expect(LPAR, "Expecting a parameter list in parentheses (...)", TokenSet.create(ARROW, COLON)); myBuilder.disableNewlines(); @@ -1189,7 +1194,7 @@ public class JetExpressionParsing extends AbstractJetParsing { if (at(COMMA)) errorAndAdvance("Expecting a parameter declaration"); PsiBuilder.Marker parameter = mark(); - int parameterNamePos = matchTokenStreamPredicate(new LastBefore(new At(IDENTIFIER), new AtSet(COMMA, RPAR, COLON, DOUBLE_ARROW))); + int parameterNamePos = matchTokenStreamPredicate(new LastBefore(new At(IDENTIFIER), new AtSet(COMMA, RPAR, COLON, ARROW))); createTruncatedBuilder(parameterNamePos).parseModifierList(MODIFIER_LIST, false); expect(IDENTIFIER, "Expecting parameter declaration"); @@ -1211,7 +1216,7 @@ public class JetExpressionParsing extends AbstractJetParsing { myBuilder.restoreNewlinesState(); - expect(RPAR, "Expecting ')", TokenSet.create(DOUBLE_ARROW, COLON)); + expect(RPAR, "Expecting ')", TokenSet.create(ARROW, COLON)); list.done(VALUE_PARAMETER_LIST); } @@ -1567,29 +1572,43 @@ public class JetExpressionParsing extends AbstractJetParsing { } /* - * 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)) - * : "(" ((SimpleName "=")? element){","} ")" - * ; - * - * element - * : "(" element ")" - * ; - * - * TODO: duplication with valueArguments (but for the error messages) + * "(" expression ")" */ - private void parseParenthesizedExpressionOrTuple() { + private void parseParenthesizedExpression() { assert _at(LPAR); PsiBuilder.Marker mark = mark(); myBuilder.disableNewlines(); advance(); // LPAR - boolean tuple = false; + if (at(RPAR)) { + error("Expecting an expression"); + } + else { + parseExpression(); + } + + expect(RPAR, "Expecting ')'"); + myBuilder.restoreNewlinesState(); + + mark.done(PARENTHESIZED); + } + + /* + * tupleLiteral + * : "#" "(" (((SimpleName "=")? expression){","})? ")" + * ; + */ + private void parseTupleExpression() { + assert _at(HASH); + PsiBuilder.Marker mark = mark(); + + advance(); // HASH + advance(); // LPAR + myBuilder.disableNewlines(); if (!at(RPAR)) { while (true) { while (at(COMMA)) { - tuple = true; errorAndAdvance("Expecting a tuple entry (element)"); } @@ -1597,7 +1616,6 @@ public class JetExpressionParsing extends AbstractJetParsing { PsiBuilder.Marker entry = mark(); advance(); // IDENTIFIER advance(); // EQ - tuple = true; parseExpression(); entry.done(LABELED_TUPLE_ENTRY); } else { @@ -1606,21 +1624,18 @@ public class JetExpressionParsing extends AbstractJetParsing { if (!at(COMMA)) break; advance(); // COMMA - tuple = true; if (at(RPAR)) { error("Expecting a tuple entry (element)"); break; } } - } else { - tuple = true; - } + } expect(RPAR, "Expecting ')'"); myBuilder.restoreNewlinesState(); - mark.done(tuple ? TUPLE : PARENTHESIZED); + mark.done(TUPLE); } /* diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java index 479849c88c7..716a830cafc 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java @@ -37,7 +37,7 @@ public class JetParsing extends AbstractJetParsing { private static final TokenSet TYPE_PARAMETER_GT_RECOVERY_SET = TokenSet.create(WHERE_KEYWORD, LPAR, COLON, LBRACE, GT); private static final TokenSet PARAMETER_NAME_RECOVERY_SET = TokenSet.create(COLON, EQ, COMMA, RPAR); private static final TokenSet NAMESPACE_NAME_RECOVERY_SET = TokenSet.create(DOT, EOL_OR_SEMICOLON); - /*package*/ static final TokenSet TYPE_REF_FIRST = TokenSet.create(LBRACKET, IDENTIFIER, FUN_KEYWORD, LPAR, CAPITALIZED_THIS_KEYWORD); + /*package*/ static final TokenSet TYPE_REF_FIRST = TokenSet.create(LBRACKET, IDENTIFIER, FUN_KEYWORD, LPAR, CAPITALIZED_THIS_KEYWORD, HASH); private static final TokenSet RECEIVER_TYPE_TERMINATORS = TokenSet.create(DOT, SAFE_ACCESS); public static JetParsing createForTopLevel(SemanticWhitespaceAwarePsiBuilder builder) { @@ -847,7 +847,7 @@ public class JetParsing extends AbstractJetParsing { parseReceiverType("property", propertyNameFollow, lastDot); - myBuilder.enableJoiningComplexTokens(); + myBuilder.restoreJoiningComplexTokensState(); if (at(COLON)) { advance(); // COLON @@ -985,7 +985,7 @@ public class JetParsing extends AbstractJetParsing { myBuilder.disableJoiningComplexTokens(); int lastDot = findLastBefore(RECEIVER_TYPE_TERMINATORS, TokenSet.create(LPAR), true); parseReceiverType("function", TokenSet.create(LT, LPAR, COLON, EQ), lastDot); - myBuilder.enableJoiningComplexTokens(); + myBuilder.restoreJoiningComplexTokensState(); TokenSet valueParametersFollow = TokenSet.create(COLON, EQ, LBRACE, SEMICOLON, RPAR); @@ -1281,17 +1281,51 @@ public class JetParsing extends AbstractJetParsing { * : typeDescriptor "?" */ public void parseTypeRef() { + PsiBuilder.Marker typeRefMarker = parseTypeRefContents(); + typeRefMarker.done(TYPE_REFERENCE); + } + + private PsiBuilder.Marker parseTypeRefContents() { + myBuilder.disableJoiningComplexTokens(); PsiBuilder.Marker typeRefMarker = mark(); parseAnnotations(false); if (at(IDENTIFIER) || at(NAMESPACE_KEYWORD)) { parseUserType(); } - else if (at(FUN_KEYWORD)) { - parseFunctionType(); + else if (at(HASH)) { + parseTupleType(); } else if (at(LPAR)) { - parseTupleType(); + PsiBuilder.Marker functionOrParenthesizedType = mark(); + + // This may be a function parameter list or just a prenthesized type + advance(); // LPAR + parseTypeRefContents().drop(); // parenthesized types, no reference element around it is needed + + if (at(RPAR)) { + advance(); // RPAR + if (at(ARROW)) { + // It's a function type with one parameter specified + // (A) -> B + functionOrParenthesizedType.rollbackTo(); + parseFunctionType(); + } + else { + // It's a parenthesized type + // (A) + functionOrParenthesizedType.drop(); + } + } + else { + // This must be a function type + // (A, B) -> C + // or + // (a : A) -> C + functionOrParenthesizedType.rollbackTo(); + parseFunctionType(); + } + } else if (at(CAPITALIZED_THIS_KEYWORD)) { parseSelfType(); @@ -1299,7 +1333,7 @@ public class JetParsing extends AbstractJetParsing { else { errorWithRecovery("Type expected", TokenSet.orSet(TOPLEVEL_OBJECT_FIRST, - TokenSet.create(EQ, COMMA, GT, RBRACKET, DOT, RPAR, RBRACE, LBRACE, SEMICOLON))); + TokenSet.create(EQ, COMMA, GT, RBRACKET, DOT, RPAR, RBRACE, LBRACE, SEMICOLON))); } while (at(QUEST)) { @@ -1310,20 +1344,23 @@ public class JetParsing extends AbstractJetParsing { typeRefMarker = precede; } - typeRefMarker.done(TYPE_REFERENCE); - } - /* - * selfType - * : "This" - * ; - */ - private void parseSelfType() { - assert _at(CAPITALIZED_THIS_KEYWORD); + if (at(DOT)) { + // This is a receiver for a function type + // A.(B) -> C + // ^ - PsiBuilder.Marker type = mark(); - advance(); // CAPITALIZED_THIS_KEYWORD - type.done(SELF_TYPE); + PsiBuilder.Marker precede = typeRefMarker.precede(); + typeRefMarker.done(TYPE_REFERENCE); + + advance(); // DOT + parseFunctionTypeContents().drop(); + typeRefMarker = precede.precede(); + + precede.done(FUNCTION_TYPE); + } + myBuilder.restoreJoiningComplexTokensState(); + return typeRefMarker; } /* @@ -1341,13 +1378,18 @@ public class JetParsing extends AbstractJetParsing { PsiBuilder.Marker reference = mark(); while (true) { - expect(IDENTIFIER, "Type name expected", TokenSet.orSet(JetExpressionParsing.EXPRESSION_FIRST, JetExpressionParsing.EXPRESSION_FOLLOW)); + expect(IDENTIFIER, "Expecting type name", TokenSet.orSet(JetExpressionParsing.EXPRESSION_FIRST, JetExpressionParsing.EXPRESSION_FOLLOW)); reference.done(REFERENCE_EXPRESSION); parseTypeArgumentList(-1); if (!at(DOT)) { break; } + if (lookahead(1) == LPAR) { + // This may be a receiver for a function type + // Int.(Int) -> Int + break; + } PsiBuilder.Marker precede = userType.precede(); userType.done(USER_TYPE); @@ -1360,6 +1402,19 @@ public class JetParsing extends AbstractJetParsing { userType.done(USER_TYPE); } + /* + * selfType + * : "This" + * ; + */ + private void parseSelfType() { + assert _at(CAPITALIZED_THIS_KEYWORD); + + PsiBuilder.Marker type = mark(); + advance(); // CAPITALIZED_THIS_KEYWORD + type.done(SELF_TYPE); + } + /* * (optionalProjection type){","} */ @@ -1410,18 +1465,18 @@ public class JetParsing extends AbstractJetParsing { /* * tupleType - * : "(" type{","}? ")" - * : "(" parameter{","} ")" // tuple with named entries, the names do not affect assignment compatibility + * : "#" "(" type{","}? ")" + * : "#" "(" parameter{","} ")" // tuple with named entries, the names do not affect assignment compatibility * ; */ private void parseTupleType() { - // TODO : prohibit (a) - assert _at(LPAR); + assert _at(HASH); PsiBuilder.Marker tuple = mark(); myBuilder.disableNewlines(); - advance(); // LPAR + advance(); // HASH + expect(LPAR, "Expecting a tuple type in the form of '#(...)"); if (!at(RPAR)) { while (true) { @@ -1456,32 +1511,37 @@ public class JetParsing extends AbstractJetParsing { /* * functionType - * : "fun" (type ".")? "(" (parameter | modifiers type){","} ")" (":" type)? // Unit by default + * : (type ".")? "(" (parameter | modifiers type){","} ")" "->" type? * ; */ private void parseFunctionType() { - assert _at(FUN_KEYWORD); + parseFunctionTypeContents().done(FUNCTION_TYPE); + } + private PsiBuilder.Marker parseFunctionTypeContents() { + assert _at(LPAR) : tt(); +// PsiBuilder.Marker functionType = mark(); - advance(); // FUN_KEYWORD - - int lastLPar = findLastBefore(TokenSet.create(LPAR), TokenSet.create(COLON), false); - if (lastLPar >= 0 && lastLPar > myBuilder.getCurrentOffset()) { - // TODO : -1 is a hack? - createTruncatedBuilder(lastLPar - 1).parseTypeRef(); - advance(); // DOT - } +// advance(); // LPAR +// +// int lastLPar = findLastBefore(TokenSet.create(LPAR), TokenSet.create(COLON), false); +// if (lastLPar >= 0 && lastLPar > myBuilder.getCurrentOffset()) { +// TODO : -1 is a hack? +// createTruncatedBuilder(lastLPar - 1).parseTypeRef(); +// advance(); // DOT +// } parseValueParameterList(true, TokenSet.EMPTY); - if (at(COLON)) { - advance(); // COLON // expect(COLON, "Expecting ':' followed by a return type", TYPE_REF_FIRST); +// if (at(COLON)) { +// advance(); // COLON // expect(COLON, "Expecting ':' followed by a return type", TYPE_REF_FIRST); - parseTypeRef(); - } + expect(ARROW, "Expecting '->' to specify return type of a function type", TYPE_REF_FIRST); + parseTypeRef(); +// } - functionType.done(FUNCTION_TYPE); + return functionType;//.done(FUNCTION_TYPE); } /* diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/SemanticWhitespaceAwarePsiBuilder.java b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/SemanticWhitespaceAwarePsiBuilder.java index 9c836948b2a..378350b3707 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/SemanticWhitespaceAwarePsiBuilder.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/SemanticWhitespaceAwarePsiBuilder.java @@ -13,6 +13,7 @@ public interface SemanticWhitespaceAwarePsiBuilder extends PsiBuilder { void enableNewlines(); void restoreNewlinesState(); + void restoreJoiningComplexTokensState(); void enableJoiningComplexTokens(); void disableJoiningComplexTokens(); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/SemanticWhitespaceAwarePsiBuilderAdapter.java b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/SemanticWhitespaceAwarePsiBuilderAdapter.java index bdec327ec20..7215fcb90f1 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/SemanticWhitespaceAwarePsiBuilderAdapter.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/SemanticWhitespaceAwarePsiBuilderAdapter.java @@ -35,6 +35,11 @@ public class SemanticWhitespaceAwarePsiBuilderAdapter extends PsiBuilderAdapter myBuilder.restoreNewlinesState(); } + @Override + public void restoreJoiningComplexTokensState() { + myBuilder.restoreJoiningComplexTokensState(); + } + @Override public void enableJoiningComplexTokens() { myBuilder.enableJoiningComplexTokens(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/SemanticWhitespaceAwarePsiBuilderImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/SemanticWhitespaceAwarePsiBuilderImpl.java index 68ecfaafd88..39388d9db3c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/SemanticWhitespaceAwarePsiBuilderImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/SemanticWhitespaceAwarePsiBuilderImpl.java @@ -16,11 +16,15 @@ import static org.jetbrains.jet.lexer.JetTokens.*; * @author abreslav */ public class SemanticWhitespaceAwarePsiBuilderImpl extends PsiBuilderAdapter implements SemanticWhitespaceAwarePsiBuilder { + private final TokenSet complexTokens = TokenSet.create(SAFE_ACCESS, ELVIS); + private final Stack joinComplexTokens = new Stack(); + private final Stack newlinesEnabled = new Stack(); public SemanticWhitespaceAwarePsiBuilderImpl(final PsiBuilder delegate) { super(delegate); newlinesEnabled.push(true); + joinComplexTokens.push(true); } @Override @@ -75,22 +79,28 @@ public class SemanticWhitespaceAwarePsiBuilderImpl extends PsiBuilderAdapter imp newlinesEnabled.pop(); } - private final TokenSet complexTokens = TokenSet.create(SAFE_ACCESS, ELVIS); - private boolean joinComplexTokens = true; + private boolean joinComplexTokens() { + return joinComplexTokens.peek(); + } + + @Override + public void restoreJoiningComplexTokensState() { + joinComplexTokens.pop(); + } @Override public void enableJoiningComplexTokens() { - joinComplexTokens = true; + joinComplexTokens.push(true); } @Override public void disableJoiningComplexTokens() { - joinComplexTokens = false; + joinComplexTokens.push(false); } @Override public IElementType getTokenType() { - if (!joinComplexTokens) return super.getTokenType(); + if (!joinComplexTokens()) return super.getTokenType(); return getJoinedTokenType(super.getTokenType(), 1); } @@ -105,7 +115,7 @@ public class SemanticWhitespaceAwarePsiBuilderImpl extends PsiBuilderAdapter imp @Override public void advanceLexer() { - if (!joinComplexTokens) { + if (!joinComplexTokens()) { super.advanceLexer(); return; } @@ -123,7 +133,7 @@ public class SemanticWhitespaceAwarePsiBuilderImpl extends PsiBuilderAdapter imp @Override public String getTokenText() { - if (!joinComplexTokens) return super.getTokenText(); + if (!joinComplexTokens()) return super.getTokenText(); IElementType tokenType = getTokenType(); if (complexTokens.contains(tokenType)) { if (tokenType == ELVIS) return "?:"; @@ -134,7 +144,7 @@ public class SemanticWhitespaceAwarePsiBuilderImpl extends PsiBuilderAdapter imp @Override public IElementType lookAhead(int steps) { - if (!joinComplexTokens) return super.lookAhead(steps); + if (!joinComplexTokens()) return super.lookAhead(steps); if (complexTokens.contains(getTokenType())) { return super.lookAhead(steps + 1); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFunctionLiteral.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFunctionLiteral.java index 6f20e9a1478..c39e7fe49c1 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFunctionLiteral.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFunctionLiteral.java @@ -30,7 +30,7 @@ public class JetFunctionLiteral extends JetFunction { } public boolean hasParameterSpecification() { - return findChildByType(JetTokens.DOUBLE_ARROW) != null; + return findChildByType(JetTokens.ARROW) != null; } @Override @@ -51,6 +51,6 @@ public class JetFunctionLiteral extends JetFunction { @Nullable public ASTNode getArrowNode() { - return getNode().findChildByType(JetTokens.DOUBLE_ARROW); + return getNode().findChildByType(JetTokens.ARROW); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFunctionType.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFunctionType.java index aaeffa8262b..d7f7cd4146f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFunctionType.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFunctionType.java @@ -7,6 +7,7 @@ import com.intellij.psi.tree.IElementType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.JetNodeTypes; +import org.jetbrains.jet.lexer.JetToken; import org.jetbrains.jet.lexer.JetTokens; import java.util.ArrayList; @@ -17,6 +18,9 @@ import java.util.List; * @author max */ public class JetFunctionType extends JetTypeElement { + + public static final JetToken RETURN_TYPE_SEPARATOR = JetTokens.ARROW; + public JetFunctionType(@NotNull ASTNode node) { super(node); } @@ -65,7 +69,7 @@ public class JetFunctionType extends JetTypeElement { PsiElement child = getFirstChild(); while (child != null) { IElementType tt = child.getNode().getElementType(); - if (tt == JetTokens.LPAR || tt == JetTokens.COLON) break; + if (tt == JetTokens.LPAR || tt == RETURN_TYPE_SEPARATOR) break; if (child instanceof JetTypeReference) { return (JetTypeReference) child; } @@ -81,7 +85,7 @@ public class JetFunctionType extends JetTypeElement { PsiElement child = getFirstChild(); while (child != null) { IElementType tt = child.getNode().getElementType(); - if (tt == JetTokens.COLON) { + if (tt == RETURN_TYPE_SEPARATOR) { colonPassed = true; } if (colonPassed && child instanceof JetTypeReference) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.java index 8896830d305..8501f499d9f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.java @@ -180,6 +180,9 @@ public class TypeResolver { if (result[0] == null) { return ErrorUtils.createErrorType(typeElement == null ? "No type element" : typeElement.getText()); } + if (nullable) { + return TypeUtils.makeNullable(result[0]); + } return result[0]; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex b/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex index a6136493b42..30760e5968c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex +++ b/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex @@ -163,6 +163,7 @@ LONG_TEMPLATE_ENTRY_END=\} "namespace" { return JetTokens.NAMESPACE_KEYWORD ;} "continue" { return JetTokens.CONTINUE_KEYWORD ;} +"package" { return JetTokens.NAMESPACE_KEYWORD ;} "return" { return JetTokens.RETURN_KEYWORD ;} "object" { return JetTokens.OBJECT_KEYWORD ;} "while" { return JetTokens.WHILE_KEYWORD ;} diff --git a/compiler/frontend/src/org/jetbrains/jet/lexer/JetTokens.java b/compiler/frontend/src/org/jetbrains/jet/lexer/JetTokens.java index c66e06e3a60..e2cd5e0282f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lexer/JetTokens.java +++ b/compiler/frontend/src/org/jetbrains/jet/lexer/JetTokens.java @@ -170,12 +170,14 @@ public interface JetTokens { TokenSet STRINGS = TokenSet.create(CHARACTER_LITERAL, REGULAR_STRING_PART, 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, + MINUS, EXCL, DIV, PERC, LT, GT, LTEQ, GTEQ, EQEQEQ, EXCLEQEQEQ, EQEQ, EXCLEQ, ANDAND, OROR, SAFE_ACCESS, ELVIS, // MAP, FILTER, QUEST, COLON, RANGE, EQ, MULTEQ, DIVEQ, PERCEQ, PLUSEQ, MINUSEQ, - NOT_IN, NOT_IS, HASH, IDENTIFIER, LABEL_IDENTIFIER, ATAT, AT); + NOT_IN, NOT_IS, +// HASH, + IDENTIFIER, LABEL_IDENTIFIER, ATAT, AT); TokenSet AUGMENTED_ASSIGNMENTS = TokenSet.create(PLUSEQ, MINUSEQ, MULTEQ, PERCEQ, DIVEQ); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lexer/_JetLexer.java b/compiler/frontend/src/org/jetbrains/jet/lexer/_JetLexer.java index 444c9e4fbdf..4ed815b1fd0 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lexer/_JetLexer.java +++ b/compiler/frontend/src/org/jetbrains/jet/lexer/_JetLexer.java @@ -1,19 +1,18 @@ -/* The following code was generated by JFlex 1.4.3 on 12/15/11 8:19 PM */ +/* The following code was generated by JFlex 1.4.3 on 12/16/11 12:34 PM */ package org.jetbrains.jet.lexer; -import java.util.*; -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; +import java.util.Stack; /** * This class is a scanner generated by * JFlex 1.4.3 - * on 12/15/11 8:19 PM from the specification file + * on 12/16/11 12:34 PM from the specification file * /Users/abreslav/work/jet-clean/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex */ class _JetLexer implements FlexLexer { @@ -40,14 +39,14 @@ class _JetLexer implements FlexLexer { * Translates characters to character classes */ private static final String ZZ_CMAP_PACKED = - "\11\0\1\3\1\7\1\0\1\3\23\0\1\3\1\57\1\25\1\77"+ - "\1\10\1\67\1\65\1\23\1\72\1\73\1\13\1\62\1\76\1\21"+ - "\1\17\1\12\1\14\11\1\1\74\1\75\1\63\1\60\1\64\1\61"+ - "\1\11\1\2\1\16\2\2\1\20\1\2\11\4\1\22\3\4\1\54"+ - "\3\4\1\15\2\4\1\70\1\24\1\71\1\0\1\4\1\6\1\36"+ - "\1\45\1\42\1\56\1\40\1\52\1\4\1\32\1\33\1\46\1\51"+ - "\1\50\1\37\1\35\1\43\1\41\1\4\1\44\1\34\1\31\1\26"+ - "\1\55\1\47\1\15\1\53\1\4\1\27\1\66\1\30\54\0\1\4"+ + "\11\0\1\3\1\7\1\0\1\3\23\0\1\3\1\60\1\25\1\100"+ + "\1\10\1\70\1\66\1\23\1\73\1\74\1\13\1\63\1\77\1\21"+ + "\1\17\1\12\1\14\11\1\1\75\1\76\1\64\1\61\1\65\1\62"+ + "\1\11\1\2\1\16\2\2\1\20\1\2\11\4\1\22\3\4\1\55"+ + "\3\4\1\15\2\4\1\71\1\24\1\72\1\0\1\4\1\6\1\36"+ + "\1\47\1\42\1\57\1\40\1\53\1\45\1\32\1\33\1\50\1\44"+ + "\1\52\1\37\1\35\1\43\1\41\1\4\1\46\1\34\1\31\1\26"+ + "\1\56\1\51\1\15\1\54\1\4\1\27\1\67\1\30\54\0\1\4"+ "\12\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\213\0\1\4"+ "\13\0\1\4\1\0\3\4\1\0\1\4\1\0\24\4\1\0\54\4"+ @@ -121,27 +120,27 @@ class _JetLexer implements FlexLexer { private static final String ZZ_ACTION_PACKED_0 = "\4\0\1\1\1\2\1\3\1\4\2\1\1\5\1\6"+ "\1\7\1\2\1\10\1\11\1\12\1\13\1\14\1\15"+ - "\17\3\1\16\1\17\1\20\1\21\1\22\1\23\2\1"+ + "\20\3\1\16\1\17\1\20\1\21\1\22\1\23\2\1"+ "\1\24\1\25\1\26\1\27\1\30\1\31\1\32\1\33"+ "\1\34\1\35\1\36\1\35\1\0\1\37\1\40\1\0"+ "\1\40\1\41\1\42\1\0\1\43\1\0\1\44\1\0"+ "\1\45\1\0\1\46\1\47\1\50\1\51\1\52\1\43"+ "\2\2\1\43\1\53\1\54\1\55\1\56\2\12\1\0"+ - "\3\3\1\57\1\60\1\61\3\3\1\62\14\3\1\63"+ + "\3\3\1\57\1\60\1\61\3\3\1\62\15\3\1\63"+ "\1\0\1\64\1\65\1\66\1\67\1\70\1\71\1\72"+ "\1\73\1\74\1\75\1\76\1\0\1\77\2\100\1\0"+ "\1\40\1\101\1\43\1\3\2\0\1\50\1\102\4\0"+ - "\1\103\4\3\1\104\4\3\1\105\10\3\1\106\1\3"+ + "\1\103\4\3\1\104\4\3\1\105\11\3\1\106\1\3"+ "\1\107\1\3\1\110\1\111\1\112\1\113\1\114\1\115"+ "\2\0\2\40\1\44\1\45\1\0\2\102\1\43\2\0"+ "\1\116\1\3\1\117\1\3\1\120\1\3\1\121\1\3"+ - "\1\122\6\3\1\123\1\3\1\124\1\125\1\76\1\0"+ - "\1\126\1\50\2\0\1\127\1\130\1\131\2\3\1\132"+ - "\2\3\1\133\1\134\1\135\1\0\1\103\2\3\1\136"+ - "\1\137\3\3\1\140\1\141"; + "\1\122\7\3\1\123\1\3\1\124\1\125\1\76\1\0"+ + "\1\126\1\50\2\0\1\127\1\130\1\131\3\3\1\132"+ + "\2\3\1\133\1\134\1\135\1\0\1\103\3\3\1\136"+ + "\1\137\1\3\1\140\1\3\1\141"; private static int [] zzUnpackAction() { - int [] result = new int[225]; + int [] result = new int[230]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -166,38 +165,38 @@ class _JetLexer implements FlexLexer { private static final int [] ZZ_ROWMAP = zzUnpackRowMap(); private static final String ZZ_ROWMAP_PACKED_0 = - "\0\0\0\100\0\200\0\300\0\u0100\0\u0140\0\u0180\0\u01c0"+ - "\0\u0200\0\u0240\0\u0280\0\u02c0\0\u0300\0\u0340\0\u0380\0\u03c0"+ - "\0\u0400\0\u0440\0\u0100\0\u0100\0\u0480\0\u04c0\0\u0500\0\u0540"+ - "\0\u0580\0\u05c0\0\u0600\0\u0640\0\u0680\0\u06c0\0\u0700\0\u0740"+ - "\0\u0780\0\u07c0\0\u0800\0\u0840\0\u0880\0\u0100\0\u08c0\0\u0900"+ - "\0\u0940\0\u0980\0\u09c0\0\u0a00\0\u0100\0\u0100\0\u0100\0\u0100"+ - "\0\u0100\0\u0100\0\u0100\0\u0100\0\u0a40\0\u0100\0\u0a80\0\u0ac0"+ - "\0\u0100\0\u0b00\0\u0b40\0\u0b80\0\u0100\0\u0100\0\u0bc0\0\u0c00"+ - "\0\u0c40\0\u0c80\0\u0cc0\0\u0d00\0\u0d40\0\u0100\0\u0d80\0\u0dc0"+ - "\0\u0100\0\u0100\0\u0e00\0\u0e40\0\u0e80\0\u0ec0\0\u0100\0\u0100"+ - "\0\u0100\0\u0100\0\u0100\0\u0f00\0\u0f40\0\u0f80\0\u0fc0\0\u1000"+ - "\0\u0180\0\u0180\0\u0180\0\u1040\0\u1080\0\u10c0\0\u1100\0\u1140"+ - "\0\u1180\0\u11c0\0\u1200\0\u1240\0\u1280\0\u12c0\0\u1300\0\u1340"+ - "\0\u1380\0\u13c0\0\u1400\0\u0180\0\u1440\0\u1480\0\u14c0\0\u0100"+ - "\0\u0100\0\u0100\0\u0100\0\u0100\0\u0100\0\u0100\0\u0100\0\u1500"+ - "\0\u1540\0\u0100\0\u0100\0\u1580\0\u15c0\0\u1600\0\u0100\0\u1640"+ - "\0\u0100\0\u1680\0\u16c0\0\u1700\0\u1740\0\u1780\0\u17c0\0\u1800"+ - "\0\u1840\0\u1880\0\u18c0\0\u1900\0\u1940\0\u1980\0\u0180\0\u19c0"+ - "\0\u1a00\0\u1a40\0\u1a80\0\u0100\0\u1ac0\0\u1b00\0\u1b40\0\u1b80"+ - "\0\u1bc0\0\u1c00\0\u1c40\0\u1c80\0\u0180\0\u1cc0\0\u0180\0\u1d00"+ - "\0\u0180\0\u0180\0\u1d40\0\u1d40\0\u0100\0\u0100\0\u1d80\0\u1dc0"+ - "\0\u0100\0\u1e00\0\u0100\0\u0100\0\u1e40\0\u1e80\0\u0100\0\u1ec0"+ - "\0\u1640\0\u1f00\0\u0180\0\u1f40\0\u0180\0\u1f80\0\u0180\0\u1fc0"+ - "\0\u0180\0\u2000\0\u0180\0\u2040\0\u2080\0\u20c0\0\u2100\0\u2140"+ - "\0\u2180\0\u0180\0\u21c0\0\u0180\0\u0100\0\u0100\0\u2200\0\u0b00"+ - "\0\u0100\0\u2240\0\u2280\0\u0180\0\u0180\0\u0180\0\u22c0\0\u2300"+ - "\0\u0180\0\u2340\0\u2380\0\u0180\0\u0180\0\u0180\0\u23c0\0\u0100"+ - "\0\u2400\0\u2440\0\u0180\0\u0180\0\u2480\0\u24c0\0\u2500\0\u0180"+ - "\0\u0180"; + "\0\0\0\101\0\202\0\303\0\u0104\0\u0145\0\u0186\0\u01c7"+ + "\0\u0208\0\u0249\0\u028a\0\u02cb\0\u030c\0\u034d\0\u038e\0\u03cf"+ + "\0\u0410\0\u0451\0\u0104\0\u0104\0\u0492\0\u04d3\0\u0514\0\u0555"+ + "\0\u0596\0\u05d7\0\u0618\0\u0659\0\u069a\0\u06db\0\u071c\0\u075d"+ + "\0\u079e\0\u07df\0\u0820\0\u0861\0\u08a2\0\u08e3\0\u0104\0\u0924"+ + "\0\u0965\0\u09a6\0\u09e7\0\u0a28\0\u0a69\0\u0104\0\u0104\0\u0104"+ + "\0\u0104\0\u0104\0\u0104\0\u0104\0\u0104\0\u0aaa\0\u0104\0\u0aeb"+ + "\0\u0b2c\0\u0104\0\u0b6d\0\u0bae\0\u0bef\0\u0104\0\u0104\0\u0c30"+ + "\0\u0c71\0\u0cb2\0\u0cf3\0\u0d34\0\u0d75\0\u0db6\0\u0104\0\u0df7"+ + "\0\u0e38\0\u0104\0\u0104\0\u0e79\0\u0eba\0\u0efb\0\u0f3c\0\u0104"+ + "\0\u0104\0\u0104\0\u0104\0\u0104\0\u0f7d\0\u0fbe\0\u0fff\0\u1040"+ + "\0\u1081\0\u0186\0\u0186\0\u0186\0\u10c2\0\u1103\0\u1144\0\u1185"+ + "\0\u11c6\0\u1207\0\u1248\0\u1289\0\u12ca\0\u130b\0\u134c\0\u138d"+ + "\0\u13ce\0\u140f\0\u1450\0\u1491\0\u14d2\0\u0186\0\u1513\0\u1554"+ + "\0\u1595\0\u0104\0\u0104\0\u0104\0\u0104\0\u0104\0\u0104\0\u0104"+ + "\0\u0104\0\u15d6\0\u1617\0\u0104\0\u0104\0\u1658\0\u1699\0\u16da"+ + "\0\u0104\0\u171b\0\u0104\0\u175c\0\u179d\0\u17de\0\u181f\0\u1860"+ + "\0\u18a1\0\u18e2\0\u1923\0\u1964\0\u19a5\0\u19e6\0\u1a27\0\u1a68"+ + "\0\u0186\0\u1aa9\0\u1aea\0\u1b2b\0\u1b6c\0\u0104\0\u1bad\0\u1bee"+ + "\0\u1c2f\0\u1c70\0\u1cb1\0\u1cf2\0\u1d33\0\u1d74\0\u1db5\0\u0186"+ + "\0\u1df6\0\u0186\0\u1e37\0\u0186\0\u0186\0\u1e78\0\u1e78\0\u0104"+ + "\0\u0104\0\u1eb9\0\u1efa\0\u0104\0\u1f3b\0\u0104\0\u0104\0\u1f7c"+ + "\0\u1fbd\0\u0104\0\u1ffe\0\u171b\0\u203f\0\u0186\0\u2080\0\u0186"+ + "\0\u20c1\0\u0186\0\u2102\0\u0186\0\u2143\0\u0186\0\u2184\0\u21c5"+ + "\0\u2206\0\u2247\0\u2288\0\u22c9\0\u230a\0\u0186\0\u234b\0\u0186"+ + "\0\u0104\0\u0104\0\u238c\0\u0b6d\0\u0104\0\u23cd\0\u240e\0\u0186"+ + "\0\u0186\0\u0186\0\u244f\0\u2490\0\u24d1\0\u0186\0\u2512\0\u2553"+ + "\0\u0186\0\u0186\0\u0186\0\u2594\0\u0104\0\u25d5\0\u2616\0\u2657"+ + "\0\u0186\0\u0186\0\u2698\0\u0186\0\u26d9\0\u0186"; private static int [] zzUnpackRowMap() { - int [] result = new int[225]; + int [] result = new int[230]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -224,240 +223,250 @@ class _JetLexer implements FlexLexer { "\1\12\1\13\1\14\1\15\1\16\2\7\1\17\1\7"+ "\1\20\1\7\1\21\1\5\1\22\1\7\1\23\1\24"+ "\1\25\1\7\1\26\1\27\1\30\1\31\1\7\1\32"+ - "\1\7\1\33\1\34\1\35\1\36\1\7\1\37\2\7"+ - "\1\40\1\7\1\41\1\42\1\43\1\44\1\45\1\46"+ + "\1\33\1\34\1\35\2\7\1\36\1\37\1\7\1\40"+ + "\1\7\1\41\1\7\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\1\61\1\62\1\63\1\64\7\65\1\66"+ - "\1\67\13\65\1\70\1\71\52\65\2\0\1\72\1\0"+ - "\1\72\1\0\1\73\6\0\2\72\1\0\1\72\1\0"+ - "\1\72\3\0\1\72\2\0\1\74\25\72\21\0\1\5"+ - "\1\6\1\7\1\10\1\7\1\5\1\11\1\10\1\12"+ - "\1\13\1\14\1\15\1\16\2\7\1\17\1\7\1\20"+ - "\1\7\1\21\1\5\1\22\1\7\1\75\1\76\1\25"+ - "\1\7\1\26\1\27\1\30\1\31\1\7\1\32\1\7"+ - "\1\33\1\34\1\35\1\36\1\7\1\37\2\7\1\40"+ - "\1\7\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\1\61\1\62\1\63\1\64\101\0\1\6\12\0"+ - "\1\6\2\0\1\77\1\100\17\0\1\100\40\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\7\2\0\26\7\24\0\1\10\3\0\1\10"+ - "\70\0\6\101\2\0\70\101\2\0\1\102\1\0\1\102"+ - "\1\0\1\103\6\0\2\102\1\0\1\102\1\0\1\102"+ - "\3\0\1\102\2\0\26\102\23\0\1\104\1\0\1\104"+ - "\1\0\1\105\2\0\1\106\3\0\2\104\1\0\1\104"+ - "\1\0\1\104\3\0\1\104\2\0\26\104\33\0\1\107"+ - "\1\110\44\0\1\111\77\0\1\112\20\0\1\113\12\0"+ - "\1\113\1\114\1\115\1\77\1\100\17\0\1\100\4\0"+ - "\1\115\33\0\1\116\12\0\1\116\2\0\1\117\101\0"+ - "\1\120\36\0\1\121\3\0\1\122\13\0\7\21\1\0"+ - "\13\21\1\123\1\124\53\21\25\0\1\125\53\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\7\2\0\1\7\1\126\11\7\1\127\6\7"+ - "\1\130\3\7\22\0\2\7\1\0\2\7\6\0\3\7"+ - "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\3\7"+ - "\1\131\1\132\14\7\1\133\4\7\22\0\2\7\1\0"+ + "\1\57\1\60\1\61\1\62\1\63\1\64\1\65\7\66"+ + "\1\67\1\70\13\66\1\71\1\72\53\66\2\0\1\73"+ + "\1\0\1\73\1\0\1\74\6\0\2\73\1\0\1\73"+ + "\1\0\1\73\3\0\1\73\2\0\1\75\26\73\21\0"+ + "\1\5\1\6\1\7\1\10\1\7\1\5\1\11\1\10"+ + "\1\12\1\13\1\14\1\15\1\16\2\7\1\17\1\7"+ + "\1\20\1\7\1\21\1\5\1\22\1\7\1\76\1\77"+ + "\1\25\1\7\1\26\1\27\1\30\1\31\1\7\1\32"+ + "\1\33\1\34\1\35\2\7\1\36\1\37\1\7\1\40"+ + "\1\7\1\41\1\7\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\1\61\1\62\1\63\1\64\1\65\102\0"+ + "\1\6\12\0\1\6\2\0\1\100\1\101\17\0\1\101"+ + "\41\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ + "\1\0\1\7\3\0\1\7\2\0\27\7\24\0\1\10"+ + "\3\0\1\10\71\0\6\102\2\0\71\102\2\0\1\103"+ + "\1\0\1\103\1\0\1\104\6\0\2\103\1\0\1\103"+ + "\1\0\1\103\3\0\1\103\2\0\27\103\23\0\1\105"+ + "\1\0\1\105\1\0\1\106\2\0\1\107\3\0\2\105"+ + "\1\0\1\105\1\0\1\105\3\0\1\105\2\0\27\105"+ + "\33\0\1\110\1\111\45\0\1\112\100\0\1\113\20\0"+ + "\1\114\12\0\1\114\1\115\1\116\1\100\1\101\17\0"+ + "\1\101\6\0\1\116\32\0\1\117\12\0\1\117\2\0"+ + "\1\120\102\0\1\121\37\0\1\122\3\0\1\123\13\0"+ + "\7\21\1\0\13\21\1\124\1\125\54\21\25\0\1\126"+ + "\54\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ + "\1\0\1\7\3\0\1\7\2\0\1\7\1\127\13\7"+ + "\1\130\5\7\1\131\3\7\22\0\2\7\1\0\2\7"+ + "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ + "\2\0\3\7\1\132\1\133\15\7\1\134\4\7\22\0"+ + "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ + "\1\7\3\0\1\135\2\0\27\7\22\0\2\7\1\0"+ "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ - "\1\134\2\0\26\7\22\0\2\7\1\0\2\7\6\0"+ - "\3\7\1\0\1\7\1\0\1\7\3\0\1\135\2\0"+ - "\5\7\1\136\20\7\22\0\2\7\1\0\2\7\6\0"+ - "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ - "\3\7\1\137\22\7\22\0\2\7\1\0\2\7\6\0"+ - "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ - "\17\7\1\140\6\7\22\0\2\7\1\0\2\7\6\0"+ - "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ - "\12\7\1\141\4\7\1\142\6\7\22\0\2\7\1\0"+ + "\1\136\2\0\5\7\1\137\21\7\22\0\2\7\1\0"+ "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ - "\1\7\2\0\14\7\1\143\11\7\22\0\2\7\1\0"+ + "\1\7\2\0\3\7\1\140\23\7\22\0\2\7\1\0"+ "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ - "\1\7\2\0\7\7\1\144\16\7\22\0\2\7\1\0"+ + "\1\7\2\0\21\7\1\141\5\7\22\0\2\7\1\0"+ "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ - "\1\7\2\0\13\7\1\145\12\7\22\0\2\7\1\0"+ + "\1\7\2\0\5\7\1\142\21\7\22\0\2\7\1\0"+ "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ - "\1\7\2\0\1\7\1\146\24\7\22\0\2\7\1\0"+ - "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ - "\1\147\2\0\5\7\1\150\4\7\1\151\13\7\22\0"+ + "\1\7\2\0\12\7\1\143\6\7\1\144\5\7\22\0"+ "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\1\7\1\152\24\7\22\0"+ + "\1\7\3\0\1\7\2\0\16\7\1\145\10\7\22\0"+ "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\5\7\1\153\20\7\22\0"+ + "\1\7\3\0\1\7\2\0\7\7\1\146\17\7\22\0"+ "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\12\7\1\154\13\7\54\0"+ - "\1\155\24\0\1\156\77\0\1\157\3\0\1\160\73\0"+ - "\1\161\1\0\1\162\75\0\1\163\77\0\1\164\104\0"+ - "\1\165\100\0\1\166\71\0\1\167\17\0\7\65\2\0"+ - "\13\65\2\0\52\65\2\0\1\170\1\0\1\170\1\0"+ - "\1\171\6\0\2\170\1\0\1\170\1\0\1\170\3\0"+ - "\1\170\1\172\1\0\26\170\21\0\7\173\1\0\16\173"+ - "\1\174\51\173\1\0\2\72\1\0\2\72\6\0\3\72"+ - "\1\0\1\72\1\0\1\72\3\0\1\72\2\0\26\72"+ - "\21\0\6\175\2\0\70\175\1\0\2\72\1\0\2\72"+ - "\6\0\3\72\1\0\1\72\1\0\1\72\3\0\1\72"+ - "\2\0\1\72\1\176\24\72\22\0\1\116\12\0\1\116"+ - "\2\0\1\177\61\0\1\200\12\0\1\200\4\0\1\200"+ - "\40\0\1\200\15\0\6\101\1\201\1\0\70\101\1\0"+ - "\2\102\1\0\2\102\6\0\3\102\1\0\1\102\1\0"+ - "\1\102\3\0\1\102\2\0\26\102\21\0\6\202\2\0"+ - "\70\202\1\0\2\104\1\0\2\104\6\0\3\104\1\0"+ - "\1\104\1\0\1\104\3\0\1\104\2\0\26\104\21\0"+ - "\6\203\2\0\70\203\7\107\1\0\70\107\13\204\1\205"+ - "\64\204\1\0\1\113\12\0\1\113\2\0\1\206\1\100"+ - "\17\0\1\100\40\0\2\114\11\0\1\114\1\0\1\114"+ - "\1\207\1\114\1\0\1\210\13\0\1\114\1\0\1\114"+ - "\1\210\1\114\2\0\1\114\4\0\1\114\3\0\1\114"+ - "\22\0\1\115\12\0\1\115\2\0\1\211\61\0\1\116"+ - "\12\0\1\116\3\0\1\100\17\0\1\100\37\0\7\21"+ - "\1\0\70\21\25\0\1\212\53\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\2\7\1\213\10\7\1\214\12\7\22\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\215\2\0\5\7\1\216\14\7\1\217\3\7"+ - "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\10\7\1\220\15\7"+ - "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\10\7\1\221\15\7"+ - "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\17\7\1\222\6\7"+ - "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\6\7\1\223\17\7"+ - "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\26\7\2\0\1\224"+ - "\17\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\3\7\1\225\22\7"+ - "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\4\7\1\226\21\7"+ - "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\5\7\1\227\20\7"+ - "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\15\7\1\230\10\7"+ - "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\1\231\25\7\22\0"+ + "\1\7\3\0\1\7\2\0\15\7\1\147\11\7\22\0"+ "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\7\7\1\232\16\7\22\0"+ + "\1\7\3\0\1\7\2\0\1\7\1\150\25\7\22\0"+ "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\2\7\1\233\4\7\1\234"+ - "\16\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ - "\1\7\1\0\1\7\3\0\1\7\2\0\4\7\1\235"+ - "\21\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ - "\1\7\1\0\1\7\3\0\1\7\2\0\17\7\1\236"+ - "\6\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ - "\1\7\1\0\1\7\3\0\1\7\2\0\13\7\1\237"+ - "\12\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ - "\1\7\1\0\1\7\3\0\1\7\2\0\2\7\1\240"+ - "\23\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ - "\1\7\1\0\1\7\3\0\1\7\2\0\13\7\1\241"+ - "\3\7\1\242\6\7\55\0\1\243\1\244\122\0\1\245"+ - "\77\0\1\246\20\0\2\170\1\0\2\170\6\0\3\170"+ - "\1\0\1\170\1\0\1\170\3\0\1\170\2\0\26\170"+ - "\21\0\6\247\2\0\70\247\1\0\2\250\11\0\1\250"+ - "\1\0\1\250\1\0\1\250\15\0\1\250\1\0\1\250"+ - "\1\0\1\250\2\0\1\250\4\0\1\250\3\0\1\250"+ - "\21\0\6\175\1\251\1\0\70\175\1\0\2\72\1\0"+ - "\2\72\6\0\3\72\1\0\1\72\1\0\1\72\3\0"+ - "\1\72\2\0\2\72\1\252\23\72\22\0\1\200\12\0"+ - "\1\200\63\0\6\202\1\253\1\0\70\202\6\203\1\254"+ - "\1\0\70\203\13\204\1\255\64\204\12\256\1\257\1\205"+ - "\64\256\1\0\1\116\12\0\1\116\64\0\2\260\11\0"+ - "\1\260\1\0\1\260\1\177\1\260\15\0\1\260\1\0"+ - "\1\260\1\0\1\260\2\0\1\260\4\0\1\260\3\0"+ - "\1\260\22\0\1\200\12\0\1\200\4\0\1\261\40\0"+ - "\1\261\34\0\1\177\60\0\25\212\1\262\52\212\1\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\3\7\1\263\22\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\12\7\1\264\13\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\7\7\1\265\16\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\2\7\1\266\23\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\7\7\1\267\16\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\7\7\1\270\16\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\17\7\1\271\6\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\7\7\1\272\16\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\7\7\1\273\16\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\1\274\25\7\22\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\7\2\0\3\7\1\275\22\7\22\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\7\2\0\7\7\1\276\16\7\22\0\2\7"+ - "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ - "\3\0\1\277\2\0\26\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\5\7\1\300\20\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\17\7\1\301\6\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\4\7\1\302\21\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\3\7\1\303\22\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\3\7\1\304\22\7\22\0\2\305\1\0\2\305"+ - "\6\0\3\305\1\0\1\305\1\0\1\305\3\0\1\305"+ - "\2\0\26\305\21\0\6\247\1\306\1\0\70\247\1\0"+ - "\2\307\11\0\1\307\1\0\1\307\1\0\1\307\15\0"+ - "\1\307\1\0\1\307\1\0\1\307\2\0\1\307\4\0"+ - "\1\307\3\0\1\307\22\0\2\72\1\0\2\72\6\0"+ - "\3\72\1\0\1\72\1\0\1\72\3\0\1\72\2\0"+ - "\3\72\1\310\22\72\21\0\12\204\1\311\1\255\64\204"+ - "\13\256\1\312\64\256\1\0\2\260\11\0\1\260\1\0"+ - "\1\260\1\0\1\260\1\0\1\210\13\0\1\260\1\0"+ - "\1\260\1\210\1\260\2\0\1\260\4\0\1\260\3\0"+ - "\1\260\21\0\25\212\1\313\52\212\1\0\2\7\1\0"+ - "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ - "\1\7\2\0\16\7\1\314\7\7\22\0\2\7\1\0"+ - "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ - "\1\7\2\0\1\315\25\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\13\7\1\316\12\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\3\7\1\317\22\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\2\7\1\320\23\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\3\7\1\321\22\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\11\7\1\322\14\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\13\7\1\323\12\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\20\7\1\324\5\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\7\7\1\325\16\7\22\0\2\7\1\0\2\7"+ - "\6\0\3\7\1\0\1\7\1\0\1\7\3\0\1\7"+ - "\2\0\7\7\1\326\16\7\22\0\2\327\11\0\1\327"+ - "\1\0\1\327\1\0\1\327\15\0\1\327\1\0\1\327"+ - "\1\0\1\327\2\0\1\327\4\0\1\327\3\0\1\327"+ - "\21\0\12\256\1\257\1\312\64\256\25\212\1\330\52\212"+ - "\1\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\10\7\1\331\15\7"+ - "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\4\7\1\332\21\7"+ - "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ - "\1\0\1\7\3\0\1\7\2\0\1\333\25\7\22\0"+ - "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ - "\1\7\3\0\1\7\2\0\4\7\1\334\21\7\22\0"+ - "\2\173\11\0\1\173\1\0\1\173\1\0\1\173\15\0"+ - "\1\173\1\0\1\173\1\0\1\173\2\0\1\173\4\0"+ - "\1\173\3\0\1\173\22\0\2\7\1\0\2\7\6\0"+ - "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ - "\5\7\1\335\20\7\22\0\2\7\1\0\2\7\6\0"+ - "\3\7\1\0\1\7\1\0\1\7\3\0\1\336\2\0"+ - "\26\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ - "\1\7\1\0\1\7\3\0\1\7\2\0\11\7\1\337"+ + "\1\7\3\0\1\151\2\0\5\7\1\152\4\7\1\153"+ "\14\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ - "\1\7\1\0\1\7\3\0\1\7\2\0\7\7\1\340"+ - "\16\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ - "\1\7\1\0\1\7\3\0\1\7\2\0\7\7\1\341"+ - "\16\7\21\0"; + "\1\7\1\0\1\7\3\0\1\7\2\0\1\7\1\154"+ + "\25\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\5\7\1\155"+ + "\21\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\12\7\1\156"+ + "\14\7\54\0\1\157\25\0\1\160\100\0\1\161\3\0"+ + "\1\162\74\0\1\163\1\0\1\164\76\0\1\165\100\0"+ + "\1\166\105\0\1\167\101\0\1\170\72\0\1\171\17\0"+ + "\7\66\2\0\13\66\2\0\53\66\2\0\1\172\1\0"+ + "\1\172\1\0\1\173\6\0\2\172\1\0\1\172\1\0"+ + "\1\172\3\0\1\172\1\174\1\0\27\172\21\0\7\175"+ + "\1\0\16\175\1\176\52\175\1\0\2\73\1\0\2\73"+ + "\6\0\3\73\1\0\1\73\1\0\1\73\3\0\1\73"+ + "\2\0\27\73\21\0\6\177\2\0\71\177\1\0\2\73"+ + "\1\0\2\73\6\0\3\73\1\0\1\73\1\0\1\73"+ + "\3\0\1\73\2\0\1\73\1\200\25\73\22\0\1\117"+ + "\12\0\1\117\2\0\1\201\62\0\1\202\12\0\1\202"+ + "\4\0\1\202\41\0\1\202\15\0\6\102\1\203\1\0"+ + "\71\102\1\0\2\103\1\0\2\103\6\0\3\103\1\0"+ + "\1\103\1\0\1\103\3\0\1\103\2\0\27\103\21\0"+ + "\6\204\2\0\71\204\1\0\2\105\1\0\2\105\6\0"+ + "\3\105\1\0\1\105\1\0\1\105\3\0\1\105\2\0"+ + "\27\105\21\0\6\205\2\0\71\205\7\110\1\0\71\110"+ + "\13\206\1\207\65\206\1\0\1\114\12\0\1\114\2\0"+ + "\1\210\1\101\17\0\1\101\41\0\2\115\11\0\1\115"+ + "\1\0\1\115\1\211\1\115\1\0\1\212\13\0\1\115"+ + "\1\0\1\115\1\212\1\115\4\0\1\115\3\0\1\115"+ + "\3\0\1\115\22\0\1\116\12\0\1\116\2\0\1\213"+ + "\62\0\1\117\12\0\1\117\3\0\1\101\17\0\1\101"+ + "\40\0\7\21\1\0\71\21\25\0\1\214\54\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\3\0\1\7\2\0\2\7\1\215\12\7\1\216\11\7"+ + "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ + "\1\0\1\7\3\0\1\217\2\0\5\7\1\220\15\7"+ + "\1\221\3\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\10\7"+ + "\1\222\16\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\10\7"+ + "\1\223\16\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\21\7"+ + "\1\224\5\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\6\7"+ + "\1\225\20\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\27\7"+ + "\2\0\1\226\17\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\3\7"+ + "\1\227\23\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\11\7"+ + "\1\230\15\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\4\7"+ + "\1\231\22\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\5\7"+ + "\1\232\21\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\17\7"+ + "\1\233\7\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\1\234"+ + "\26\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\7\7\1\235"+ + "\17\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\2\7\1\236"+ + "\4\7\1\237\17\7\22\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ + "\4\7\1\240\22\7\22\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ + "\21\7\1\241\5\7\22\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ + "\15\7\1\242\11\7\22\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ + "\2\7\1\243\24\7\22\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ + "\15\7\1\244\3\7\1\245\5\7\55\0\1\246\1\247"+ + "\124\0\1\250\100\0\1\251\20\0\2\172\1\0\2\172"+ + "\6\0\3\172\1\0\1\172\1\0\1\172\3\0\1\172"+ + "\2\0\27\172\21\0\6\252\2\0\71\252\1\0\2\253"+ + "\11\0\1\253\1\0\1\253\1\0\1\253\15\0\1\253"+ + "\1\0\1\253\1\0\1\253\4\0\1\253\3\0\1\253"+ + "\3\0\1\253\21\0\6\177\1\254\1\0\71\177\1\0"+ + "\2\73\1\0\2\73\6\0\3\73\1\0\1\73\1\0"+ + "\1\73\3\0\1\73\2\0\2\73\1\255\24\73\22\0"+ + "\1\202\12\0\1\202\64\0\6\204\1\256\1\0\71\204"+ + "\6\205\1\257\1\0\71\205\13\206\1\260\65\206\12\261"+ + "\1\262\1\207\65\261\1\0\1\117\12\0\1\117\65\0"+ + "\2\263\11\0\1\263\1\0\1\263\1\201\1\263\15\0"+ + "\1\263\1\0\1\263\1\0\1\263\4\0\1\263\3\0"+ + "\1\263\3\0\1\263\22\0\1\202\12\0\1\202\4\0"+ + "\1\264\41\0\1\264\34\0\1\201\61\0\25\214\1\265"+ + "\53\214\1\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\3\7\1\266"+ + "\23\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\12\7\1\267"+ + "\14\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\7\7\1\270"+ + "\17\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\2\7\1\271"+ + "\24\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\7\7\1\272"+ + "\17\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\7\7\1\273"+ + "\17\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\21\7\1\274"+ + "\5\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\7\7\1\275"+ + "\17\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\7\7\1\276"+ + "\17\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\13\7\1\277"+ + "\13\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\1\300\26\7"+ + "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ + "\1\0\1\7\3\0\1\7\2\0\3\7\1\301\23\7"+ + "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ + "\1\0\1\7\3\0\1\7\2\0\7\7\1\302\17\7"+ + "\22\0\2\7\1\0\2\7\6\0\3\7\1\0\1\7"+ + "\1\0\1\7\3\0\1\303\2\0\27\7\22\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\3\0\1\7\2\0\5\7\1\304\21\7\22\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\3\0\1\7\2\0\21\7\1\305\5\7\22\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\3\0\1\7\2\0\4\7\1\306\22\7\22\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\3\0\1\7\2\0\3\7\1\307\23\7\22\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\3\0\1\7\2\0\3\7\1\310\23\7\22\0\2\311"+ + "\1\0\2\311\6\0\3\311\1\0\1\311\1\0\1\311"+ + "\3\0\1\311\2\0\27\311\21\0\6\252\1\312\1\0"+ + "\71\252\1\0\2\313\11\0\1\313\1\0\1\313\1\0"+ + "\1\313\15\0\1\313\1\0\1\313\1\0\1\313\4\0"+ + "\1\313\3\0\1\313\3\0\1\313\22\0\2\73\1\0"+ + "\2\73\6\0\3\73\1\0\1\73\1\0\1\73\3\0"+ + "\1\73\2\0\3\73\1\314\23\73\21\0\12\206\1\315"+ + "\1\260\65\206\13\261\1\316\65\261\1\0\2\263\11\0"+ + "\1\263\1\0\1\263\1\0\1\263\1\0\1\212\13\0"+ + "\1\263\1\0\1\263\1\212\1\263\4\0\1\263\3\0"+ + "\1\263\3\0\1\263\21\0\25\214\1\317\53\214\1\0"+ + "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ + "\1\7\3\0\1\7\2\0\20\7\1\320\6\7\22\0"+ + "\2\7\1\0\2\7\6\0\3\7\1\0\1\7\1\0"+ + "\1\7\3\0\1\7\2\0\1\321\26\7\22\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\3\0\1\7\2\0\15\7\1\322\11\7\22\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\3\0\1\7\2\0\3\7\1\323\23\7\22\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\3\0\1\7\2\0\5\7\1\324\21\7\22\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\3\0\1\7\2\0\2\7\1\325\24\7\22\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\3\0\1\7\2\0\3\7\1\326\23\7\22\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\3\0\1\7\2\0\11\7\1\327\15\7\22\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\3\0\1\7\2\0\15\7\1\330\11\7\22\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\3\0\1\7\2\0\13\7\1\331\13\7\22\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\3\0\1\7\2\0\7\7\1\332\17\7\22\0\2\7"+ + "\1\0\2\7\6\0\3\7\1\0\1\7\1\0\1\7"+ + "\3\0\1\7\2\0\7\7\1\333\17\7\22\0\2\334"+ + "\11\0\1\334\1\0\1\334\1\0\1\334\15\0\1\334"+ + "\1\0\1\334\1\0\1\334\4\0\1\334\3\0\1\334"+ + "\3\0\1\334\21\0\12\261\1\262\1\316\65\261\25\214"+ + "\1\335\53\214\1\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\10\7"+ + "\1\336\16\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\14\7"+ + "\1\337\12\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\4\7"+ + "\1\340\22\7\22\0\2\7\1\0\2\7\6\0\3\7"+ + "\1\0\1\7\1\0\1\7\3\0\1\7\2\0\1\341"+ + "\26\7\22\0\2\7\1\0\2\7\6\0\3\7\1\0"+ + "\1\7\1\0\1\7\3\0\1\7\2\0\4\7\1\342"+ + "\22\7\22\0\2\175\11\0\1\175\1\0\1\175\1\0"+ + "\1\175\15\0\1\175\1\0\1\175\1\0\1\175\4\0"+ + "\1\175\3\0\1\175\3\0\1\175\22\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ + "\1\7\2\0\5\7\1\343\21\7\22\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ + "\1\7\2\0\7\7\1\344\17\7\22\0\2\7\1\0"+ + "\2\7\6\0\3\7\1\0\1\7\1\0\1\7\3\0"+ + "\1\345\2\0\27\7\22\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ + "\11\7\1\337\15\7\22\0\2\7\1\0\2\7\6\0"+ + "\3\7\1\0\1\7\1\0\1\7\3\0\1\7\2\0"+ + "\7\7\1\346\17\7\21\0"; private static int [] zzUnpackTrans() { - int [] result = new int[9536]; + int [] result = new int[10010]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -498,18 +507,18 @@ class _JetLexer implements FlexLexer { private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); private static final String ZZ_ATTRIBUTE_PACKED_0 = - "\4\0\1\11\15\1\2\11\21\1\1\11\6\1\10\11"+ + "\4\0\1\11\15\1\2\11\22\1\1\11\6\1\10\11"+ "\1\1\1\11\1\1\1\0\1\11\1\1\1\0\1\1"+ "\2\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\1\1\1\0\27\1"+ + "\1\11\2\1\2\11\4\1\5\11\1\1\1\0\30\1"+ "\1\0\2\1\10\11\1\1\1\0\2\11\1\1\1\0"+ "\1\1\1\11\1\1\1\11\2\0\2\1\4\0\12\1"+ - "\1\11\20\1\2\11\2\0\1\11\1\1\2\11\1\0"+ - "\1\1\1\11\1\1\2\0\22\1\2\11\1\0\1\1"+ - "\1\11\2\0\13\1\1\0\1\11\11\1"; + "\1\11\21\1\2\11\2\0\1\11\1\1\2\11\1\0"+ + "\1\1\1\11\1\1\2\0\23\1\2\11\1\0\1\1"+ + "\1\11\2\0\14\1\1\0\1\11\11\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[225]; + int [] result = new int[230]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -1025,7 +1034,7 @@ class _JetLexer implements FlexLexer { { return JetTokens.MINUSMINUS; } case 142: break; - case 96: + case 97: { return JetTokens.CONTINUE_KEYWORD ; } case 143: break; @@ -1077,7 +1086,7 @@ class _JetLexer implements FlexLexer { { return TokenType.BAD_CHARACTER; } case 155: break; - case 97: + case 96: { return JetTokens.NAMESPACE_KEYWORD ; } case 156: break; diff --git a/compiler/testData/diagnostics/tests/Abstract.jet b/compiler/testData/diagnostics/tests/Abstract.jet index d36e7769f63..30cb42c416d 100644 --- a/compiler/testData/diagnostics/tests/Abstract.jet +++ b/compiler/testData/diagnostics/tests/Abstract.jet @@ -1,6 +1,6 @@ // +JDK -namespace abstract +package abstract class MyClass() { //properties @@ -180,7 +180,7 @@ enum class MyEnum() { abstract enum class MyAbstractEnum() {} -namespace MyNamespace { +package MyNamespace { //properties val a: Int val a1: Int = 1 diff --git a/compiler/testData/diagnostics/tests/AutoCreatedIt.jet b/compiler/testData/diagnostics/tests/AutoCreatedIt.jet index b9aa7b90c6b..c89b3d01850 100644 --- a/compiler/testData/diagnostics/tests/AutoCreatedIt.jet +++ b/compiler/testData/diagnostics/tests/AutoCreatedIt.jet @@ -1,10 +1,10 @@ fun text() { "direct:a" to "mock:a" "direct:a" on {it.body == ""} to "mock:a" - "direct:a" on {it => it.body == ""} to "mock:a" + "direct:a" on {it -> it.body == ""} to "mock:a" bar {1} bar {it + 1} - bar {it, it1 => it} + bar {it, it1 -> it} bar1 {1} bar1 {it + 1} @@ -12,18 +12,18 @@ fun text() { bar2 {} bar2 {1} bar2 {it} - bar2 {it => it} + bar2 {it -> it} } -fun bar(f : fun (Int, Int) : Int) {} -fun bar1(f : fun (Int) : Int) {} -fun bar2(f : fun () : Int) {} +fun bar(f : (Int, Int) -> Int) {} +fun bar1(f : (Int) -> Int) {} +fun bar2(f : () -> Int) {} fun String.to(dest : String) { } -fun String.on(predicate : fun (s : URI) : Boolean) : URI { +fun String.on(predicate : (s : URI) -> Boolean) : URI { return URI(this) } diff --git a/compiler/testData/diagnostics/tests/AutocastsForStableIdentifiers.jet b/compiler/testData/diagnostics/tests/AutocastsForStableIdentifiers.jet index f6ccdfc8a0a..82805cf8bfb 100644 --- a/compiler/testData/diagnostics/tests/AutocastsForStableIdentifiers.jet +++ b/compiler/testData/diagnostics/tests/AutocastsForStableIdentifiers.jet @@ -1,6 +1,6 @@ -namespace example; +package example; -namespace ns { +package ns { val y : Any? = 2 } diff --git a/compiler/testData/diagnostics/tests/Basic.jet b/compiler/testData/diagnostics/tests/Basic.jet index 4dc3161b26a..0a0673ca5eb 100644 --- a/compiler/testData/diagnostics/tests/Basic.jet +++ b/compiler/testData/diagnostics/tests/Basic.jet @@ -2,7 +2,7 @@ fun foo(u : Unit) : Int = 1 fun test() : Int { foo(1) - val a : fun() : Unit = { + val a : () -> Unit = { foo(1) } return 1 - "1" diff --git a/compiler/testData/diagnostics/tests/Bounds.jet b/compiler/testData/diagnostics/tests/Bounds.jet index 37066cb74ab..e2b7cf1ce86 100644 --- a/compiler/testData/diagnostics/tests/Bounds.jet +++ b/compiler/testData/diagnostics/tests/Bounds.jet @@ -1,4 +1,4 @@ -namespace boundsWithSubstitutors { +package boundsWithSubstitutors { open class A class B>() @@ -18,10 +18,10 @@ namespace boundsWithSubstitutors { open class A {} open class B() - abstract class CInt>, X : fun (B<Char>) : (B<Any>, B)>() : B<Any>() { // 2 errors + abstract class CInt>, X : (B<Char>) -> #(B<Any>, B)>() : B<Any>() { // 2 errors val a = B<Char>() // error - abstract val x : fun (B<Char>) : B<Any> + abstract val x : (B<Char>) -> B<Any> } diff --git a/compiler/testData/diagnostics/tests/Builders.jet b/compiler/testData/diagnostics/tests/Builders.jet index 10791f68875..497950f941f 100644 --- a/compiler/testData/diagnostics/tests/Builders.jet +++ b/compiler/testData/diagnostics/tests/Builders.jet @@ -2,7 +2,7 @@ import java.util.* -namespace html { +package html { abstract class Factory { abstract fun create() : T @@ -16,7 +16,7 @@ namespace html { val children = ArrayList() val attributes = HashMap() - protected fun initTag(init : fun T.() : Unit) : T + protected fun initTag(init : T.() -> Unit) : T where class object T : Factory{ val tag = T.create() tag.init() @@ -36,9 +36,9 @@ namespace html { override fun create() = HTML() } - fun head(init : fun Head.() : Unit) = initTag(init) + fun head(init : Head.() -> Unit) = initTag(init) - fun body(init : fun Body.() : Unit) = initTag(init) + fun body(init : Body.() -> Unit) = initTag(init) } class Head() : TagWithText("head") { @@ -46,7 +46,7 @@ namespace html { override fun create() = Head() } - fun title(init : fun Title.() : Unit) = initTag(init) + fun title(init : Title.() -> Unit) = initTag<Title>(init) } class Title() : TagWithText("title") @@ -59,10 +59,10 @@ namespace html { override fun create() = Body() } - fun b(init : fun B.() : Unit) = initTag<B>(init) - fun p(init : fun P.() : Unit) = initTag<P>(init) - fun h1(init : fun H1.() : Unit) = initTag<H1>(init) - fun a(href : String, init : fun A.() : Unit) { + fun b(init : B.() -> Unit) = initTag<B>(init) + fun p(init : P.() -> Unit) = initTag<P>(init) + fun h1(init : H1.() -> Unit) = initTag<H1>(init) + fun a(href : String, init : A.() -> Unit) { val a = initTag<A>(init) a.href = href } @@ -79,7 +79,7 @@ namespace html { fun Map<String, String>.set(key : String, value : String) = this.put(key, value) - fun html(init : fun HTML.() : Unit) : HTML { + fun html(init : HTML.() -> Unit) : HTML { val html = HTML() html.init() return html @@ -87,7 +87,7 @@ namespace html { } -namespace foo { +package foo { import html.* diff --git a/compiler/testData/diagnostics/tests/Casts.jet b/compiler/testData/diagnostics/tests/Casts.jet index 163619fd4d0..b63af35a916 100644 --- a/compiler/testData/diagnostics/tests/Casts.jet +++ b/compiler/testData/diagnostics/tests/Casts.jet @@ -12,5 +12,5 @@ fun test() : Unit { y <!USELESS_CAST!>as?<!> Int : Int? x <!USELESS_CAST!>as?<!> Int? : Int? y <!USELESS_CAST_STATIC_ASSERT_IS_FINE!>as?<!> Int? : Int? - () + #() } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/ClassObjects.jet b/compiler/testData/diagnostics/tests/ClassObjects.jet index f933004a4d5..019fc084e6f 100644 --- a/compiler/testData/diagnostics/tests/ClassObjects.jet +++ b/compiler/testData/diagnostics/tests/ClassObjects.jet @@ -1,6 +1,6 @@ // +JDK -namespace Jet86 +package Jet86 class A { class object { diff --git a/compiler/testData/diagnostics/tests/ConflictingOverloads.jet b/compiler/testData/diagnostics/tests/ConflictingOverloads.jet index 6f13050d3ae..bb5554d2d32 100644 --- a/compiler/testData/diagnostics/tests/ConflictingOverloads.jet +++ b/compiler/testData/diagnostics/tests/ConflictingOverloads.jet @@ -13,7 +13,7 @@ class A { } } -namespace deepSpace { +package deepSpace { <!CONFLICTING_OVERLOADS!>fun c(<!UNUSED_PARAMETER!>s<!>: String)<!> { } @@ -32,23 +32,23 @@ namespace deepSpace { // check no error in overload in different namespaces -namespace ns1 { +package ns1 { fun e() = 1 } -namespace ns2 { +package ns2 { fun e() = 1 } -namespace ns3 { - namespace ns1 { +package ns3 { + package ns1 { fun e() = 1 } } // check same rules apply for ext functions -namespace extensionFunctions { +package extensionFunctions { <!CONFLICTING_OVERLOADS!>fun Int.qwe(<!UNUSED_PARAMETER!>a<!>: Float)<!> = 1 <!CONFLICTING_OVERLOADS!>fun Int.qwe(<!UNUSED_PARAMETER!>a<!>: Float)<!> = 2 @@ -60,7 +60,7 @@ namespace extensionFunctions { // check no error when regular function and extension function have same name -namespace extensionAndRegular { +package extensionAndRegular { fun who() = 1 fun Int.who() = 1 @@ -68,7 +68,7 @@ namespace extensionAndRegular { // constructor vs. fun overload -namespace constructorVsFun { +package constructorVsFun { class <!CONFLICTING_OVERLOADS!>a()<!> { } <!CONFLICTING_OVERLOADS!>fun a()<!> = 1 diff --git a/compiler/testData/diagnostics/tests/Dollar.jet b/compiler/testData/diagnostics/tests/Dollar.jet index 7966eb21ab9..1adf1bd99ea 100644 --- a/compiler/testData/diagnostics/tests/Dollar.jet +++ b/compiler/testData/diagnostics/tests/Dollar.jet @@ -1,4 +1,4 @@ -namespace dollar +package dollar open class `$$$$$`() { } diff --git a/compiler/testData/diagnostics/tests/ExtensionFunctions.jet b/compiler/testData/diagnostics/tests/ExtensionFunctions.jet index e7e3c1cebf4..0e963b6a6d6 100644 --- a/compiler/testData/diagnostics/tests/ExtensionFunctions.jet +++ b/compiler/testData/diagnostics/tests/ExtensionFunctions.jet @@ -1,7 +1,7 @@ // +JDK fun Int?.optint() : Unit {} -val Int?.optval : Unit = () +val Int?.optval : Unit = #() fun <T, E> T.foo(<!UNUSED_PARAMETER!>x<!> : E, y : A) : T { y.plus(1) @@ -39,7 +39,7 @@ val <T> T.<!MUST_BE_INITIALIZED!>foo<!> : T fun Int.foo() = this -namespace null_safety { +package null_safety { fun parse(<!UNUSED_PARAMETER!>cmd<!>: String): Command? { return null } class Command() { diff --git a/compiler/testData/diagnostics/tests/FunctionCalleeExpressions.jet b/compiler/testData/diagnostics/tests/FunctionCalleeExpressions.jet index 852e49c45fe..32fc8be4b84 100644 --- a/compiler/testData/diagnostics/tests/FunctionCalleeExpressions.jet +++ b/compiler/testData/diagnostics/tests/FunctionCalleeExpressions.jet @@ -1,22 +1,22 @@ -namespace foo +package foo -fun Any.foo() : fun() : Unit { +fun Any.foo() : () -> Unit { return {} } -fun Any.foo1() : fun(i : Int) : Unit { +fun Any.foo1() : (i : Int) -> Unit { return {} } -fun foo2() : fun(i : fun()) : Unit { +fun foo2() : (i : () -> Unit) -> Unit { return {} } -fun fooT1<T>(t : T) : fun() : T { +fun fooT1<T>(t : T) : () -> T { return {t} } -fun fooT2<T>() : fun(t : T) : T { +fun fooT2<T>() : (t : T) -> T { return {it} } @@ -34,8 +34,8 @@ fun main(args : Array<String>) { foo2()({}) foo2()<!TOO_MANY_ARGUMENTS!>{}<!> (foo2()){} - (foo2())<!TYPE_MISMATCH!>{<!CANNOT_INFER_PARAMETER_TYPE!>x<!> => }<!> - foo2()(<!TYPE_MISMATCH!>{<!CANNOT_INFER_PARAMETER_TYPE!>x<!> => }<!>) + (foo2())<!TYPE_MISMATCH!>{<!CANNOT_INFER_PARAMETER_TYPE!>x<!> -> }<!> + foo2()(<!TYPE_MISMATCH!>{<!CANNOT_INFER_PARAMETER_TYPE!>x<!> -> }<!>) val a = fooT1(1)() a : Int @@ -49,19 +49,19 @@ fun main(args : Array<String>) { <!CALLEE_NOT_A_FUNCTION!>1<!>(){} } -fun f() : fun Int.() : Unit = {} +fun f() : Int.() -> Unit = {} fun main1() { - 1.{Int.() => 1}(); + 1.{Int.() -> 1}(); {1}() - {(x : Int) => x}(1) - 1.{Int.(x : Int) => x}(1) + {(x : Int) -> x}(1) + 1.{Int.(x : Int) -> x}(1) @l{1}() - 1.({Int.() => 1})() + 1.({Int.() -> 1})() 1.(f())() 1.if(true){f()}else{f()}() - 1.if(true){Int.() => 1}else{f()}() - 1.if(true){Int.() => 1}else{Int.() => 1}() + 1.if(true){Int.() -> 1}else{f()}() + 1.if(true){Int.() -> 1}else{Int.() -> 1}() 1.<!CALLEE_NOT_A_FUNCTION!>"sdf"<!>() @@ -71,12 +71,12 @@ fun main1() { } fun test() { - {(x : Int) => 1}<!NO_VALUE_FOR_PARAMETER!>()<!> - <!MISSING_RECEIVER!>{Int.() => 1}<!>() - <!TYPE_MISMATCH!>"sd"<!>.{Int.() => 1}() + {(x : Int) -> 1}<!NO_VALUE_FOR_PARAMETER!>()<!> + <!MISSING_RECEIVER!>{Int.() -> 1}<!>() + <!TYPE_MISMATCH!>"sd"<!>.{Int.() -> 1}() val i : Int? = null - i<!UNSAFE_CALL!>.<!>{Int.() => 1}() + i<!UNSAFE_CALL!>.<!>{Int.() -> 1}() {}<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><Int><!>() - 1<!UNNECESSARY_SAFE_CALL!>?.<!>{Int.() => 1}() + 1<!UNNECESSARY_SAFE_CALL!>?.<!>{Int.() -> 1}() 1.<!NO_RECEIVER_ADMITTED!>{}<!>() } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/FunctionReturnTypes.jet b/compiler/testData/diagnostics/tests/FunctionReturnTypes.jet index 0bab0cf8335..11d8bcde513 100644 --- a/compiler/testData/diagnostics/tests/FunctionReturnTypes.jet +++ b/compiler/testData/diagnostics/tests/FunctionReturnTypes.jet @@ -6,11 +6,11 @@ fun unitEmptyInfer() {} fun unitEmpty() : Unit {} fun unitEmptyReturn() : Unit {return} fun unitIntReturn() : Unit {return <!TYPE_MISMATCH!>1<!>} -fun unitUnitReturn() : Unit {return ()} +fun unitUnitReturn() : Unit {return #()} fun test1() : Any = {<!RETURN_TYPE_MISMATCH, RETURN_NOT_ALLOWED!>return<!>} fun test2() : Any = @a {return@a 1} fun test3() : Any { <!RETURN_TYPE_MISMATCH!>return<!> } -fun test4(): fun(): Unit = { <!RETURN_TYPE_MISMATCH, RETURN_NOT_ALLOWED!>return@test4<!> } +fun test4(): ()-> Unit = { <!RETURN_TYPE_MISMATCH, RETURN_NOT_ALLOWED!>return@test4<!> } fun test5(): Any = @{ return@ } fun test6(): Any = {<!RETURN_NOT_ALLOWED!>return 1<!>} @@ -21,13 +21,13 @@ fun bbb() { fun foo(<!UNUSED_PARAMETER!>expr<!>: StringBuilder): Int { val c = 'a' when(c) { - 0.chr => throw Exception("zero") - else => throw Exception("nonzero" + c) + 0.chr -> throw Exception("zero") + else -> throw Exception("nonzero" + c) } } -fun unitShort() : Unit = () +fun unitShort() : Unit = #() fun unitShortConv() : Unit = <!TYPE_MISMATCH!>1<!> fun unitShortNull() : Unit = <!TYPE_MISMATCH!>null<!> @@ -44,7 +44,7 @@ fun intFunctionLiteral(): Int = <!TYPE_MISMATCH!>{ 10 }<!> fun blockReturnUnitMismatch() : Int {<!RETURN_TYPE_MISMATCH!>return<!>} fun blockReturnValueTypeMismatch() : Int {return <!ERROR_COMPILE_TIME_VALUE!>3.4<!>} fun blockReturnValueTypeMatch() : Int {return 1} -fun blockReturnValueTypeMismatchUnit() : Int {return <!TYPE_MISMATCH!>()<!>} +fun blockReturnValueTypeMismatchUnit() : Int {return <!TYPE_MISMATCH!>#()<!>} fun blockAndAndMismatch() : Int { <!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>true && false<!> @@ -176,37 +176,37 @@ class B() { } fun testFunctionLiterals() { - val <!UNUSED_VARIABLE!>endsWithVarDeclaration<!> : fun() : Boolean = { + val <!UNUSED_VARIABLE!>endsWithVarDeclaration<!> : () -> Boolean = { <!EXPECTED_TYPE_MISMATCH!>val x = 2<!> } - val <!UNUSED_VARIABLE!>endsWithAssignment<!> = { () : Int => + val <!UNUSED_VARIABLE!>endsWithAssignment<!> = { () : Int -> var x = 1 <!EXPECTED_TYPE_MISMATCH!>x = 333<!> } - val <!UNUSED_VARIABLE!>endsWithReAssignment<!> = { () : Int => + val <!UNUSED_VARIABLE!>endsWithReAssignment<!> = { () : Int -> var x = 1 <!ASSIGNMENT_TYPE_MISMATCH!>x += 333<!> } - val <!UNUSED_VARIABLE!>endsWithFunDeclaration<!> : fun() : String = { + val <!UNUSED_VARIABLE!>endsWithFunDeclaration<!> : () -> String = { var x = 1 x = 333 <!EXPECTED_TYPE_MISMATCH!>fun meow() : Unit {}<!> } - val <!UNUSED_VARIABLE!>endsWithObjectDeclaration<!> : fun() : Int = { + val <!UNUSED_VARIABLE!>endsWithObjectDeclaration<!> : () -> Int = { var x = 1 x = 333 <!EXPECTED_TYPE_MISMATCH!>object A {}<!> } - val <!UNUSED_VARIABLE!>expectedUnitReturnType1<!> = { () : Unit => + val <!UNUSED_VARIABLE!>expectedUnitReturnType1<!> = { () : Unit -> val x = 1 } - val <!UNUSED_VARIABLE!>expectedUnitReturnType2<!> = { () : Unit => + val <!UNUSED_VARIABLE!>expectedUnitReturnType2<!> = { () : Unit -> fun meow() : Unit {} object A {} } diff --git a/compiler/testData/diagnostics/tests/GenericArgumentConsistency.jet b/compiler/testData/diagnostics/tests/GenericArgumentConsistency.jet index fafd2cf98c8..b9ab728653d 100644 --- a/compiler/testData/diagnostics/tests/GenericArgumentConsistency.jet +++ b/compiler/testData/diagnostics/tests/GenericArgumentConsistency.jet @@ -13,28 +13,28 @@ trait BB1 : BA1<Int> {} trait BB2 : <!INCONSISTENT_TYPE_PARAMETER_VALUES!>BA1<Any>, BB1<!> {} -namespace x { +package x { trait AA1<out T> {} trait AB1 : AA1<Int> {} trait AB3 : AA1<Comparable<Int>> {} trait AB2 : AA1<Number>, AB1, AB3 {} } -namespace x2 { +package x2 { trait AA1<out T> {} trait AB1 : AA1<Any> {} trait AB3 : AA1<Comparable<Int>> {} trait AB2 : <!INCONSISTENT_TYPE_PARAMETER_VALUES!>AA1<Number>, AB1, AB3<!> {} } -namespace x3 { +package x3 { trait AA1<in T> {} trait AB1 : AA1<Any> {} trait AB3 : AA1<Comparable<Int>> {} trait AB2 : AA1<Number>, AB1, AB3 {} } -namespace sx2 { +package sx2 { trait AA1<in T> {} trait AB1 : AA1<Int> {} trait AB3 : AA1<Comparable<Int>> {} diff --git a/compiler/testData/diagnostics/tests/IllegalModifiers.jet b/compiler/testData/diagnostics/tests/IllegalModifiers.jet index a3585e341de..94e23907adf 100644 --- a/compiler/testData/diagnostics/tests/IllegalModifiers.jet +++ b/compiler/testData/diagnostics/tests/IllegalModifiers.jet @@ -1,4 +1,4 @@ -namespace illegal_modifiers +package illegal_modifiers abstract class A() { <!INCOMPATIBLE_MODIFIERS!>abstract<!> <!INCOMPATIBLE_MODIFIERS!>final<!> fun f() diff --git a/compiler/testData/diagnostics/tests/ImportResolutionOrder.jet b/compiler/testData/diagnostics/tests/ImportResolutionOrder.jet index acaeadc053c..7e0ecfe19e0 100644 --- a/compiler/testData/diagnostics/tests/ImportResolutionOrder.jet +++ b/compiler/testData/diagnostics/tests/ImportResolutionOrder.jet @@ -1,22 +1,22 @@ // KT-355 Resolve imports after all symbols are built -namespace a { +package a { import b.* val x : X = X() } -namespace b { +package b { class X() { } } -namespace c { +package c { import d.X val x : X = X() } -namespace d { +package d { class X() { } diff --git a/compiler/testData/diagnostics/tests/LValueAssignment.jet b/compiler/testData/diagnostics/tests/LValueAssignment.jet index e9551afa2fd..7752029c1db 100644 --- a/compiler/testData/diagnostics/tests/LValueAssignment.jet +++ b/compiler/testData/diagnostics/tests/LValueAssignment.jet @@ -1,4 +1,4 @@ -namespace lvalue_assignment +package lvalue_assignment open class B() { var b: Int = 2 @@ -38,7 +38,7 @@ class D() { fun cannotBe(var <!UNUSED_PARAMETER!>i<!>: Int) { <!UNRESOLVED_REFERENCE!>z<!> = 30; - <!VARIABLE_EXPECTED!>()<!> = (); + <!VARIABLE_EXPECTED!>#()<!> = #(); (<!VARIABLE_EXPECTED!>i <!USELESS_CAST!>as<!> Int<!>) = 34 (<!VARIABLE_EXPECTED!>i is Int<!>) = false diff --git a/compiler/testData/diagnostics/tests/MergePackagesWithJava.jet b/compiler/testData/diagnostics/tests/MergePackagesWithJava.jet index 9da16a7c82d..727852d39df 100644 --- a/compiler/testData/diagnostics/tests/MergePackagesWithJava.jet +++ b/compiler/testData/diagnostics/tests/MergePackagesWithJava.jet @@ -2,7 +2,7 @@ // KT-689 Allow to put Java and Kotlin files in the same packages // This is a stub test. One should not extend Java packages that come from libraries. -namespace java +package java val c : lang.Class<*>? = null diff --git a/compiler/testData/diagnostics/tests/MultipleBounds.jet b/compiler/testData/diagnostics/tests/MultipleBounds.jet index 773ebaea33f..49c333a7b87 100644 --- a/compiler/testData/diagnostics/tests/MultipleBounds.jet +++ b/compiler/testData/diagnostics/tests/MultipleBounds.jet @@ -1,4 +1,4 @@ -namespace Jet87 +package Jet87 open class A() { fun foo() : Int = 1 diff --git a/compiler/testData/diagnostics/tests/NamespaceAsExpression.jet b/compiler/testData/diagnostics/tests/NamespaceAsExpression.jet index de5e97fe5b8..8248d2972ae 100644 --- a/compiler/testData/diagnostics/tests/NamespaceAsExpression.jet +++ b/compiler/testData/diagnostics/tests/NamespaceAsExpression.jet @@ -1,6 +1,6 @@ -namespace root +package root -namespace a { +package a { } diff --git a/compiler/testData/diagnostics/tests/NamespaceInExpressionPosition.jet b/compiler/testData/diagnostics/tests/NamespaceInExpressionPosition.jet index f8520b087f1..9a6d9805a2a 100644 --- a/compiler/testData/diagnostics/tests/NamespaceInExpressionPosition.jet +++ b/compiler/testData/diagnostics/tests/NamespaceInExpressionPosition.jet @@ -1,6 +1,6 @@ // +JDK -namespace foo +package foo class X {} diff --git a/compiler/testData/diagnostics/tests/NamespaceQualified.jet b/compiler/testData/diagnostics/tests/NamespaceQualified.jet index 194c1047e24..f57a483de32 100644 --- a/compiler/testData/diagnostics/tests/NamespaceQualified.jet +++ b/compiler/testData/diagnostics/tests/NamespaceQualified.jet @@ -1,8 +1,8 @@ // +JDK -namespace foobar +package foobar -namespace a { +package a { import java.* val a : util.List<Int>? = null @@ -14,7 +14,7 @@ abstract class Foo<T>() { abstract val x : T<Int> } -namespace a { +package a { import java.util.* val b : List<Int>? = a diff --git a/compiler/testData/diagnostics/tests/Nullability.jet b/compiler/testData/diagnostics/tests/Nullability.jet index 95e8ebb3700..14ba1b28652 100644 --- a/compiler/testData/diagnostics/tests/Nullability.jet +++ b/compiler/testData/diagnostics/tests/Nullability.jet @@ -40,28 +40,28 @@ fun test() { out.println(); } - if (out == null || out.println(0) == ()) { + if (out == null || out.println(0) == #()) { out?.println(1) } else { out.println(2) } - if (out != null && out.println() == ()) { + if (out != null && out.println() == #()) { out.println(); } else { out?.println(); } - if (out == null || out != null && out.println() == ()) { + if (out == null || out != null && out.println() == #()) { out?.println(); } else { out.println(); } - if (1 == 2 || out != null && out.println(1) == ()) { + if (1 == 2 || out != null && out.println(1) == #()) { out?.println(2); } else { @@ -96,28 +96,28 @@ fun test() { out.println(); } - if (out == null || out.println(0) == ()) { + if (out == null || out.println(0) == #()) { out?.println(1) } else { out.println(2) } - if (out != null && out.println() == ()) { + if (out != null && out.println() == #()) { out.println(); } else { out?.println(); } - if (out == null || out != null && out.println() == ()) { + if (out == null || out != null && out.println() == #()) { out?.println(); } else { out.println(); } - if (1 == 2 || out != null && out.println(1) == ()) { + if (1 == 2 || out != null && out.println(1) == #()) { out?.println(2); } else { diff --git a/compiler/testData/diagnostics/tests/Objects.jet b/compiler/testData/diagnostics/tests/Objects.jet index 79ed4e42644..14ce45145bd 100644 --- a/compiler/testData/diagnostics/tests/Objects.jet +++ b/compiler/testData/diagnostics/tests/Objects.jet @@ -1,4 +1,4 @@ -namespace toplevelObjectDeclarations { +package toplevelObjectDeclarations { open class Foo(y : Int) { open fun foo() : Int = 1 } @@ -28,7 +28,7 @@ namespace toplevelObjectDeclarations { val z = y.foo() } -namespace nestedObejcts { +package nestedObejcts { object A { val b = B val d = A.B.A @@ -58,7 +58,7 @@ namespace nestedObejcts { val e = B.<!UNRESOLVED_REFERENCE!>A<!>.B } -namespace localObjects { +package localObjects { object A { val x : Int = 0 } diff --git a/compiler/testData/diagnostics/tests/Override.jet b/compiler/testData/diagnostics/tests/Override.jet index ce46dadac07..6884e82eb42 100644 --- a/compiler/testData/diagnostics/tests/Override.jet +++ b/compiler/testData/diagnostics/tests/Override.jet @@ -1,6 +1,6 @@ -namespace override +package override -namespace normal { +package normal { trait MyTrait { fun foo() val pr : Unit @@ -16,8 +16,8 @@ namespace normal { override fun foo() {} override fun bar() {} - override val pr : Unit = () - override val prr : Unit = () + override val pr : Unit = #() + override val prr : Unit = #() } class MyChildClass() : MyClass() {} @@ -26,14 +26,14 @@ namespace normal { class <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>MyIllegalClass2<!>() : MyTrait, MyAbstractClass { override fun foo() {} - override val pr : Unit = () - override val prr : Unit = () + override val pr : Unit = #() + override val prr : Unit = #() } class <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>MyIllegalClass3<!>() : MyTrait, MyAbstractClass { override fun bar() {} - override val pr : Unit = () - override val prr : Unit = () + override val pr : Unit = #() + override val prr : Unit = #() } class <!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>MyIllegalClass4<!>() : MyTrait, MyAbstractClass { @@ -45,13 +45,13 @@ namespace normal { class MyChildClass1() : MyClass() { fun <!VIRTUAL_MEMBER_HIDDEN!>foo<!>() {} - val <!VIRTUAL_MEMBER_HIDDEN!>pr<!> : Unit = () + val <!VIRTUAL_MEMBER_HIDDEN!>pr<!> : Unit = #() override fun bar() {} - override val prr : Unit = () + override val prr : Unit = #() } } -namespace generics { +package generics { trait MyTrait<T> { fun foo(t: T) : T } diff --git a/compiler/testData/diagnostics/tests/QualifiedExpressions.jet b/compiler/testData/diagnostics/tests/QualifiedExpressions.jet index 187c745ef63..135fbc2e89a 100644 --- a/compiler/testData/diagnostics/tests/QualifiedExpressions.jet +++ b/compiler/testData/diagnostics/tests/QualifiedExpressions.jet @@ -1,4 +1,4 @@ -namespace qualified_expressions +package qualified_expressions fun test(s: String?) { val <!UNUSED_VARIABLE!>a<!>: Int = <!TYPE_MISMATCH!>s?.length<!> diff --git a/compiler/testData/diagnostics/tests/QualifiedThis.jet b/compiler/testData/diagnostics/tests/QualifiedThis.jet index 7fab8479b4b..82d44c804ce 100644 --- a/compiler/testData/diagnostics/tests/QualifiedThis.jet +++ b/compiler/testData/diagnostics/tests/QualifiedThis.jet @@ -21,7 +21,7 @@ fun foo1() : Unit { this<!UNRESOLVED_REFERENCE!>@a<!> } -namespace closures { +package closures { class A(val a:Int) { class B() { @@ -31,10 +31,10 @@ namespace closures { val Int.xx = this : Int fun Char.xx() : Any { this : Char - val <!UNUSED_VARIABLE!>a<!> = {Double.() => this : Double + this@xx : Char} - val <!UNUSED_VARIABLE!>b<!> = @a{Double.() => this@a : Double + this@xx : Char} - val <!UNUSED_VARIABLE!>c<!> = @a{() => <!NO_THIS!>this@a<!> + this@xx : Char} - return (@a{Double.() => this@a : Double + this@xx : Char}) + val <!UNUSED_VARIABLE!>a<!> = {Double.() -> this : Double + this@xx : Char} + val <!UNUSED_VARIABLE!>b<!> = @a{Double.() -> this@a : Double + this@xx : Char} + val <!UNUSED_VARIABLE!>c<!> = @a{() -> <!NO_THIS!>this@a<!> + this@xx : Char} + return (@a{Double.() -> this@a : Double + this@xx : Char}) } } } diff --git a/compiler/testData/diagnostics/tests/RecursiveTypeInference.jet b/compiler/testData/diagnostics/tests/RecursiveTypeInference.jet index 46e2f2ae7c7..47e0d6aeb58 100644 --- a/compiler/testData/diagnostics/tests/RecursiveTypeInference.jet +++ b/compiler/testData/diagnostics/tests/RecursiveTypeInference.jet @@ -1,16 +1,16 @@ -namespace a { +package a { val foo = bar() fun bar() = <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>foo<!> } -namespace b { +package b { fun foo() = bar() fun bar() = <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>foo()<!> } -namespace c { +package c { fun bazz() = bar() fun foo() = <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>bazz()<!> @@ -18,21 +18,21 @@ namespace c { fun bar() = foo() } -namespace ok { +package ok { - namespace a { + package a { val foo = bar() fun bar() : Int = foo } - namespace b { + package b { fun foo() : Int = bar() fun bar() = foo() } - namespace c { + package c { fun bazz() = bar() fun foo() : Int = bazz() diff --git a/compiler/testData/diagnostics/tests/Redeclarations.jet b/compiler/testData/diagnostics/tests/Redeclarations.jet index 3068a16b54d..18756b8ba9a 100644 --- a/compiler/testData/diagnostics/tests/Redeclarations.jet +++ b/compiler/testData/diagnostics/tests/Redeclarations.jet @@ -1,11 +1,11 @@ -namespace redeclarations { +package redeclarations { object <!REDECLARATION, REDECLARATION!>A<!> { val x : Int = 0 val A = 1 } - namespace <!REDECLARATION!>A<!> { + package <!REDECLARATION!>A<!> { class A {} } diff --git a/compiler/testData/diagnostics/tests/ResolveToJava.jet b/compiler/testData/diagnostics/tests/ResolveToJava.jet index 28d49d5ee3f..8275b2c842c 100644 --- a/compiler/testData/diagnostics/tests/ResolveToJava.jet +++ b/compiler/testData/diagnostics/tests/ResolveToJava.jet @@ -49,6 +49,6 @@ fun test(<!UNUSED_PARAMETER!>l<!> : java.util.List<Int>) { } -namespace xxx { +package xxx { import java.lang.Class; } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/Return.jet b/compiler/testData/diagnostics/tests/Return.jet index 2426ecb933c..146783a46fd 100644 --- a/compiler/testData/diagnostics/tests/Return.jet +++ b/compiler/testData/diagnostics/tests/Return.jet @@ -1,4 +1,4 @@ -namespace <!SYNTAX!>return<!> +package <!SYNTAX!>return<!> class A { fun outer() { diff --git a/compiler/testData/diagnostics/tests/ShiftFunctionTypes.kt b/compiler/testData/diagnostics/tests/ShiftFunctionTypes.kt new file mode 100644 index 00000000000..b743b73df48 --- /dev/null +++ b/compiler/testData/diagnostics/tests/ShiftFunctionTypes.kt @@ -0,0 +1,51 @@ +class A { +} + +namespace n { + class B +} +abstract class XXX() { + abstract val a : Int + abstract val a1 : namespace.<!UNRESOLVED_REFERENCE!>Int<!> + abstract val a2 : n.B + abstract val a3 : (A) + abstract val a31 : (n.B) + abstract val a4 : A? + abstract val a5 : (A)? + abstract val a6 : (A?) + abstract val a7 : (A) -> n.B + abstract val a8 : (A, n.B) -> n.B + +//val a9 : (A, B) +//val a10 : (B)? -> B + + val a11 : ((Int) -> Int)? = null + val a12 : ((Int) -> (Int))? = null + abstract val a13 : Int.(Int) -> Int + abstract val a14 : n.B.(Int) -> Int + abstract val a15 : Int? .(Int) -> Int + abstract val a152 : (Int?).(Int) -> Int + abstract val a151 : Int?.(Int) -> Int + abstract val a16 : (Int) -> (Int) -> Int + abstract val a17 : ((Int) -> Int).(Int) -> Int + abstract val a18 : (Int) -> ((Int) -> Int) + abstract val a19 : ((Int) -> Int) -> Int +} + +abstract class YYY() { + abstract val a7 : (a : A) -> n.B + abstract val a8 : (a : A, b : n.B) -> n.B +//val a9 : (A, B) +//val a10 : (B)? -> B + val a11 : ((a : Int) -> Int)? = null + val a12 : ((a : Int) -> (Int))? = null + abstract val a13 : Int.(a : Int) -> Int + abstract val a14 : n.B.(a : Int) -> Int + abstract val a15 : Int? .(a : Int) -> Int + abstract val a152 : (Int?).(a : Int) -> Int +abstract val a151 : Int?.(a : Int) -> Int + abstract val a16 : (a : Int) -> (a : Int) -> Int + abstract val a17 : ((a : Int) -> Int).(a : Int) -> Int + abstract val a18 : (a : Int) -> ((a : Int) -> Int) + abstract val a19 : (b : (a : Int) -> Int) -> Int +} diff --git a/compiler/testData/diagnostics/tests/StringTemplates.jet b/compiler/testData/diagnostics/tests/StringTemplates.jet index 79b4e562f17..976a06e3a02 100644 --- a/compiler/testData/diagnostics/tests/StringTemplates.jet +++ b/compiler/testData/diagnostics/tests/StringTemplates.jet @@ -3,8 +3,8 @@ fun demo() { val a = "" val asd = 1 val bar = 5 - fun map(f : fun () : Any?) : Int = 1 - fun buzz(f : fun () : Any?) : Int = 1 + fun map(f : () -> Any?) : Int = 1 + fun buzz(f : () -> Any?) : Int = 1 val sdf = 1 val foo = 3; "$abc" diff --git a/compiler/testData/diagnostics/tests/Super.jet b/compiler/testData/diagnostics/tests/Super.jet index 749b17c322f..1f41daa88ce 100644 --- a/compiler/testData/diagnostics/tests/Super.jet +++ b/compiler/testData/diagnostics/tests/Super.jet @@ -1,4 +1,4 @@ -namespace example; +package example; fun any(<!UNUSED_PARAMETER!>a<!> : Any) {} @@ -7,7 +7,7 @@ fun notAnExpression() { if (<!SUPER_IS_NOT_AN_EXPRESSION!>super<!>) {} else {} // not an expression val <!UNUSED_VARIABLE!>x<!> = <!SUPER_IS_NOT_AN_EXPRESSION!>super<!> // not an expression when (1) { - <!SUPER_IS_NOT_AN_EXPRESSION!>super<!> => 1 // not an expression + <!SUPER_IS_NOT_AN_EXPRESSION!>super<!> -> 1 // not an expression } } @@ -33,8 +33,8 @@ class A<E>() : C(), T { super<<!NOT_A_SUPERTYPE!>E<!>>@A.bar() super<<!NOT_A_SUPERTYPE!>Int<!>>.foo() super<<!SYNTAX!><!>>.foo() - super<<!NOT_A_SUPERTYPE!>fun() : Unit<!>>.foo() - super<<!NOT_A_SUPERTYPE!>()<!>>.foo() + super<<!NOT_A_SUPERTYPE!>() -> Unit<!>>.foo() + super<<!NOT_A_SUPERTYPE!>#()<!>>.foo() super<T><!UNRESOLVED_REFERENCE!>@B<!>.foo() super<C><!UNRESOLVED_REFERENCE!>@B<!>.bar() } diff --git a/compiler/testData/diagnostics/tests/UninitializedOrReassignedVariables.jet b/compiler/testData/diagnostics/tests/UninitializedOrReassignedVariables.jet index 22cfde8fdaa..964b8dfbb54 100644 --- a/compiler/testData/diagnostics/tests/UninitializedOrReassignedVariables.jet +++ b/compiler/testData/diagnostics/tests/UninitializedOrReassignedVariables.jet @@ -1,4 +1,4 @@ -namespace uninitialized_reassigned_variables +package uninitialized_reassigned_variables fun doSmth(<!UNUSED_PARAMETER!>s<!>: String) {} fun doSmth(<!UNUSED_PARAMETER!>i<!>: Int) {} diff --git a/compiler/testData/diagnostics/tests/UnitByDefaultForFunctionTypes.jet b/compiler/testData/diagnostics/tests/UnitByDefaultForFunctionTypes.jet index 9a14ad7a471..9848e76942e 100644 --- a/compiler/testData/diagnostics/tests/UnitByDefaultForFunctionTypes.jet +++ b/compiler/testData/diagnostics/tests/UnitByDefaultForFunctionTypes.jet @@ -1,3 +1,3 @@ -fun foo(f : fun()) { +fun foo(f : () -> Unit) { val <!UNUSED_VARIABLE!>x<!> : Unit = f() } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/Unresolved.jet b/compiler/testData/diagnostics/tests/Unresolved.jet index b5b6018377d..0ec39c5fcbe 100644 --- a/compiler/testData/diagnostics/tests/Unresolved.jet +++ b/compiler/testData/diagnostics/tests/Unresolved.jet @@ -1,8 +1,8 @@ -namespace unresolved +package unresolved fun testGenericArgumentsCount() { - val <!UNUSED_VARIABLE!>p1<!>: Tuple2<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><Int><!> = (2, 2) - val <!UNUSED_VARIABLE!>p2<!>: <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Tuple2<!> = (2, 2) + val <!UNUSED_VARIABLE!>p1<!>: Tuple2<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><Int><!> = #(2, 2) + val <!UNUSED_VARIABLE!>p2<!>: <!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Tuple2<!> = #(2, 2) } fun testUnresolved() { @@ -16,8 +16,8 @@ fun testUnresolved() { s.<!UNRESOLVED_REFERENCE!>foo<!>() when(<!UNRESOLVED_REFERENCE!>a<!>) { - is Int => <!UNRESOLVED_REFERENCE!>a<!> - is String => <!UNRESOLVED_REFERENCE!>a<!> + is Int -> <!UNRESOLVED_REFERENCE!>a<!> + is String -> <!UNRESOLVED_REFERENCE!>a<!> } //TODO diff --git a/compiler/testData/diagnostics/tests/UnusedVariables.jet b/compiler/testData/diagnostics/tests/UnusedVariables.jet index b41e4ab4002..a623c336836 100644 --- a/compiler/testData/diagnostics/tests/UnusedVariables.jet +++ b/compiler/testData/diagnostics/tests/UnusedVariables.jet @@ -1,4 +1,4 @@ -namespace unused_variables +package unused_variables fun testSimpleCases() { var i = <!VARIABLE_WITH_REDUNDANT_INITIALIZER!>2<!> @@ -103,11 +103,11 @@ fun testInnerFunctions() { fun testFunctionLiterals() { var x = 1 - var <!UNUSED_VARIABLE!>fl<!> = { (): Int => + var <!UNUSED_VARIABLE!>fl<!> = { (): Int -> x } var y = 2 - var <!UNUSED_VARIABLE!>fl1<!> = { (): Unit => + var <!UNUSED_VARIABLE!>fl1<!> = { (): Unit -> doSmth(y) } } diff --git a/compiler/testData/diagnostics/tests/Varargs.jet b/compiler/testData/diagnostics/tests/Varargs.jet index 5986ce0982d..e9a33960df3 100644 --- a/compiler/testData/diagnostics/tests/Varargs.jet +++ b/compiler/testData/diagnostics/tests/Varargs.jet @@ -1,5 +1,5 @@ fun v(<!UNUSED_PARAMETER!>x<!> : Int, <!UNUSED_PARAMETER!>y<!> : String, vararg <!UNUSED_PARAMETER!>f<!> : Long) {} -fun v1(vararg <!UNUSED_PARAMETER!>f<!> : fun (Int) : Unit) {} +fun v1(vararg <!UNUSED_PARAMETER!>f<!> : (Int) -> Unit) {} fun test() { v(1, "") diff --git a/compiler/testData/diagnostics/tests/Variance.jet b/compiler/testData/diagnostics/tests/Variance.jet index 8785dfd87cb..da27ecfa5ba 100644 --- a/compiler/testData/diagnostics/tests/Variance.jet +++ b/compiler/testData/diagnostics/tests/Variance.jet @@ -1,4 +1,4 @@ -namespace variance +package variance abstract class Consumer<in T> {} diff --git a/compiler/testData/diagnostics/tests/When.jet b/compiler/testData/diagnostics/tests/When.jet index bff65aac380..0943aa7cdb6 100644 --- a/compiler/testData/diagnostics/tests/When.jet +++ b/compiler/testData/diagnostics/tests/When.jet @@ -4,19 +4,19 @@ fun foo() : Int { val s = "" val x = 1 when (x) { - is * => 1 - is <!INCOMPATIBLE_TYPES!>String<!> => 1 - !is Int => 1 - is Any? => 1 - <!INCOMPATIBLE_TYPES!>s<!> => 1 - 1 => 1 - 1 + <!UNRESOLVED_REFERENCE!>a<!> => 1 - in 1..<!UNRESOLVED_REFERENCE!>a<!> => 1 - !in 1..<!UNRESOLVED_REFERENCE!>a<!> => 1 + is * -> 1 + is <!INCOMPATIBLE_TYPES!>String<!> -> 1 + !is Int -> 1 + is Any? -> 1 + <!INCOMPATIBLE_TYPES!>s<!> -> 1 + 1 -> 1 + 1 + <!UNRESOLVED_REFERENCE!>a<!> -> 1 + in 1..<!UNRESOLVED_REFERENCE!>a<!> -> 1 + !in 1..<!UNRESOLVED_REFERENCE!>a<!> -> 1 // Commented for KT-621 .<!!UNRESOLVED_REFERENCE!>a<!!> => 1 // Commented for KT-621 .equals(1).<!!UNRESOLVED_REFERENCE!>a<!!> => 1 // Commented for KT-621 <!UNNECESSARY_SAFE_CALL!!>?.<!!>equals(1) => 1 - else => 1 + else -> 1 } // Commented for KT-621 @@ -35,33 +35,33 @@ fun test() { val s = ""; when (x) { - <!INCOMPATIBLE_TYPES!>s<!> => 1 - is <!INCOMPATIBLE_TYPES!>""<!> => 1 - x => 1 - is 1 => 1 - is <!TYPE_MISMATCH_IN_TUPLE_PATTERN!>(1, 1)<!> => 1 + <!INCOMPATIBLE_TYPES!>s<!> -> 1 + is <!INCOMPATIBLE_TYPES!>""<!> -> 1 + x -> 1 + is 1 -> 1 + is <!TYPE_MISMATCH_IN_TUPLE_PATTERN!>#(1, 1)<!> -> 1 } - val z = (1, 1) + val z = #(1, 1) when (z) { - is (*, *) => 1 - is (*, 1) => 1 - is (1, 1) => 1 - is (1, <!INCOMPATIBLE_TYPES!>"1"<!>) => 1 - is <!TYPE_MISMATCH_IN_TUPLE_PATTERN!>(1, "1", *)<!> => 1 - is boo @ (1, <!INCOMPATIBLE_TYPES!>"a"<!>, *) => 1 - is boo @ <!TYPE_MISMATCH_IN_TUPLE_PATTERN!>(1, *)<!> => 1 + is #(*, *) -> 1 + is #(*, 1) -> 1 + is #(1, 1) -> 1 + is #(1, <!INCOMPATIBLE_TYPES!>"1"<!>) -> 1 + is <!TYPE_MISMATCH_IN_TUPLE_PATTERN!>#(1, "1", *)<!> -> 1 + is boo #(1, <!INCOMPATIBLE_TYPES!>"a"<!>, *) -> 1 + is boo <!TYPE_MISMATCH_IN_TUPLE_PATTERN!>#(1, *)<!> -> 1 } when (z) { - <!ELSE_MISPLACED_IN_WHEN!>else => 1<!> - (1, 1) => 2 + <!ELSE_MISPLACED_IN_WHEN!>else -> 1<!> + #(1, 1) -> 2 } when (z) { - else => 1 + else -> 1 } } -val (Int, Int).boo : (Int, Int, Int) = (1, 1, 1) +val #(Int, Int).boo : #(Int, Int, Int) = #(1, 1, 1) diff --git a/compiler/testData/diagnostics/tests/backingField/CustomGetValGlobal.jet b/compiler/testData/diagnostics/tests/backingField/CustomGetValGlobal.jet index 6962636adec..0a26ab8d578 100644 --- a/compiler/testData/diagnostics/tests/backingField/CustomGetValGlobal.jet +++ b/compiler/testData/diagnostics/tests/backingField/CustomGetValGlobal.jet @@ -1,4 +1,4 @@ -namespace customGetValGlobal { +package customGetValGlobal { val zz = 1 get() = $zz * 2 diff --git a/compiler/testData/diagnostics/tests/backingField/kt462BackingFieldsResolve.jet b/compiler/testData/diagnostics/tests/backingField/kt462BackingFieldsResolve.jet index af0ec07ea8d..3520c94aa5e 100644 --- a/compiler/testData/diagnostics/tests/backingField/kt462BackingFieldsResolve.jet +++ b/compiler/testData/diagnostics/tests/backingField/kt462BackingFieldsResolve.jet @@ -1,7 +1,7 @@ //KT-462 Consider allowing initializing properties via property names when it is safe //KT-598 Allow to use backing fields after this expression -namespace kt462 +package kt462 abstract class TestInitializationWithoutBackingField() { val valWithBackingField : Int diff --git a/compiler/testData/diagnostics/tests/backingField/kt782namespaceLevel.jet b/compiler/testData/diagnostics/tests/backingField/kt782namespaceLevel.jet index 70e44773cdf..0d12bc57aa8 100644 --- a/compiler/testData/diagnostics/tests/backingField/kt782namespaceLevel.jet +++ b/compiler/testData/diagnostics/tests/backingField/kt782namespaceLevel.jet @@ -1,6 +1,6 @@ // KT-782 Allow backing field usage for accessors of variables on namespace level -namespace kt782 +package kt782 val z : Int = 34 diff --git a/compiler/testData/diagnostics/tests/cast/WhenErasedDisallowFromAny.jet b/compiler/testData/diagnostics/tests/cast/WhenErasedDisallowFromAny.jet index 2f424e3b9ad..d4ad8b264b0 100644 --- a/compiler/testData/diagnostics/tests/cast/WhenErasedDisallowFromAny.jet +++ b/compiler/testData/diagnostics/tests/cast/WhenErasedDisallowFromAny.jet @@ -3,6 +3,6 @@ import java.util.List; fun ff(l: Any) = when(l) { - is <!CANNOT_CHECK_FOR_ERASED!>List<String><!> => 1 + is <!CANNOT_CHECK_FOR_ERASED!>List<String><!> -> 1 else <!SYNTAX!>2<!> } diff --git a/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt510.jet b/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt510.jet index 41feb040f2a..15407891604 100644 --- a/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt510.jet +++ b/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt510.jet @@ -1,6 +1,6 @@ //KT-510 `this.` allows initialization without backing field -namespace kt510 +package kt510 public open class Identifier1() { var field : Boolean diff --git a/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt607.jet b/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt607.jet index 238661318d1..06ff50dd689 100644 --- a/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt607.jet +++ b/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt607.jet @@ -1,6 +1,6 @@ //KT-607 Val reassignment is not marked as an error -namespace kt607 +package kt607 fun foo(a: A) { val o = object { diff --git a/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt609.jet b/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt609.jet index 56f75e247e2..8ea0f2ef92b 100644 --- a/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt609.jet +++ b/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt609.jet @@ -1,6 +1,6 @@ //KT-609 Analyze not only local variables, but function parameters as well in 'unused values' analysis -namespace kt609 +package kt609 fun test(var a: Int) { a = <!UNUSED_VALUE!>324<!> //should be an 'unused value' warning here diff --git a/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt610.jet b/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt610.jet index 916704e6c03..93838a62884 100644 --- a/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt610.jet +++ b/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt610.jet @@ -1,6 +1,6 @@ //KT-610 Distinguish errors 'unused variable' and 'variable is assigned but never accessed' -namespace kt610 +package kt610 fun foo() { var <!UNUSED_VARIABLE!>j<!> = 9 //'unused variable' error diff --git a/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt843.jet b/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt843.jet index 3e276fe45d3..eeefb8d96f2 100644 --- a/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt843.jet +++ b/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt843.jet @@ -1,6 +1,6 @@ //KT-843 Don't highlight incomplete variables as unused -namespace kt843 +package kt843 fun main(args : Array<String>) { // Integer type diff --git a/compiler/testData/diagnostics/tests/controlStructures/kt770.kt351.kt735_StatementType.jet b/compiler/testData/diagnostics/tests/controlStructures/kt770.kt351.kt735_StatementType.jet index f9d9a50e4f4..878cce20769 100644 --- a/compiler/testData/diagnostics/tests/controlStructures/kt770.kt351.kt735_StatementType.jet +++ b/compiler/testData/diagnostics/tests/controlStructures/kt770.kt351.kt735_StatementType.jet @@ -1,4 +1,4 @@ -namespace kt770_351_735 +package kt770_351_735 //+JDK @@ -6,9 +6,9 @@ namespace kt770_351_735 fun main(args : Array<String>) { var i = 0 when (i) { - 1 => i-- - 2 => i = 2 // i is surrounded by a black border - else => <!UNRESOLVED_REFERENCE!>j<!> = 2 + 1 -> i-- + 2 -> i = 2 // i is surrounded by a black border + else -> <!UNRESOLVED_REFERENCE!>j<!> = 2 } System.out?.println(i) } @@ -26,8 +26,8 @@ fun foo() { z = <!UNUSED_VALUE!>34<!> } } - val <!UNUSED_VARIABLE!>f<!>: fun(): Int = <!TYPE_MISMATCH!>r<!> - val <!UNUSED_VARIABLE!>g<!>: fun(): Any = r + val <!UNUSED_VARIABLE!>f<!>: ()-> Int = <!TYPE_MISMATCH!>r<!> + val <!UNUSED_VARIABLE!>g<!>: ()-> Any = r } //KT-735 Statements without braces are prohibited on the right side of when entries. @@ -35,8 +35,8 @@ fun box() : Int { val d = 2 var z = 0 when(d) { - is 5, is 3 => z++ - else => z = -1000 + is 5, is 3 -> z++ + else -> z = -1000 } return z } @@ -47,10 +47,10 @@ fun test1() = while(true) {} fun test2(): Unit = while(true) {} fun testCoercionToUnit() { - val <!UNUSED_VARIABLE!>simple<!>: fun(): Unit = { + val <!UNUSED_VARIABLE!>simple<!>: ()-> Unit = { 41 } - val <!UNUSED_VARIABLE!>withIf<!>: fun(): Unit = { + val <!UNUSED_VARIABLE!>withIf<!>: ()-> Unit = { if (true) { 3 } else { @@ -58,16 +58,16 @@ fun testCoercionToUnit() { } } val i = 34 - val <!UNUSED_VARIABLE!>withWhen<!> : fun() : Unit = { + val <!UNUSED_VARIABLE!>withWhen<!> : () -> Unit = { when(i) { - is 1 => { + is 1 -> { val d = 34 "1" doSmth(d) } - is 2 => '4' - else => true + is 2 -> '4' + else -> true } } @@ -79,7 +79,7 @@ fun testCoercionToUnit() { 45 } } - val <!UNUSED_VARIABLE!>f<!> : fun() : String = <!TYPE_MISMATCH!>checkType<!> + val <!UNUSED_VARIABLE!>f<!> : () -> String = <!TYPE_MISMATCH!>checkType<!> } fun doSmth(<!UNUSED_PARAMETER!>i<!>: Int) {} @@ -88,16 +88,16 @@ fun testImplicitCoercion() { val d = 21 var z = 0 var <!UNUSED_VARIABLE!>i<!> = <!IMPLICIT_CAST_TO_UNIT_OR_ANY!>when(d) { - is 3 => null - is 4 => { val <!NAME_SHADOWING, UNUSED_VARIABLE!>z<!> = 23 } - else => z = 20 + is 3 -> null + is 4 -> { val <!NAME_SHADOWING, UNUSED_VARIABLE!>z<!> = 23 } + else -> z = 20 }<!> var <!UNUSED_VARIABLE!>u<!> = <!IMPLICIT_CAST_TO_UNIT_OR_ANY!>when(d) { - is 3 => { + is 3 -> { z = <!UNUSED_VALUE!>34<!> } - else => <!UNUSED_CHANGED_VALUE!>z--<!> + else -> <!UNUSED_CHANGED_VALUE!>z--<!> }<!> var <!UNUSED_VARIABLE!>iff<!> = <!IMPLICIT_CAST_TO_UNIT_OR_ANY!>if (true) { diff --git a/compiler/testData/diagnostics/tests/controlStructures/kt786.jet b/compiler/testData/diagnostics/tests/controlStructures/kt786.jet index 665af148d31..e82c47aa5fc 100644 --- a/compiler/testData/diagnostics/tests/controlStructures/kt786.jet +++ b/compiler/testData/diagnostics/tests/controlStructures/kt786.jet @@ -1,13 +1,13 @@ -namespace kt786 +package kt786 //KT-786 Exception on incomplete code with 'when' fun foo() : Int { val d = 2 var z = 0 when(d) { - is 5, is 3 => <!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY, UNUSED_CHANGED_VALUE!>z++<!> - <!ELSE_MISPLACED_IN_WHEN!>else => { <!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>z = <!UNUSED_VALUE!>-1000<!><!> }<!> - return z => <!UNREACHABLE_CODE!>34<!> + is 5, is 3 -> <!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY, UNUSED_CHANGED_VALUE!>z++<!> + <!ELSE_MISPLACED_IN_WHEN!>else -> { <!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>z = <!UNUSED_VALUE!>-1000<!><!> }<!> + return z -> <!UNREACHABLE_CODE!>34<!> } } @@ -15,10 +15,10 @@ fun foo() : Int { fun fff(): Int { var d = 3 when(d) { - is 4 => 21 - return 2 => <!UNREACHABLE_CODE!>return 47<!> - <!UNREACHABLE_CODE!>bar()<!> => <!UNREACHABLE_CODE!>45<!> - <!UNREACHABLE_CODE!>444<!> => <!UNREACHABLE_CODE!>true<!> + is 4 -> 21 + return 2 -> <!UNREACHABLE_CODE!>return 47<!> + <!UNREACHABLE_CODE!>bar()<!> -> <!UNREACHABLE_CODE!>45<!> + <!UNREACHABLE_CODE!>444<!> -> <!UNREACHABLE_CODE!>true<!> } return 34 } diff --git a/compiler/testData/diagnostics/tests/infos/Autocasts.jet b/compiler/testData/diagnostics/tests/infos/Autocasts.jet index 38a9005de0b..a869d644ed6 100644 --- a/compiler/testData/diagnostics/tests/infos/Autocasts.jet +++ b/compiler/testData/diagnostics/tests/infos/Autocasts.jet @@ -20,7 +20,7 @@ fun f9(init : A?) { a?.<!UNRESOLVED_REFERENCE!>bar<!>() a?.foo() } - if (!(a is B) || a.bar() == ()) { + if (!(a is B) || a.bar() == #()) { a?.<!UNRESOLVED_REFERENCE!>bar<!>() } if (!(a is B)) { @@ -54,24 +54,24 @@ fun f101(a : A?) { fun f11(a : A?) { when (a) { - is B => a.bar() - is A => a.foo() - is Any => a.foo() - is Any? => a.<!UNRESOLVED_REFERENCE!>bar<!>() - else => a?.foo() + is B -> a.bar() + is A -> a.foo() + is Any -> a.foo() + is Any? -> a.<!UNRESOLVED_REFERENCE!>bar<!>() + else -> a?.foo() } } fun f12(a : A?) { when (a) { - is B => a.bar() - is A => a.foo() - is Any => a.foo(); - is Any? => a.<!UNRESOLVED_REFERENCE!>bar<!>() - is val c : <!TYPE_MISMATCH_IN_BINDING_PATTERN!>B<!> => c.foo() - is val c is C => c.bar() - is val c is C => a.bar() - else => a?.foo() + is B -> a.bar() + is A -> a.foo() + is Any -> a.foo(); + is Any? -> a.<!UNRESOLVED_REFERENCE!>bar<!>() + is val c : <!TYPE_MISMATCH_IN_BINDING_PATTERN!>B<!> -> c.foo() + is val c is C -> c.bar() + is val c is C -> a.bar() + else -> a?.foo() } if (a is val b) { @@ -106,7 +106,7 @@ fun f13(a : A?) { } a?.foo() - if (a is val c is B && a.foo() == () && c.bar() == ()) { + if (a is val c is B && a.foo() == #() && c.bar() == #()) { c.foo() c.bar() } @@ -154,18 +154,18 @@ fun getStringLength(obj : Any) : Char? { fun toInt(i: Int?): Int = if (i != null) i else 0 fun illegalWhenBody(a: Any): Int = when(a) { - is Int => a - is String => <!TYPE_MISMATCH!>a<!> + is Int -> a + is String -> <!TYPE_MISMATCH!>a<!> } fun illegalWhenBlock(a: Any): Int { when(a) { - is Int => return a - is String => return <!TYPE_MISMATCH!>a<!> + is Int -> return a + is String -> return <!TYPE_MISMATCH!>a<!> } } fun declarations(a: Any?) { if (a is String) { - val <!UNUSED_VARIABLE!>p4<!>: (Int, String) = (2, a) + val <!UNUSED_VARIABLE!>p4<!>: #(Int, String) = #(2, a) } if (a is String?) { if (a != null) { @@ -186,21 +186,21 @@ fun vars(a: Any?) { } fun tuples(a: Any?) { if (a != null) { - val <!UNUSED_VARIABLE!>s<!>: (Any, String) = (a, <!TYPE_MISMATCH!>a<!>) + val <!UNUSED_VARIABLE!>s<!>: #(Any, String) = #(a, <!TYPE_MISMATCH!>a<!>) } if (a is String) { - val <!UNUSED_VARIABLE!>s<!>: (Any, String) = (a, a) + val <!UNUSED_VARIABLE!>s<!>: #(Any, String) = #(a, a) } - fun illegalTupleReturnType(): (Any, String) = (<!TYPE_MISMATCH!>a<!>, <!TYPE_MISMATCH!>a<!>) + fun illegalTupleReturnType(): #(Any, String) = #(<!TYPE_MISMATCH!>a<!>, <!TYPE_MISMATCH!>a<!>) if (a is String) { - fun legalTupleReturnType(): (Any, String) = (a, a) + fun legalTupleReturnType(): #(Any, String) = #(a, a) } val <!UNUSED_VARIABLE!>illegalFunctionLiteral<!>: Function0<Int> = <!TYPE_MISMATCH!>{ <!TYPE_MISMATCH!>a<!> }<!> - val <!UNUSED_VARIABLE!>illegalReturnValueInFunctionLiteral<!>: Function0<Int> = { (): Int => <!TYPE_MISMATCH!>a<!> } + val <!UNUSED_VARIABLE!>illegalReturnValueInFunctionLiteral<!>: Function0<Int> = { (): Int -> <!TYPE_MISMATCH!>a<!> } if (a is Int) { val <!UNUSED_VARIABLE!>legalFunctionLiteral<!>: Function0<Int> = { a } - val <!UNUSED_VARIABLE!>alsoLegalFunctionLiteral<!>: Function0<Int> = { (): Int => a } + val <!UNUSED_VARIABLE!>alsoLegalFunctionLiteral<!>: Function0<Int> = { (): Int -> a } } } fun returnFunctionLiteralBlock(a: Any?): Function0<Int> { @@ -208,12 +208,12 @@ fun returnFunctionLiteralBlock(a: Any?): Function0<Int> { else return { 1 } } fun returnFunctionLiteral(a: Any?): Function0<Int> = - if (a is Int) { (): Int => a } - else { () => 1 } + if (a is Int) { (): Int -> a } + else { () -> 1 } -fun illegalTupleReturnType(a: Any): (Any, String) = (a, <!TYPE_MISMATCH!>a<!>) +fun illegalTupleReturnType(a: Any): #(Any, String) = #(a, <!TYPE_MISMATCH!>a<!>) -fun declarationInsidePattern(x: (Any, Any)): String = when(x) { is (val a is String, *) => a; else => "something" } +fun declarationInsidePattern(x: #(Any, Any)): String = when(x) { is #(val a is String, *) -> a; else -> "something" } fun mergeAutocasts(a: Any?) { if (a is String || a is Int) { @@ -224,7 +224,7 @@ fun mergeAutocasts(a: Any?) { a.<!UNRESOLVED_REFERENCE!>compareTo<!>("") } when (a) { - is String, is Any => a.<!UNRESOLVED_REFERENCE!>compareTo<!>("") + is String, is Any -> a.<!UNRESOLVED_REFERENCE!>compareTo<!>("") } if (a is String && a is Any) { val <!UNUSED_VARIABLE!>i<!>: Int = a.compareTo("") diff --git a/compiler/testData/diagnostics/tests/nullabilityAndAutoCasts/kt244.jet b/compiler/testData/diagnostics/tests/nullabilityAndAutoCasts/kt244.jet index 3fdb3fc0a75..3e19f906169 100644 --- a/compiler/testData/diagnostics/tests/nullabilityAndAutoCasts/kt244.jet +++ b/compiler/testData/diagnostics/tests/nullabilityAndAutoCasts/kt244.jet @@ -1,4 +1,4 @@ -namespace kt244 +package kt244 //+JDK diff --git a/compiler/testData/diagnostics/tests/nullabilityAndAutoCasts/kt362.jet b/compiler/testData/diagnostics/tests/nullabilityAndAutoCasts/kt362.jet index 5fd5f72bfb1..a934b77d046 100644 --- a/compiler/testData/diagnostics/tests/nullabilityAndAutoCasts/kt362.jet +++ b/compiler/testData/diagnostics/tests/nullabilityAndAutoCasts/kt362.jet @@ -1,7 +1,7 @@ // KT-362 Don't allow autocasts on vals that are not internal -namespace example; +package example; -namespace test { +package test { public class Public() { public val public : Int? = 1; protected val protected : Int? = 1; diff --git a/compiler/testData/diagnostics/tests/regressions/AmbiguityOnLazyTypeComputation.jet b/compiler/testData/diagnostics/tests/regressions/AmbiguityOnLazyTypeComputation.jet index cdced141c6a..0f387418f9d 100644 --- a/compiler/testData/diagnostics/tests/regressions/AmbiguityOnLazyTypeComputation.jet +++ b/compiler/testData/diagnostics/tests/regressions/AmbiguityOnLazyTypeComputation.jet @@ -1,7 +1,7 @@ // One of the two passes is making a scope and turning vals into functions // See KT-76 -namespace x +package x val b : Foo = Foo() val a1 = b.compareTo(2) diff --git a/compiler/testData/diagnostics/tests/regressions/CoercionToUnit.jet b/compiler/testData/diagnostics/tests/regressions/CoercionToUnit.jet index 765036145b7..3fbbafe7fa4 100644 --- a/compiler/testData/diagnostics/tests/regressions/CoercionToUnit.jet +++ b/compiler/testData/diagnostics/tests/regressions/CoercionToUnit.jet @@ -2,7 +2,7 @@ fun foo(<!UNUSED_PARAMETER!>u<!> : Unit) : Int = 1 fun test() : Int { foo(<!TYPE_MISMATCH!>1<!>) - val <!UNUSED_VARIABLE!>a<!> : fun() : Unit = { + val <!UNUSED_VARIABLE!>a<!> : () -> Unit = { foo(<!TYPE_MISMATCH!>1<!>) } return 1 diff --git a/compiler/testData/diagnostics/tests/regressions/Jet121.jet b/compiler/testData/diagnostics/tests/regressions/Jet121.jet index fc29dfe5293..4dda2b95c51 100644 --- a/compiler/testData/diagnostics/tests/regressions/Jet121.jet +++ b/compiler/testData/diagnostics/tests/regressions/Jet121.jet @@ -1,6 +1,6 @@ -namespace jet121 { +package jet121 { fun box() : String { - val answer = apply("OK") { String.() : Int => + val answer = apply("OK") { String.() : Int -> get(0) length } @@ -8,7 +8,7 @@ namespace jet121 { return if (answer == 2) "OK" else "FAIL" } - fun apply(arg:String, f : fun String.() : Int) : Int { + fun apply(arg:String, f : String.() -> Int) : Int { return arg.f() } } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/regressions/Jet124.jet b/compiler/testData/diagnostics/tests/regressions/Jet124.jet index 317b1438f41..5e8088b3e08 100644 --- a/compiler/testData/diagnostics/tests/regressions/Jet124.jet +++ b/compiler/testData/diagnostics/tests/regressions/Jet124.jet @@ -1,8 +1,8 @@ -fun foo1() : fun (Int) : Int = { (x: Int) => x } +fun foo1() : (Int) -> Int = { (x: Int) -> x } fun foo() { - val h : fun (Int) : Int = foo1(); + val h : (Int) -> Int = foo1(); h(1) - val m : fun (Int) : Int = {(a : Int) => 1}//foo1() + val m : (Int) -> Int = {(a : Int) -> 1}//foo1() m(1) } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/regressions/Jet169.jet b/compiler/testData/diagnostics/tests/regressions/Jet169.jet index c0196a2543d..8c28c04b4c3 100644 --- a/compiler/testData/diagnostics/tests/regressions/Jet169.jet +++ b/compiler/testData/diagnostics/tests/regressions/Jet169.jet @@ -1,8 +1,8 @@ fun set(<!UNUSED_PARAMETER!>key<!> : String, <!UNUSED_PARAMETER!>value<!> : String) { val a : String? = "" when (a) { - "" => a<!UNSAFE_CALL!>.<!>get(0) - is String, is Any => a.compareTo("") - else => a.toString() + "" -> a<!UNSAFE_CALL!>.<!>get(0) + is String, is Any -> a.compareTo("") + else -> a.toString() } } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/regressions/UnavaliableQualifiedThis.jet b/compiler/testData/diagnostics/tests/regressions/UnavaliableQualifiedThis.jet index 301ded436a1..06f60005347 100644 --- a/compiler/testData/diagnostics/tests/regressions/UnavaliableQualifiedThis.jet +++ b/compiler/testData/diagnostics/tests/regressions/UnavaliableQualifiedThis.jet @@ -2,7 +2,7 @@ trait Iterator<out T> { fun next() : T val hasNext : Boolean - fun <R> map(transform: fun(element: T) : R) : Iterator<R> = + fun <R> map(transform: (element: T) -> R) : Iterator<R> = object : Iterator<R> { override fun next() : R = transform(<!NO_THIS!>this@map<!>.next()) diff --git a/compiler/testData/diagnostics/tests/regressions/kt128.jet b/compiler/testData/diagnostics/tests/regressions/kt128.jet index ca9b223cd02..f136de1a55a 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt128.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt128.jet @@ -1,6 +1,6 @@ // KT-128 Support passing only the last closure if all the other parameters have default values -fun div(<!UNUSED_PARAMETER!>c<!> : String = "", <!UNUSED_PARAMETER!>f<!> : fun()) {} +fun div(<!UNUSED_PARAMETER!>c<!> : String = "", <!UNUSED_PARAMETER!>f<!> : () -> Unit) {} fun f() { div { // Nothing passed, but could have been... // ... diff --git a/compiler/testData/diagnostics/tests/regressions/kt235.jet b/compiler/testData/diagnostics/tests/regressions/kt235.jet index 0f0c33183a5..0fd87b03479 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt235.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt235.jet @@ -1,36 +1,36 @@ //KT-235 Illegal assignment return type // +JDK -namespace kt235 +package kt235 fun main(args: Array<String>) { val array = MyArray() - val <!UNUSED_VARIABLE!>f<!> = { (): String => + val <!UNUSED_VARIABLE!>f<!> = { (): String -> <!EXPECTED_TYPE_MISMATCH!>array[2] = 23<!> //error: Type mismatch: inferred type is Int (!!!) but String was expected } - val <!UNUSED_VARIABLE!>g<!> = {(): String => + val <!UNUSED_VARIABLE!>g<!> = {(): String -> var x = 1 <!EXPECTED_TYPE_MISMATCH!>x += 2<!> //no error, but it should be here } - val <!UNUSED_VARIABLE!>h<!> = {(): String => + val <!UNUSED_VARIABLE!>h<!> = {(): String -> var x = 1 <!EXPECTED_TYPE_MISMATCH!>x = 2<!> //the same } val array1 = MyArray1() - val <!UNUSED_VARIABLE!>i<!> = { (): String => + val <!UNUSED_VARIABLE!>i<!> = { (): String -> <!EXPECTED_TYPE_MISMATCH!>array1[2] = 23<!> } - val <!UNUSED_VARIABLE!>fi<!> = { (): Int => + val <!UNUSED_VARIABLE!>fi<!> = { (): Int -> <!ASSIGNMENT_TYPE_MISMATCH!>array[2] = 23<!> } - val <!UNUSED_VARIABLE!>gi<!> = {(): Int => + val <!UNUSED_VARIABLE!>gi<!> = {(): Int -> var x = 1 <!ASSIGNMENT_TYPE_MISMATCH!>x += 21<!> } var m: MyNumber = MyNumber() - val <!UNUSED_VARIABLE!>a<!> = { (): MyNumber => + val <!UNUSED_VARIABLE!>a<!> = { (): MyNumber -> <!UNUSED_CHANGED_VALUE!>m++<!> } } diff --git a/compiler/testData/diagnostics/tests/regressions/kt26-1.jet b/compiler/testData/diagnostics/tests/regressions/kt26-1.jet index ff27f3515f3..d749ca77a99 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt26-1.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt26-1.jet @@ -1,7 +1,7 @@ // KT-26 Import namespaces defined in this file -namespace foo { +package foo { import bar.* // Must not be an error } -namespace bar {} \ No newline at end of file +package bar {} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/regressions/kt26.jet b/compiler/testData/diagnostics/tests/regressions/kt26.jet index f79b7a901f8..816545f24b4 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt26.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt26.jet @@ -2,7 +2,7 @@ import html.* // Must not be an error -namespace html { +package html { abstract class Factory<T> { fun create() : T? = null diff --git a/compiler/testData/diagnostics/tests/regressions/kt302.jet b/compiler/testData/diagnostics/tests/regressions/kt302.jet index df3d68e0d55..25fe84153e2 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt302.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt302.jet @@ -1,6 +1,6 @@ // KT-302 Report an error when inheriting many implementations of the same member -namespace kt302 +package kt302 trait A { open fun foo() {} diff --git a/compiler/testData/diagnostics/tests/regressions/kt306.jet b/compiler/testData/diagnostics/tests/regressions/kt306.jet index 4356fe5e10c..b78f2902f9d 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt306.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt306.jet @@ -1,14 +1,14 @@ // KT-306 Ambiguity when different this's have same-looking functions fun test() { - {Foo.() => + {Foo.() -> bar() - {Barr.() => + {Barr.() -> this.bar() bar() } } - {Barr.() => + {Barr.() -> bar() } } diff --git a/compiler/testData/diagnostics/tests/regressions/kt328.jet b/compiler/testData/diagnostics/tests/regressions/kt328.jet index 79ac13f9e0d..f396b3f67e1 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt328.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt328.jet @@ -21,7 +21,7 @@ val x = { <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>x<!> } val z = <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>z<!> //KT-329 Assertion failure on local function -fun block(f : fun() : Unit) = f() +fun block(f : () -> Unit) = f() fun bar3() = block{ <!UNRESOLVED_REFERENCE!>foo3<!>() // <-- missing closing curly bracket fun foo3() = block{ <!TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM!>bar3()<!> }<!SYNTAX!><!> diff --git a/compiler/testData/diagnostics/tests/regressions/kt352.jet b/compiler/testData/diagnostics/tests/regressions/kt352.jet index 74f9ddecdb0..52eb5122d37 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt352.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt352.jet @@ -1,26 +1,26 @@ //KT-352 Function variable declaration type isn't checked inside a function body -namespace kt352 +package kt352 -val f : fun(Any) : Unit = <!TYPE_MISMATCH!>{ () : Unit => }<!> //type mismatch +val f : (Any) -> Unit = <!TYPE_MISMATCH!>{ () : Unit -> }<!> //type mismatch fun foo() { - val <!UNUSED_VARIABLE!>f<!> : fun(Any) : Unit = <!TYPE_MISMATCH!>{ () : Unit => }<!> //!!! no error + val <!UNUSED_VARIABLE!>f<!> : (Any) -> Unit = <!TYPE_MISMATCH!>{ () : Unit -> }<!> //!!! no error } class A() { - val f : fun(Any) : Unit = <!TYPE_MISMATCH!>{ () : Unit => }<!> //type mismatch + val f : (Any) -> Unit = <!TYPE_MISMATCH!>{ () : Unit -> }<!> //type mismatch } //more tests -val g : fun() : Unit = <!TYPE_MISMATCH!>{ (): Int => 42 }<!> +val g : () -> Unit = <!TYPE_MISMATCH!>{ (): Int -> 42 }<!> -val h : fun() : Unit = { doSmth() } +val h : () -> Unit = { doSmth() } fun doSmth(): Int = 42 fun doSmth(<!UNUSED_PARAMETER!>a<!>: String) {} -val testIt : fun(Any) : Unit = { +val testIt : (Any) -> Unit = { if (it is String) { doSmth(it) } diff --git a/compiler/testData/diagnostics/tests/regressions/kt353.jet b/compiler/testData/diagnostics/tests/regressions/kt353.jet index bc2a4f6df2f..5194b492db7 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt353.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt353.jet @@ -5,7 +5,7 @@ trait A { } fun foo(a: A) { - val <!UNUSED_VARIABLE!>g<!> : fun() : Unit = { + val <!UNUSED_VARIABLE!>g<!> : () -> Unit = { a.gen() //it works: Unit is derived } @@ -15,16 +15,16 @@ fun foo(a: A) { a.<!TYPE_INFERENCE_FAILED!>gen()<!> // Shouldn't work: no info for inference } - val <!UNUSED_VARIABLE!>b<!> : fun() : Unit = { + val <!UNUSED_VARIABLE!>b<!> : () -> Unit = { if (true) { a.gen() // unit can be inferred } else { - () + #() } } - val <!UNUSED_VARIABLE!>f<!> : fun() : Int = { () : Int => + val <!UNUSED_VARIABLE!>f<!> : () -> Int = { () : Int -> a.gen() //type mismatch, but Int can be derived } diff --git a/compiler/testData/diagnostics/tests/regressions/kt385.109.441.jet b/compiler/testData/diagnostics/tests/regressions/kt385.109.441.jet index 9dcac990807..d87d244f290 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt385.109.441.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt385.109.441.jet @@ -5,29 +5,29 @@ import java.util.* -fun <T> Iterator<T>.foreach(operation: fun(element: T) : Unit) : Unit = while(hasNext) operation(next()) +fun <T> Iterator<T>.foreach(operation: (element: T) -> Unit) : Unit = while(hasNext) operation(next()) -fun <T> Iterator<T>.foreach(operation: fun(index: Int, element: T) : Unit) : Unit { +fun <T> Iterator<T>.foreach(operation: (index: Int, element: T) -> Unit) : Unit { var k = 0 while(hasNext) operation(k++, next()) } -fun <T> Iterable<T>.foreach(operation: fun(element: T) : Unit) : Unit = iterator() foreach operation +fun <T> Iterable<T>.foreach(operation: (element: T) -> Unit) : Unit = iterator() foreach operation -fun <T> Iterable<T>.foreach(operation: fun(index: Int, element: T) : Unit) : Unit = iterator() foreach operation +fun <T> Iterable<T>.foreach(operation: (index: Int, element: T) -> Unit) : Unit = iterator() foreach operation fun box() : String { - return generic_invoker( { () : String => "OK"} ) + return generic_invoker( { () : String -> "OK"} ) } -fun <T> generic_invoker(gen : fun () : T) : T { +fun <T> generic_invoker(gen : () -> T) : T { return gen() } fun println(message : Int) { System.out?.println(message) } fun println(message : Long) { System.out?.println(message) } -inline fun run<T>(body : fun() : T) : T = body() +inline fun run<T>(body : () -> T) : T = body() fun main(args : Array<String>) { diff --git a/compiler/testData/diagnostics/tests/regressions/kt398.jet b/compiler/testData/diagnostics/tests/regressions/kt398.jet index 1babedaf8f4..7607d58dece 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt398.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt398.jet @@ -1,7 +1,7 @@ // KT-398 Internal error when property initializes with function class X<T>() { - val check = { (a : Any) => a is T } + val check = { (a : Any) -> a is T } } fun box() : String { diff --git a/compiler/testData/diagnostics/tests/regressions/kt399.jet b/compiler/testData/diagnostics/tests/regressions/kt399.jet index 3c52df4cc6e..ce92c6e50b4 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt399.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt399.jet @@ -1,7 +1,7 @@ // KT-399 Type argument inference not implemented for CALL_EXPRESSION fun <T> getSameTypeChecker(<!UNUSED_PARAMETER!>obj<!>: T) : Function1<Any,Boolean> { - return { (a : Any) => a is T } + return { (a : Any) -> a is T } } fun box() : String { diff --git a/compiler/testData/diagnostics/tests/regressions/kt402.jet b/compiler/testData/diagnostics/tests/regressions/kt402.jet index 7df59b2aa2f..a1e70b417f2 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt402.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt402.jet @@ -1,8 +1,8 @@ -namespace kt402 +package kt402 -fun getTypeChecker() : fun(Any):Boolean { - <!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>{ (a : Any) => a is <!UNRESOLVED_REFERENCE!>T<!> }<!> // reports unsupported +fun getTypeChecker() : (Any)->Boolean { + <!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>{ (a : Any) -> a is <!UNRESOLVED_REFERENCE!>T<!> }<!> // reports unsupported } -fun f() : fun(Any) : Boolean { - return { (a : Any) => a is String } +fun f() : (Any) -> Boolean { + return { (a : Any) -> a is String } } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/regressions/kt41.jet b/compiler/testData/diagnostics/tests/regressions/kt41.jet index 84ec9616fae..91e93881f06 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt41.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt41.jet @@ -1,6 +1,6 @@ // KT-41 Make functions with errors in returning statement return ERROR type and not Nothing -namespace kt41 +package kt41 fun aaa() = 6 <!UNRESOLVED_REFERENCE!>foo<!> 1 diff --git a/compiler/testData/diagnostics/tests/regressions/kt411.jet b/compiler/testData/diagnostics/tests/regressions/kt411.jet index 0828b9a4efd..1397f9092f2 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt411.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt411.jet @@ -1,6 +1,6 @@ //kt-411 Wrong type expected when returning from a function literal -namespace kt411 +package kt411 fun f() { invoker( @@ -9,17 +9,17 @@ fun f() { } ) } -fun invoker(<!UNUSED_PARAMETER!>gen<!> : fun() : Int) : Int = 0 +fun invoker(<!UNUSED_PARAMETER!>gen<!> : () -> Int) : Int = 0 //more tests fun t1() { - val <!UNUSED_VARIABLE!>v<!> = @{ () : Int => + val <!UNUSED_VARIABLE!>v<!> = @{ () : Int -> return@ 111 } } fun t2() : String { - val <!UNUSED_VARIABLE!>g<!> : fun(): Int = @{ + val <!UNUSED_VARIABLE!>g<!> : ()-> Int = @{ if (true) { return@ 1 } @@ -41,7 +41,7 @@ fun t3() : String { } ) invoker( - @{ (): Int => + @{ (): Int -> return@ 1 } ) @@ -54,10 +54,10 @@ fun t3() : String { } fun t4() : Int { - val <!UNUSED_VARIABLE!>h<!> : fun (): String = @l{ + val <!UNUSED_VARIABLE!>h<!> : ()-> String = @l{ return@l "a" } - val <!UNUSED_VARIABLE!>g<!> : fun (): String = @{ () : String => + val <!UNUSED_VARIABLE!>g<!> : ()-> String = @{ () : String -> return@ "a" } diff --git a/compiler/testData/diagnostics/tests/regressions/kt439.jet b/compiler/testData/diagnostics/tests/regressions/kt439.jet index 176e3280e18..49fd6e28082 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt439.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt439.jet @@ -1,6 +1,6 @@ // KT-439 Support labeled function literals in call arguments -inline fun run1<T>(body : fun() : T) : T = body() +inline fun run1<T>(body : () -> T) : T = body() fun main1(<!UNUSED_PARAMETER!>args<!> : Array<String>) { run1 @l{ 1 } // should not be an error diff --git a/compiler/testData/diagnostics/tests/regressions/kt442.jet b/compiler/testData/diagnostics/tests/regressions/kt442.jet index 0618918b14a..9b4e1c745d2 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt442.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt442.jet @@ -1,12 +1,12 @@ // KT-442 Type inference fails on with() -fun <T> funny(f : fun() : T) : T = f() +fun <T> funny(f : () -> T) : T = f() fun testFunny() { val <!UNUSED_VARIABLE!>a<!> : Int = funny {1} } -fun <T> funny2(<!UNUSED_PARAMETER!>f<!> : fun(t : T) : T) : T <!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>{}<!> +fun <T> funny2(<!UNUSED_PARAMETER!>f<!> : (t : T) -> T) : T <!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>{}<!> fun testFunny2() { val <!UNUSED_VARIABLE!>a<!> : Int = funny2 {it} @@ -16,11 +16,11 @@ fun box() : String { return generic_invoker { it } } -fun <T> generic_invoker(gen : fun (String) : T) : T { +fun <T> generic_invoker(gen : (String) -> T) : T { return gen("") } -fun <T> T.with(f : fun T.()) { +fun <T> T.with(f : T.() -> Unit) { f() } diff --git a/compiler/testData/diagnostics/tests/regressions/kt455.jet b/compiler/testData/diagnostics/tests/regressions/kt455.jet index 0db1c1c4ae9..a30e73c4bff 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt455.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt455.jet @@ -1,6 +1,6 @@ //KT-455 Do not repeat errors in definite assignment checks -namespace kt455 +package kt455 fun foo() { val a: Int diff --git a/compiler/testData/diagnostics/tests/regressions/kt456.jet b/compiler/testData/diagnostics/tests/regressions/kt456.jet index d27eb2d3faa..8d67585ff38 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt456.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt456.jet @@ -1,6 +1,6 @@ //KT-456 No check for obligatory return in getters -namespace kt456 +package kt456 class A() { val i: Int diff --git a/compiler/testData/diagnostics/tests/regressions/kt469.jet b/compiler/testData/diagnostics/tests/regressions/kt469.jet index a9ff4c1d291..ee21f757324 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt469.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt469.jet @@ -1,6 +1,6 @@ // +JDK -namespace kt469 +package kt469 //KT-512 plusAssign() : Unit does not work properly import java.util.* diff --git a/compiler/testData/diagnostics/tests/regressions/kt524.jet b/compiler/testData/diagnostics/tests/regressions/kt524.jet index 9ffcd1f564a..f4da82809a4 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt524.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt524.jet @@ -1,7 +1,7 @@ // KT-524 sure() returns T // +JDK -namespace StringBuilder +package StringBuilder import java.lang.StringBuilder diff --git a/compiler/testData/diagnostics/tests/regressions/kt526UnresolvedReferenceInnerStatic.jet b/compiler/testData/diagnostics/tests/regressions/kt526UnresolvedReferenceInnerStatic.jet index b258404a6f6..65a0bccdbf4 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt526UnresolvedReferenceInnerStatic.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt526UnresolvedReferenceInnerStatic.jet @@ -1,7 +1,7 @@ // http://youtrack.jetbrains.net/issue/KT-526 // KT-526 Unresolved reference for inner static class -namespace demo +package demo class Foo { class object { diff --git a/compiler/testData/diagnostics/tests/regressions/kt549.jet b/compiler/testData/diagnostics/tests/regressions/kt549.jet index 5fc17be122b..2b3f087420f 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt549.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt549.jet @@ -1,9 +1,9 @@ //KT-549 type inference failed // +JDK -namespace demo +package demo - fun filter<T>(list : Array<T>, filter : fun (T) : Boolean) : java.util.List<T> { + fun filter<T>(list : Array<T>, filter : (T) -> Boolean) : java.util.List<T> { val answer = java.util.ArrayList<T>(); for (l in list) { if (filter(l)) answer.add(l) diff --git a/compiler/testData/diagnostics/tests/regressions/kt571.jet b/compiler/testData/diagnostics/tests/regressions/kt571.jet index 2333eb78644..9a6cfce30a6 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt571.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt571.jet @@ -1,3 +1,3 @@ //KT-571 Type inference failed -fun <T, R> let(t : T, body : fun(T) : R) = body(t) +fun <T, R> let(t : T, body : (T) -> R) = body(t) private fun double(d : Int) : Int = let(d * 2) {it / 10 + it * 2 % 10} diff --git a/compiler/testData/diagnostics/tests/regressions/kt575.jet b/compiler/testData/diagnostics/tests/regressions/kt575.jet index aaa84ac3c9f..6f796301ad7 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt575.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt575.jet @@ -1,6 +1,6 @@ // KT-575 Cannot ++ a class object member -namespace kt575 +package kt575 class Creature() { class object { diff --git a/compiler/testData/diagnostics/tests/regressions/kt58.jet b/compiler/testData/diagnostics/tests/regressions/kt58.jet index d6a0e64456f..7b7a7526755 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt58.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt58.jet @@ -1,11 +1,11 @@ //KT-58 Allow finally around definite returns // +JDK -namespace kt58 +package kt58 import java.util.concurrent.locks.Lock -fun lock<T>(lock : Lock, body : fun () : T) : T { +fun lock<T>(lock : Lock, body : () -> T) : T { lock.lock() try { return body() diff --git a/compiler/testData/diagnostics/tests/regressions/kt580.jet b/compiler/testData/diagnostics/tests/regressions/kt580.jet index c2d12ec6e93..8816e416104 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt580.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt580.jet @@ -1,7 +1,7 @@ //KT-580 Type inference failed // +JDK -namespace whats.the.difference +package whats.the.difference import java.util.* diff --git a/compiler/testData/diagnostics/tests/regressions/kt604.jet b/compiler/testData/diagnostics/tests/regressions/kt604.jet index 02f079e6900..de0926b0208 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt604.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt604.jet @@ -11,7 +11,7 @@ trait ChannelPipelineFactory{ fun getPipeline() : ChannelPipeline } -class StandardPipelineFactory(val config: fun ChannelPipeline.():Unit) : ChannelPipelineFactory { +class StandardPipelineFactory(val config: ChannelPipeline.()->Unit) : ChannelPipelineFactory { override fun getPipeline() : ChannelPipeline { val pipeline = DefaultChannelPipeline() pipeline.config () diff --git a/compiler/testData/diagnostics/tests/regressions/kt618.jet b/compiler/testData/diagnostics/tests/regressions/kt618.jet index f70f921730e..2ef9ef9d760 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt618.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt618.jet @@ -1,4 +1,4 @@ -namespace lol +package lol class B() { fun plusAssign(<!UNUSED_PARAMETER!>other<!> : B) : String { diff --git a/compiler/testData/diagnostics/tests/regressions/kt629.jet b/compiler/testData/diagnostics/tests/regressions/kt629.jet index f0c8780ad9a..8dd6bc71d81 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt629.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt629.jet @@ -1,6 +1,6 @@ //KT-629 Assignments are parsed as expressions. -namespace kt629 +package kt629 class A() { var p = "yeah" diff --git a/compiler/testData/diagnostics/tests/regressions/kt688.jet b/compiler/testData/diagnostics/tests/regressions/kt688.jet index 045dddc7d8f..7ff7a78081b 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt688.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt688.jet @@ -6,7 +6,7 @@ open class B() : A() { class C() { - fun a<T>(x: fun(T):T, y: T): T { + fun a<T>(x: (T)->T, y: T): T { return x(x(y)) } diff --git a/compiler/testData/diagnostics/tests/regressions/kt691.jet b/compiler/testData/diagnostics/tests/regressions/kt691.jet index e7194b099c9..649df9d3c90 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt691.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt691.jet @@ -1,2 +1,2 @@ // KT-691 Allow to create nested namespaces with dot delimiter -namespace foo.bar.buz \ No newline at end of file +package foo.bar.buz \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/regressions/kt743.jet b/compiler/testData/diagnostics/tests/regressions/kt743.jet index faecff09851..2988a573a65 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt743.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt743.jet @@ -2,5 +2,5 @@ // +JDK class List<T>(val head: T, val tail: List<T>? = null) -fun <T, Q> List<T>.map(f: fun(T): Q): List<T>? = tail.sure<List<T>>().map(f) +fun <T, Q> List<T>.map(f: (T)-> Q): List<T>? = tail.sure<List<T>>().map(f) fun foo<T>(t : T) : T = foo(t) \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/regressions/kt860.jet b/compiler/testData/diagnostics/tests/regressions/kt860.jet index d8acf4fad50..4f01757e730 100644 --- a/compiler/testData/diagnostics/tests/regressions/kt860.jet +++ b/compiler/testData/diagnostics/tests/regressions/kt860.jet @@ -1,7 +1,7 @@ // KT-860 ConcurrentModificationException in frontend // +JDK -namespace std.util +package std.util import java.util.* diff --git a/compiler/testData/diagnostics/tests/scopes/kt250.617.10.jet b/compiler/testData/diagnostics/tests/scopes/kt250.617.10.jet index 1b0a3c71177..a7c98104ac7 100644 --- a/compiler/testData/diagnostics/tests/scopes/kt250.617.10.jet +++ b/compiler/testData/diagnostics/tests/scopes/kt250.617.10.jet @@ -1,6 +1,6 @@ // +JDK -namespace kt_250_617_10 +package kt_250_617_10 import java.util.ArrayList import java.util.HashMap diff --git a/compiler/testData/diagnostics/tests/shadowing/ShadowPropertyInClosure.jet b/compiler/testData/diagnostics/tests/shadowing/ShadowPropertyInClosure.jet index c785e3f5fc7..00c0d038398 100644 --- a/compiler/testData/diagnostics/tests/shadowing/ShadowPropertyInClosure.jet +++ b/compiler/testData/diagnostics/tests/shadowing/ShadowPropertyInClosure.jet @@ -1,3 +1,3 @@ val i = 17 -val f = { (): Int => var i = 17; i } +val f = { (): Int -> var i = 17; i } diff --git a/compiler/testData/diagnostics/tests/shadowing/ShadowVariableInNestedClosure.jet b/compiler/testData/diagnostics/tests/shadowing/ShadowVariableInNestedClosure.jet index d9dd9110893..e448f74f8c9 100644 --- a/compiler/testData/diagnostics/tests/shadowing/ShadowVariableInNestedClosure.jet +++ b/compiler/testData/diagnostics/tests/shadowing/ShadowVariableInNestedClosure.jet @@ -1,5 +1,5 @@ fun f(): Int { var i = 17 - { (): Unit => var <!NAME_SHADOWING!>i<!> = 18 } + { (): Unit -> var <!NAME_SHADOWING!>i<!> = 18 } return i } diff --git a/compiler/testData/diagnostics/tests/shadowing/ShadowVariableInNestedClosureParam.jet b/compiler/testData/diagnostics/tests/shadowing/ShadowVariableInNestedClosureParam.jet index 6ba5fd4c919..d926e4bca41 100644 --- a/compiler/testData/diagnostics/tests/shadowing/ShadowVariableInNestedClosureParam.jet +++ b/compiler/testData/diagnostics/tests/shadowing/ShadowVariableInNestedClosureParam.jet @@ -1,5 +1,5 @@ fun ff(): Int { var i = 1 - { (i: Int) => i } + { (i: Int) -> i } return i } diff --git a/compiler/testData/psi/greatSyntacticShift/functionTypes.jet b/compiler/testData/psi/greatSyntacticShift/functionTypes.jet new file mode 100644 index 00000000000..4b51202a784 --- /dev/null +++ b/compiler/testData/psi/greatSyntacticShift/functionTypes.jet @@ -0,0 +1,51 @@ +class A { +} + +namespace n { + class B +} +abstract class XXX() { + abstract val a : Int + abstract val a1 : namespace.Int + abstract val a2 : n.B + abstract val a3 : (A) + abstract val a31 : (n.B) + abstract val a4 : A? + abstract val a5 : (A)? + abstract val a6 : (A?) + abstract val a7 : (A) -> n.B + abstract val a8 : (A, n.B) -> n.B + +//val a9 : (A, B) +//val a10 : (B)? -> B + + val a11 : ((Int) -> Int)? = null + val a12 : ((Int) -> (Int))? = null + abstract val a13 : Int.(Int) -> Int + abstract val a14 : n.B.(Int) -> Int + abstract val a15 : Int? .(Int) -> Int + abstract val a152 : (Int?).(Int) -> Int + abstract val a151 : Int?.(Int) -> Int + abstract val a16 : (Int) -> (Int) -> Int + abstract val a17 : ((Int) -> Int).(Int) -> Int + abstract val a18 : (Int) -> ((Int) -> Int) + abstract val a19 : ((Int) -> Int) -> Int +} + +abstract class YYY() { + abstract val a7 : (a : A) -> n.B + abstract val a8 : (a : A, b : n.B) -> n.B +//val a9 : (A, B) +//val a10 : (B)? -> B + val a11 : ((a : Int) -> Int)? = null + val a12 : ((a : Int) -> (Int))? = null + abstract val a13 : Int.(a : Int) -> Int + abstract val a14 : n.B.(a : Int) -> Int + abstract val a15 : Int? .(a : Int) -> Int + abstract val a152 : (Int?).(a : Int) -> Int +abstract val a151 : Int?.(a : Int) -> Int + abstract val a16 : (a : Int) -> (a : Int) -> Int + abstract val a17 : ((a : Int) -> Int).(a : Int) -> Int + abstract val a18 : (a : Int) -> ((a : Int) -> Int) + abstract val a19 : (b : (a : Int) -> Int) -> Int +} diff --git a/compiler/tests/org/jetbrains/jet/JetTestCaseBuilder.java b/compiler/tests/org/jetbrains/jet/JetTestCaseBuilder.java index ca7256763fb..deee0732f1b 100644 --- a/compiler/tests/org/jetbrains/jet/JetTestCaseBuilder.java +++ b/compiler/tests/org/jetbrains/jet/JetTestCaseBuilder.java @@ -48,7 +48,7 @@ public abstract class JetTestCaseBuilder { } public static void appendTestsInDirectory(String baseDataDir, String dataPath, boolean recursive, final FilenameFilter filter, NamedTestFactory factory, TestSuite suite) { - final String extensionJet = ".jet"; + final String extensionJet = ".jet.jet"; final String extensionKt = ".kt"; final FilenameFilter extensionFilter = new FilenameFilter() { @Override diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTest.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTest.java index 9cabe8bdd66..0660183d5ff 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTest.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTest.java @@ -85,7 +85,7 @@ public class JetDiagnosticsTest extends JetLiteFixture { @Override public void runTest() throws Exception { - String testFileName = name + ".jet"; + String testFileName = name + ".kt"; String expectedText = loadFile(testFileName); diff --git a/grammar/src/expressions.grm b/grammar/src/expressions.grm index 28f3de35070..2491b7120fa 100644 --- a/grammar/src/expressions.grm +++ b/grammar/src/expressions.grm @@ -6,7 +6,7 @@ bq. See [Expressions] h3. Precedence ||*Precedence*||Title||Symbols|| -|Highest|Postfix|{{\+\+}}, {{\-\-}}, {{#}}, {{.}}, {{?.}}, {{?}}| +|Highest|Postfix|{{\+\+}}, {{\-\-}}, {{.}}, {{?.}}, {{?}}| | |Prefix|{{-}}, {{\+}}, {{\+\+}}, {{\-\-}}, {{!}}, [{{@label}}|#LabelName], {{@}}, {{@@}} | | |Type RHS|{{:}}, {{as}}, {{as?}} | | |Multiplicative|{{*}}, {{/}}, {{%}} | @@ -19,7 +19,6 @@ h3. Precedence | |Equality|{{==}}, {{\!==}}| | |Conjunction|{{&&}}| | |Disjunction|{{\|\|}}| -| |Arrow|{{\->}}| |Lowest|Assignment|{{=}}, {{+=}}, {{-=}}, {{*=}}, {{/=}}, {{%=}}| h3. Rules @@ -41,17 +40,12 @@ Decreasing precedence: equalityOperation "&&" "||" - "->" assignmentOperator */ expression - : arrowTupleExpression (assignmentOperator arrowTupleExpression)? - ; - -arrowTupleExpression - : disjunction ("->" disjunction)* + : disjunction (assignmentOperator disjunction)* ; disjunction @@ -109,7 +103,7 @@ postfixUnaryExpression // !!! When you add here, remember to update the FIRST set in the parser atomicExpression - : "(" expression ")" // see tupleLiteral + : "(" expression ")" : literalConstant : functionLiteral : tupleLiteral @@ -230,7 +224,7 @@ callSuffix ; memberAccessOperation - : "." : "?." : "#" : "?" + : "." : "?." : "?" ; typeArguments @@ -249,17 +243,15 @@ jump // yield ? ; -// Ambiguity when after a SimpleName (infix call). In this case (e) is treated as an expression in parentheses -// to put a tuple, write write ((e)) tupleLiteral - : "(" (((SimpleName "=")? expression){","})? ")" + : "#" "(" (((SimpleName "=")? expression){","})? ")" ; // one can use "it" as a parameter name functionLiteral : "{" statements "}" - : "{" (modifiers SimpleName){","} "=>" statements "}" - : "{" (type ".")? "(" (modifiers SimpleName (":" type)?){","} ")" (":" type)? "=>" statements "}" + : "{" (modifiers SimpleName){","} "->" statements "}" + : "{" (type ".")? "(" (modifiers SimpleName (":" type)?){","} ")" (":" type)? "->" statements "}" ; statements diff --git a/grammar/src/types.grm b/grammar/src/types.grm index b92457e67ce..d198da53afb 100644 --- a/grammar/src/types.grm +++ b/grammar/src/types.grm @@ -7,11 +7,11 @@ bq. See [Types] /* Foo<Bar<X>, T, Object> // user type -{(A, Object) : Foo} // function type -{ () : Foo} // function with no arguments -(A, B, C) // tuple type -(a : A, b : B) // tuple type with named entries -() // 0-ary tuple type (Unit) +(A, Object) -> Foo // function type +() -> Foo // function with no arguments +#(A, B, C) // tuple type +#(a : A, b : B) // tuple type with named entries +#() // 0-ary tuple type (Unit) */ @@ -20,6 +20,7 @@ type // IF YOU CHANGE THIS, please, update TYPE_FIRST in JetParsing typeDescriptor + : "(" typeDescriptor ")" : selfType : functionType : userType @@ -47,12 +48,12 @@ optionalProjection ; functionType - : "fun" (type ".")? "(" (parameter | modifiers /*lazy out ref*/ type){","} ")" (":" type)? // Unit by default + : (type ".")? "(" (parameter | modifiers /*lazy out ref*/ type){","} ")" "->" type? ; tupleType - : "(" type{","}? ")" - : "(" parameter{","} ")" // tuple with named entries, the names do not affect assignment compatibility + : "#" "(" type{","}? ")" + : "#" "(" parameter{","} ")" // tuple with named entries, the names do not affect assignment compatibility ; //////////////////////////////////////// \ No newline at end of file diff --git a/grammar/src/when.grm b/grammar/src/when.grm index 864f1602161..ca814d499a2 100644 --- a/grammar/src/when.grm +++ b/grammar/src/when.grm @@ -36,7 +36,7 @@ pattern decomposerPattern : type // TODO : typeArguments will be consumed by the expression - : elvisExpression typeArguments? "@" tuplePattern + : elvisExpression typeArguments? tuplePattern ; constantPattern diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index 6fd690eba51..23022d47218 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -24,6 +24,11 @@ <keyboard-shortcut keymap="$default" first-keystroke="control alt shift T"/> <add-to-group group-id="CodeMenu" anchor="last"/> </action> + <action id="GreatSyntacticShift" class="org.jetbrains.jet.plugin.actions.ShiftAction" + text="GreatSyntacticShift"> + <!--<keyboard-shortcut keymap="$default" first-keystroke="control alt shift T"/>--> + <add-to-group group-id="CodeMenu" anchor="last"/> + </action> <action id="ToggleJetErrorReporting" class="org.jetbrains.jet.plugin.actions.ToggleErrorReportingAction" text="Toggle Error Reporting"> <keyboard-shortcut keymap="$default" first-keystroke="control alt shift E"/> diff --git a/idea/src/org/jetbrains/jet/plugin/actions/ShiftAction.java b/idea/src/org/jetbrains/jet/plugin/actions/ShiftAction.java new file mode 100644 index 00000000000..569694ddc53 --- /dev/null +++ b/idea/src/org/jetbrains/jet/plugin/actions/ShiftAction.java @@ -0,0 +1,352 @@ +package org.jetbrains.jet.plugin.actions; + +import com.google.common.collect.Lists; +import com.intellij.lang.ASTNode; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.actionSystem.PlatformDataKeys; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.TextRange; +import com.intellij.openapi.util.io.FileUtil; +import com.intellij.psi.PsiFile; +import com.intellij.psi.tree.IElementType; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.checkers.CheckerTestUtil; +import org.jetbrains.jet.lang.diagnostics.Diagnostic; +import org.jetbrains.jet.lang.diagnostics.DiagnosticFactory; +import org.jetbrains.jet.lang.diagnostics.Severity; +import org.jetbrains.jet.lang.psi.*; + +import java.io.File; +import java.io.FileReader; +import java.util.Collection; +import java.util.List; + +import static org.jetbrains.jet.lexer.JetTokens.*; + +/** + * @author abreslav + */ +public class ShiftAction extends AnAction { + @Override + public void actionPerformed(AnActionEvent e) { + Editor editor = e.getData(PlatformDataKeys.EDITOR); + PsiFile psiFile = e.getData(LangDataKeys.PSI_FILE); + assert editor != null && psiFile != null; + +// BindingContext bindingContext = WholeProjectAnalyzerFacade.analyzeProjectWithCacheOnAFile((JetFile) psiFile); +// List<TextRange> syntaxError = AnalyzingUtils.getSyntaxErrorRanges(psiFile); +// +// String result = CheckerTestUtil.addDiagnosticMarkersToText(psiFile, bindingContext, syntaxError).toString(); +// +// Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); +// clipboard.setContents(new StringSelection(result), new ClipboardOwner() { +// @Override +// public void lostOwnership(Clipboard clipboard, Transferable contents) {} +// }); +// final JetFile file = JetPsiFactory.createFile(psiFile.getProject(), "namespace foo\nclass A"); + Project project = psiFile.getProject(); + + File rootDir = new File("/Users/abreslav/work/jet-clean/compiler/testData/diagnostics/tests"); + assert rootDir.exists() : "Root dir does not exist"; + + System.out.println("Shift started"); + transformDir(project, rootDir); + System.out.println("Shift done"); + } + + private void transformDir(Project project, File rootDir) { + assert rootDir.isDirectory(); + println("----------------------------------------------"); + println("Directory: ", rootDir.getAbsolutePath()); + println("----------------------------------------------"); + for (final File file : rootDir.listFiles()) { + if (file.getName().endsWith(".kt") || file.getName().endsWith(".jet.jet")) { + file.delete(); + } + } + + for (File file : rootDir.listFiles()) { + if (file.isDirectory()) continue; + if (!file.getName().endsWith(".jet")) continue; + transformFile(project, file); + } + for (File file : rootDir.listFiles()) { + if (!file.isDirectory()) continue; + transformDir(project, file); + } + println("----------------------------------------------"); + println("----------------------------------------------"); + println("----------------------------------------------"); + } + + private static void transformFile(Project project, File file) { + println("File name: ", file.getAbsolutePath()); + println("=============================================================="); + System.out.flush(); + try { + String text = FileUtil.loadTextAndClose(new FileReader(file)); + List<CheckerTestUtil.DiagnosedRange> result = Lists.newArrayList(); + + String clearText = CheckerTestUtil.parseDiagnosedRanges(text, result); + + final JetFile jetFile = JetPsiFactory.createFile(project, clearText); + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + convert(jetFile); + } + }); + Collection<Diagnostic> diagnostics = Lists.newArrayList(); + + for (CheckerTestUtil.DiagnosedRange diagnosedRange : result) { + for (String message : diagnosedRange.getDiagnostics()) { + diagnostics.add(new MyDiagnostic(message, new MyDF(message), new TextRange(diagnosedRange.getStart(), diagnosedRange.getEnd()), jetFile)); + } + } + + String textWithDiagnosticsBack = CheckerTestUtil.addDiagnosticMarkersToText(jetFile, diagnostics).toString(); + StringBuilder finalText = new StringBuilder(); + for (int i = 0; i < textWithDiagnosticsBack.length(); i++) { + char c = textWithDiagnosticsBack.charAt(i); + switch (c) { + case 'Я': + break; + case 'Ц': + finalText.append("->"); + break; + case 'Щ': + finalText.append("#("); + break; + case 'Ф': + if ("ФАН".equals(textWithDiagnosticsBack.substring(i, i + 3))) { + i += 2; + while (i < textWithDiagnosticsBack.length() && textWithDiagnosticsBack.charAt(i) == ' ') { + i++; + } + } + break; + default: + finalText.append(c); + } + } + File newFile = new File(file.getAbsoluteFile().getParent(), file.getName() + ".kt"); + FileUtil.writeToFile(newFile, finalText.toString()); + String message = "newFile = " + newFile; + println(message); + } catch (Throwable e1) { + System.err.println(file.getAbsolutePath()); + e1.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. + System.err.flush(); + } + println("=============================================================="); + } + + private static void convert(JetFile file) { + file.getRootNamespace().accept(new JetTreeVisitor<Void>() { + + private void replaceWithLeaf(@NotNull ASTNode toReplace, IElementType type, String text) { + ASTNode treeNext = toReplace.getTreeNext(); + ASTNode treeParent = toReplace.getTreeParent(); + treeParent.removeChild(toReplace); + treeParent.addLeaf(type, text, treeNext); + } + + // namespace -> package + @Override + public Void visitNamespace(JetNamespace namespace, Void data) { + ASTNode namespaceNode = namespace.getHeader().getNode(); + ASTNode token = namespaceNode.findChildByType(NAMESPACE_KEYWORD); + if (token != null) { +// ASTNode packageKeyword = JetPsiFactory.createFile(namespace.getProject(), "package foo").getRootNamespace().getHeader().getNode().findChildByType(NAMESPACE_KEYWORD); + replaceWithLeaf(token, NAMESPACE_KEYWORD, "packageЯЯ"); + } + return super.visitNamespace(namespace, data); + } + + // function types + @Override + public Void visitFunctionType(JetFunctionType type, Void data) { + ASTNode node = type.getNode(); + ASTNode funToken = node.findChildByType(FUN_KEYWORD); + replaceWithLeaf(funToken, WHITE_SPACE, "ФАН"); + +// node.removeChild(funToken); + ASTNode colonToken = node.findChildByType(COLON); + if (colonToken != null) { +// JetBinaryExpression arrowExpression = (JetBinaryExpression) JetPsiFactory.createExpression(type.getProject(), "a -> b"); +// ASTNode childByType = arrowExpression.getOperationReference().getNode().findChildByType(JetTokens.ARROW); + replaceWithLeaf(colonToken, WHITE_SPACE, "Ц"); // arrow + } + return super.visitFunctionType(type, data); + } + + // function literals => ->>> -> + @Override + public Void visitFunctionLiteralExpression(JetFunctionLiteralExpression expression, Void data) { + ASTNode arrowNode = expression.getFunctionLiteral().getArrowNode(); + if (arrowNode != null) { + replaceWithLeaf(arrowNode, ARROW, "->"); + } + return super.visitFunctionLiteralExpression(expression, data); + } + + // when entry => ->>> -> + @Override + public Void visitWhenEntry(JetWhenEntry jetWhenEntry, Void data) { + ASTNode arrow = jetWhenEntry.getNode().findChildByType(DOUBLE_ARROW); + if (arrow == null) { + System.err.println(jetWhenEntry.getText()); + } + else { + replaceWithLeaf(arrow, ARROW, "->"); + } + return super.visitWhenEntry(jetWhenEntry, data); + } + + // tuple expressions #() + @Override + public Void visitTupleExpression(JetTupleExpression expression, Void data) { + replaceWithLeaf(expression.getNode().getFirstChildNode(), LPAR, "Щ"); // LPAR + return super.visitTupleExpression(expression, data); + } + + // typle types #() + @Override + public Void visitTupleType(JetTupleType type, Void data) { + replaceWithLeaf(type.getNode().getFirstChildNode(), LPAR, "Щ"); // LPAR + return super.visitTupleType(type, data); + } + + // tuple patterns #() + @Override + public Void visitTuplePattern(JetTuplePattern pattern, Void data) { + replaceWithLeaf(pattern.getNode().getFirstChildNode(), LPAR, "Щ"); // LPAR + return super.visitTuplePattern(pattern, data); + } + + // decomposer patterns remove '@' + @Override + public Void visitDecomposerPattern(JetDecomposerPattern pattern, Void data) { + replaceWithLeaf(pattern.getNode().findChildByType(AT), WHITE_SPACE, "Я"); // LPAR + return super.visitDecomposerPattern(pattern, data); + } + + + }, null); + } + + @Override + public void update(AnActionEvent e) { + Editor editor = e.getData(PlatformDataKeys.EDITOR); + PsiFile psiFile = e.getData(LangDataKeys.PSI_FILE); + e.getPresentation().setEnabled(editor != null && psiFile instanceof JetFile && ApplicationManager.getApplication().isInternal()); + } + + private static class MyDiagnostic implements Diagnostic { + + private final String message; + private final DiagnosticFactory factory; + private final TextRange range; + private final PsiFile file; + + private MyDiagnostic(String message, DiagnosticFactory factory, TextRange range, PsiFile file) { + this.message = message; + this.factory = factory; + this.range = range; + this.file = file; + } + + public PsiFile getFile() { + return file; + } + + @NotNull + @Override + public DiagnosticFactory getFactory() { + return factory; + } + + @NotNull + @Override + public String getMessage() { + return message; + } + + public TextRange getRange() { + return range; + } + + @NotNull + @Override + public Severity getSeverity() { + return Severity.ERROR; + } + } + + private static class MyDF implements DiagnosticFactory { + + private String name; + + private MyDF(String name) { + this.name = name; + } + + @NotNull + @Override + public TextRange getTextRange(@NotNull Diagnostic diagnostic) { + return ((MyDiagnostic) diagnostic).getRange(); + } + + @NotNull + @Override + public PsiFile getPsiFile(@NotNull Diagnostic diagnostic) { + return ((MyDiagnostic) diagnostic).getFile(); + } + + @NotNull + @Override + public String getName() { + return name; + } + } + + private static boolean printingOn() { + return false; +// return true; + } + + private static void print(Object message) { + if (printingOn()) { + System.out.print(message); + } + } + + private static void println() { + if (printingOn()) { + System.out.println(); + } + } + + private static void println(Object message) { + print(message); + println(); + } + + private static void println(Object message1, Object message2) { + print(message1.toString() + message2); + println(); + } + + private static void println(Object... message) { + for (Object m : message) { + print(m); + } + println(); + } + + +} diff --git a/shift/shift.iml b/shift/shift.iml new file mode 100644 index 00000000000..d4552b3374b --- /dev/null +++ b/shift/shift.iml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module type="JAVA_MODULE" version="4"> + <component name="NewModuleRootManager" inherit-compiler-output="true"> + <exclude-output /> + <content url="file://$MODULE_DIR$"> + <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" /> + </content> + <orderEntry type="jdk" jdkName="IDEA 10.x" jdkType="IDEA JDK" /> + <orderEntry type="sourceFolder" forTests="false" /> + <orderEntry type="module" module-name="frontend" /> + <orderEntry type="module" module-name="backend" /> + <orderEntry type="module" module-name="compiler-tests" /> + </component> +</module> + diff --git a/shift/src/org/jetbrains/jet/shift/NamespaceToPackage.java b/shift/src/org/jetbrains/jet/shift/NamespaceToPackage.java new file mode 100644 index 00000000000..a8cb46e5e83 --- /dev/null +++ b/shift/src/org/jetbrains/jet/shift/NamespaceToPackage.java @@ -0,0 +1,103 @@ +package org.jetbrains.jet.shift; + +import com.intellij.lang.ASTNode; +import com.intellij.openapi.Disposable; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.progress.impl.ProgressManagerImpl; +import com.intellij.pom.PomModel; +import com.intellij.pom.core.impl.PomModelImpl; +import org.jetbrains.jet.JetCoreEnvironment; +import org.jetbrains.jet.compiler.CompileEnvironment; +import org.jetbrains.jet.lang.psi.JetFile; +import org.jetbrains.jet.lang.psi.JetNamespace; +import org.jetbrains.jet.lang.psi.JetPsiFactory; +import org.jetbrains.jet.lang.psi.JetTreeVisitor; +import org.picocontainer.*; + +import javax.swing.*; +import java.lang.reflect.InvocationTargetException; + +import static org.jetbrains.jet.lexer.JetTokens.NAMESPACE_KEYWORD; + +/** + * @author abreslav + */ +public class NamespaceToPackage { + + public static void main(String[] args) throws InvocationTargetException, InterruptedException { + System.setProperty("java.awt.headless", "true"); + Disposable rootDisposable = new Disposable() { + @Override + public void dispose() { + } + }; + final JetCoreEnvironment environment = new JetCoreEnvironment(rootDisposable); + + MutablePicoContainer picoContainer = environment.getApplication().getPicoContainer(); + picoContainer.registerComponent(new ComponentAdapter() { + @Override + public Object getComponentKey() { + return "com.intellij.openapi.progress.ProgressManager"; + } + + @Override + public Class getComponentImplementation() { + return ProgressManagerImpl.class; + } + + @Override + public Object getComponentInstance(PicoContainer picoContainer) throws PicoInitializationException, PicoIntrospectionException { + return new ProgressManagerImpl(environment.getApplication()); + } + + @Override + public void verify(PicoContainer picoContainer) throws PicoIntrospectionException { + + } + + @Override + public void accept(PicoVisitor picoVisitor) { + + } + }); + + CompileEnvironment compileEnvironment = new CompileEnvironment(); + + compileEnvironment.setJavaRuntime(CompileEnvironment.findRtJar(true)); + if (!compileEnvironment.initializeKotlinRuntime()) { + System.out.println("foo"); + } +// environment.getApplication().registerService(ProgressManager.class, new ProgressManagerImpl(environment.getApplication())); + environment.getApplication().registerService(PomModel.class, new PomModelImpl(environment.getProject())); +// environment.getApplication().registerService(Project.class, environment.getProject()); + + final JetFile file = JetPsiFactory.createFile(environment.getProject(), "namespace foo\nclass A"); + final ASTNode packageKeyword = JetPsiFactory.createFile(environment.getProject(), "package foo").getRootNamespace().getHeader().getNode().findChildByType(NAMESPACE_KEYWORD); + + SwingUtilities.invokeAndWait(new Runnable() { + @Override + public void run() { + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + convert(file, packageKeyword); + } + }); + } + }); + + } + + private static void convert(JetFile file, final ASTNode packageKeyword) { + file.getRootNamespace().accept(new JetTreeVisitor<Void>() { + @Override + public Void visitNamespace(JetNamespace namespace, Void data) { + ASTNode namespaceNode = namespace.getHeader().getNode(); + ASTNode token = namespaceNode.findChildByType(NAMESPACE_KEYWORD); + namespaceNode.replaceChild(token, packageKeyword); + return super.visitNamespace(namespace, data); + } + }, null); + System.out.println("file = " + file.getText()); + } +} diff --git a/shift/tests/org/jetbrains/jet/shift/Shifter.java b/shift/tests/org/jetbrains/jet/shift/Shifter.java new file mode 100644 index 00000000000..d4bec90243d --- /dev/null +++ b/shift/tests/org/jetbrains/jet/shift/Shifter.java @@ -0,0 +1,157 @@ +package org.jetbrains.jet.shift; + +///** +// * @author abreslav +// */ +//public class Shifter extends LightDaemonAnalyzerTestCase { +// private String name; +// public static final Pattern FILE_PATTERN = Pattern.compile("//\\s*FILE:\\s*(.*)$", Pattern.MULTILINE); +// +// public Shifter(@NonNls String dataPath, String name) { +// super(dataPath); +// this.name = name; +// } +// +// @Override +// public String getName() { +// return "test" + name; +// } +// +// +//// private class TestFile { +//// private final List<CheckerTestUtil.DiagnosedRange> diagnosedRanges = Lists.newArrayList(); +//// private final String expectedText; +//// private final String clearText; +//// private final JetFile jetFile; +//// +//// public TestFile(String fileName, String textWithMarkers) { +//// expectedText = textWithMarkers; +//// clearText = CheckerTestUtil.parseDiagnosedRanges(expectedText, diagnosedRanges); +//// jetFile = createCheckAndReturnPsiFile(fileName, clearText); +//// } +//// +//// public void getActualText(BindingContext bindingContext, StringBuilder actualText) { +//// CheckerTestUtil.diagnosticsDiff(diagnosedRanges, CheckerTestUtil.getDiagnosticsIncludingSyntaxErrors(bindingContext, jetFile), new CheckerTestUtil.DiagnosticDiffCallbacks() { +//// @Override +//// public void missingDiagnostic(String type, int expectedStart, int expectedEnd) { +//// String message = "Missing " + type + DiagnosticUtils.atLocation(jetFile, new TextRange(expectedStart, expectedEnd)); +//// System.err.println(message); +//// } +//// +//// @Override +//// public void unexpectedDiagnostic(String type, int actualStart, int actualEnd) { +//// String message = "Unexpected " + type + DiagnosticUtils.atLocation(jetFile, new TextRange(actualStart, actualEnd)); +//// System.err.println(message); +//// } +//// }); +//// +//// actualText.append(CheckerTestUtil.addDiagnosticMarkersToText(jetFile, bindingContext, AnalyzingUtils.getSyntaxErrorRanges(jetFile))); +//// } +//// +//// } +// +// @Override +// public void runTest() throws Exception { +// String testFileName = name + ".jet"; +// +// String expectedText = loadFile(testFileName); +// +// final JetFile file = createCheckAndReturnPsiFile(testFileName, expectedText); +// +// +//// List<TestFile> testFileFiles = createTestFiles(testFileName, expectedText); +//// +//// boolean importJdk = expectedText.contains("+JDK"); +//// Configuration configuration = importJdk ? JavaBridgeConfiguration.createJavaBridgeConfiguration(getProject()) : Configuration.EMPTY; +//// +//// List<JetDeclaration> namespaces = Lists.newArrayList(); +//// for (TestFile testFileFile : testFileFiles) { +//// namespaces.add(testFileFile.jetFile.getRootNamespace()); +//// } +//// +//// BindingContext bindingContext; +//// if (importJdk) { +//// bindingContext = AnalyzerFacade.analyzeNamespacesWithJavaIntegration(getProject(), namespaces, Predicates.<PsiFile>alwaysTrue(), JetControlFlowDataTraceFactory.EMPTY); +//// } +//// else { +//// bindingContext = AnalyzingUtils.analyzeNamespaces(getProject(), Configuration.EMPTY, namespaces, Predicates.<PsiFile>alwaysTrue(), JetControlFlowDataTraceFactory.EMPTY, JetSemanticServices.createSemanticServices(getProject())); +//// } +//// +//// StringBuilder actualText = new StringBuilder(); +//// for (TestFile testFileFile : testFileFiles) { +//// testFileFile.getActualText(bindingContext, actualText); +//// } +//// +//// Assert.assertEquals(expectedText, actualText.toString()); +//// final JetFile file = JetPsiFactory.createFile(environment.getProject(), "namespace foo\nclass A"); +// ((MockApplication) ApplicationManager.getApplication()).registerService(PomModel.class, new PomModelImpl(getProject())); +// final ASTNode packageKeyword = JetPsiFactory.createFile(getProject(), "package foo").getRootNamespace().getHeader().getNode().findChildByType(NAMESPACE_KEYWORD); +// +//// SwingUtilities.invokeAndWait(new Runnable() { +//// @Override +//// public void run() { +// ApplicationManager.getApplication().runWriteAction(new Runnable() { +// @Override +// public void run() { +// convert(file, packageKeyword); +// } +// }); +//// } +//// }); +// +// } +// +// private static void convert(JetFile file, final ASTNode packageKeyword) { +// file.getRootNamespace().accept(new JetTreeVisitor<Void>() { +// @Override +// public Void visitNamespace(JetNamespace namespace, Void data) { +// ASTNode namespaceNode = namespace.getHeader().getNode(); +// ASTNode token = namespaceNode.findChildByType(NAMESPACE_KEYWORD); +// namespaceNode.replaceChild(token, packageKeyword); +// return super.visitNamespace(namespace, data); +// } +// }, null); +// System.out.println("file = " + file.getText()); +// } +// +// +// // private void convert(File src, File dest) throws IOException { +//// File[] files = src.listFiles(); +//// for (File file : files) { +//// try { +//// if (file.isDirectory()) { +//// File destDir = new File(dest, file.getName()); +//// destDir.mkdir(); +//// convert(file, destDir); +//// continue; +//// } +//// if (!file.getName().endsWith(".jet")) continue; +//// String text = doLoadFile(file.getParentFile().getAbsolutePath(), file.getName()); +//// Pattern pattern = Pattern.compile("</?(error|warning)>"); +//// String clearText = pattern.matcher(text).replaceAll(""); +//// createAndCheckPsiFile(name, clearText); +//// +//// BindingContext bindingContext = AnalyzingUtils.getInstance(ImportingStrategy.NONE).analyzeFileWithCache((JetFile) myFile); +//// String expectedText = CheckerTestUtil.addDiagnosticMarkersToText(myFile, bindingContext).toString(); +//// +//// File destFile = new File(dest, file.getName()); +//// FileWriter fileWriter = new FileWriter(destFile); +//// fileWriter.write(expectedText); +//// fileWriter.close(); +//// } +//// catch (RuntimeException e) { +//// e.printStackTrace(); +//// } +//// } +//// } +// +// public static Test suite() { +// return JetTestCaseBuilder.suiteForDirectory(JetTestCaseBuilder.getTestDataPathBase(), "/diagnostics/tests/shift", true, new JetTestCaseBuilder.NamedTestFactory() { +// @NotNull +// @Override +// public Test createTest(@NotNull String dataPath, @NotNull String name, @NotNull File file) { +// return new Shifter(dataPath, name); +// } +// }); +// } +//}