Always parsing tuples as errors.

This commit is contained in:
Evgeny Gerashchenko
2013-03-19 15:54:49 +04:00
parent 1236327815
commit 84bc74894a
3 changed files with 10 additions and 15 deletions
@@ -1608,7 +1608,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
* : "#" "(" (((SimpleName "=")? expression){","})? ")" * : "#" "(" (((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() { private void parseTupleExpression() {
assert _at(HASH); assert _at(HASH);
PsiBuilder.Marker mark = mark(); PsiBuilder.Marker mark = mark();
@@ -1619,15 +1619,13 @@ public class JetExpressionParsing extends AbstractJetParsing {
if (!at(RPAR)) { if (!at(RPAR)) {
while (true) { while (true) {
while (at(COMMA)) { while (at(COMMA)) {
errorAndAdvance("Expecting a tuple entry (element)"); advance();
} }
if (at(IDENTIFIER) && lookahead(1) == EQ) { if (at(IDENTIFIER) && lookahead(1) == EQ) {
PsiBuilder.Marker entry = mark();
advance(); // IDENTIFIER advance(); // IDENTIFIER
advance(); // EQ advance(); // EQ
parseExpression(); parseExpression();
entry.done(LABELED_TUPLE_ENTRY);
} }
else { else {
parseExpression(); parseExpression();
@@ -1637,16 +1635,15 @@ public class JetExpressionParsing extends AbstractJetParsing {
advance(); // COMMA advance(); // COMMA
if (at(RPAR)) { if (at(RPAR)) {
error("Expecting a tuple entry (element)");
break; break;
} }
} }
} }
expect(RPAR, "Expecting ')'"); consumeIf(RPAR);
myBuilder.restoreNewlinesState(); myBuilder.restoreNewlinesState();
mark.done(TUPLE); mark.error("Tuples are not supported. Use data classes instead.");
} }
/* /*
@@ -1564,7 +1564,7 @@ public class JetParsing extends AbstractJetParsing {
* : "#" "(" parameter{","} ")" // tuple with named entries, the names do not affect assignment compatibility * : "#" "(" 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() { private void parseTupleType() {
assert _at(HASH); assert _at(HASH);
@@ -1572,7 +1572,7 @@ public class JetParsing extends AbstractJetParsing {
myBuilder.disableNewlines(); myBuilder.disableNewlines();
advance(); // HASH advance(); // HASH
expect(LPAR, "Expecting a tuple type in the form of '#(...)"); consumeIf(LPAR);
if (!at(RPAR)) { if (!at(RPAR)) {
while (true) { while (true) {
@@ -1581,11 +1581,9 @@ public class JetParsing extends AbstractJetParsing {
} }
if (at(IDENTIFIER) && lookahead(1) == COLON) { if (at(IDENTIFIER) && lookahead(1) == COLON) {
PsiBuilder.Marker labeledEntry = mark();
advance(); // IDENTIFIER advance(); // IDENTIFIER
advance(); // COLON advance(); // COLON
parseTypeRef(); parseTypeRef();
labeledEntry.done(LABELED_TUPLE_TYPE_ENTRY);
} }
else if (TYPE_REF_FIRST.contains(tt())) { else if (TYPE_REF_FIRST.contains(tt())) {
parseTypeRef(); parseTypeRef();
@@ -1599,10 +1597,10 @@ public class JetParsing extends AbstractJetParsing {
} }
} }
expect(RPAR, "Expecting ')"); consumeIf(RPAR);
myBuilder.restoreNewlinesState(); myBuilder.restoreNewlinesState();
tuple.done(TUPLE_TYPE); tuple.error("Tuples are not supported. Use data classes instead.");
} }
/* /*
@@ -15,7 +15,7 @@ JetFile: ShebangIncorrect.ktscript
PsiElement(SEMICOLON)(';') PsiElement(SEMICOLON)(';')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
BINARY_EXPRESSION BINARY_EXPRESSION
TUPLE PsiErrorElement:Tuples are not supported. Use data classes instead.
PsiElement(HASH)('#') PsiElement(HASH)('#')
PsiElement(EXCL)('!') PsiElement(EXCL)('!')
PsiErrorElement:Expecting an expression PsiErrorElement:Expecting an expression
@@ -26,7 +26,7 @@ JetFile: ShebangIncorrect.ktscript
PsiElement(IDENTIFIER)('usr') PsiElement(IDENTIFIER)('usr')
PsiWhiteSpace('\n\n') PsiWhiteSpace('\n\n')
BINARY_EXPRESSION BINARY_EXPRESSION
TUPLE PsiErrorElement:Tuples are not supported. Use data classes instead.
PsiElement(HASH)('#') PsiElement(HASH)('#')
PsiElement(EXCL)('!') PsiElement(EXCL)('!')
PsiErrorElement:Expecting an expression PsiErrorElement:Expecting an expression