Don't process val and var keywords in lambda parameters forever (KT-5170)
#KT-5170 Fixed
This commit is contained in:
@@ -52,6 +52,8 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
private static final TokenSet RECEIVER_TYPE_TERMINATORS = TokenSet.create(DOT, SAFE_ACCESS);
|
private static final TokenSet RECEIVER_TYPE_TERMINATORS = TokenSet.create(DOT, SAFE_ACCESS);
|
||||||
private static final TokenSet VALUE_PARAMETER_FIRST =
|
private static final TokenSet VALUE_PARAMETER_FIRST =
|
||||||
TokenSet.orSet(TokenSet.create(IDENTIFIER, LBRACKET, VAL_KEYWORD, VAR_KEYWORD), MODIFIER_KEYWORDS);
|
TokenSet.orSet(TokenSet.create(IDENTIFIER, LBRACKET, VAL_KEYWORD, VAR_KEYWORD), MODIFIER_KEYWORDS);
|
||||||
|
private static final TokenSet LAMBDA_VALUE_PARAMETER_FIRST =
|
||||||
|
TokenSet.orSet(TokenSet.create(IDENTIFIER, LBRACKET), MODIFIER_KEYWORDS);
|
||||||
|
|
||||||
static JetParsing createForTopLevel(SemanticWhitespaceAwarePsiBuilder builder) {
|
static JetParsing createForTopLevel(SemanticWhitespaceAwarePsiBuilder builder) {
|
||||||
JetParsing jetParsing = new JetParsing(builder);
|
JetParsing jetParsing = new JetParsing(builder);
|
||||||
@@ -1728,6 +1730,7 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
error("Expecting a parameter declaration");
|
error("Expecting a parameter declaration");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isFunctionTypeContents) {
|
if (isFunctionTypeContents) {
|
||||||
if (!tryParseValueParameter()) {
|
if (!tryParseValueParameter()) {
|
||||||
PsiBuilder.Marker valueParameter = mark();
|
PsiBuilder.Marker valueParameter = mark();
|
||||||
@@ -1739,12 +1742,13 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
else {
|
else {
|
||||||
parseValueParameter();
|
parseValueParameter();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (at(COMMA)) {
|
if (at(COMMA)) {
|
||||||
advance(); // COMMA
|
advance(); // COMMA
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (!at(RPAR)) error("Expecting comma or ')'");
|
if (!at(RPAR)) error("Expecting comma or ')'");
|
||||||
if (!atSet(VALUE_PARAMETER_FIRST)) break;
|
if (!atSet(isFunctionTypeContents ? LAMBDA_VALUE_PARAMETER_FIRST : VALUE_PARAMETER_FIRST)) break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
fun test() {
|
||||||
|
val list = listOf(1, 2)
|
||||||
|
list.filter {
|
||||||
|
(val a, val b)=some.test
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user