Java: parse parentheses with a call with lambda argument correctly (IDEA-200212)

GitOrigin-RevId: 98fcbb3b793ebfcfa636ac7d27ef21158c64eee7
This commit is contained in:
Bas Leijdekkers
2024-08-03 15:48:09 +02:00
committed by intellij-monorepo-bot
parent 32fde2980c
commit d335ac32c4
6 changed files with 404 additions and 65 deletions

View File

@@ -916,14 +916,12 @@ public class BasicOldExpressionParser {
PsiBuilder.Marker marker = builder.mark();
builder.advanceLexer();
BasicReferenceParser.TypeInfo typeInfo = myParser.getReferenceParser().parseTypeInfo(
builder, BasicReferenceParser.EAT_LAST_DOT | BasicReferenceParser.ELLIPSIS | BasicReferenceParser.WILDCARD);
builder, BasicReferenceParser.ELLIPSIS | BasicReferenceParser.WILDCARD);
if (typeInfo != null) {
IElementType t = builder.getTokenType();
if (t == JavaTokenType.IDENTIFIER ||
t == JavaTokenType.THIS_KEYWORD ||
t == JavaTokenType.RPARENTH && builder.lookAhead(1) == JavaTokenType.ARROW) {
lambda = true;
}
lambda = t == JavaTokenType.IDENTIFIER ||
t == JavaTokenType.THIS_KEYWORD ||
t == JavaTokenType.RPARENTH && builder.lookAhead(1) == JavaTokenType.ARROW;
}
marker.rollbackTo();

View File

@@ -821,14 +821,12 @@ public class BasicPrattExpressionParser {
PsiBuilder.Marker marker = builder.mark();
builder.advanceLexer();
BasicReferenceParser.TypeInfo typeInfo = myParser.getReferenceParser().parseTypeInfo(
builder, BasicReferenceParser.EAT_LAST_DOT | BasicReferenceParser.ELLIPSIS | BasicReferenceParser.WILDCARD);
builder, BasicReferenceParser.ELLIPSIS | BasicReferenceParser.WILDCARD);
if (typeInfo != null) {
IElementType t = builder.getTokenType();
if (t == JavaTokenType.IDENTIFIER ||
t == JavaTokenType.THIS_KEYWORD ||
t == JavaTokenType.RPARENTH && builder.lookAhead(1) == JavaTokenType.ARROW) {
lambda = true;
}
lambda = t == JavaTokenType.IDENTIFIER ||
t == JavaTokenType.THIS_KEYWORD ||
t == JavaTokenType.RPARENTH && builder.lookAhead(1) == JavaTokenType.ARROW;
}
marker.rollbackTo();