From 84bc74894a5cebd373d3404e4a7d42a9ae054610 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Tue, 19 Mar 2013 15:54:49 +0400 Subject: [PATCH] Always parsing tuples as errors. --- .../jet/lang/parsing/JetExpressionParsing.java | 11 ++++------- .../org/jetbrains/jet/lang/parsing/JetParsing.java | 10 ++++------ compiler/testData/psi/script/ShebangIncorrect.txt | 4 ++-- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java index 092c077c105..599710b7ff5 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java @@ -1608,7 +1608,7 @@ public class JetExpressionParsing extends AbstractJetParsing { * : "#" "(" (((SimpleName "=")? expression){","})? ")" * ; */ - @Deprecated // Tuples are to be removed in Kotlin M4 + @Deprecated // Tuples are dropped, but parsing is left to minimize surprising. This code should be removed some time (in Kotlin 1.0?) private void parseTupleExpression() { assert _at(HASH); PsiBuilder.Marker mark = mark(); @@ -1619,15 +1619,13 @@ public class JetExpressionParsing extends AbstractJetParsing { if (!at(RPAR)) { while (true) { while (at(COMMA)) { - errorAndAdvance("Expecting a tuple entry (element)"); + advance(); } if (at(IDENTIFIER) && lookahead(1) == EQ) { - PsiBuilder.Marker entry = mark(); advance(); // IDENTIFIER advance(); // EQ parseExpression(); - entry.done(LABELED_TUPLE_ENTRY); } else { parseExpression(); @@ -1637,16 +1635,15 @@ public class JetExpressionParsing extends AbstractJetParsing { advance(); // COMMA if (at(RPAR)) { - error("Expecting a tuple entry (element)"); break; } } } - expect(RPAR, "Expecting ')'"); + consumeIf(RPAR); myBuilder.restoreNewlinesState(); - mark.done(TUPLE); + mark.error("Tuples are not supported. Use data classes instead."); } /* diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java index 26e6a05e9f8..23cbdf9da9f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java @@ -1564,7 +1564,7 @@ public class JetParsing extends AbstractJetParsing { * : "#" "(" parameter{","} ")" // tuple with named entries, the names do not affect assignment compatibility * ; */ - @Deprecated // Tuples are to be removed in Kotlin M4 + @Deprecated // Tuples are dropped, but parsing is left to minimize surprising. This code should be removed some time (in Kotlin 1.0?) private void parseTupleType() { assert _at(HASH); @@ -1572,7 +1572,7 @@ public class JetParsing extends AbstractJetParsing { myBuilder.disableNewlines(); advance(); // HASH - expect(LPAR, "Expecting a tuple type in the form of '#(...)"); + consumeIf(LPAR); if (!at(RPAR)) { while (true) { @@ -1581,11 +1581,9 @@ public class JetParsing extends AbstractJetParsing { } if (at(IDENTIFIER) && lookahead(1) == COLON) { - PsiBuilder.Marker labeledEntry = mark(); advance(); // IDENTIFIER advance(); // COLON parseTypeRef(); - labeledEntry.done(LABELED_TUPLE_TYPE_ENTRY); } else if (TYPE_REF_FIRST.contains(tt())) { parseTypeRef(); @@ -1599,10 +1597,10 @@ public class JetParsing extends AbstractJetParsing { } } - expect(RPAR, "Expecting ')"); + consumeIf(RPAR); myBuilder.restoreNewlinesState(); - tuple.done(TUPLE_TYPE); + tuple.error("Tuples are not supported. Use data classes instead."); } /* diff --git a/compiler/testData/psi/script/ShebangIncorrect.txt b/compiler/testData/psi/script/ShebangIncorrect.txt index 377bfa36822..9067541ed30 100644 --- a/compiler/testData/psi/script/ShebangIncorrect.txt +++ b/compiler/testData/psi/script/ShebangIncorrect.txt @@ -15,7 +15,7 @@ JetFile: ShebangIncorrect.ktscript PsiElement(SEMICOLON)(';') PsiWhiteSpace(' ') BINARY_EXPRESSION - TUPLE + PsiErrorElement:Tuples are not supported. Use data classes instead. PsiElement(HASH)('#') PsiElement(EXCL)('!') PsiErrorElement:Expecting an expression @@ -26,7 +26,7 @@ JetFile: ShebangIncorrect.ktscript PsiElement(IDENTIFIER)('usr') PsiWhiteSpace('\n\n') BINARY_EXPRESSION - TUPLE + PsiErrorElement:Tuples are not supported. Use data classes instead. PsiElement(HASH)('#') PsiElement(EXCL)('!') PsiErrorElement:Expecting an expression