From b00bbbc962d0c0aab340ef279f32049174681e70 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Wed, 6 Jun 2012 13:57:06 +0400 Subject: [PATCH] Test case for ambiguous lambda expression --- .../expressions/AmbiguousLambdaExpression.txt | 52 +++++++++++++++++++ .../parser/partial/ExpressionParserTest.java | 2 + 2 files changed, 54 insertions(+) create mode 100644 java/java-tests/testData/psi/parser-partial/expressions/AmbiguousLambdaExpression.txt diff --git a/java/java-tests/testData/psi/parser-partial/expressions/AmbiguousLambdaExpression.txt b/java/java-tests/testData/psi/parser-partial/expressions/AmbiguousLambdaExpression.txt new file mode 100644 index 000000000000..ed9dec7e3d72 --- /dev/null +++ b/java/java-tests/testData/psi/parser-partial/expressions/AmbiguousLambdaExpression.txt @@ -0,0 +1,52 @@ +PsiJavaFile:AmbiguousLambdaExpression.java + PsiMethodCallExpression:f( (x) < y , z > (w) -> v ) + PsiReferenceExpression:f + PsiReferenceParameterList + + PsiIdentifier:f('f') + PsiExpressionList + PsiJavaToken:LPARENTH('(') + PsiWhiteSpace(' ') + PsiBinaryExpression:(x) < y + PsiParenthesizedExpression:(x) + PsiJavaToken:LPARENTH('(') + PsiReferenceExpression:x + PsiReferenceParameterList + + PsiIdentifier:x('x') + PsiJavaToken:RPARENTH(')') + PsiWhiteSpace(' ') + PsiJavaToken:LT('<') + PsiWhiteSpace(' ') + PsiReferenceExpression:y + PsiReferenceParameterList + + PsiIdentifier:y('y') + PsiWhiteSpace(' ') + PsiJavaToken:COMMA(',') + PsiWhiteSpace(' ') + PsiBinaryExpression:z > (w) -> v + PsiReferenceExpression:z + PsiReferenceParameterList + + PsiIdentifier:z('z') + PsiWhiteSpace(' ') + PsiJavaToken:GT('>') + PsiWhiteSpace(' ') + PsiLambdaExpression:(w) -> v + PsiParameterList:(w) + PsiJavaToken:LPARENTH('(') + PsiParameter:w + PsiModifierList: + + PsiIdentifier:w('w') + PsiJavaToken:RPARENTH(')') + PsiWhiteSpace(' ') + PsiJavaToken:ARROW('->') + PsiWhiteSpace(' ') + PsiReferenceExpression:v + PsiReferenceParameterList + + PsiIdentifier:v('v') + PsiWhiteSpace(' ') + PsiJavaToken:RPARENTH(')') \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/lang/java/parser/partial/ExpressionParserTest.java b/java/java-tests/testSrc/com/intellij/lang/java/parser/partial/ExpressionParserTest.java index 87f78668a16d..414d2a50948b 100644 --- a/java/java-tests/testSrc/com/intellij/lang/java/parser/partial/ExpressionParserTest.java +++ b/java/java-tests/testSrc/com/intellij/lang/java/parser/partial/ExpressionParserTest.java @@ -135,6 +135,8 @@ public class ExpressionParserTest extends JavaParsingTestCase { public void testLambdaExpression10() { doParserTest("(I)(p -> null)"); } public void testLambdaExpression11() { doParserTest("() -> { }"); } + public void testAmbiguousLambdaExpression() { doParserTest("f( (x) < y , z > (w) -> v )"); } + private void doParserTest(@NonNls final String text) { doParserTest(text, new MyTestParser()); }