mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 03:21:12 +07:00
[java-highlighting] IDEA-323955 Record patterns support available only for Java 20 preview. Change lexer and parser
GitOrigin-RevId: 1897f9dfb0cb33b1249bd903831cfbb4203570de
This commit is contained in:
committed by
intellij-monorepo-bot
parent
26e5f2d5dc
commit
770e5e4e90
@@ -40,7 +40,7 @@ public final class JavaLexer extends LexerBase {
|
||||
level.isAtLeast(LanguageLevel.JDK_16) && RECORD.contentEquals(id) ||
|
||||
level.isAtLeast(LanguageLevel.JDK_14) && YIELD.contentEquals(id) ||
|
||||
level.isAtLeast(LanguageLevel.JDK_17) && (SEALED.contentEquals(id) || PERMITS.contentEquals(id)) ||
|
||||
level.isAtLeast(LanguageLevel.JDK_19_PREVIEW) && WHEN.contentEquals(id);
|
||||
level.isAtLeast(LanguageLevel.JDK_20_PREVIEW) && WHEN.contentEquals(id);
|
||||
}
|
||||
|
||||
private final _JavaLexer myFlexLexer;
|
||||
|
||||
@@ -64,19 +64,7 @@ public class PatternParser {
|
||||
}
|
||||
|
||||
private PsiBuilder.@NotNull Marker parsePattern(final PsiBuilder builder, boolean expectVar) {
|
||||
PsiBuilder.Marker guardPattern = builder.mark();
|
||||
PsiBuilder.Marker primaryPattern = parsePrimaryPattern(builder, expectVar);
|
||||
if (builder.getTokenType() != JavaTokenType.ANDAND) {
|
||||
guardPattern.drop();
|
||||
return primaryPattern;
|
||||
}
|
||||
builder.advanceLexer();
|
||||
PsiBuilder.Marker guardingExpression = myParser.getExpressionParser().parseConditionalAndForbiddingLambda(builder);
|
||||
if (guardingExpression == null) {
|
||||
error(builder, JavaPsiBundle.message("expected.expression"));
|
||||
}
|
||||
done(guardPattern, JavaElementType.GUARDED_PATTERN);
|
||||
return guardPattern;
|
||||
return parsePrimaryPattern(builder, expectVar);
|
||||
}
|
||||
|
||||
PsiBuilder.@NotNull Marker parsePrimaryPattern(final PsiBuilder builder, boolean expectVar) {
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
PsiJavaFile:InstanceOfPattern5.java
|
||||
PsiInstanceofExpression
|
||||
PsiReferenceExpression:x
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:x('x')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiKeyword:instanceof('instanceof')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiParenthesizedPattern
|
||||
PsiJavaToken:LPARENTH('(')
|
||||
PsiGuardedPattern
|
||||
PsiTypeTestPattern
|
||||
PsiPatternVariable:v
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiTypeElement:Foo
|
||||
PsiJavaCodeReferenceElement:Foo
|
||||
PsiIdentifier:Foo('Foo')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:v('v')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ANDAND('&&')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiBinaryExpression:v > 10
|
||||
PsiReferenceExpression:v
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:v('v')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:GT('>')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiLiteralExpression:10
|
||||
PsiJavaToken:INTEGER_LITERAL('10')
|
||||
PsiJavaToken:RPARENTH(')')
|
||||
@@ -1,85 +0,0 @@
|
||||
PsiJavaFile:InstanceOfPattern6.java
|
||||
PsiInstanceofExpression
|
||||
PsiReferenceExpression:x
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:x('x')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiKeyword:instanceof('instanceof')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiParenthesizedPattern
|
||||
PsiJavaToken:LPARENTH('(')
|
||||
PsiGuardedPattern
|
||||
PsiParenthesizedPattern
|
||||
PsiJavaToken:LPARENTH('(')
|
||||
PsiGuardedPattern
|
||||
PsiTypeTestPattern
|
||||
PsiPatternVariable:a
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiTypeElement:A
|
||||
PsiJavaCodeReferenceElement:A
|
||||
PsiIdentifier:A('A')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:a('a')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ANDAND('&&')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiInstanceofExpression
|
||||
PsiReferenceExpression:a.b
|
||||
PsiReferenceExpression:a
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:a('a')
|
||||
PsiJavaToken:DOT('.')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:b('b')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiKeyword:instanceof('instanceof')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiParenthesizedPattern
|
||||
PsiJavaToken:LPARENTH('(')
|
||||
PsiGuardedPattern
|
||||
PsiTypeTestPattern
|
||||
PsiPatternVariable:b
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiTypeElement:B
|
||||
PsiJavaCodeReferenceElement:B
|
||||
PsiIdentifier:B('B')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:b('b')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ANDAND('&&')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiBinaryExpression:b > 0
|
||||
PsiReferenceExpression:b
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:b('b')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:GT('>')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiLiteralExpression:0
|
||||
PsiJavaToken:INTEGER_LITERAL('0')
|
||||
PsiJavaToken:RPARENTH(')')
|
||||
PsiJavaToken:RPARENTH(')')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ANDAND('&&')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiBinaryExpression:a > 10
|
||||
PsiReferenceExpression:a
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:a('a')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:GT('>')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiLiteralExpression:10
|
||||
PsiJavaToken:INTEGER_LITERAL('10')
|
||||
PsiJavaToken:RPARENTH(')')
|
||||
@@ -1,43 +0,0 @@
|
||||
PsiJavaFile:SwitchLabelsWithPattern.java
|
||||
PsiSwitchLabelStatement
|
||||
PsiKeyword:case('case')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiCaseLabelElementList
|
||||
PsiGuardedPattern
|
||||
PsiTypeTestPattern
|
||||
PsiPatternVariable:ia
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiTypeElement:int[]
|
||||
PsiTypeElement:int
|
||||
PsiKeyword:int('int')
|
||||
PsiJavaToken:LBRACKET('[')
|
||||
PsiJavaToken:RBRACKET(']')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:ia('ia')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ANDAND('&&')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiBinaryExpression:ia.length > 10
|
||||
PsiReferenceExpression:ia.length
|
||||
PsiReferenceExpression:ia
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:ia('ia')
|
||||
PsiJavaToken:DOT('.')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:length('length')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:GT('>')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiLiteralExpression:10
|
||||
PsiJavaToken:INTEGER_LITERAL('10')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:COLON(':')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiBlockStatement
|
||||
PsiCodeBlock
|
||||
PsiJavaToken:LBRACE('{')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:RBRACE('}')
|
||||
@@ -1,49 +0,0 @@
|
||||
PsiJavaFile:SwitchRules15.java
|
||||
PsiSwitchLabeledRule
|
||||
PsiKeyword:case('case')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiCaseLabelElementList
|
||||
PsiGuardedPattern
|
||||
PsiTypeTestPattern
|
||||
PsiPatternVariable:a
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiTypeElement:A
|
||||
PsiJavaCodeReferenceElement:A
|
||||
PsiIdentifier:A('A')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:a('a')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ANDAND('&&')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiMethodCallExpression:x.foo(() -> true)
|
||||
PsiReferenceExpression:x.foo
|
||||
PsiReferenceExpression:x
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:x('x')
|
||||
PsiJavaToken:DOT('.')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:foo('foo')
|
||||
PsiExpressionList
|
||||
PsiJavaToken:LPARENTH('(')
|
||||
PsiLambdaExpression
|
||||
PsiParameterList:()
|
||||
PsiJavaToken:LPARENTH('(')
|
||||
PsiJavaToken:RPARENTH(')')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ARROW('->')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiLiteralExpression:true
|
||||
PsiJavaToken:TRUE_KEYWORD('true')
|
||||
PsiJavaToken:RPARENTH(')')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ARROW('->')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiBlockStatement
|
||||
PsiCodeBlock
|
||||
PsiJavaToken:LBRACE('{')
|
||||
PsiJavaToken:RBRACE('}')
|
||||
@@ -1,31 +0,0 @@
|
||||
PsiJavaFile:SwitchRules16.java
|
||||
PsiSwitchLabeledRule
|
||||
PsiKeyword:case('case')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiCaseLabelElementList
|
||||
PsiGuardedPattern
|
||||
PsiTypeTestPattern
|
||||
PsiPatternVariable:a
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiTypeElement:A
|
||||
PsiJavaCodeReferenceElement:A
|
||||
PsiIdentifier:A('A')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:a('a')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ANDAND('&&')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiReferenceExpression:b
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:b('b')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ARROW('->')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiBlockStatement
|
||||
PsiCodeBlock
|
||||
PsiJavaToken:LBRACE('{')
|
||||
PsiJavaToken:RBRACE('}')
|
||||
@@ -1,24 +0,0 @@
|
||||
PsiJavaFile:SwitchRulesWithPattern0.java
|
||||
PsiSwitchLabeledRule
|
||||
PsiKeyword:case('case')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiCaseLabelElementList
|
||||
PsiTypeTestPattern
|
||||
PsiPatternVariable:i
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiTypeElement:Integer
|
||||
PsiJavaCodeReferenceElement:Integer
|
||||
PsiIdentifier:Integer('Integer')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:i('i')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ARROW('->')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiBlockStatement
|
||||
PsiCodeBlock
|
||||
PsiJavaToken:LBRACE('{')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:RBRACE('}')
|
||||
@@ -3,31 +3,17 @@ PsiJavaFile:SwitchRulesWithPattern2.java
|
||||
PsiKeyword:case('case')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiCaseLabelElementList
|
||||
PsiGuardedPattern
|
||||
PsiTypeTestPattern
|
||||
PsiPatternVariable:i
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiTypeElement:Integer
|
||||
PsiJavaCodeReferenceElement:Integer
|
||||
PsiIdentifier:Integer('Integer')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:i('i')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ANDAND('&&')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiBinaryExpression:i > 10
|
||||
PsiReferenceExpression:i
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:i('i')
|
||||
PsiTypeTestPattern
|
||||
PsiPatternVariable:i
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiTypeElement:Integer
|
||||
PsiJavaCodeReferenceElement:Integer
|
||||
PsiIdentifier:Integer('Integer')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:GT('>')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiLiteralExpression:10
|
||||
PsiJavaToken:INTEGER_LITERAL('10')
|
||||
PsiIdentifier:i('i')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ARROW('->')
|
||||
PsiWhiteSpace(' ')
|
||||
|
||||
@@ -3,43 +3,31 @@ PsiJavaFile:SwitchRulesWithPattern3.java
|
||||
PsiKeyword:case('case')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiCaseLabelElementList
|
||||
PsiGuardedPattern
|
||||
PsiParenthesizedPattern
|
||||
PsiJavaToken:LPARENTH('(')
|
||||
PsiGuardedPattern
|
||||
PsiTypeTestPattern
|
||||
PsiPatternVariable:i
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiTypeElement:Integer
|
||||
PsiJavaCodeReferenceElement:Integer
|
||||
PsiIdentifier:Integer('Integer')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:i('i')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ANDAND('&&')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiBinaryExpression:i > 10
|
||||
PsiReferenceExpression:i
|
||||
PsiPatternGuard
|
||||
PsiTypeTestPattern
|
||||
PsiPatternVariable:when
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiTypeElement:A
|
||||
PsiJavaCodeReferenceElement:A
|
||||
PsiIdentifier:A('A')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:i('i')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:GT('>')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiLiteralExpression:10
|
||||
PsiJavaToken:INTEGER_LITERAL('10')
|
||||
PsiJavaToken:RPARENTH(')')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:when('when')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ANDAND('&&')
|
||||
PsiKeyword:when('when')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiMethodCallExpression:boolExpr()
|
||||
PsiReferenceExpression:boolExpr
|
||||
PsiMethodCallExpression:when.foo()
|
||||
PsiReferenceExpression:when.foo
|
||||
PsiReferenceExpression:when
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:when('when')
|
||||
PsiJavaToken:DOT('.')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:boolExpr('boolExpr')
|
||||
PsiIdentifier:foo('foo')
|
||||
PsiExpressionList
|
||||
PsiJavaToken:LPARENTH('(')
|
||||
PsiJavaToken:RPARENTH(')')
|
||||
@@ -49,5 +37,4 @@ PsiJavaFile:SwitchRulesWithPattern3.java
|
||||
PsiBlockStatement
|
||||
PsiCodeBlock
|
||||
PsiJavaToken:LBRACE('{')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:RBRACE('}')
|
||||
@@ -1,40 +0,0 @@
|
||||
PsiJavaFile:SwitchRulesWithPattern9.java
|
||||
PsiSwitchLabeledRule
|
||||
PsiKeyword:case('case')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiCaseLabelElementList
|
||||
PsiPatternGuard
|
||||
PsiTypeTestPattern
|
||||
PsiPatternVariable:when
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiTypeElement:A
|
||||
PsiJavaCodeReferenceElement:A
|
||||
PsiIdentifier:A('A')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:when('when')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiKeyword:when('when')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiMethodCallExpression:when.foo()
|
||||
PsiReferenceExpression:when.foo
|
||||
PsiReferenceExpression:when
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:when('when')
|
||||
PsiJavaToken:DOT('.')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:foo('foo')
|
||||
PsiExpressionList
|
||||
PsiJavaToken:LPARENTH('(')
|
||||
PsiJavaToken:RPARENTH(')')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ARROW('->')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiBlockStatement
|
||||
PsiCodeBlock
|
||||
PsiJavaToken:LBRACE('{')
|
||||
PsiJavaToken:RBRACE('}')
|
||||
@@ -1,29 +0,0 @@
|
||||
PsiJavaFile:SwitchRulesWithPatternIncomplete0.java
|
||||
PsiSwitchLabeledRule
|
||||
PsiKeyword:case('case')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiCaseLabelElementList
|
||||
PsiGuardedPattern
|
||||
PsiTypeTestPattern
|
||||
PsiPatternVariable:i
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiTypeElement:Integer
|
||||
PsiJavaCodeReferenceElement:Integer
|
||||
PsiIdentifier:Integer('Integer')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:i('i')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ANDAND('&&')
|
||||
PsiErrorElement:Expression expected
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ARROW('->')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiBlockStatement
|
||||
PsiCodeBlock
|
||||
PsiJavaToken:LBRACE('{')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:RBRACE('}')
|
||||
@@ -3,38 +3,22 @@ PsiJavaFile:SwitchRulesWithPatternIncomplete3.java
|
||||
PsiKeyword:case('case')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiCaseLabelElementList
|
||||
PsiGuardedPattern
|
||||
PsiParenthesizedPattern
|
||||
PsiJavaToken:LPARENTH('(')
|
||||
PsiGuardedPattern
|
||||
PsiTypeTestPattern
|
||||
PsiPatternVariable:i
|
||||
PsiModifierList:
|
||||
PsiPatternGuard
|
||||
PsiTypeTestPattern
|
||||
PsiPatternVariable:i
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiTypeElement:Integer
|
||||
PsiJavaCodeReferenceElement:Integer
|
||||
PsiIdentifier:Integer('Integer')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiTypeElement:Integer
|
||||
PsiJavaCodeReferenceElement:Integer
|
||||
PsiIdentifier:Integer('Integer')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:i('i')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ANDAND('&&')
|
||||
PsiErrorElement:Expression expected
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:RPARENTH(')')
|
||||
PsiIdentifier:i('i')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ANDAND('&&')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiMethodCallExpression:boolExpr()
|
||||
PsiReferenceExpression:boolExpr
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:boolExpr('boolExpr')
|
||||
PsiExpressionList
|
||||
PsiJavaToken:LPARENTH('(')
|
||||
PsiJavaToken:RPARENTH(')')
|
||||
PsiKeyword:when('when')
|
||||
PsiErrorElement:Expression expected
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ARROW('->')
|
||||
PsiWhiteSpace(' ')
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
PsiJavaFile:SwitchRulesWithPatternIncomplete4.java
|
||||
PsiSwitchLabeledRule
|
||||
PsiKeyword:case('case')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiCaseLabelElementList
|
||||
PsiPatternGuard
|
||||
PsiTypeTestPattern
|
||||
PsiPatternVariable:i
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiTypeElement:Integer
|
||||
PsiJavaCodeReferenceElement:Integer
|
||||
PsiIdentifier:Integer('Integer')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:i('i')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiKeyword:when('when')
|
||||
PsiErrorElement:Expression expected
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:ARROW('->')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiBlockStatement
|
||||
PsiCodeBlock
|
||||
PsiJavaToken:LBRACE('{')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:RBRACE('}')
|
||||
@@ -19,8 +19,10 @@ class JavaKeywordsTest {
|
||||
assertTrue(JavaLexer.isSoftKeyword("sealed", LanguageLevel.JDK_17))
|
||||
assertFalse(JavaLexer.isKeyword("permits", LanguageLevel.JDK_17))
|
||||
assertTrue(JavaLexer.isSoftKeyword("permits", LanguageLevel.JDK_17))
|
||||
assertFalse(JavaLexer.isKeyword("when", LanguageLevel.JDK_19_PREVIEW))
|
||||
assertTrue(JavaLexer.isSoftKeyword("when", LanguageLevel.JDK_19_PREVIEW))
|
||||
assertFalse(JavaLexer.isKeyword("when", LanguageLevel.JDK_20_PREVIEW))
|
||||
assertTrue(JavaLexer.isSoftKeyword("when", LanguageLevel.JDK_20_PREVIEW))
|
||||
assertFalse(JavaLexer.isKeyword("when", LanguageLevel.JDK_21))
|
||||
assertTrue(JavaLexer.isSoftKeyword("when", LanguageLevel.JDK_21))
|
||||
}
|
||||
|
||||
@Test fun sequences() {
|
||||
|
||||
@@ -3,7 +3,6 @@ package com.intellij.java.parser.partial;
|
||||
|
||||
import com.intellij.java.parser.JavaParsingTestCase;
|
||||
import com.intellij.lang.java.parser.JavaParser;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
|
||||
public class ExpressionParserTest extends JavaParsingTestCase {
|
||||
public ExpressionParserTest() {
|
||||
@@ -38,8 +37,6 @@ public class ExpressionParserTest extends JavaParsingTestCase {
|
||||
public void testInstanceOfPattern2() { doParserTest("x instanceof @Ann() final Foo v"); }
|
||||
public void testInstanceOfPattern3() { doParserTest("x instanceof (Foo v)"); }
|
||||
public void testInstanceOfPattern4() { doParserTest("x instanceof Foo v && v > 10"); }
|
||||
public void testInstanceOfPattern5() { doParserTest("x instanceof (Foo v && v > 10)"); }
|
||||
public void testInstanceOfPattern6() { doParserTest("x instanceof ((A a && a.b instanceof (B b && b > 0)) && a > 10)"); }
|
||||
|
||||
public void testNot0() { doParserTest("!!a"); }
|
||||
public void testNot1() { doParserTest("!"); }
|
||||
|
||||
@@ -124,7 +124,6 @@ public class StatementParserTest extends JavaParsingTestCase {
|
||||
public void testSwitchIncomplete5() { doParserTest("switch(\n foo();"); }
|
||||
|
||||
public void testSwitchLabelsNormal() { doParserTest("case 1: break; default: break;"); }
|
||||
public void testSwitchLabelsWithPattern() { doParserTest("case int[] ia && ia.length > 10 : { }"); }
|
||||
public void testSwitchLabelsMultiple() { doParserTest("case 1, 2: break;"); }
|
||||
public void testSwitchLabelsIncomplete0() { doParserTest("case"); }
|
||||
public void testSwitchLabelsIncomplete1() { doParserTest("case 2"); }
|
||||
@@ -148,24 +147,18 @@ public class StatementParserTest extends JavaParsingTestCase {
|
||||
public void testSwitchRules12() { doParserTest("case 1, -> { }"); }
|
||||
public void testSwitchRules13() { doParserTest("case null, default -> { }"); }
|
||||
public void testSwitchRules14() { doParserTest("case default -> { }"); }
|
||||
public void testSwitchRules15() { doParserTest("case A a && x.foo(() -> true) -> {}"); }
|
||||
public void testSwitchRules16() { doParserTest("case A a && b -> {}"); }
|
||||
|
||||
public void testSwitchRulesWithPattern0() { doParserTest("case Integer i -> { }"); }
|
||||
public void testSwitchRulesWithPattern1() { doParserTest("case int[] ia -> { }"); }
|
||||
public void testSwitchRulesWithPattern2() { doParserTest("case Integer i && i > 10 -> { }"); }
|
||||
public void testSwitchRulesWithPattern3() { doParserTest("case (Integer i && i > 10) && boolExpr() -> { }"); }
|
||||
public void testSwitchRulesWithPattern2() { doParserTest("case Integer i -> { }"); }
|
||||
public void testSwitchRulesWithPattern3() { doParserTest("case A when when when.foo() -> {}"); }
|
||||
public void testSwitchRulesWithPattern4() { doParserTest("case null, default -> { }"); }
|
||||
public void testSwitchRulesWithPattern5() { doParserTest("case null -> { }"); }
|
||||
public void testSwitchRulesWithPattern6() { doParserTest("case Integer i when true -> { }"); }
|
||||
public void testSwitchRulesWithPattern7() { doParserTest("case R(int i) when true -> {}"); }
|
||||
public void testSwitchRulesWithPattern8() { doParserTest("case R(int i) when a < b -> {}"); }
|
||||
public void testSwitchRulesWithPattern9() { doParserTest("case A when when when.foo() -> {}"); }
|
||||
public void testSwitchRulesWithPatternIncomplete0() { doParserTest("case Integer i && -> { }"); }
|
||||
public void testSwitchRulesWithPatternIncomplete1() { doParserTest("case (Integer i -> { }"); }
|
||||
public void testSwitchRulesWithPatternIncomplete2() { doParserTest("case Integer i, -> { }"); }
|
||||
public void testSwitchRulesWithPatternIncomplete3() { doParserTest("case (Integer i && ) && boolExpr() -> { }"); }
|
||||
public void testSwitchRulesWithPatternIncomplete4() { doParserTest("case Integer i when -> { }"); }
|
||||
public void testSwitchRulesWithPatternIncomplete3() { doParserTest("case Integer i when -> { }"); }
|
||||
|
||||
public void testSyncNormal() { doParserTest("synchronized(o){}"); }
|
||||
public void testSyncIncomplete0() { doParserTest("synchronized"); }
|
||||
|
||||
Reference in New Issue
Block a user