PsiBuilder.Marker marker = builder.mark();
builder.advanceLexer();
ReferenceParser.TypeInfo typeInfo = myParser.getReferenceParser().parseTypeInfo(
- builder, ReferenceParser.EAT_LAST_DOT | ReferenceParser.WILDCARD);
+ builder, ReferenceParser.EAT_LAST_DOT | ReferenceParser.ELLIPSIS | ReferenceParser.WILDCARD);
if (typeInfo != null) {
IElementType t = builder.getTokenType();
if (t == JavaTokenType.IDENTIFIER ||
--- /dev/null
+PsiJavaFile:LambdaExpression23.java
+ PsiLambdaExpression
+ PsiParameterList:(T... t)
+ PsiJavaToken:LPARENTH('(')
+ PsiParameter:t
+ PsiModifierList:
+ <empty list>
+ PsiTypeElement:T...
+ PsiTypeElement:T
+ PsiJavaCodeReferenceElement:T
+ PsiIdentifier:T('T')
+ PsiReferenceParameterList
+ <empty list>
+ PsiJavaToken:ELLIPSIS('...')
+ PsiWhiteSpace(' ')
+ PsiIdentifier:t('t')
+ PsiJavaToken:RPARENTH(')')
+ PsiWhiteSpace(' ')
+ PsiJavaToken:ARROW('->')
+ PsiWhiteSpace(' ')
+ PsiReferenceExpression:t.length
+ PsiReferenceExpression:t
+ PsiReferenceParameterList
+ <empty list>
+ PsiIdentifier:t('t')
+ PsiJavaToken:DOT('.')
+ PsiReferenceParameterList
+ <empty list>
+ PsiIdentifier:length('length')
\ No newline at end of file
public void testLambdaExpression20() { doParserTest("(@A T) -> (null)"); }
public void testLambdaExpression21() { doParserTest("(T @A() [] x) -> { }"); }
public void testLambdaExpression22() { doParserTest("(T x @A() []) -> { }"); }
+ public void testLambdaExpression23() { doParserTest("(T... t) -> t.length"); }
public void testAmbiguousLambdaExpression() { doParserTest("f( (x) < y , z > (w) -> v )"); }
private void doParserTest(String text) {