Always parsing tuples as errors.
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user