GreatSyntacticShift: Syntax for function types, function literals, when and tuples
Bug:
fun loop(var times : Int) {
while(times > 0) {
val u : (value : Int) -> Unit = { // This arrow is confusing the lookahead
System.out?.println(it)
}
u(times--)
}
}
This commit is contained in:
Generated
+1
@@ -11,6 +11,7 @@
|
||||
<module fileurl="file://$PROJECT_DIR$/compiler/frontend.java/frontend.java.iml" filepath="$PROJECT_DIR$/compiler/frontend.java/frontend.java.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/grammar/grammar.iml" filepath="$PROJECT_DIR$/grammar/grammar.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/idea/idea.iml" filepath="$PROJECT_DIR$/idea/idea.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/shift/shift.iml" filepath="$PROJECT_DIR$/shift/shift.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/stdlib/stdlib.iml" filepath="$PROJECT_DIR$/stdlib/stdlib.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/testlib/testlib.iml" filepath="$PROJECT_DIR$/testlib/testlib.iml" />
|
||||
</modules>
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace io {
|
||||
fun readLine() : String?
|
||||
}
|
||||
|
||||
fun <R> Any.synchronized(block : fun() : R) : R
|
||||
fun <R> Any.synchronized(block : () -> R) : R
|
||||
|
||||
fun Any?.identityEquals(other : Any?) : Boolean // = this === other
|
||||
|
||||
@@ -139,7 +139,7 @@ trait CharIterable : Iterable<Char> {
|
||||
|
||||
fun Array<T>(val size : Int) : Array<T?>
|
||||
|
||||
class Array<T>(val size : Int, init : fun(Int) : T) {
|
||||
class Array<T>(val size : Int, init : (Int) -> T) {
|
||||
fun get(index : Int) : T
|
||||
fun set(index : Int, value : T) : Unit
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<String, JetToken> 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<bar, baz>=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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
+1
@@ -13,6 +13,7 @@ public interface SemanticWhitespaceAwarePsiBuilder extends PsiBuilder {
|
||||
void enableNewlines();
|
||||
void restoreNewlinesState();
|
||||
|
||||
void restoreJoiningComplexTokensState();
|
||||
void enableJoiningComplexTokens();
|
||||
void disableJoiningComplexTokens();
|
||||
}
|
||||
|
||||
+5
@@ -35,6 +35,11 @@ public class SemanticWhitespaceAwarePsiBuilderAdapter extends PsiBuilderAdapter
|
||||
myBuilder.restoreNewlinesState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void restoreJoiningComplexTokensState() {
|
||||
myBuilder.restoreJoiningComplexTokensState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enableJoiningComplexTokens() {
|
||||
myBuilder.enableJoiningComplexTokens();
|
||||
|
||||
+18
-8
@@ -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<Boolean> joinComplexTokens = new Stack<Boolean>();
|
||||
|
||||
private final Stack<Boolean> newlinesEnabled = new Stack<Boolean>();
|
||||
|
||||
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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
|
||||
|
||||
@@ -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 ;}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
* <a href="http://www.jflex.de/">JFlex</a> 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
|
||||
* <tt>/Users/abreslav/work/jet-clean/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex</tt>
|
||||
*/
|
||||
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;
|
||||
|
||||
@@ -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 <!MUST_BE_INITIALIZED!>a<!>: Int
|
||||
val a1: Int = 1
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
fun text() {
|
||||
"direct:a" to "mock:a"
|
||||
"direct:a" on {it.body == "<hello/>"} to "mock:a"
|
||||
"direct:a" on {it => it.body == "<hello/>"} to "mock:a"
|
||||
"direct:a" on {it -> it.body == "<hello/>"} to "mock:a"
|
||||
bar <!TYPE_MISMATCH!>{1}<!>
|
||||
bar <!TYPE_MISMATCH!>{<!UNRESOLVED_REFERENCE!>it<!> + 1}<!>
|
||||
bar {it, it1 => it}
|
||||
bar {it, it1 -> it}
|
||||
|
||||
bar1 {1}
|
||||
bar1 {it + 1}
|
||||
@@ -12,18 +12,18 @@ fun text() {
|
||||
bar2 <!TYPE_MISMATCH!>{<!TYPE_MISMATCH!><!>}<!>
|
||||
bar2 {1}
|
||||
bar2 {<!UNRESOLVED_REFERENCE!>it<!>}
|
||||
bar2 <!TYPE_MISMATCH!>{<!CANNOT_INFER_PARAMETER_TYPE!>it<!> => it}<!>
|
||||
bar2 <!TYPE_MISMATCH!>{<!CANNOT_INFER_PARAMETER_TYPE!>it<!> -> it}<!>
|
||||
}
|
||||
|
||||
fun bar(<!UNUSED_PARAMETER!>f<!> : fun (Int, Int) : Int) {}
|
||||
fun bar1(<!UNUSED_PARAMETER!>f<!> : fun (Int) : Int) {}
|
||||
fun bar2(<!UNUSED_PARAMETER!>f<!> : fun () : Int) {}
|
||||
fun bar(<!UNUSED_PARAMETER!>f<!> : (Int, Int) -> Int) {}
|
||||
fun bar1(<!UNUSED_PARAMETER!>f<!> : (Int) -> Int) {}
|
||||
fun bar2(<!UNUSED_PARAMETER!>f<!> : () -> Int) {}
|
||||
|
||||
fun String.to(<!UNUSED_PARAMETER!>dest<!> : String) {
|
||||
|
||||
}
|
||||
|
||||
fun String.on(<!UNUSED_PARAMETER!>predicate<!> : fun (s : URI) : Boolean) : URI {
|
||||
fun String.on(<!UNUSED_PARAMETER!>predicate<!> : (s : URI) -> Boolean) : URI {
|
||||
return URI(this)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
namespace example;
|
||||
package example;
|
||||
|
||||
namespace ns {
|
||||
package ns {
|
||||
val y : Any? = 2
|
||||
}
|
||||
|
||||
|
||||
@@ -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 <!NONE_APPLICABLE!>-<!> "1"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace boundsWithSubstitutors {
|
||||
package boundsWithSubstitutors {
|
||||
open class A<T>
|
||||
class B<X : A<X>>()
|
||||
|
||||
@@ -18,10 +18,10 @@ namespace boundsWithSubstitutors {
|
||||
open class A {}
|
||||
open class B<T : A>()
|
||||
|
||||
abstract class C<T : B<<!UPPER_BOUND_VIOLATED!>Int<!>>, X : fun (B<<!UPPER_BOUND_VIOLATED!>Char<!>>) : (B<<!UPPER_BOUND_VIOLATED!>Any<!>>, B<A>)>() : B<<!UPPER_BOUND_VIOLATED, UPPER_BOUND_VIOLATED!>Any<!>>() { // 2 errors
|
||||
abstract class C<T : B<<!UPPER_BOUND_VIOLATED!>Int<!>>, X : (B<<!UPPER_BOUND_VIOLATED!>Char<!>>) -> #(B<<!UPPER_BOUND_VIOLATED!>Any<!>>, B<A>)>() : B<<!UPPER_BOUND_VIOLATED, UPPER_BOUND_VIOLATED!>Any<!>>() { // 2 errors
|
||||
val a = B<<!UPPER_BOUND_VIOLATED!>Char<!>>() // error
|
||||
|
||||
abstract val x : fun (B<<!UPPER_BOUND_VIOLATED!>Char<!>>) : B<<!UPPER_BOUND_VIOLATED!>Any<!>>
|
||||
abstract val x : (B<<!UPPER_BOUND_VIOLATED!>Char<!>>) -> B<<!UPPER_BOUND_VIOLATED!>Any<!>>
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import java.util.*
|
||||
|
||||
namespace html {
|
||||
package html {
|
||||
|
||||
abstract class Factory<T> {
|
||||
abstract fun create() : T
|
||||
@@ -16,7 +16,7 @@ namespace html {
|
||||
val children = ArrayList<Element>()
|
||||
val attributes = HashMap<String, String>()
|
||||
|
||||
protected fun initTag<T : Element>(init : fun T.() : Unit) : T
|
||||
protected fun initTag<T : Element>(init : T.() -> Unit) : T
|
||||
where class object T : Factory<T>{
|
||||
val tag = T.create()
|
||||
tag.init()
|
||||
@@ -36,9 +36,9 @@ namespace html {
|
||||
override fun create() = HTML()
|
||||
}
|
||||
|
||||
fun head(init : fun Head.() : Unit) = initTag<Head>(init)
|
||||
fun head(init : Head.() -> Unit) = initTag<Head>(init)
|
||||
|
||||
fun body(init : fun Body.() : Unit) = initTag<Body>(init)
|
||||
fun body(init : Body.() -> Unit) = initTag<Body>(init)
|
||||
}
|
||||
|
||||
class Head() : TagWithText("head") {
|
||||
@@ -46,7 +46,7 @@ namespace html {
|
||||
override fun create() = Head()
|
||||
}
|
||||
|
||||
fun title(init : fun Title.() : Unit) = initTag<Title>(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.*
|
||||
|
||||
|
||||
@@ -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?
|
||||
()
|
||||
#()
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
// +JDK
|
||||
|
||||
namespace Jet86
|
||||
package Jet86
|
||||
|
||||
class A {
|
||||
class object {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace dollar
|
||||
package dollar
|
||||
|
||||
open class `$$$$$`() {
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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!>{}<!>()
|
||||
}
|
||||
@@ -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 {}
|
||||
}
|
||||
|
||||
@@ -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>> {}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace illegal_modifiers
|
||||
package illegal_modifiers
|
||||
|
||||
abstract class A() {
|
||||
<!INCOMPATIBLE_MODIFIERS!>abstract<!> <!INCOMPATIBLE_MODIFIERS!>final<!> fun f()
|
||||
|
||||
@@ -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() {
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace Jet87
|
||||
package Jet87
|
||||
|
||||
open class A() {
|
||||
fun foo() : Int = 1
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
namespace root
|
||||
package root
|
||||
|
||||
namespace a {
|
||||
package a {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// +JDK
|
||||
|
||||
namespace foo
|
||||
package foo
|
||||
|
||||
class X {}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace qualified_expressions
|
||||
package qualified_expressions
|
||||
|
||||
fun test(s: String?) {
|
||||
val <!UNUSED_VARIABLE!>a<!>: Int = <!TYPE_MISMATCH!>s?.length<!>
|
||||
|
||||
@@ -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})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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 {}
|
||||
}
|
||||
|
||||
|
||||
@@ -49,6 +49,6 @@ fun test(<!UNUSED_PARAMETER!>l<!> : java.util.List<Int>) {
|
||||
}
|
||||
|
||||
|
||||
namespace xxx {
|
||||
package xxx {
|
||||
import java.lang.Class;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace <!SYNTAX!>return<!>
|
||||
package <!SYNTAX!>return<!>
|
||||
|
||||
class A {
|
||||
fun outer() {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace uninitialized_reassigned_variables
|
||||
package uninitialized_reassigned_variables
|
||||
|
||||
fun doSmth(<!UNUSED_PARAMETER!>s<!>: String) {}
|
||||
fun doSmth(<!UNUSED_PARAMETER!>i<!>: Int) {}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
fun foo(f : fun()) {
|
||||
fun foo(f : () -> Unit) {
|
||||
val <!UNUSED_VARIABLE!>x<!> : Unit = f()
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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, "")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace variance
|
||||
package variance
|
||||
|
||||
abstract class Consumer<in T> {}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace customGetValGlobal {
|
||||
package customGetValGlobal {
|
||||
val zz = 1
|
||||
get() = $zz * 2
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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<!>
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//KT-510 `this.` allows initialization without backing field
|
||||
|
||||
namespace kt510
|
||||
package kt510
|
||||
|
||||
public open class Identifier1() {
|
||||
var field : Boolean
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//KT-843 Don't highlight incomplete variables as unused
|
||||
|
||||
namespace kt843
|
||||
package kt843
|
||||
|
||||
fun main(args : Array<String>) {
|
||||
// Integer type
|
||||
|
||||
+20
-20
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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("")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace kt244
|
||||
package kt244
|
||||
|
||||
//+JDK
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
@@ -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())
|
||||
|
||||
|
||||
@@ -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...
|
||||
// ...
|
||||
|
||||
@@ -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++<!>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {}
|
||||
package bar {}
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import html.* // Must not be an error
|
||||
|
||||
namespace html {
|
||||
package html {
|
||||
|
||||
abstract class Factory<T> {
|
||||
fun create() : T? = null
|
||||
|
||||
@@ -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() {}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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!><!>
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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>) {
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 }
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//KT-455 Do not repeat errors in definite assignment checks
|
||||
|
||||
namespace kt455
|
||||
package kt455
|
||||
|
||||
fun foo() {
|
||||
val a: Int
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//KT-456 No check for obligatory return in getters
|
||||
|
||||
namespace kt456
|
||||
package kt456
|
||||
|
||||
class A() {
|
||||
val i: Int
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// +JDK
|
||||
|
||||
namespace kt469
|
||||
package kt469
|
||||
|
||||
//KT-512 plusAssign() : Unit does not work properly
|
||||
import java.util.*
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// KT-524 sure() returns T
|
||||
// +JDK
|
||||
|
||||
namespace StringBuilder
|
||||
package StringBuilder
|
||||
|
||||
import java.lang.StringBuilder
|
||||
|
||||
|
||||
+1
-1
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// KT-575 Cannot ++ a class object member
|
||||
|
||||
namespace kt575
|
||||
package kt575
|
||||
|
||||
class Creature() {
|
||||
class object {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user