From 22fcccc5c23c4e35e2fa2fc524e1e8a72611624d Mon Sep 17 00:00:00 2001 From: David Thompson Date: Thu, 2 Nov 2023 10:32:08 -0400 Subject: [PATCH] Unnamed patterns and varibles (JEP 443) without pattern lists Contains support for unnamed patterns and variables (JEP443), including parsing, analysis and code generation, but omits support for lists of patterns in case statements, which will be handled in a future PR. Signed-off-by: David Thompson --- .../grammar/java.g | 222 +- .../eclipse/jdt/core/compiler/IProblem.java | 11 + .../ast/AbstractVariableDeclaration.java | 12 + .../jdt/internal/compiler/ast/Argument.java | 20 +- .../compiler/ast/FieldDeclaration.java | 4 + .../compiler/ast/LocalDeclaration.java | 34 +- .../jdt/internal/compiler/ast/Pattern.java | 5 +- .../internal/compiler/ast/RecordPattern.java | 30 +- .../internal/compiler/ast/TypePattern.java | 3 +- .../internal/compiler/impl/JavaFeature.java | 2 +- .../internal/compiler/lookup/BlockScope.java | 3 +- .../jdt/internal/compiler/messages.properties | 2 +- .../parser/AbstractCommentParser.java | 29 +- .../jdt/internal/compiler/parser/Parser.java | 2711 +++++++---------- .../parser/ParserBasicInformation.java | 30 +- .../jdt/internal/compiler/parser/Scanner.java | 9 +- .../compiler/parser/TerminalTokens.java | 213 +- .../jdt/internal/compiler/parser/parser1.rsc | Bin 36872 -> 37154 bytes .../jdt/internal/compiler/parser/parser10.rsc | Bin 640 -> 644 bytes .../jdt/internal/compiler/parser/parser11.rsc | Bin 640 -> 644 bytes .../jdt/internal/compiler/parser/parser12.rsc | Bin 640 -> 644 bytes .../jdt/internal/compiler/parser/parser13.rsc | Bin 640 -> 644 bytes .../jdt/internal/compiler/parser/parser14.rsc | Bin 2492 -> 2502 bytes .../jdt/internal/compiler/parser/parser15.rsc | Bin 1664 -> 1656 bytes .../jdt/internal/compiler/parser/parser16.rsc | Bin 2500 -> 2498 bytes .../jdt/internal/compiler/parser/parser17.rsc | Bin 948 -> 955 bytes .../jdt/internal/compiler/parser/parser18.rsc | Bin 17524 -> 17698 bytes .../jdt/internal/compiler/parser/parser19.rsc | Bin 640 -> 644 bytes .../jdt/internal/compiler/parser/parser2.rsc | Bin 34976 -> 35244 bytes .../jdt/internal/compiler/parser/parser20.rsc | Bin 19000 -> 19104 bytes .../jdt/internal/compiler/parser/parser21.rsc | Bin 7584 -> 7640 bytes .../jdt/internal/compiler/parser/parser22.rsc | Bin 876 -> 880 bytes .../jdt/internal/compiler/parser/parser23.rsc | Bin 100 -> 100 bytes .../jdt/internal/compiler/parser/parser24.rsc | Bin 876 -> 880 bytes .../jdt/internal/compiler/parser/parser3.rsc | Bin 2500 -> 2498 bytes .../jdt/internal/compiler/parser/parser4.rsc | Bin 3954 -> 4008 bytes .../jdt/internal/compiler/parser/parser5.rsc | Bin 2500 -> 2498 bytes .../jdt/internal/compiler/parser/parser6.rsc | Bin 1648 -> 1654 bytes .../jdt/internal/compiler/parser/parser7.rsc | Bin 280 -> 282 bytes .../jdt/internal/compiler/parser/parser8.rsc | Bin 876 -> 880 bytes .../jdt/internal/compiler/parser/parser9.rsc | Bin 17260 -> 17662 bytes .../compiler/parser/readableNames.props | 7 +- .../compiler/problem/ProblemReporter.java | 30 +- .../compiler/problem/messages.properties | 4 + .../jdt/internal/compiler/util/Messages.java | 2 +- .../parser/ComplianceDiagnoseTest.java | 3 + .../regression/CompilerInvocationTests.java | 4 + .../NegativeLambdaExpressionsTest.java | 8 +- .../tests/compiler/regression/TestAll.java | 4 +- .../UnnamedPatternsAndVariablesTest.java | 690 +++++ .../UnnammedPatternsAndVarsTest.java | 226 -- .../regression/UseOfUnderscoreTest.java | 196 ++ .../UseOfUnderscoreWithPreviewTest.java | 127 + .../codeassist/complete/CompletionParser.java | 4 + org.eclipse.jdt.core/jdtCompilerAdapter.jar | Bin 14386 -> 14820 bytes .../jdt/core/compiler/ITerminalSymbols.java | 3 + .../jdt/internal/core/util/PublicScanner.java | 1 + 57 files changed, 2532 insertions(+), 2117 deletions(-) create mode 100644 org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UnnamedPatternsAndVariablesTest.java delete mode 100644 org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UnnammedPatternsAndVarsTest.java create mode 100644 org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UseOfUnderscoreTest.java create mode 100644 org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UseOfUnderscoreWithPreviewTest.java diff --git a/org.eclipse.jdt.core.compiler.batch/grammar/java.g b/org.eclipse.jdt.core.compiler.batch/grammar/java.g index 5f1135595ea..3ac25c48d72 100644 --- a/org.eclipse.jdt.core.compiler.batch/grammar/java.g +++ b/org.eclipse.jdt.core.compiler.batch/grammar/java.g @@ -1,10 +1,10 @@ --main options -%options ACTION, AN=JavaAction.java, GP=java, +%options ACTION, AN=JavaAction.java, GP=java, %options FILE-PREFIX=java, ESCAPE=$, PREFIX=TokenName, OUTPUT-SIZE=125 , -%options NOGOTO-DEFAULT, SINGLE-PRODUCTIONS, LALR=1 , TABLE, +%options NOGOTO-DEFAULT, SINGLE-PRODUCTIONS, LALR=1 , TABLE, --error recovering options..... -%options ERROR_MAPS +%options ERROR_MAPS --grammar understanding options %options first follow @@ -16,18 +16,18 @@ %options SCOPES --Usefull macros helping reading/writing semantic actions -$Define -$putCase +$Define +$putCase /. case $rule_number : if (DEBUG) { System.out.println("$rule_text"); } //$NON-NLS-1$ ./ $break -/. +/. break; ./ -$readableName +$readableName /.1#$rule_number#./ $compliance /.2#$rule_number#./ @@ -42,7 +42,7 @@ $Terminals Identifier - abstract assert boolean break byte case catch char class + abstract assert boolean break byte case catch char class continue const default do double else enum extends false final finally float for goto if implements import instanceof int interface long native new non-sealed null package private @@ -123,6 +123,7 @@ $Terminals RestrictedIdentifierpermits BeginCaseElement RestrictedIdentifierWhen + UNDERSCORE -- BodyMarker @@ -180,7 +181,8 @@ $Alias '...' ::= ELLIPSIS '@308' ::= AT308 '@308...' ::= AT308DOTDOTDOT - + '_' ::= UNDERSCORE + $Start Goal @@ -347,9 +349,9 @@ UnannotatableName ::= UnannotatableName '.' SimpleName /.$putCase consumeUnannotatableQualifiedName(); $break ./ /:$readableName UnannotatableQualifiedName:/ -QualifiedName ::= Name '.' SimpleName +QualifiedName ::= Name '.' SimpleName /.$putCase consumeQualifiedName(false); $break ./ -QualifiedName ::= Name '.' TypeAnnotations SimpleName +QualifiedName ::= Name '.' TypeAnnotations SimpleName /.$putCase consumeQualifiedName(true); $break ./ /:$compliance 1.8:/ /:$readableName QualifiedName:/ @@ -360,7 +362,7 @@ TypeAnnotationsopt -> TypeAnnotations /:$compliance 1.8:/ /:$readableName TypeAnnotationsopt:/ --- Production name hardcoded in parser. Must be ::= and not -> +-- Production name hardcoded in parser. Must be ::= and not -> TypeAnnotations ::= TypeAnnotations0 /:$readableName TypeAnnotations:/ @@ -595,7 +597,7 @@ CatchHeader ::= 'catch' '(' CatchFormalParameter ')' '{' /:$readableName CatchHeader:/ ImportDeclarations -> ImportDeclaration -ImportDeclarations ::= ImportDeclarations ImportDeclaration +ImportDeclarations ::= ImportDeclarations ImportDeclaration /.$putCase consumeImportDeclarations(); $break ./ /:$readableName ImportDeclarations:/ @@ -649,9 +651,9 @@ TypeImportOnDemandDeclarationName ::= 'import' Name '.' RejectTypeAnnotations '* TypeDeclaration -> ClassDeclaration TypeDeclaration -> InterfaceDeclaration -- this declaration in part of a list od declaration and we will --- use and optimized list length calculation process +-- use and optimized list length calculation process -- thus we decrement the number while it will be incremend..... -TypeDeclaration ::= ';' +TypeDeclaration ::= ';' /. $putCase consumeEmptyTypeDeclaration(); $break ./ ----------------------------------------------- -- 1.5 feature @@ -669,7 +671,7 @@ Modifiers ::= Modifiers Modifier /.$putCase consumeModifiers2(); $break ./ /:$readableName Modifiers:/ -Modifier -> 'public' +Modifier -> 'public' Modifier -> 'protected' Modifier -> 'private' Modifier -> 'static' @@ -775,7 +777,7 @@ ClassMemberDeclaration -> RecordDeclaration /:$readableName ClassMemberDeclaration:/ -- Empty declarations are not valid Java ClassMemberDeclarations. --- However, since the current (2/14/97) Java compiler accepts them +-- However, since the current (2/14/97) Java compiler accepts them -- (in fact, some of the official tests contain this erroneous -- syntax) ClassMemberDeclaration ::= ';' @@ -799,7 +801,7 @@ FieldDeclaration ::= Modifiersopt Type VariableDeclarators ';' /.$putCase consumeFieldDeclaration(); $break ./ /:$readableName FieldDeclaration:/ -VariableDeclarators -> VariableDeclarator +VariableDeclarators -> VariableDeclarator VariableDeclarators ::= VariableDeclarators ',' VariableDeclarator /.$putCase consumeVariableDeclarators(); $break ./ /:$readableName VariableDeclarators:/ @@ -832,6 +834,8 @@ RestoreDiet ::= $empty VariableDeclaratorId ::= 'Identifier' Dimsopt /:$readableName VariableDeclaratorId:/ /:$recovery_template Identifier:/ +VariableDeclaratorId ::= '_' +/.$putCase consumeUnnamedVariable(); $break ./ VariableInitializer -> Expression VariableInitializer -> ArrayInitializer @@ -851,12 +855,12 @@ VariableInitializer -> ArrayInitializer -- MethodDeclaration -> AbstractMethodDeclaration -MethodDeclaration ::= MethodHeader MethodBody +MethodDeclaration ::= MethodHeader MethodBody /.$putCase // set to true to consume a method with a body consumeMethodDeclaration(true, false); $break ./ /:$readableName MethodDeclaration:/ -MethodDeclaration ::= DefaultMethodHeader MethodBody +MethodDeclaration ::= DefaultMethodHeader MethodBody /.$putCase // set to true to consume a method with a body consumeMethodDeclaration(true, true); $break ./ /:$readableName MethodDeclaration:/ @@ -956,7 +960,7 @@ ClassTypeElt ::= ClassType /.$putCase consumeClassTypeElt(); $break ./ /:$readableName ClassType:/ -MethodBody ::= NestedMethod '{' BlockStatementsopt '}' +MethodBody ::= NestedMethod '{' BlockStatementsopt '}' /.$putCase consumeMethodBody(); $break ./ /:$readableName MethodBody:/ /:$no_statements_recovery:/ @@ -983,10 +987,10 @@ StaticOnly ::= 'static' -- -- ConstructorDeclaration ::= ConstructorHeader MethodBody -/.$putCase consumeConstructorDeclaration() ; $break ./ +/.$putCase consumeConstructorDeclaration() ; $break ./ -- These rules are added to be able to parse constructors with no body ConstructorDeclaration ::= ConstructorHeader ';' -/.$putCase consumeInvalidConstructorDeclaration() ; $break ./ +/.$putCase consumeInvalidConstructorDeclaration() ; $break ./ /:$readableName ConstructorDeclaration:/ -- the rules ExplicitConstructorInvocationopt has been expanded @@ -1066,7 +1070,7 @@ InterfaceHeaderExtends ::= 'extends' InterfaceTypeList /.$putCase consumeInterfaceHeaderExtends(); $break ./ /:$readableName InterfaceHeaderExtends:/ -InterfaceBody ::= '{' InterfaceMemberDeclarationsopt '}' +InterfaceBody ::= '{' InterfaceMemberDeclarationsopt '}' /:$readableName InterfaceBody:/ InterfaceMemberDeclarations -> InterfaceMemberDeclaration @@ -1126,7 +1130,7 @@ RecordDeclaration ::= RecordHeaderPart RecordBody /:$readableName RecordDeclaration:/ /:$compliance 14:/ -RecordHeaderPart ::= RecordHeaderName RecordHeader ClassHeaderImplementsopt +RecordHeaderPart ::= RecordHeaderName RecordHeader ClassHeaderImplementsopt /.$putCase consumeRecordHeaderPart(); $break ./ /:$readableName RecordHeaderPart:/ /:$compliance 14:/ @@ -1135,7 +1139,7 @@ RecordHeaderName ::= RecordHeaderName1 TypeParameters /.$putCase consumeRecordHeaderNameWithTypeParameters(); $break ./ /:$compliance 14:/ -RecordHeaderName -> RecordHeaderName1 +RecordHeaderName -> RecordHeaderName1 /:$readableName RecordHeaderName:/ /:$compliance 14:/ @@ -1260,6 +1264,10 @@ Pattern -> RecordPattern TypePattern ::= Modifiersopt Type 'Identifier' /.$putCase consumeTypePattern(); $break ./ /:$readableName TypePattern:/ +TypePattern ::= Modifiersopt Type '_' +/.$putCase consumeTypePattern(); $break ./ +/:$readableName TypePattern:/ +/:$compliance 21:/ ----------------------------------------------- -- 16 feature : end of instanceof pattern matching @@ -1269,26 +1277,30 @@ TypePattern ::= Modifiersopt Type 'Identifier' -- 20 preview feature : record patterns ----------------------------------------------- -RecordPattern ::= Modifiersopt ReferenceType PushLPAREN PatternListopt PushRPAREN +RecordPattern ::= Modifiersopt ReferenceType PushLPAREN ComponentPatternListopt PushRPAREN /.$putCase consumeRecordPattern(); $break ./ /:$readableName RecordPattern:/ /:$compliance 20:/ -PatternListopt ::= $empty +ComponentPatternListopt ::= $empty /.$putCase consumePatternListopt(); $break ./ -/:$readableName PatternListopt:/ +/:$readableName ComponentPatternListopt:/ /:$compliance 20:/ -PatternListopt -> PatternList +ComponentPatternListopt -> ComponentPatternList /:$readableName PatternListopt:/ /:$compliance 20:/ -PatternList -> Pattern -PatternList ::= PatternList ',' Pattern +ComponentPatternList -> ComponentPattern +ComponentPatternList ::= ComponentPatternList ',' ComponentPattern /.$putCase consumePatternList(); $break ./ -/:$readableName PatternList:/ +/:$readableName ComponentPatternList:/ /:$compliance 20:/ +ComponentPattern -> Pattern +ComponentPattern -> UnnamedPattern +/:$compliance 21:/ + ----------------------------------------------- -- 20 preview feature : end of record patterns ----------------------------------------------- @@ -1320,6 +1332,11 @@ StringTemplateExpression ::= Primary '.' TemplateArgument -- 21 preview feature : end of String templates ----------------------------------------------- +UnnamedPattern ::= '_' +/.$putCase consumeUnnamedPattern(); $break ./ +/:$readableName UnnamedPattern:/ +/:$compliance 21:/ + ConstantDeclaration -> FieldDeclaration /:$readableName ConstantDeclaration:/ @@ -1356,7 +1373,7 @@ BlockStatements ::= BlockStatements BlockStatement /.$putCase consumeBlockStatements() ; $break ./ /:$readableName BlockStatements:/ --- Production name hardcoded in parser. Must be ::= and not -> +-- Production name hardcoded in parser. Must be ::= and not -> BlockStatementopt ::= BlockStatementopt0 /:$readableName BlockStatementopt:/ BlockStatementopt0 -> $empty @@ -1385,7 +1402,7 @@ LocalVariableDeclarationStatement ::= LocalVariableDeclaration ';' LocalVariableDeclaration ::= Type PushModifiers VariableDeclarators /.$putCase consumeLocalVariableDeclaration(); $break ./ -- 1.1 feature --- The modifiers part of this rule makes the grammar more permissive. +-- The modifiers part of this rule makes the grammar more permissive. -- The only modifier here is final. We put Modifiers to allow multiple modifiers -- This will require to check the validity of the modifier LocalVariableDeclaration ::= Modifiers Type PushRealModifiers VariableDeclarators @@ -1586,7 +1603,7 @@ CaseLabelElement ::= ConstantExpression -- following 'null' in CASE_EXPRESSION - passes through existing grammar -- CaseLabelElement -> 'null' - + CaseLabelElement ::= 'default' /.$putCase consumeCaseLabelElement(CaseLabelKind.CASE_DEFAULT); $break ./ /:$readableName CaseLabelElement:/ @@ -1793,10 +1810,10 @@ PrimaryNoNewArray -> Literal PrimaryNoNewArray ::= 'this' /.$putCase consumePrimaryNoNewArrayThis(); $break ./ -PrimaryNoNewArray ::= PushLPAREN Expression_NotName PushRPAREN +PrimaryNoNewArray ::= PushLPAREN Expression_NotName PushRPAREN /.$putCase consumePrimaryNoNewArray(); $break ./ -PrimaryNoNewArray ::= PushLPAREN Name PushRPAREN +PrimaryNoNewArray ::= PushLPAREN Name PushRPAREN /.$putCase consumePrimaryNoNewArrayWithName(); $break ./ PrimaryNoNewArray -> ClassInstanceCreationExpression @@ -1810,7 +1827,7 @@ QualifiedSuperReceiver ::= Name '.' 'super' --1.1 feature --PrimaryNoNewArray ::= Type '.' 'class' ---inline Type in the previous rule in order to make the grammar LL1 instead +--inline Type in the previous rule in order to make the grammar LL1 instead -- of LL2. The result is the 3 next rules. PrimaryNoNewArray ::= Name '.' 'class' @@ -1836,14 +1853,14 @@ PrimaryNoNewArray -> LambdaExpression PrimaryNoNewArray -> ReferenceExpression /:$readableName Expression:/ --- Production name hardcoded in parser. Must be ::= and not -> +-- Production name hardcoded in parser. Must be ::= and not -> ReferenceExpressionTypeArgumentsAndTrunk ::= ReferenceExpressionTypeArgumentsAndTrunk0 /:$readableName ReferenceExpressionTypeArgumentsAndTrunk:/ -ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments Dimsopt +ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments Dimsopt /.$putCase consumeReferenceExpressionTypeArgumentsAndTrunk(false); $break ./ /:$compliance 1.8:/ -ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments '.' ClassOrInterfaceType Dimsopt +ReferenceExpressionTypeArgumentsAndTrunk0 ::= OnlyTypeArguments '.' ClassOrInterfaceType Dimsopt /.$putCase consumeReferenceExpressionTypeArgumentsAndTrunk(true); $break ./ /:$readableName ReferenceExpressionTypeArgumentsAndTrunk:/ /:$compliance 1.8:/ @@ -1895,6 +1912,11 @@ NestedLambda ::= $empty /.$putCase consumeNestedLambda(); $break ./ /:$readableName NestedLambda:/ +LambdaParameters ::= '_' NestedLambda +/.$putCase consumeTypeElidedLambdaParameter(false); $break ./ +/:$readableName TypeElidedUnnamedFormalParameter:/ +/:$compliance 21:/ + LambdaParameters ::= Identifier NestedLambda /.$putCase consumeTypeElidedLambdaParameter(false); $break ./ /:$readableName TypeElidedFormalParameter:/ @@ -1906,7 +1928,7 @@ LambdaParameters -> BeginLambda NestedLambda LambdaParameterList /:$readableName LambdaParameters:/ /:$compliance 1.8:/ --- Production name hardcoded in parser. Must be ::= and not -> +-- Production name hardcoded in parser. Must be ::= and not -> ParenthesizedLambdaParameterList ::= LambdaParameterList /:$readableName ParenthesizedLambdaParameterList:/ @@ -1928,6 +1950,11 @@ TypeElidedFormalParameter ::= Modifiersopt Identifier /:$readableName TypeElidedFormalParameter:/ /:$compliance 1.8:/ +TypeElidedFormalParameter ::= '_' +/.$putCase consumeBracketedTypeElidedUnderscoreLambdaParameter(); $break ./ +/:$readableName TypeElidedFormalParameter:/ +/:$compliance 21:/ + -- A lambda body of the form x is really '{' return x; '}' LambdaBody -> ElidedLeftBraceAndReturn Expression ElidedSemicolonAndRightBrace LambdaBody -> Block @@ -2163,7 +2190,7 @@ AdditionalBoundsListOpt -> AdditionalBoundList /:$compliance 1.8:/ /:$readableName AdditionalBoundsListOpt:/ --- Production name hardcoded in parser. Must be ::= and not -> +-- Production name hardcoded in parser. Must be ::= and not -> ParenthesizedCastNameAndBounds ::= '(' CastNameAndBounds ')' /:$readableName ParenthesizedCastNameAndBounds:/ @@ -2331,7 +2358,7 @@ ConstantExpression -> Expression -- The rules below are for optional terminal symbols. An optional comma, -- is only used in the context of an array initializer - It is a -- "syntactic sugar" that otherwise serves no other purpose. By contrast, --- an optional identifier is used in the definition of a break and +-- an optional identifier is used in the definition of a break and -- continue statement. When the identifier does not appear, a NULL -- is produced. When the identifier is present, the user should use the -- corresponding TOKEN(i) method. See break statement as an example. @@ -2348,10 +2375,10 @@ ClassBodyDeclarationsopt ::= NestedType ClassBodyDeclarations /.$putCase consumeClassBodyDeclarationsopt(); $break ./ /:$readableName ClassBodyDeclarations:/ -Modifiersopt ::= $empty +Modifiersopt ::= $empty /. $putCase consumeDefaultModifiers(); $break ./ Modifiersopt ::= Modifiers -/.$putCase consumeModifiers(); $break ./ +/.$putCase consumeModifiers(); $break ./ /:$readableName Modifiers:/ BlockStatementsopt ::= $empty @@ -2387,7 +2414,7 @@ ClassHeaderPermittedSubclassesopt -> ClassHeaderPermittedSubclasses /:$readableName ClassHeaderPermittedSubclasses:/ /:$compliance 15:/ --- Production name hardcoded in parser. Must be ::= and not -> +-- Production name hardcoded in parser. Must be ::= and not -> PermittedSubclasses ::= ClassTypeList /:$readableName PermittedSubclasses:/ @@ -2412,7 +2439,7 @@ InterfaceMemberDeclarationsopt ::= NestedType InterfaceMemberDeclarations /. $putCase consumeInterfaceMemberDeclarationsopt(); $break ./ /:$readableName InterfaceMemberDeclarations:/ -NestedType ::= $empty +NestedType ::= $empty /.$putCase consumeNestedType(); $break./ /:$readableName NestedType:/ @@ -2512,11 +2539,11 @@ EnhancedForStatementNoShortIf ::= EnhancedForStatementHeader StatementNoShortIf /.$putCase consumeEnhancedForStatement(); $break ./ /:$readableName EnhancedForStatementNoShortIf:/ -EnhancedForStatementHeaderInit ::= 'for' '(' Type PushModifiers Identifier Dimsopt +EnhancedForStatementHeaderInit ::= 'for' '(' Type PushModifiers VariableDeclaratorId /.$putCase consumeEnhancedForStatementHeaderInit(false); $break ./ /:$readableName EnhancedForStatementHeaderInit:/ -EnhancedForStatementHeaderInit ::= 'for' '(' Modifiers Type PushRealModifiers Identifier Dimsopt +EnhancedForStatementHeaderInit ::= 'for' '(' Modifiers Type PushRealModifiers VariableDeclaratorId /.$putCase consumeEnhancedForStatementHeaderInit(true); $break ./ /:$readableName EnhancedForStatementHeaderInit:/ @@ -3133,58 +3160,59 @@ RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt MethodH $names -PLUS_PLUS ::= '++' -MINUS_MINUS ::= '--' -EQUAL_EQUAL ::= '==' -LESS_EQUAL ::= '<=' -GREATER_EQUAL ::= '>=' -NOT_EQUAL ::= '!=' -LEFT_SHIFT ::= '<<' -RIGHT_SHIFT ::= '>>' -UNSIGNED_RIGHT_SHIFT ::= '>>>' -PLUS_EQUAL ::= '+=' -MINUS_EQUAL ::= '-=' -MULTIPLY_EQUAL ::= '*=' -DIVIDE_EQUAL ::= '/=' -AND_EQUAL ::= '&=' -OR_EQUAL ::= '|=' -XOR_EQUAL ::= '^=' -REMAINDER_EQUAL ::= '%=' -LEFT_SHIFT_EQUAL ::= '<<=' -RIGHT_SHIFT_EQUAL ::= '>>=' -UNSIGNED_RIGHT_SHIFT_EQUAL ::= '>>>=' -OR_OR ::= '||' +PLUS_PLUS ::= '++' +MINUS_MINUS ::= '--' +EQUAL_EQUAL ::= '==' +LESS_EQUAL ::= '<=' +GREATER_EQUAL ::= '>=' +NOT_EQUAL ::= '!=' +LEFT_SHIFT ::= '<<' +RIGHT_SHIFT ::= '>>' +UNSIGNED_RIGHT_SHIFT ::= '>>>' +PLUS_EQUAL ::= '+=' +MINUS_EQUAL ::= '-=' +MULTIPLY_EQUAL ::= '*=' +DIVIDE_EQUAL ::= '/=' +AND_EQUAL ::= '&=' +OR_EQUAL ::= '|=' +XOR_EQUAL ::= '^=' +REMAINDER_EQUAL ::= '%=' +LEFT_SHIFT_EQUAL ::= '<<=' +RIGHT_SHIFT_EQUAL ::= '>>=' +UNSIGNED_RIGHT_SHIFT_EQUAL ::= '>>>=' +OR_OR ::= '||' AND_AND ::= '&&' -PLUS ::= '+' -MINUS ::= '-' -NOT ::= '!' -REMAINDER ::= '%' -XOR ::= '^' -AND ::= '&' -MULTIPLY ::= '*' -OR ::= '|' -TWIDDLE ::= '~' -DIVIDE ::= '/' -GREATER ::= '>' -LESS ::= '<' -LPAREN ::= '(' -RPAREN ::= ')' -LBRACE ::= '{' -RBRACE ::= '}' -LBRACKET ::= '[' -RBRACKET ::= ']' -SEMICOLON ::= ';' -QUESTION ::= '?' -COLON ::= ':' -COMMA ::= ',' -DOT ::= '.' -EQUAL ::= '=' +PLUS ::= '+' +MINUS ::= '-' +NOT ::= '!' +REMAINDER ::= '%' +XOR ::= '^' +AND ::= '&' +MULTIPLY ::= '*' +OR ::= '|' +TWIDDLE ::= '~' +DIVIDE ::= '/' +GREATER ::= '>' +LESS ::= '<' +LPAREN ::= '(' +RPAREN ::= ')' +LBRACE ::= '{' +RBRACE ::= '}' +LBRACKET ::= '[' +RBRACKET ::= ']' +SEMICOLON ::= ';' +QUESTION ::= '?' +COLON ::= ':' +COMMA ::= ',' +DOT ::= '.' +EQUAL ::= '=' AT ::= '@' AT308 ::= '@' AT308DOTDOTDOT ::= '@' -ELLIPSIS ::= '...' +ELLIPSIS ::= '...' ARROW ::= '->' COLON_COLON ::= '::' +UNDERSCORE ::= '_' $end -- need a carriage return after the $end diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/core/compiler/IProblem.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/core/compiler/IProblem.java index f8da59aabcd..6f36cbb4911 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/core/compiler/IProblem.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/core/compiler/IProblem.java @@ -2581,4 +2581,15 @@ public interface IProblem { * @since 3.35 */ int SyntheticAccessorNotEnclosingMethod = MethodRelated + 1990; + + /** + * @since 3.37 + * @noreference preview feature + */ + int UnderscoreCannotBeUsedHere = PreviewRelated + 2000; + /** + * @since 3.37 + * @noreference preview feature + */ + int UnnamedVariableMustHaveInitializer = PreviewRelated + 2001; } diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/AbstractVariableDeclaration.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/AbstractVariableDeclaration.java index dff60fb0c35..ddd700a7007 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/AbstractVariableDeclaration.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/AbstractVariableDeclaration.java @@ -16,6 +16,7 @@ *******************************************************************************/ package org.eclipse.jdt.internal.compiler.ast; +import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; import org.eclipse.jdt.internal.compiler.flow.FlowContext; import org.eclipse.jdt.internal.compiler.flow.FlowInfo; import org.eclipse.jdt.internal.compiler.lookup.BlockScope; @@ -144,4 +145,15 @@ public void setDepth(int depth) { public void setFieldIndex(int depth) { // do nothing by default } + + /** + * Returns true if this variable is an unnamed variable (_) and false otherwise. + * + * @param scope used to determine source level + */ + public boolean isUnnamed(BlockScope scope) { + return this.name.length == 1 && this.name[0] == '_' + && scope.compilerOptions().sourceLevel >= ClassFileConstants.JDK21 + && scope.compilerOptions().enablePreviewFeatures; + } } diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Argument.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Argument.java index 5eaca0f0351..655334740a9 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Argument.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Argument.java @@ -116,6 +116,10 @@ private Annotation[] getCorrespondingRecordComponentAnnotationsIfApplicable(Abst return null; } public TypeBinding bind(MethodScope scope, TypeBinding typeBinding, boolean used) { + if (this.isUnnamed(scope) && !scope.isLambdaScope()) { + scope.problemReporter().illegalUseOfUnderscoreAsAnIdentifier(this.sourceStart, this.sourceEnd, scope.compilerOptions().sourceLevel > ClassFileConstants.JDK1_8, true); + } + TypeBinding newTypeBinding = createBinding(scope, typeBinding); // basically a no-op if createBinding() was called before // record the resolved type into the type reference @@ -123,12 +127,14 @@ public TypeBinding bind(MethodScope scope, TypeBinding typeBinding, boolean used if (existingVariable != null && existingVariable.isValidBinding()){ final boolean localExists = existingVariable instanceof LocalVariableBinding; if (localExists && this.hiddenVariableDepth == 0) { - if ((this.bits & ASTNode.ShadowsOuterLocal) != 0 && scope.isLambdaSubscope()) { - scope.problemReporter().lambdaRedeclaresArgument(this); - } else if (scope.referenceContext instanceof CompactConstructorDeclaration) { - // skip error reporting - hidden params - already reported in record components - } else { - scope.problemReporter().redefineArgument(this); + if (!this.isUnnamed(scope)) { + if ((this.bits & ASTNode.ShadowsOuterLocal) != 0 && scope.isLambdaSubscope()) { + scope.problemReporter().lambdaRedeclaresArgument(this); + } else if (scope.referenceContext instanceof CompactConstructorDeclaration) { + // skip error reporting - hidden params - already reported in record components + } else { + scope.problemReporter().redefineArgument(this); + } } } else { boolean isSpecialArgument = false; @@ -234,7 +240,7 @@ public TypeBinding resolveForCatch(BlockScope scope) { } } Binding existingVariable = scope.getBinding(this.name, Binding.VARIABLE, this, false /*do not resolve hidden field*/); - if (existingVariable != null && existingVariable.isValidBinding()){ + if (existingVariable != null && existingVariable.isValidBinding() && !isUnnamed(scope)) { if (existingVariable instanceof LocalVariableBinding && this.hiddenVariableDepth == 0) { scope.problemReporter().redefineArgument(this); } else { diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java index e729228e215..092816d3830 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/FieldDeclaration.java @@ -207,6 +207,10 @@ public StringBuilder printStatement(int indent, StringBuilder output) { } public void resolve(MethodScope initializationScope) { + if (this.isUnnamed(initializationScope)) { + initializationScope.problemReporter().illegalUseOfUnderscoreAsAnIdentifier(this.sourceStart, this.sourceEnd, initializationScope.compilerOptions().sourceLevel > ClassFileConstants.JDK1_8, true); + } + // the two could be regrouped into // a single line but it is clearer to have two lines while the reason of their // existence is not at all the same. See comment for the second one. diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration.java index 834f91ed162..5391af5a7e4 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/LocalDeclaration.java @@ -47,12 +47,24 @@ import java.util.Set; import org.eclipse.jdt.internal.compiler.ASTVisitor; -import org.eclipse.jdt.internal.compiler.impl.*; import org.eclipse.jdt.internal.compiler.ast.TypeReference.AnnotationCollector; import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; -import org.eclipse.jdt.internal.compiler.codegen.*; -import org.eclipse.jdt.internal.compiler.flow.*; -import org.eclipse.jdt.internal.compiler.lookup.*; +import org.eclipse.jdt.internal.compiler.codegen.AnnotationContext; +import org.eclipse.jdt.internal.compiler.codegen.CodeStream; +import org.eclipse.jdt.internal.compiler.flow.FlowContext; +import org.eclipse.jdt.internal.compiler.flow.FlowInfo; +import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; +import org.eclipse.jdt.internal.compiler.impl.Constant; +import org.eclipse.jdt.internal.compiler.lookup.ArrayBinding; +import org.eclipse.jdt.internal.compiler.lookup.Binding; +import org.eclipse.jdt.internal.compiler.lookup.BlockScope; +import org.eclipse.jdt.internal.compiler.lookup.ExtraCompilerModifiers; +import org.eclipse.jdt.internal.compiler.lookup.LocalVariableBinding; +import org.eclipse.jdt.internal.compiler.lookup.Scope; +import org.eclipse.jdt.internal.compiler.lookup.TagBits; +import org.eclipse.jdt.internal.compiler.lookup.TypeBinding; +import org.eclipse.jdt.internal.compiler.lookup.TypeBindingVisitor; +import org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding; import org.eclipse.jdt.internal.compiler.parser.RecoveryScanner; public class LocalDeclaration extends AbstractVariableDeclaration { @@ -139,7 +151,6 @@ public void checkModifiers() { */ @Override public void generateCode(BlockScope currentScope, CodeStream codeStream) { - // even if not reachable, variable must be added to visible if allocated (28298) if (this.binding.resolvedPosition != -1) { codeStream.addVisibleLocalVariable(this.binding); @@ -260,10 +271,13 @@ private static Expression findPolyExpression(Expression e) { public void resolve(BlockScope scope) { resolve(scope, false); } - public void resolve(BlockScope scope, boolean isPatternVariable) { - // prescan NNBD + public void resolve(BlockScope scope, boolean isPatternVariable) { // prescan NNBD handleNonNullByDefault(scope, this.annotations, this); + if (!isPatternVariable && (this.bits & ASTNode.IsForeachElementVariable) == 0 && this.initialization == null && this.isUnnamed(scope)) { + scope.problemReporter().unnamedVariableMustHaveInitializer(this); + } + TypeBinding variableType = null; boolean variableTypeInferenceError = false; boolean isTypeNameVar = isTypeNameVar(scope); @@ -301,7 +315,7 @@ public void resolve(BlockScope scope, boolean isPatternVariable) { } Binding existingVariable = scope.getBinding(this.name, Binding.VARIABLE, this, false /*do not resolve hidden field*/); - if (existingVariable != null && existingVariable.isValidBinding()){ + if (existingVariable != null && existingVariable.isValidBinding() && !this.isUnnamed(scope)) { boolean localExists = existingVariable instanceof LocalVariableBinding; if (localExists && (this.bits & ASTNode.ShadowsOuterLocal) != 0 && scope.isLambdaSubscope() && this.hiddenVariableDepth == 0) { scope.problemReporter().lambdaRedeclaresLocal(this); @@ -488,7 +502,9 @@ public void traverse(ASTVisitor visitor, BlockScope scope) { for (int i = 0; i < annotationsLength; i++) this.annotations[i].traverse(visitor, scope); } - this.type.traverse(visitor, scope); + if (this.type != null) { + this.type.traverse(visitor, scope); + } if (this.initialization != null) this.initialization.traverse(visitor, scope); } diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Pattern.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Pattern.java index c866bfa1dd1..307df697e91 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Pattern.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Pattern.java @@ -41,6 +41,9 @@ public abstract class Pattern extends Expression { public int nestingLevel = 0; + // denotes index of this pattern in the parent record pattern, or -1 for patterns whose parent is not a record pattern + public int index = -1; + @Override public boolean containsPatternVariable() { class PatternVariablesVisitor extends ASTVisitor { @@ -50,7 +53,7 @@ class PatternVariablesVisitor extends ASTVisitor { @Override public boolean visit(TypePattern typePattern, BlockScope blockScope) { this.hasPatternVar = typePattern.local != null; - this.typeElidedVar |= typePattern.getType().isTypeNameVar(blockScope); + this.typeElidedVar |= typePattern.getType() == null || typePattern.getType().isTypeNameVar(blockScope); return !(this.hasPatternVar && this.typeElidedVar); } } diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/RecordPattern.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/RecordPattern.java index 433dcf9e752..8eda46611d1 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/RecordPattern.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/RecordPattern.java @@ -182,7 +182,7 @@ private void setAccessorsPlusInfuseInferredType(BlockScope scope) { continue; TypePattern tp = (TypePattern) p; RecordComponentBinding componentBinding = components[i]; - if (p.getType().isTypeNameVar(scope)) { + if (p.getType() == null || p.getType().isTypeNameVar(scope)) { infuseInferredType(scope, tp, componentBinding); if (tp.local.binding != null) // rewrite with the inferred type tp.local.binding.type = componentBinding.type; @@ -216,14 +216,26 @@ private boolean shouldInitiateRecordTypeInference() { return this.resolvedType != null && this.resolvedType.isRawType(); } private void infuseInferredType(Scope currentScope, TypePattern tp, RecordComponentBinding componentBinding) { - SingleTypeReference ref = new SingleTypeReference(tp.local.type.getTypeName()[0], - tp.local.type.sourceStart, - tp.local.type.sourceEnd) { - @Override - public TypeBinding resolveType(BlockScope scope, boolean checkBounds) { - return componentBinding.type; - } - }; + SingleTypeReference ref; + if (tp.local.type == null) { + ref = new SingleTypeReference("var".toCharArray(), //$NON-NLS-1$ + tp.local.sourceStart, + tp.local.sourceEnd) { + @Override + public TypeBinding resolveType(BlockScope scope, boolean checkBounds) { + return componentBinding.type; + } + }; + } else { + ref = new SingleTypeReference(tp.local.type.getTypeName()[0], + tp.local.type.sourceStart, + tp.local.type.sourceEnd) { + @Override + public TypeBinding resolveType(BlockScope scope, boolean checkBounds) { + return componentBinding.type; + } + }; + } tp.local.type = ref; if (componentBinding.type != null && (componentBinding.tagBits & TagBits.HasMissingType) != 0) { currentScope.problemReporter().invalidType(ref, componentBinding.type); diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/TypePattern.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/TypePattern.java index 6b68dc7b565..9bd22dd36d8 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/TypePattern.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/TypePattern.java @@ -38,7 +38,6 @@ public class TypePattern extends Pattern { public LocalDeclaration local; Expression expression; - public int index = -1; // denoting position public TypePattern(LocalDeclaration local) { this.local = local; @@ -51,7 +50,7 @@ public TypeReference getType() { } @Override public LocalVariableBinding[] bindingsWhenTrue() { - return this.local != null && this.local.binding != null ? + return this.local != null && this.local.binding != null && !this.local.isUnnamed(this.local.binding.declaringScope) ? new LocalVariableBinding[] { this.local.binding } : NO_VARIABLES; } @Override diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/impl/JavaFeature.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/impl/JavaFeature.java index 84d1cc056f2..b00c79751aa 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/impl/JavaFeature.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/impl/JavaFeature.java @@ -66,7 +66,7 @@ public enum JavaFeature { new char[][] {}, false), UNNAMMED_PATTERNS_AND_VARS(ClassFileConstants.JDK21, - Messages.bind(Messages.unnammed_patterns_and_vars), + Messages.bind(Messages.unnamed_patterns_and_vars), new char[][] {}, true), UNNAMMED_CLASSES_AND_INSTANCE_MAIN_METHODS(ClassFileConstants.JDK21, diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/BlockScope.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/BlockScope.java index 161bdb74718..cb9b1795253 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/BlockScope.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/BlockScope.java @@ -296,7 +296,8 @@ void computeLocalVariablePositions(int ilocal, int initOffset, CodeStream codeSt // do not report fake used variable if (local.useFlag == LocalVariableBinding.UNUSED && (local.declaration != null) // unused (and non secret) local - && ((local.declaration.bits & ASTNode.IsLocalDeclarationReachable) != 0)) { // declaration is reachable + && ((local.declaration.bits & ASTNode.IsLocalDeclarationReachable) != 0) // declaration is reachable + && !local.declaration.isUnnamed(local.declaringScope)) { if (local.isCatchParameter()) { problemReporter().unusedExceptionParameter(local.declaration); // report unused catch arguments diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/messages.properties b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/messages.properties index 48d440df0f7..5cb863c17c9 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/messages.properties +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/messages.properties @@ -74,6 +74,6 @@ records = Records sealed_types = Sealed Types pattern_matching_switch = Pattern Matching in Switch record_patterns = Record Pattern -unnammed_patterns_and_vars = Unnammed Patterns and Variables +unnamed_patterns_and_vars = Unnamed Patterns and Variables unnamed_classes_and_instance_main_methods = Unnamed Classes and Instance Main Methods string_templates = String Template diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/AbstractCommentParser.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/AbstractCommentParser.java index 4831c8ce536..ff86ef29cde 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/AbstractCommentParser.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/AbstractCommentParser.java @@ -623,7 +623,8 @@ protected Object parseArguments(Object receiver, boolean checkVerifySpaceOrEndCo // Read argument name argNamePos = -1; - if (readToken() == TerminalTokens.TokenNameIdentifier) { + int argumentName = readToken(); + if (argumentName == TerminalTokens.TokenNameIdentifier || argumentName == TerminalTokens.TokenNameUNDERSCORE) { consumeToken(); if (firstArg) { // verify position if (iToken != 1) @@ -726,7 +727,8 @@ protected boolean parseHref() throws InvalidInputException { char currentChar = readChar(); if (currentChar == 'a' || currentChar == 'A') { this.scanner.currentPosition = this.index; - if (readToken() == TerminalTokens.TokenNameIdentifier) { + int token = readToken(); + if (token == TerminalTokens.TokenNameIdentifier || token == TerminalTokens.TokenNameUNDERSCORE) { consumeToken(); try { if (CharOperation.equals(this.scanner.getCurrentIdentifierSource(), HREF_TAG, false) && @@ -814,6 +816,7 @@ protected boolean parseHref() throws InvalidInputException { protected boolean parseIdentifierTag(boolean report) { int token = readTokenSafely(); switch (token) { + case TerminalTokens.TokenNameUNDERSCORE: case TerminalTokens.TokenNameIdentifier: pushIdentifier(true, false); return true; @@ -839,7 +842,8 @@ protected Object parseMember(Object receiver, boolean refInStringLiteral) throws this.memberStart = start; // Get member identifier - if (readToken() == TerminalTokens.TokenNameIdentifier) { + int memberIdentifier = readToken(); + if (memberIdentifier == TerminalTokens.TokenNameIdentifier || memberIdentifier == TerminalTokens.TokenNameUNDERSCORE) { if (this.scanner.currentCharacter == '.') { // member name may be qualified (inner class constructor reference) parseQualifiedName(true); } else { @@ -941,6 +945,7 @@ protected boolean parseParam() throws InvalidInputException { valid = false; } switch (token) { + case TerminalTokens.TokenNameUNDERSCORE: case TerminalTokens.TokenNameIdentifier : if (valid) { // store param name id @@ -1016,6 +1021,7 @@ else if (mayBeGeneric && isTypeParam) } this.currentTokenType = -1; return false; + case TerminalTokens.TokenNameUNDERSCORE: case TerminalTokens.TokenNameIdentifier : end = hasMultiLines ? this.lineEnd: this.scanner.getCurrentTokenEndPosition(); if (valid) { @@ -1162,6 +1168,7 @@ protected Object parseQualifiedName(boolean reset, boolean allowModule) throws I int token = readTokenSafely(); curToken= token; switch (token) { + case TerminalTokens.TokenNameUNDERSCORE: case TerminalTokens.TokenNameIdentifier : if (((iToken & 1) != 0)) { // identifiers must be odd tokens break nextToken; @@ -1401,6 +1408,7 @@ else if (this.tagValue == TAG_VALUE_VALUE) { return false; } break nextToken; + case TerminalTokens.TokenNameUNDERSCORE: case TerminalTokens.TokenNameIdentifier : if (typeRef == null) { typeRefStartPosition = this.scanner.getCurrentTokenStartPosition(); @@ -1514,7 +1522,7 @@ protected boolean parseSnippet() throws InvalidInputException { Map snippetAttributes = new HashMap(); if (!parseTillColon(snippetAttributes)) { int token = readTokenSafely(); - boolean eitherNameorClass = token == TerminalTokens.TokenNameIdentifier || token == TerminalTokens.TokenNameclass ; + boolean eitherNameorClass = token == TerminalTokens.TokenNameIdentifier || token == TerminalTokens.TokenNameclass || token == TerminalTokens.TokenNameUNDERSCORE; if (!eitherNameorClass ) { this.setSnippetError(snippetTag, "Missing colon"); //$NON-NLS-1$ this.setSnippetIsValid(snippetTag, false); @@ -1809,7 +1817,7 @@ private boolean readFileWithRegions(int start, String regionName, Path filePath, end = this.index; valid = true; break; - } else if (token == TerminalTokens.TokenNameIdentifier) { + } else if (token == TerminalTokens.TokenNameIdentifier || token == TerminalTokens.TokenNameUNDERSCORE) { consumeToken(); if (this.scanner.getCurrentTokenString().equals(REGION)) { foundRegionDef = true; @@ -1829,7 +1837,8 @@ private boolean readFileWithRegions(int start, String regionName, Path filePath, token = readTokenSafely(); if (token==TerminalTokens.TokenNameERROR || token==TerminalTokens.TokenNameStringLiteral - || token==TerminalTokens.TokenNameIdentifier){ + || token==TerminalTokens.TokenNameIdentifier + || token==TerminalTokens.TokenNameUNDERSCORE){ regionName = this.scanner.getCurrentTokenString(); consumeToken(); lastIndex = regionName.length() - 1; @@ -2020,6 +2029,7 @@ private String extractExternalSnippet(String contents, String region) { getRegionValue = false; attribute = null; break; + case TerminalTokens.TokenNameUNDERSCORE: case TerminalTokens.TokenNameIdentifier : if (atTokenStarted) { String tokenStr = commentScanner.getCurrentTokenString(); @@ -2209,6 +2219,7 @@ private boolean parseTillColon(Map snippetAttributes) { } break; + case TerminalTokens.TokenNameUNDERSCORE: case TerminalTokens.TokenNameStringLiteral: case TerminalTokens.TokenNameIdentifier: // name and equal can come for attribute String isFile = this.scanner.getCurrentTokenString(); @@ -2362,6 +2373,7 @@ protected Object parseSnippetInlineTags(String tokenString, Object snippetTag, S atTokenStarted = true; atTokenPos = slScanner.getCurrentTokenStartPosition(); break; + case TerminalTokens.TokenNameUNDERSCORE: case TerminalTokens.TokenNameIdentifier : if(atTokenStarted==false) //invalid snippet inline, treat it like text return null; @@ -2407,6 +2419,7 @@ protected Object parseSnippetInlineTags(String tokenString, Object snippetTag, S } else { return inlineTag; } + case TerminalTokens.TokenNameUNDERSCORE: case TerminalTokens.TokenNameIdentifier: if (processValue) { value = slScanner.getCurrentTokenString(); @@ -2517,6 +2530,7 @@ protected Object parseSnippetInlineTags(String tokenString, Object snippetTag, S } else { return inlineTag; } + case TerminalTokens.TokenNameUNDERSCORE: case TerminalTokens.TokenNameIdentifier: if (processValue) { value = slScanner.getCurrentTokenString(); @@ -2637,6 +2651,7 @@ protected Object parseSnippetInlineTags(String tokenString, Object snippetTag, S } else { return inlineTag; } + case TerminalTokens.TokenNameUNDERSCORE: case TerminalTokens.TokenNameIdentifier: if (processValue) { value = slScanner.getCurrentTokenString(); @@ -2774,6 +2789,7 @@ protected Object parseSnippetInlineTags(String tokenString, Object snippetTag, S } else { return inlineTag; } + case TerminalTokens.TokenNameUNDERSCORE: case TerminalTokens.TokenNameIdentifier: if (processValue && REGION.equals(attribute)) { regionName = slScanner.getCurrentTokenString(); @@ -2894,6 +2910,7 @@ private Object parseLinkReference(int curPosition, String value, Scanner sScanne reference = parseMember(typeRef, true); } break; + case TerminalTokens.TokenNameUNDERSCORE: case TerminalTokens.TokenNameIdentifier : typeRef = parseQualifiedName(true, true); break; diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Parser.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Parser.java index ab229e03cd7..78bb694945b 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Parser.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Parser.java @@ -939,6 +939,7 @@ protected int actFromTokenOrSynthetic(int previousAct) { protected boolean parsingJava15Plus; protected boolean parsingJava17Plus; protected boolean parsingJava18Plus; +protected boolean parsingJava21Plus; protected boolean previewEnabled; protected boolean parsingJava11Plus; protected int unstackedAct = ERROR_ACTION; @@ -970,6 +971,7 @@ public Parser(ProblemReporter problemReporter, boolean optimizeStringLiterals) { this.parsingJava15Plus = this.options.sourceLevel >= ClassFileConstants.JDK15; this.parsingJava17Plus = this.options.sourceLevel >= ClassFileConstants.JDK17; this.parsingJava18Plus = this.options.sourceLevel >= ClassFileConstants.JDK18; + this.parsingJava21Plus = this.options.sourceLevel >= ClassFileConstants.JDK21; this.previewEnabled = this.options.sourceLevel == ClassFileConstants.getLatestJDKLevel() && this.options.enablePreviewFeatures; this.astLengthStack = new int[50]; this.expressionLengthStack = new int[30]; @@ -3287,6 +3289,10 @@ protected void consumeEmptyDimsopt() { // Dimsopt ::= $empty pushOnIntStack(0); } +protected void consumeUnnamedVariable() { + // VariableDeclaratorId ::= '_' + pushOnIntStack(0); +} protected void consumeEmptyEnumDeclarations() { // EnumBodyDeclarationsopt ::= $empty pushOnAstLengthStack(0); @@ -6693,2291 +6699,1735 @@ protected void consumeZeroTypeAnnotations() { protected void consumeRule(int act) { switch ( act ) { case 43 : if (DEBUG) { System.out.println("Type ::= PrimitiveType"); } //$NON-NLS-1$ - consumePrimitiveType(); - break; + consumePrimitiveType(); break; case 57 : if (DEBUG) { System.out.println("ReferenceType ::= ClassOrInterfaceType"); } //$NON-NLS-1$ - consumeReferenceType(); - break; + consumeReferenceType(); break; case 61 : if (DEBUG) { System.out.println("ClassOrInterface ::= Name"); } //$NON-NLS-1$ - consumeClassOrInterfaceName(); - break; + consumeClassOrInterfaceName(); break; case 62 : if (DEBUG) { System.out.println("ClassOrInterface ::= GenericType DOT Name"); } //$NON-NLS-1$ - consumeClassOrInterface(); - break; + consumeClassOrInterface(); break; case 63 : if (DEBUG) { System.out.println("GenericType ::= ClassOrInterface TypeArguments"); } //$NON-NLS-1$ - consumeGenericType(); - break; + consumeGenericType(); break; case 64 : if (DEBUG) { System.out.println("GenericType ::= ClassOrInterface LESS GREATER"); } //$NON-NLS-1$ - consumeGenericTypeWithDiamond(); - break; + consumeGenericTypeWithDiamond(); break; case 65 : if (DEBUG) { System.out.println("ArrayTypeWithTypeArgumentsName ::= GenericType DOT Name"); } //$NON-NLS-1$ - consumeArrayTypeWithTypeArgumentsName(); - break; + consumeArrayTypeWithTypeArgumentsName(); break; case 66 : if (DEBUG) { System.out.println("ArrayType ::= PrimitiveType Dims"); } //$NON-NLS-1$ - consumePrimitiveArrayType(); - break; + consumePrimitiveArrayType(); break; case 67 : if (DEBUG) { System.out.println("ArrayType ::= Name Dims"); } //$NON-NLS-1$ - consumeNameArrayType(); - break; + consumeNameArrayType(); break; case 68 : if (DEBUG) { System.out.println("ArrayType ::= ArrayTypeWithTypeArgumentsName Dims"); } //$NON-NLS-1$ - consumeGenericTypeNameArrayType(); - break; + consumeGenericTypeNameArrayType(); break; case 69 : if (DEBUG) { System.out.println("ArrayType ::= GenericType Dims"); } //$NON-NLS-1$ - consumeGenericTypeArrayType(); - break; + consumeGenericTypeArrayType(); break; case 71 : if (DEBUG) { System.out.println("Name ::= SimpleName"); } //$NON-NLS-1$ - consumeZeroTypeAnnotations(); - break; + consumeZeroTypeAnnotations(); break; case 76 : if (DEBUG) { System.out.println("UnannotatableName ::= UnannotatableName DOT SimpleName"); } //$NON-NLS-1$ - consumeUnannotatableQualifiedName(); - break; + consumeUnannotatableQualifiedName(); break; case 77 : if (DEBUG) { System.out.println("QualifiedName ::= Name DOT SimpleName"); } //$NON-NLS-1$ - consumeQualifiedName(false); - break; + consumeQualifiedName(false); break; case 78 : if (DEBUG) { System.out.println("QualifiedName ::= Name DOT TypeAnnotations SimpleName"); } //$NON-NLS-1$ - consumeQualifiedName(true); - break; + consumeQualifiedName(true); break; case 79 : if (DEBUG) { System.out.println("TypeAnnotationsopt ::="); } //$NON-NLS-1$ - consumeZeroTypeAnnotations(); - break; + consumeZeroTypeAnnotations(); break; case 83 : if (DEBUG) { System.out.println("TypeAnnotations0 ::= TypeAnnotations0 TypeAnnotation"); } //$NON-NLS-1$ - consumeOneMoreTypeAnnotation(); - break; + consumeOneMoreTypeAnnotation(); break; case 84 : if (DEBUG) { System.out.println("TypeAnnotation ::= NormalTypeAnnotation"); } //$NON-NLS-1$ - consumeTypeAnnotation(); - break; + consumeTypeAnnotation(); break; case 85 : if (DEBUG) { System.out.println("TypeAnnotation ::= MarkerTypeAnnotation"); } //$NON-NLS-1$ - consumeTypeAnnotation(); - break; + consumeTypeAnnotation(); break; case 86 : if (DEBUG) { System.out.println("TypeAnnotation ::= SingleMemberTypeAnnotation"); } //$NON-NLS-1$ - consumeTypeAnnotation(); - break; + consumeTypeAnnotation(); break; case 87 : if (DEBUG) { System.out.println("TypeAnnotationName ::= AT308 UnannotatableName"); } //$NON-NLS-1$ - consumeAnnotationName() ; - break; + consumeAnnotationName() ; break; case 88 : if (DEBUG) { System.out.println("NormalTypeAnnotation ::= TypeAnnotationName LPAREN..."); } //$NON-NLS-1$ - consumeNormalAnnotation(true) ; - break; + consumeNormalAnnotation(true) ; break; case 89 : if (DEBUG) { System.out.println("MarkerTypeAnnotation ::= TypeAnnotationName"); } //$NON-NLS-1$ - consumeMarkerAnnotation(true) ; - break; + consumeMarkerAnnotation(true) ; break; case 90 : if (DEBUG) { System.out.println("SingleMemberTypeAnnotation ::= TypeAnnotationName LPAREN"); } //$NON-NLS-1$ - consumeSingleMemberAnnotation(true) ; - break; + consumeSingleMemberAnnotation(true) ; break; case 91 : if (DEBUG) { System.out.println("RejectTypeAnnotations ::="); } //$NON-NLS-1$ - consumeNonTypeUseName(); - break; + consumeNonTypeUseName(); break; case 92 : if (DEBUG) { System.out.println("PushZeroTypeAnnotations ::="); } //$NON-NLS-1$ - consumeZeroTypeAnnotations(); - break; + consumeZeroTypeAnnotations(); break; case 93 : if (DEBUG) { System.out.println("VariableDeclaratorIdOrThis ::= this"); } //$NON-NLS-1$ - consumeExplicitThisParameter(false); - break; + consumeExplicitThisParameter(false); break; case 94 : if (DEBUG) { System.out.println("VariableDeclaratorIdOrThis ::= UnannotatableName DOT this"); } //$NON-NLS-1$ - consumeExplicitThisParameter(true); - break; + consumeExplicitThisParameter(true); break; case 95 : if (DEBUG) { System.out.println("VariableDeclaratorIdOrThis ::= VariableDeclaratorId"); } //$NON-NLS-1$ - consumeVariableDeclaratorIdParameter(); - break; + consumeVariableDeclaratorIdParameter(); break; case 96 : if (DEBUG) { System.out.println("CompilationUnit ::= EnterCompilationUnit..."); } //$NON-NLS-1$ - consumeCompilationUnit(); - break; + consumeCompilationUnit(); break; case 97 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration"); } //$NON-NLS-1$ - consumeInternalCompilationUnit(); - break; + consumeInternalCompilationUnit(); break; case 98 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration..."); } //$NON-NLS-1$ - consumeInternalCompilationUnit(); - break; + consumeInternalCompilationUnit(); break; case 99 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration..."); } //$NON-NLS-1$ - consumeInternalCompilationUnitWithTypes(); - break; + consumeInternalCompilationUnitWithTypes(); break; case 100 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration..."); } //$NON-NLS-1$ - consumeInternalCompilationUnitWithTypes(); - break; + consumeInternalCompilationUnitWithTypes(); break; case 101 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= ImportDeclarations..."); } //$NON-NLS-1$ - consumeInternalCompilationUnit(); - break; + consumeInternalCompilationUnit(); break; case 102 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= TypeDeclarations"); } //$NON-NLS-1$ - consumeInternalCompilationUnitWithTypes(); - break; + consumeInternalCompilationUnitWithTypes(); break; case 103 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= ImportDeclarations..."); } //$NON-NLS-1$ - consumeInternalCompilationUnitWithTypes(); - break; + consumeInternalCompilationUnitWithTypes(); break; case 104 : if (DEBUG) { System.out.println("InternalCompilationUnit ::="); } //$NON-NLS-1$ - consumeEmptyInternalCompilationUnit(); - break; + consumeEmptyInternalCompilationUnit(); break; case 105 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= ImportDeclarations..."); } //$NON-NLS-1$ - consumeInternalCompilationUnitWithModuleDeclaration(); - break; + consumeInternalCompilationUnitWithModuleDeclaration(); break; case 106 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= ModuleDeclaration"); } //$NON-NLS-1$ - consumeInternalCompilationUnitWithModuleDeclaration(); - break; + consumeInternalCompilationUnitWithModuleDeclaration(); break; case 107 : if (DEBUG) { System.out.println("ModuleDeclaration ::= ModuleHeader ModuleBody"); } //$NON-NLS-1$ - consumeModuleDeclaration(); - break; + consumeModuleDeclaration(); break; case 108 : if (DEBUG) { System.out.println("ModuleHeader ::= Modifiersopt ModuleModifieropt module"); } //$NON-NLS-1$ - consumeModuleHeader(); - break; + consumeModuleHeader(); break; case 110 : if (DEBUG) { System.out.println("ModuleModifieropt ::= ModuleModifier"); } //$NON-NLS-1$ - consumeModuleModifiers(); - break; + consumeModuleModifiers(); break; case 113 : if (DEBUG) { System.out.println("ModuleStatementsOpt ::="); } //$NON-NLS-1$ - consumeEmptyModuleStatementsOpt(); - break; + consumeEmptyModuleStatementsOpt(); break; case 116 : if (DEBUG) { System.out.println("ModuleStatements ::= ModuleStatements ModuleStatement"); } //$NON-NLS-1$ - consumeModuleStatements(); - break; + consumeModuleStatements(); break; case 122 : if (DEBUG) { System.out.println("RequiresStatement ::= SingleRequiresModuleName SEMICOLON"); } //$NON-NLS-1$ - consumeRequiresStatement(); - break; + consumeRequiresStatement(); break; case 123 : if (DEBUG) { System.out.println("SingleRequiresModuleName ::= requires..."); } //$NON-NLS-1$ - consumeSingleRequiresModuleName(); - break; + consumeSingleRequiresModuleName(); break; case 124 : if (DEBUG) { System.out.println("RequiresModifiersopt ::= RequiresModifiers"); } //$NON-NLS-1$ - consumeModifiers(); - break; + consumeModifiers(); break; case 125 : if (DEBUG) { System.out.println("RequiresModifiersopt ::="); } //$NON-NLS-1$ - consumeDefaultModifiers(); - break; + consumeDefaultModifiers(); break; case 127 : if (DEBUG) { System.out.println("RequiresModifiers ::= RequiresModifiers RequiresModifier"); } //$NON-NLS-1$ - consumeModifiers2(); - break; + consumeModifiers2(); break; case 130 : if (DEBUG) { System.out.println("ExportsStatement ::= ExportsHeader TargetModuleListopt"); } //$NON-NLS-1$ - consumeExportsStatement(); - break; + consumeExportsStatement(); break; case 131 : if (DEBUG) { System.out.println("ExportsHeader ::= exports SinglePkgName"); } //$NON-NLS-1$ - consumeExportsHeader(); - break; + consumeExportsHeader(); break; case 133 : if (DEBUG) { System.out.println("TargetModuleListopt ::= to TargetModuleNameList"); } //$NON-NLS-1$ - consumeTargetModuleList(); - break; + consumeTargetModuleList(); break; case 134 : if (DEBUG) { System.out.println("TargetModuleName ::= UnannotatableName"); } //$NON-NLS-1$ - consumeSingleTargetModuleName(); - break; + consumeSingleTargetModuleName(); break; case 136 : if (DEBUG) { System.out.println("TargetModuleNameList ::= TargetModuleNameList COMMA..."); } //$NON-NLS-1$ - consumeTargetModuleNameList(); - break; + consumeTargetModuleNameList(); break; case 137 : if (DEBUG) { System.out.println("SinglePkgName ::= UnannotatableName"); } //$NON-NLS-1$ - consumeSinglePkgName(); - break; + consumeSinglePkgName(); break; case 138 : if (DEBUG) { System.out.println("OpensStatement ::= OpensHeader TargetModuleListopt..."); } //$NON-NLS-1$ - consumeOpensStatement(); - break; + consumeOpensStatement(); break; case 139 : if (DEBUG) { System.out.println("OpensHeader ::= opens SinglePkgName"); } //$NON-NLS-1$ - consumeOpensHeader(); - break; + consumeOpensHeader(); break; case 140 : if (DEBUG) { System.out.println("UsesStatement ::= UsesHeader SEMICOLON"); } //$NON-NLS-1$ - consumeUsesStatement(); - break; + consumeUsesStatement(); break; case 141 : if (DEBUG) { System.out.println("UsesHeader ::= uses Name"); } //$NON-NLS-1$ - consumeUsesHeader(); - break; + consumeUsesHeader(); break; case 142 : if (DEBUG) { System.out.println("ProvidesStatement ::= ProvidesInterface WithClause..."); } //$NON-NLS-1$ - consumeProvidesStatement(); - break; + consumeProvidesStatement(); break; case 143 : if (DEBUG) { System.out.println("ProvidesInterface ::= provides Name"); } //$NON-NLS-1$ - consumeProvidesInterface(); - break; + consumeProvidesInterface(); break; case 144 : if (DEBUG) { System.out.println("ServiceImplName ::= Name"); } //$NON-NLS-1$ - consumeSingleServiceImplName(); - break; + consumeSingleServiceImplName(); break; case 146 : if (DEBUG) { System.out.println("ServiceImplNameList ::= ServiceImplNameList COMMA..."); } //$NON-NLS-1$ - consumeServiceImplNameList(); - break; + consumeServiceImplNameList(); break; case 147 : if (DEBUG) { System.out.println("WithClause ::= with ServiceImplNameList"); } //$NON-NLS-1$ - consumeWithClause(); - break; + consumeWithClause(); break; case 148 : if (DEBUG) { System.out.println("ReduceImports ::="); } //$NON-NLS-1$ - consumeReduceImports(); - break; + consumeReduceImports(); break; case 149 : if (DEBUG) { System.out.println("EnterCompilationUnit ::="); } //$NON-NLS-1$ - consumeEnterCompilationUnit(); - break; + consumeEnterCompilationUnit(); break; case 172 : if (DEBUG) { System.out.println("CatchHeader ::= catch LPAREN CatchFormalParameter RPAREN"); } //$NON-NLS-1$ - consumeCatchHeader(); - break; + consumeCatchHeader(); break; case 174 : if (DEBUG) { System.out.println("ImportDeclarations ::= ImportDeclarations..."); } //$NON-NLS-1$ - consumeImportDeclarations(); - break; + consumeImportDeclarations(); break; case 176 : if (DEBUG) { System.out.println("TypeDeclarations ::= TypeDeclarations TypeDeclaration"); } //$NON-NLS-1$ - consumeTypeDeclarations(); - break; + consumeTypeDeclarations(); break; case 177 : if (DEBUG) { System.out.println("PackageDeclaration ::= PackageDeclarationName SEMICOLON"); } //$NON-NLS-1$ - consumePackageDeclaration(); - break; + consumePackageDeclaration(); break; case 178 : if (DEBUG) { System.out.println("PackageDeclarationName ::= Modifiers package..."); } //$NON-NLS-1$ - consumePackageDeclarationNameWithModifiers(); - break; + consumePackageDeclarationNameWithModifiers(); break; case 179 : if (DEBUG) { System.out.println("PackageDeclarationName ::= PackageComment package Name"); } //$NON-NLS-1$ - consumePackageDeclarationName(); - break; + consumePackageDeclarationName(); break; case 180 : if (DEBUG) { System.out.println("PackageComment ::="); } //$NON-NLS-1$ - consumePackageComment(); - break; + consumePackageComment(); break; case 185 : if (DEBUG) { System.out.println("SingleTypeImportDeclaration ::=..."); } //$NON-NLS-1$ - consumeImportDeclaration(); - break; + consumeImportDeclaration(); break; case 186 : if (DEBUG) { System.out.println("SingleTypeImportDeclarationName ::= import Name..."); } //$NON-NLS-1$ - consumeSingleTypeImportDeclarationName(); - break; + consumeSingleTypeImportDeclarationName(); break; case 187 : if (DEBUG) { System.out.println("TypeImportOnDemandDeclaration ::=..."); } //$NON-NLS-1$ - consumeImportDeclaration(); - break; + consumeImportDeclaration(); break; case 188 : if (DEBUG) { System.out.println("TypeImportOnDemandDeclarationName ::= import Name DOT..."); } //$NON-NLS-1$ - consumeTypeImportOnDemandDeclarationName(); - break; + consumeTypeImportOnDemandDeclarationName(); break; case 191 : if (DEBUG) { System.out.println("TypeDeclaration ::= SEMICOLON"); } //$NON-NLS-1$ - consumeEmptyTypeDeclaration(); - break; + consumeEmptyTypeDeclaration(); break; case 196 : if (DEBUG) { System.out.println("Modifiers ::= Modifiers Modifier"); } //$NON-NLS-1$ - consumeModifiers2(); - break; + consumeModifiers2(); break; case 210 : if (DEBUG) { System.out.println("Modifier ::= Annotation"); } //$NON-NLS-1$ - consumeAnnotationAsModifier(); - break; + consumeAnnotationAsModifier(); break; case 211 : if (DEBUG) { System.out.println("ClassDeclaration ::= ClassHeader ClassBody"); } //$NON-NLS-1$ - consumeClassDeclaration(); - break; + consumeClassDeclaration(); break; case 212 : if (DEBUG) { System.out.println("ClassHeader ::= ClassHeaderName ClassHeaderExtendsopt..."); } //$NON-NLS-1$ - consumeClassHeader(); - break; + consumeClassHeader(); break; case 213 : if (DEBUG) { System.out.println("ClassHeaderName ::= ClassHeaderName1 TypeParameters"); } //$NON-NLS-1$ - consumeTypeHeaderNameWithTypeParameters(); - break; + consumeTypeHeaderNameWithTypeParameters(); break; case 215 : if (DEBUG) { System.out.println("ClassHeaderName1 ::= Modifiersopt class Identifier"); } //$NON-NLS-1$ - consumeClassHeaderName1(); - break; + consumeClassHeaderName1(); break; case 216 : if (DEBUG) { System.out.println("ClassHeaderExtends ::= extends ClassType"); } //$NON-NLS-1$ - consumeClassHeaderExtends(); - break; + consumeClassHeaderExtends(); break; case 217 : if (DEBUG) { System.out.println("ClassHeaderImplements ::= implements InterfaceTypeList"); } //$NON-NLS-1$ - consumeClassHeaderImplements(); - break; + consumeClassHeaderImplements(); break; case 219 : if (DEBUG) { System.out.println("InterfaceTypeList ::= InterfaceTypeList COMMA..."); } //$NON-NLS-1$ - consumeInterfaceTypeList(); - break; + consumeInterfaceTypeList(); break; case 220 : if (DEBUG) { System.out.println("InterfaceType ::= ClassOrInterfaceType"); } //$NON-NLS-1$ - consumeInterfaceType(); - break; + consumeInterfaceType(); break; case 223 : if (DEBUG) { System.out.println("ClassBodyDeclarations ::= ClassBodyDeclarations..."); } //$NON-NLS-1$ - consumeClassBodyDeclarations(); - break; + consumeClassBodyDeclarations(); break; case 227 : if (DEBUG) { System.out.println("ClassBodyDeclaration ::= Diet NestedMethod..."); } //$NON-NLS-1$ - consumeClassBodyDeclaration(); - break; + consumeClassBodyDeclaration(); break; case 228 : if (DEBUG) { System.out.println("Diet ::="); } //$NON-NLS-1$ - consumeDiet(); - break; + consumeDiet(); break; case 229 : if (DEBUG) { System.out.println("Initializer ::= Diet NestedMethod CreateInitializer..."); } //$NON-NLS-1$ - consumeClassBodyDeclaration(); - break; + consumeClassBodyDeclaration(); break; case 230 : if (DEBUG) { System.out.println("CreateInitializer ::="); } //$NON-NLS-1$ - consumeCreateInitializer(); - break; + consumeCreateInitializer(); break; case 238 : if (DEBUG) { System.out.println("ClassMemberDeclaration ::= SEMICOLON"); } //$NON-NLS-1$ - consumeEmptyTypeDeclaration(); - break; + consumeEmptyTypeDeclaration(); break; case 241 : if (DEBUG) { System.out.println("FieldDeclaration ::= Modifiersopt Type..."); } //$NON-NLS-1$ - consumeFieldDeclaration(); - break; + consumeFieldDeclaration(); break; case 243 : if (DEBUG) { System.out.println("VariableDeclarators ::= VariableDeclarators COMMA..."); } //$NON-NLS-1$ - consumeVariableDeclarators(); - break; + consumeVariableDeclarators(); break; case 246 : if (DEBUG) { System.out.println("EnterVariable ::="); } //$NON-NLS-1$ - consumeEnterVariable(); - break; + consumeEnterVariable(); break; case 247 : if (DEBUG) { System.out.println("ExitVariableWithInitialization ::="); } //$NON-NLS-1$ - consumeExitVariableWithInitialization(); - break; + consumeExitVariableWithInitialization(); break; case 248 : if (DEBUG) { System.out.println("ExitVariableWithoutInitialization ::="); } //$NON-NLS-1$ - consumeExitVariableWithoutInitialization(); - break; + consumeExitVariableWithoutInitialization(); break; case 249 : if (DEBUG) { System.out.println("ForceNoDiet ::="); } //$NON-NLS-1$ - consumeForceNoDiet(); - break; + consumeForceNoDiet(); break; case 250 : if (DEBUG) { System.out.println("RestoreDiet ::="); } //$NON-NLS-1$ - consumeRestoreDiet(); - break; + consumeRestoreDiet(); break; + + case 252 : if (DEBUG) { System.out.println("VariableDeclaratorId ::= UNDERSCORE"); } //$NON-NLS-1$ + consumeUnnamedVariable(); break; - case 255 : if (DEBUG) { System.out.println("MethodDeclaration ::= MethodHeader MethodBody"); } //$NON-NLS-1$ + case 256 : if (DEBUG) { System.out.println("MethodDeclaration ::= MethodHeader MethodBody"); } //$NON-NLS-1$ // set to true to consume a method with a body - consumeMethodDeclaration(true, false); - break; + consumeMethodDeclaration(true, false); break; - case 256 : if (DEBUG) { System.out.println("MethodDeclaration ::= DefaultMethodHeader MethodBody"); } //$NON-NLS-1$ + case 257 : if (DEBUG) { System.out.println("MethodDeclaration ::= DefaultMethodHeader MethodBody"); } //$NON-NLS-1$ // set to true to consume a method with a body - consumeMethodDeclaration(true, true); - break; + consumeMethodDeclaration(true, true); break; - case 257 : if (DEBUG) { System.out.println("AbstractMethodDeclaration ::= MethodHeader SEMICOLON"); } //$NON-NLS-1$ + case 258 : if (DEBUG) { System.out.println("AbstractMethodDeclaration ::= MethodHeader SEMICOLON"); } //$NON-NLS-1$ // set to false to consume a method without body - consumeMethodDeclaration(false, false); - break; + consumeMethodDeclaration(false, false); break; - case 258 : if (DEBUG) { System.out.println("MethodHeader ::= MethodHeaderName FormalParameterListopt"); } //$NON-NLS-1$ - consumeMethodHeader(); - break; + case 259 : if (DEBUG) { System.out.println("MethodHeader ::= MethodHeaderName FormalParameterListopt"); } //$NON-NLS-1$ + consumeMethodHeader(); break; - case 259 : if (DEBUG) { System.out.println("DefaultMethodHeader ::= DefaultMethodHeaderName..."); } //$NON-NLS-1$ - consumeMethodHeader(); - break; + case 260 : if (DEBUG) { System.out.println("DefaultMethodHeader ::= DefaultMethodHeaderName..."); } //$NON-NLS-1$ + consumeMethodHeader(); break; - case 260 : if (DEBUG) { System.out.println("MethodHeaderName ::= Modifiersopt TypeParameters Type..."); } //$NON-NLS-1$ - consumeMethodHeaderNameWithTypeParameters(false); - break; + case 261 : if (DEBUG) { System.out.println("MethodHeaderName ::= Modifiersopt TypeParameters Type..."); } //$NON-NLS-1$ + consumeMethodHeaderNameWithTypeParameters(false); break; - case 261 : if (DEBUG) { System.out.println("MethodHeaderName ::= Modifiersopt Type Identifier LPAREN"); } //$NON-NLS-1$ - consumeMethodHeaderName(false); - break; + case 262 : if (DEBUG) { System.out.println("MethodHeaderName ::= Modifiersopt Type Identifier LPAREN"); } //$NON-NLS-1$ + consumeMethodHeaderName(false); break; - case 262 : if (DEBUG) { System.out.println("DefaultMethodHeaderName ::= ModifiersWithDefault..."); } //$NON-NLS-1$ - consumeMethodHeaderNameWithTypeParameters(false); - break; + case 263 : if (DEBUG) { System.out.println("DefaultMethodHeaderName ::= ModifiersWithDefault..."); } //$NON-NLS-1$ + consumeMethodHeaderNameWithTypeParameters(false); break; - case 263 : if (DEBUG) { System.out.println("DefaultMethodHeaderName ::= ModifiersWithDefault Type..."); } //$NON-NLS-1$ - consumeMethodHeaderName(false); - break; + case 264 : if (DEBUG) { System.out.println("DefaultMethodHeaderName ::= ModifiersWithDefault Type..."); } //$NON-NLS-1$ + consumeMethodHeaderName(false); break; - case 264 : if (DEBUG) { System.out.println("ModifiersWithDefault ::= Modifiersopt default..."); } //$NON-NLS-1$ - consumePushCombineModifiers(); - break; + case 265 : if (DEBUG) { System.out.println("ModifiersWithDefault ::= Modifiersopt default..."); } //$NON-NLS-1$ + consumePushCombineModifiers(); break; - case 265 : if (DEBUG) { System.out.println("MethodHeaderRightParen ::= RPAREN"); } //$NON-NLS-1$ - consumeMethodHeaderRightParen(); - break; + case 266 : if (DEBUG) { System.out.println("MethodHeaderRightParen ::= RPAREN"); } //$NON-NLS-1$ + consumeMethodHeaderRightParen(); break; - case 266 : if (DEBUG) { System.out.println("MethodHeaderExtendedDims ::= Dimsopt"); } //$NON-NLS-1$ - consumeMethodHeaderExtendedDims(); - break; + case 267 : if (DEBUG) { System.out.println("MethodHeaderExtendedDims ::= Dimsopt"); } //$NON-NLS-1$ + consumeMethodHeaderExtendedDims(); break; - case 267 : if (DEBUG) { System.out.println("MethodHeaderThrowsClause ::= throws ClassTypeList"); } //$NON-NLS-1$ - consumeMethodHeaderThrowsClause(); - break; + case 268 : if (DEBUG) { System.out.println("MethodHeaderThrowsClause ::= throws ClassTypeList"); } //$NON-NLS-1$ + consumeMethodHeaderThrowsClause(); break; - case 268 : if (DEBUG) { System.out.println("ConstructorHeader ::= ConstructorHeaderName..."); } //$NON-NLS-1$ - consumeConstructorHeader(); - break; + case 269 : if (DEBUG) { System.out.println("ConstructorHeader ::= ConstructorHeaderName..."); } //$NON-NLS-1$ + consumeConstructorHeader(); break; - case 269 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt TypeParameters..."); } //$NON-NLS-1$ - consumeConstructorHeaderNameWithTypeParameters(); - break; + case 270 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt TypeParameters..."); } //$NON-NLS-1$ + consumeConstructorHeaderNameWithTypeParameters(); break; - case 270 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt Identifier LPAREN"); } //$NON-NLS-1$ - consumeConstructorHeaderName(); - break; + case 271 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt Identifier LPAREN"); } //$NON-NLS-1$ + consumeConstructorHeaderName(); break; - case 272 : if (DEBUG) { System.out.println("FormalParameterList ::= FormalParameterList COMMA..."); } //$NON-NLS-1$ - consumeFormalParameterList(); - break; - - case 273 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type..."); } //$NON-NLS-1$ - consumeFormalParameter(false); - break; + case 273 : if (DEBUG) { System.out.println("FormalParameterList ::= FormalParameterList COMMA..."); } //$NON-NLS-1$ + consumeFormalParameterList(); break; case 274 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type..."); } //$NON-NLS-1$ - consumeFormalParameter(true); - break; + consumeFormalParameter(false); break; - case 275 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type AT308DOTDOTDOT..."); } //$NON-NLS-1$ - consumeFormalParameter(true); - break; + case 275 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type..."); } //$NON-NLS-1$ + consumeFormalParameter(true); break; - case 276 : if (DEBUG) { System.out.println("CatchFormalParameter ::= Modifiersopt CatchType..."); } //$NON-NLS-1$ - consumeCatchFormalParameter(); - break; + case 276 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type AT308DOTDOTDOT..."); } //$NON-NLS-1$ + consumeFormalParameter(true); break; - case 277 : if (DEBUG) { System.out.println("CatchType ::= UnionType"); } //$NON-NLS-1$ - consumeCatchType(); - break; + case 277 : if (DEBUG) { System.out.println("CatchFormalParameter ::= Modifiersopt CatchType..."); } //$NON-NLS-1$ + consumeCatchFormalParameter(); break; - case 278 : if (DEBUG) { System.out.println("UnionType ::= Type"); } //$NON-NLS-1$ - consumeUnionTypeAsClassType(); - break; + case 278 : if (DEBUG) { System.out.println("CatchType ::= UnionType"); } //$NON-NLS-1$ + consumeCatchType(); break; - case 279 : if (DEBUG) { System.out.println("UnionType ::= UnionType OR Type"); } //$NON-NLS-1$ - consumeUnionType(); - break; + case 279 : if (DEBUG) { System.out.println("UnionType ::= Type"); } //$NON-NLS-1$ + consumeUnionTypeAsClassType(); break; - case 281 : if (DEBUG) { System.out.println("ClassTypeList ::= ClassTypeList COMMA ClassTypeElt"); } //$NON-NLS-1$ - consumeClassTypeList(); - break; + case 280 : if (DEBUG) { System.out.println("UnionType ::= UnionType OR Type"); } //$NON-NLS-1$ + consumeUnionType(); break; - case 282 : if (DEBUG) { System.out.println("ClassTypeElt ::= ClassType"); } //$NON-NLS-1$ - consumeClassTypeElt(); - break; + case 282 : if (DEBUG) { System.out.println("ClassTypeList ::= ClassTypeList COMMA ClassTypeElt"); } //$NON-NLS-1$ + consumeClassTypeList(); break; - case 283 : if (DEBUG) { System.out.println("MethodBody ::= NestedMethod LBRACE BlockStatementsopt..."); } //$NON-NLS-1$ - consumeMethodBody(); - break; + case 283 : if (DEBUG) { System.out.println("ClassTypeElt ::= ClassType"); } //$NON-NLS-1$ + consumeClassTypeElt(); break; - case 284 : if (DEBUG) { System.out.println("NestedMethod ::="); } //$NON-NLS-1$ - consumeNestedMethod(); - break; + case 284 : if (DEBUG) { System.out.println("MethodBody ::= NestedMethod LBRACE BlockStatementsopt..."); } //$NON-NLS-1$ + consumeMethodBody(); break; - case 285 : if (DEBUG) { System.out.println("StaticInitializer ::= StaticOnly Block"); } //$NON-NLS-1$ - consumeStaticInitializer(); - break; + case 285 : if (DEBUG) { System.out.println("NestedMethod ::="); } //$NON-NLS-1$ + consumeNestedMethod(); break; - case 286 : if (DEBUG) { System.out.println("StaticOnly ::= static"); } //$NON-NLS-1$ - consumeStaticOnly(); - break; + case 286 : if (DEBUG) { System.out.println("StaticInitializer ::= StaticOnly Block"); } //$NON-NLS-1$ + consumeStaticInitializer(); break; - case 287 : if (DEBUG) { System.out.println("ConstructorDeclaration ::= ConstructorHeader MethodBody"); } //$NON-NLS-1$ - consumeConstructorDeclaration() ; - break; + case 287 : if (DEBUG) { System.out.println("StaticOnly ::= static"); } //$NON-NLS-1$ + consumeStaticOnly(); break; - case 288 : if (DEBUG) { System.out.println("ConstructorDeclaration ::= ConstructorHeader SEMICOLON"); } //$NON-NLS-1$ - consumeInvalidConstructorDeclaration() ; - break; + case 288 : if (DEBUG) { System.out.println("ConstructorDeclaration ::= ConstructorHeader MethodBody"); } //$NON-NLS-1$ + consumeConstructorDeclaration() ; break; - case 289 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= this LPAREN..."); } //$NON-NLS-1$ - consumeExplicitConstructorInvocation(0, THIS_CALL); - break; + case 289 : if (DEBUG) { System.out.println("ConstructorDeclaration ::= ConstructorHeader SEMICOLON"); } //$NON-NLS-1$ + consumeInvalidConstructorDeclaration() ; break; - case 290 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= OnlyTypeArguments this"); } //$NON-NLS-1$ - consumeExplicitConstructorInvocationWithTypeArguments(0,THIS_CALL); - break; + case 290 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= this LPAREN..."); } //$NON-NLS-1$ + consumeExplicitConstructorInvocation(0, THIS_CALL); break; - case 291 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= super LPAREN..."); } //$NON-NLS-1$ - consumeExplicitConstructorInvocation(0,SUPER_CALL); - break; + case 291 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= OnlyTypeArguments this"); } //$NON-NLS-1$ + consumeExplicitConstructorInvocationWithTypeArguments(0,THIS_CALL); break; - case 292 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= OnlyTypeArguments..."); } //$NON-NLS-1$ - consumeExplicitConstructorInvocationWithTypeArguments(0,SUPER_CALL); - break; + case 292 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= super LPAREN..."); } //$NON-NLS-1$ + consumeExplicitConstructorInvocation(0,SUPER_CALL); break; - case 293 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT super..."); } //$NON-NLS-1$ - consumeExplicitConstructorInvocation(1, SUPER_CALL); - break; + case 293 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= OnlyTypeArguments..."); } //$NON-NLS-1$ + consumeExplicitConstructorInvocationWithTypeArguments(0,SUPER_CALL); break; - case 294 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT..."); } //$NON-NLS-1$ - consumeExplicitConstructorInvocationWithTypeArguments(1, SUPER_CALL); - break; + case 294 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT super..."); } //$NON-NLS-1$ + consumeExplicitConstructorInvocation(1, SUPER_CALL); break; - case 295 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT super LPAREN"); } //$NON-NLS-1$ - consumeExplicitConstructorInvocation(2, SUPER_CALL); - break; + case 295 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT..."); } //$NON-NLS-1$ + consumeExplicitConstructorInvocationWithTypeArguments(1, SUPER_CALL); break; - case 296 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT..."); } //$NON-NLS-1$ - consumeExplicitConstructorInvocationWithTypeArguments(2, SUPER_CALL); - break; + case 296 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT super LPAREN"); } //$NON-NLS-1$ + consumeExplicitConstructorInvocation(2, SUPER_CALL); break; - case 297 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT this..."); } //$NON-NLS-1$ - consumeExplicitConstructorInvocation(1, THIS_CALL); - break; + case 297 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT..."); } //$NON-NLS-1$ + consumeExplicitConstructorInvocationWithTypeArguments(2, SUPER_CALL); break; - case 298 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT..."); } //$NON-NLS-1$ - consumeExplicitConstructorInvocationWithTypeArguments(1, THIS_CALL); - break; + case 298 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT this..."); } //$NON-NLS-1$ + consumeExplicitConstructorInvocation(1, THIS_CALL); break; - case 299 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT this LPAREN"); } //$NON-NLS-1$ - consumeExplicitConstructorInvocation(2, THIS_CALL); - break; + case 299 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT..."); } //$NON-NLS-1$ + consumeExplicitConstructorInvocationWithTypeArguments(1, THIS_CALL); break; - case 300 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT..."); } //$NON-NLS-1$ - consumeExplicitConstructorInvocationWithTypeArguments(2, THIS_CALL); - break; + case 300 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT this LPAREN"); } //$NON-NLS-1$ + consumeExplicitConstructorInvocation(2, THIS_CALL); break; - case 301 : if (DEBUG) { System.out.println("InterfaceDeclaration ::= InterfaceHeader InterfaceBody"); } //$NON-NLS-1$ - consumeInterfaceDeclaration(); - break; + case 301 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT..."); } //$NON-NLS-1$ + consumeExplicitConstructorInvocationWithTypeArguments(2, THIS_CALL); break; - case 302 : if (DEBUG) { System.out.println("InterfaceHeader ::= InterfaceHeaderName..."); } //$NON-NLS-1$ - consumeInterfaceHeader(); - break; + case 302 : if (DEBUG) { System.out.println("InterfaceDeclaration ::= InterfaceHeader InterfaceBody"); } //$NON-NLS-1$ + consumeInterfaceDeclaration(); break; - case 303 : if (DEBUG) { System.out.println("InterfaceHeaderName ::= InterfaceHeaderName1..."); } //$NON-NLS-1$ - consumeTypeHeaderNameWithTypeParameters(); - break; + case 303 : if (DEBUG) { System.out.println("InterfaceHeader ::= InterfaceHeaderName..."); } //$NON-NLS-1$ + consumeInterfaceHeader(); break; - case 305 : if (DEBUG) { System.out.println("InterfaceHeaderName1 ::= Modifiersopt interface..."); } //$NON-NLS-1$ - consumeInterfaceHeaderName1(); - break; + case 304 : if (DEBUG) { System.out.println("InterfaceHeaderName ::= InterfaceHeaderName1..."); } //$NON-NLS-1$ + consumeTypeHeaderNameWithTypeParameters(); break; - case 306 : if (DEBUG) { System.out.println("InterfaceHeaderExtends ::= extends InterfaceTypeList"); } //$NON-NLS-1$ - consumeInterfaceHeaderExtends(); - break; + case 306 : if (DEBUG) { System.out.println("InterfaceHeaderName1 ::= Modifiersopt interface..."); } //$NON-NLS-1$ + consumeInterfaceHeaderName1(); break; - case 309 : if (DEBUG) { System.out.println("InterfaceMemberDeclarations ::=..."); } //$NON-NLS-1$ - consumeInterfaceMemberDeclarations(); - break; + case 307 : if (DEBUG) { System.out.println("InterfaceHeaderExtends ::= extends InterfaceTypeList"); } //$NON-NLS-1$ + consumeInterfaceHeaderExtends(); break; - case 310 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= SEMICOLON"); } //$NON-NLS-1$ - consumeEmptyTypeDeclaration(); - break; + case 310 : if (DEBUG) { System.out.println("InterfaceMemberDeclarations ::=..."); } //$NON-NLS-1$ + consumeInterfaceMemberDeclarations(); break; - case 312 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= DefaultMethodHeader..."); } //$NON-NLS-1$ - consumeInterfaceMethodDeclaration(false); - break; + case 311 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= SEMICOLON"); } //$NON-NLS-1$ + consumeEmptyTypeDeclaration(); break; - case 313 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= MethodHeader MethodBody"); } //$NON-NLS-1$ - consumeInterfaceMethodDeclaration(false); - break; + case 313 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= DefaultMethodHeader..."); } //$NON-NLS-1$ + consumeInterfaceMethodDeclaration(false); break; - case 314 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= DefaultMethodHeader..."); } //$NON-NLS-1$ - consumeInterfaceMethodDeclaration(true); - break; + case 314 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= MethodHeader MethodBody"); } //$NON-NLS-1$ + consumeInterfaceMethodDeclaration(false); break; - case 315 : if (DEBUG) { System.out.println("InvalidConstructorDeclaration ::= ConstructorHeader..."); } //$NON-NLS-1$ - consumeInvalidConstructorDeclaration(true); - break; + case 315 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= DefaultMethodHeader..."); } //$NON-NLS-1$ + consumeInterfaceMethodDeclaration(true); break; case 316 : if (DEBUG) { System.out.println("InvalidConstructorDeclaration ::= ConstructorHeader..."); } //$NON-NLS-1$ - consumeInvalidConstructorDeclaration(false); - break; + consumeInvalidConstructorDeclaration(true); break; - case 327 : if (DEBUG) { System.out.println("RecordDeclaration ::= RecordHeaderPart RecordBody"); } //$NON-NLS-1$ - consumeRecordDeclaration(); - break; + case 317 : if (DEBUG) { System.out.println("InvalidConstructorDeclaration ::= ConstructorHeader..."); } //$NON-NLS-1$ + consumeInvalidConstructorDeclaration(false); break; - case 328 : if (DEBUG) { System.out.println("RecordHeaderPart ::= RecordHeaderName RecordHeader..."); } //$NON-NLS-1$ - consumeRecordHeaderPart(); - break; + case 328 : if (DEBUG) { System.out.println("RecordDeclaration ::= RecordHeaderPart RecordBody"); } //$NON-NLS-1$ + consumeRecordDeclaration(); break; - case 329 : if (DEBUG) { System.out.println("RecordHeaderName ::= RecordHeaderName1 TypeParameters"); } //$NON-NLS-1$ - consumeRecordHeaderNameWithTypeParameters(); - break; + case 329 : if (DEBUG) { System.out.println("RecordHeaderPart ::= RecordHeaderName RecordHeader..."); } //$NON-NLS-1$ + consumeRecordHeaderPart(); break; - case 331 : if (DEBUG) { System.out.println("RecordHeaderName1 ::= Modifiersopt..."); } //$NON-NLS-1$ - consumeRecordHeaderName1(); - break; + case 330 : if (DEBUG) { System.out.println("RecordHeaderName ::= RecordHeaderName1 TypeParameters"); } //$NON-NLS-1$ + consumeRecordHeaderNameWithTypeParameters(); break; - case 332 : if (DEBUG) { System.out.println("RecordComponentHeaderRightParen ::= RPAREN"); } //$NON-NLS-1$ - consumeRecordComponentHeaderRightParen(); - break; + case 332 : if (DEBUG) { System.out.println("RecordHeaderName1 ::= Modifiersopt..."); } //$NON-NLS-1$ + consumeRecordHeaderName1(); break; - case 333 : if (DEBUG) { System.out.println("RecordHeader ::= LPAREN RecordComponentsopt..."); } //$NON-NLS-1$ - consumeRecordHeader(); - break; + case 333 : if (DEBUG) { System.out.println("RecordComponentHeaderRightParen ::= RPAREN"); } //$NON-NLS-1$ + consumeRecordComponentHeaderRightParen(); break; - case 334 : if (DEBUG) { System.out.println("RecordComponentsopt ::="); } //$NON-NLS-1$ - consumeRecordComponentsopt(); - break; + case 334 : if (DEBUG) { System.out.println("RecordHeader ::= LPAREN RecordComponentsopt..."); } //$NON-NLS-1$ + consumeRecordHeader(); break; - case 337 : if (DEBUG) { System.out.println("RecordComponents ::= RecordComponents COMMA..."); } //$NON-NLS-1$ - consumeRecordComponents(); - break; + case 335 : if (DEBUG) { System.out.println("RecordComponentsopt ::="); } //$NON-NLS-1$ + consumeRecordComponentsopt(); break; - case 339 : if (DEBUG) { System.out.println("RecordComponent ::= Modifiersopt Type..."); } //$NON-NLS-1$ - consumeRecordComponent(false); - break; + case 338 : if (DEBUG) { System.out.println("RecordComponents ::= RecordComponents COMMA..."); } //$NON-NLS-1$ + consumeRecordComponents(); break; - case 340 : if (DEBUG) { System.out.println("VariableArityRecordComponent ::= Modifiersopt Type..."); } //$NON-NLS-1$ - consumeRecordComponent(true); - break; + case 340 : if (DEBUG) { System.out.println("RecordComponent ::= Modifiersopt Type..."); } //$NON-NLS-1$ + consumeRecordComponent(false); break; case 341 : if (DEBUG) { System.out.println("VariableArityRecordComponent ::= Modifiersopt Type..."); } //$NON-NLS-1$ - consumeRecordComponent(true); - break; + consumeRecordComponent(true); break; - case 342 : if (DEBUG) { System.out.println("RecordBody ::= LBRACE RecordBodyDeclarationopt RBRACE"); } //$NON-NLS-1$ - consumeRecordBody(); - break; + case 342 : if (DEBUG) { System.out.println("VariableArityRecordComponent ::= Modifiersopt Type..."); } //$NON-NLS-1$ + consumeRecordComponent(true); break; - case 343 : if (DEBUG) { System.out.println("RecordBodyDeclarationopt ::="); } //$NON-NLS-1$ - consumeEmptyRecordBodyDeclaration(); - break; + case 343 : if (DEBUG) { System.out.println("RecordBody ::= LBRACE RecordBodyDeclarationopt RBRACE"); } //$NON-NLS-1$ + consumeRecordBody(); break; - case 346 : if (DEBUG) { System.out.println("RecordBodyDeclarations ::= RecordBodyDeclarations..."); } //$NON-NLS-1$ - consumeRecordBodyDeclarations(); - break; + case 344 : if (DEBUG) { System.out.println("RecordBodyDeclarationopt ::="); } //$NON-NLS-1$ + consumeEmptyRecordBodyDeclaration(); break; - case 347 : if (DEBUG) { System.out.println("RecordBodyDeclaration ::= ClassBodyDeclaration"); } //$NON-NLS-1$ - consumeRecordBodyDeclaration(); - break; + case 347 : if (DEBUG) { System.out.println("RecordBodyDeclarations ::= RecordBodyDeclarations..."); } //$NON-NLS-1$ + consumeRecordBodyDeclarations(); break; - case 348 : if (DEBUG) { System.out.println("RecordBodyDeclaration ::= CompactConstructorDeclaration"); } //$NON-NLS-1$ - consumeRecordBodyDeclaration(); - break; + case 348 : if (DEBUG) { System.out.println("RecordBodyDeclaration ::= ClassBodyDeclaration"); } //$NON-NLS-1$ + consumeRecordBodyDeclaration(); break; - case 349 : if (DEBUG) { System.out.println("CompactConstructorDeclaration ::=..."); } //$NON-NLS-1$ - consumeCompactConstructorDeclaration(); - break; + case 349 : if (DEBUG) { System.out.println("RecordBodyDeclaration ::= CompactConstructorDeclaration"); } //$NON-NLS-1$ + consumeRecordBodyDeclaration(); break; - case 350 : if (DEBUG) { System.out.println("CompactConstructorHeader ::=..."); } //$NON-NLS-1$ - consumeCompactConstructorHeader(); - break; + case 350 : if (DEBUG) { System.out.println("CompactConstructorDeclaration ::=..."); } //$NON-NLS-1$ + consumeCompactConstructorDeclaration(); break; - case 351 : if (DEBUG) { System.out.println("CompactConstructorHeaderName ::= Modifiersopt Identifier"); } //$NON-NLS-1$ - consumeCompactConstructorHeaderName(); - break; + case 351 : if (DEBUG) { System.out.println("CompactConstructorHeader ::=..."); } //$NON-NLS-1$ + consumeCompactConstructorHeader(); break; - case 352 : if (DEBUG) { System.out.println("CompactConstructorHeaderName ::= Modifiersopt..."); } //$NON-NLS-1$ - consumeCompactConstructorHeaderNameWithTypeParameters(); - break; + case 352 : if (DEBUG) { System.out.println("CompactConstructorHeaderName ::= Modifiersopt Identifier"); } //$NON-NLS-1$ + consumeCompactConstructorHeaderName(); break; - case 354 : if (DEBUG) { System.out.println("InstanceofExpression ::= InstanceofExpression..."); } //$NON-NLS-1$ - consumeInstanceOfExpression(); - break; + case 353 : if (DEBUG) { System.out.println("CompactConstructorHeaderName ::= Modifiersopt..."); } //$NON-NLS-1$ + consumeCompactConstructorHeaderNameWithTypeParameters(); break; - case 356 : if (DEBUG) { System.out.println("InstanceofRHS -> InstanceofPattern"); } //$NON-NLS-1$ - consumeInstanceOfRHS(); - break; + case 355 : if (DEBUG) { System.out.println("InstanceofExpression ::= InstanceofExpression..."); } //$NON-NLS-1$ + consumeInstanceOfExpression(); break; - case 357 : if (DEBUG) { System.out.println("InstanceofClassic ::= instanceof Modifiersopt Type"); } //$NON-NLS-1$ - consumeInstanceOfClassic(); - break; + case 357 : if (DEBUG) { System.out.println("InstanceofRHS -> InstanceofPattern"); } //$NON-NLS-1$ + consumeInstanceOfRHS(); break; - case 358 : if (DEBUG) { System.out.println("InstanceofPattern ::= instanceof Pattern"); } //$NON-NLS-1$ - consumeInstanceofPattern(); - break; + case 358 : if (DEBUG) { System.out.println("InstanceofClassic ::= instanceof Modifiersopt Type"); } //$NON-NLS-1$ + consumeInstanceOfClassic(); break; - case 360 : if (DEBUG) { System.out.println("Pattern -> RecordPattern"); } //$NON-NLS-1$ - consumePattern(); - break; + case 359 : if (DEBUG) { System.out.println("InstanceofPattern ::= instanceof Pattern"); } //$NON-NLS-1$ + consumeInstanceofPattern(); break; - case 361 : if (DEBUG) { System.out.println("TypePattern ::= Modifiersopt Type Identifier"); } //$NON-NLS-1$ - consumeTypePattern(); - break; + case 361 : if (DEBUG) { System.out.println("Pattern -> RecordPattern"); } //$NON-NLS-1$ + consumePattern(); break; - case 362 : if (DEBUG) { System.out.println("RecordPattern ::= Modifiersopt ReferenceType PushLPAREN"); } //$NON-NLS-1$ - consumeRecordPattern(); - break; + case 362 : if (DEBUG) { System.out.println("TypePattern ::= Modifiersopt Type Identifier"); } //$NON-NLS-1$ + consumeTypePattern(); break; - case 363 : if (DEBUG) { System.out.println("PatternListopt ::="); } //$NON-NLS-1$ - consumePatternListopt(); - break; + case 363 : if (DEBUG) { System.out.println("TypePattern ::= Modifiersopt Type UNDERSCORE"); } //$NON-NLS-1$ + consumeTypePattern(); break; - case 366 : if (DEBUG) { System.out.println("PatternList ::= PatternList COMMA Pattern"); } //$NON-NLS-1$ - consumePatternList(); - break; + case 364 : if (DEBUG) { System.out.println("RecordPattern ::= Modifiersopt ReferenceType PushLPAREN"); } //$NON-NLS-1$ + consumeRecordPattern(); break; - case 372 : if (DEBUG) { System.out.println("StringTemplateExpression ::= Name DOT TemplateArgument"); } //$NON-NLS-1$ - consumeTemplateExpressionWithName(); - break; + case 365 : if (DEBUG) { System.out.println("ComponentPatternListopt ::="); } //$NON-NLS-1$ + consumePatternListopt(); break; - case 373 : if (DEBUG) { System.out.println("StringTemplateExpression ::= Primary DOT..."); } //$NON-NLS-1$ - consumeTemplateExpressionWithPrimary(); - break; + case 368 : if (DEBUG) { System.out.println("ComponentPatternList ::= ComponentPatternList COMMA..."); } //$NON-NLS-1$ + consumePatternList(); break; - case 375 : if (DEBUG) { System.out.println("PushLeftBrace ::="); } //$NON-NLS-1$ - consumePushLeftBrace(); - break; + case 376 : if (DEBUG) { System.out.println("StringTemplateExpression ::= Name DOT TemplateArgument"); } //$NON-NLS-1$ + consumeTemplateExpressionWithName(); break; - case 376 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace ,opt RBRACE"); } //$NON-NLS-1$ - consumeEmptyArrayInitializer(); - break; + case 377 : if (DEBUG) { System.out.println("StringTemplateExpression ::= Primary DOT..."); } //$NON-NLS-1$ + consumeTemplateExpressionWithPrimary(); break; - case 377 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace..."); } //$NON-NLS-1$ - consumeArrayInitializer(); - break; + case 378 : if (DEBUG) { System.out.println("UnnamedPattern ::= UNDERSCORE"); } //$NON-NLS-1$ + consumeUnnamedPattern(); break; - case 378 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace..."); } //$NON-NLS-1$ - consumeArrayInitializer(); - break; + case 380 : if (DEBUG) { System.out.println("PushLeftBrace ::="); } //$NON-NLS-1$ + consumePushLeftBrace(); break; - case 380 : if (DEBUG) { System.out.println("VariableInitializers ::= VariableInitializers COMMA..."); } //$NON-NLS-1$ - consumeVariableInitializers(); - break; + case 381 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace ,opt RBRACE"); } //$NON-NLS-1$ + consumeEmptyArrayInitializer(); break; - case 381 : if (DEBUG) { System.out.println("Block ::= OpenBlock LBRACE BlockStatementsopt RBRACE"); } //$NON-NLS-1$ - consumeBlock(); - break; + case 382 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace..."); } //$NON-NLS-1$ + consumeArrayInitializer(); break; - case 382 : if (DEBUG) { System.out.println("OpenBlock ::="); } //$NON-NLS-1$ - consumeOpenBlock() ; - break; + case 383 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace..."); } //$NON-NLS-1$ + consumeArrayInitializer(); break; - case 383 : if (DEBUG) { System.out.println("BlockStatements ::= BlockStatement"); } //$NON-NLS-1$ - consumeBlockStatement() ; - break; + case 385 : if (DEBUG) { System.out.println("VariableInitializers ::= VariableInitializers COMMA..."); } //$NON-NLS-1$ + consumeVariableInitializers(); break; - case 384 : if (DEBUG) { System.out.println("BlockStatements ::= BlockStatements BlockStatement"); } //$NON-NLS-1$ - consumeBlockStatements() ; - break; + case 386 : if (DEBUG) { System.out.println("Block ::= OpenBlock LBRACE BlockStatementsopt RBRACE"); } //$NON-NLS-1$ + consumeBlock(); break; - case 392 : if (DEBUG) { System.out.println("BlockStatement ::= InterfaceDeclaration"); } //$NON-NLS-1$ - consumeInvalidInterfaceDeclaration(); - break; + case 387 : if (DEBUG) { System.out.println("OpenBlock ::="); } //$NON-NLS-1$ + consumeOpenBlock() ; break; - case 393 : if (DEBUG) { System.out.println("BlockStatement ::= AnnotationTypeDeclaration"); } //$NON-NLS-1$ - consumeInvalidAnnotationTypeDeclaration(); - break; + case 388 : if (DEBUG) { System.out.println("BlockStatements ::= BlockStatement"); } //$NON-NLS-1$ + consumeBlockStatement() ; break; - case 394 : if (DEBUG) { System.out.println("BlockStatement ::= EnumDeclaration"); } //$NON-NLS-1$ - consumeInvalidEnumDeclaration(); - break; + case 389 : if (DEBUG) { System.out.println("BlockStatements ::= BlockStatements BlockStatement"); } //$NON-NLS-1$ + consumeBlockStatements() ; break; - case 395 : if (DEBUG) { System.out.println("LocalVariableDeclarationStatement ::=..."); } //$NON-NLS-1$ - consumeLocalVariableDeclarationStatement(); - break; + case 397 : if (DEBUG) { System.out.println("BlockStatement ::= InterfaceDeclaration"); } //$NON-NLS-1$ + consumeInvalidInterfaceDeclaration(); break; - case 396 : if (DEBUG) { System.out.println("LocalVariableDeclaration ::= Type PushModifiers..."); } //$NON-NLS-1$ - consumeLocalVariableDeclaration(); - break; + case 398 : if (DEBUG) { System.out.println("BlockStatement ::= AnnotationTypeDeclaration"); } //$NON-NLS-1$ + consumeInvalidAnnotationTypeDeclaration(); break; - case 397 : if (DEBUG) { System.out.println("LocalVariableDeclaration ::= Modifiers Type..."); } //$NON-NLS-1$ - consumeLocalVariableDeclaration(); - break; + case 399 : if (DEBUG) { System.out.println("BlockStatement ::= EnumDeclaration"); } //$NON-NLS-1$ + consumeInvalidEnumDeclaration(); break; - case 398 : if (DEBUG) { System.out.println("PushModifiers ::="); } //$NON-NLS-1$ - consumePushModifiers(); - break; + case 400 : if (DEBUG) { System.out.println("LocalVariableDeclarationStatement ::=..."); } //$NON-NLS-1$ + consumeLocalVariableDeclarationStatement(); break; - case 399 : if (DEBUG) { System.out.println("PushModifiersForHeader ::="); } //$NON-NLS-1$ - consumePushModifiersForHeader(); - break; + case 401 : if (DEBUG) { System.out.println("LocalVariableDeclaration ::= Type PushModifiers..."); } //$NON-NLS-1$ + consumeLocalVariableDeclaration(); break; - case 400 : if (DEBUG) { System.out.println("PushRealModifiers ::="); } //$NON-NLS-1$ - consumePushRealModifiers(); - break; + case 402 : if (DEBUG) { System.out.println("LocalVariableDeclaration ::= Modifiers Type..."); } //$NON-NLS-1$ + consumeLocalVariableDeclaration(); break; - case 428 : if (DEBUG) { System.out.println("EmptyStatement ::= SEMICOLON"); } //$NON-NLS-1$ - consumeEmptyStatement(); - break; + case 403 : if (DEBUG) { System.out.println("PushModifiers ::="); } //$NON-NLS-1$ + consumePushModifiers(); break; - case 429 : if (DEBUG) { System.out.println("LabeledStatement ::= Label COLON Statement"); } //$NON-NLS-1$ - consumeStatementLabel() ; - break; + case 404 : if (DEBUG) { System.out.println("PushModifiersForHeader ::="); } //$NON-NLS-1$ + consumePushModifiersForHeader(); break; - case 430 : if (DEBUG) { System.out.println("LabeledStatementNoShortIf ::= Label COLON..."); } //$NON-NLS-1$ - consumeStatementLabel() ; - break; + case 405 : if (DEBUG) { System.out.println("PushRealModifiers ::="); } //$NON-NLS-1$ + consumePushRealModifiers(); break; - case 431 : if (DEBUG) { System.out.println("Label ::= Identifier"); } //$NON-NLS-1$ - consumeLabel() ; - break; + case 433 : if (DEBUG) { System.out.println("EmptyStatement ::= SEMICOLON"); } //$NON-NLS-1$ + consumeEmptyStatement(); break; - case 432 : if (DEBUG) { System.out.println("ExpressionStatement ::= StatementExpression SEMICOLON"); } //$NON-NLS-1$ - consumeExpressionStatement(); - break; + case 434 : if (DEBUG) { System.out.println("LabeledStatement ::= Label COLON Statement"); } //$NON-NLS-1$ + consumeStatementLabel() ; break; - case 441 : if (DEBUG) { System.out.println("PostExpressionInSwitchStatement ::="); } //$NON-NLS-1$ - consumePostExpressionInSwitch(true); - break; + case 435 : if (DEBUG) { System.out.println("LabeledStatementNoShortIf ::= Label COLON..."); } //$NON-NLS-1$ + consumeStatementLabel() ; break; - case 442 : if (DEBUG) { System.out.println("PostExpressionInSwitchExpression ::="); } //$NON-NLS-1$ - consumePostExpressionInSwitch(false); - break; + case 436 : if (DEBUG) { System.out.println("Label ::= Identifier"); } //$NON-NLS-1$ + consumeLabel() ; break; - case 443 : if (DEBUG) { System.out.println("PostExpressionInIf ::="); } //$NON-NLS-1$ - consumePostExpressionInIf(); - break; + case 437 : if (DEBUG) { System.out.println("ExpressionStatement ::= StatementExpression SEMICOLON"); } //$NON-NLS-1$ + consumeExpressionStatement(); break; - case 444 : if (DEBUG) { System.out.println("PostExpressionInWhile ::="); } //$NON-NLS-1$ - consumePostExpressionInWhile(); - break; + case 446 : if (DEBUG) { System.out.println("PostExpressionInSwitchStatement ::="); } //$NON-NLS-1$ + consumePostExpressionInSwitch(true); break; - case 445 : if (DEBUG) { System.out.println("IfThenStatement ::= if LPAREN Expression RPAREN..."); } //$NON-NLS-1$ - consumeStatementIfNoElse(); - break; + case 447 : if (DEBUG) { System.out.println("PostExpressionInSwitchExpression ::="); } //$NON-NLS-1$ + consumePostExpressionInSwitch(false); break; - case 446 : if (DEBUG) { System.out.println("IfThenElseStatement ::= if LPAREN Expression RPAREN..."); } //$NON-NLS-1$ - consumeStatementIfWithElse(); - break; + case 448 : if (DEBUG) { System.out.println("PostExpressionInIf ::="); } //$NON-NLS-1$ + consumePostExpressionInIf(); break; - case 447 : if (DEBUG) { System.out.println("IfThenElseStatementNoShortIf ::= if LPAREN Expression..."); } //$NON-NLS-1$ - consumeStatementIfWithElse(); - break; + case 449 : if (DEBUG) { System.out.println("PostExpressionInWhile ::="); } //$NON-NLS-1$ + consumePostExpressionInWhile(); break; - case 448 : if (DEBUG) { System.out.println("SwitchStatement ::= switch LPAREN Expression RPAREN..."); } //$NON-NLS-1$ - consumeStatementSwitch() ; - break; + case 450 : if (DEBUG) { System.out.println("IfThenStatement ::= if LPAREN Expression RPAREN..."); } //$NON-NLS-1$ + consumeStatementIfNoElse(); break; - case 449 : if (DEBUG) { System.out.println("SwitchBlock ::= LBRACE RBRACE"); } //$NON-NLS-1$ - consumeEmptySwitchBlock() ; - break; + case 451 : if (DEBUG) { System.out.println("IfThenElseStatement ::= if LPAREN Expression RPAREN..."); } //$NON-NLS-1$ + consumeStatementIfWithElse(); break; - case 452 : if (DEBUG) { System.out.println("SwitchBlock ::= LBRACE SwitchBlockStatements..."); } //$NON-NLS-1$ - consumeSwitchBlock() ; - break; + case 452 : if (DEBUG) { System.out.println("IfThenElseStatementNoShortIf ::= if LPAREN Expression..."); } //$NON-NLS-1$ + consumeStatementIfWithElse(); break; - case 454 : if (DEBUG) { System.out.println("SwitchBlockStatements ::= SwitchBlockStatements..."); } //$NON-NLS-1$ - consumeSwitchBlockStatements() ; - break; + case 453 : if (DEBUG) { System.out.println("SwitchStatement ::= switch LPAREN Expression RPAREN..."); } //$NON-NLS-1$ + consumeStatementSwitch() ; break; - case 456 : if (DEBUG) { System.out.println("SwitchBlockStatement ::= SwitchLabels BlockStatements"); } //$NON-NLS-1$ - consumeSwitchBlockStatement() ; - break; + case 454 : if (DEBUG) { System.out.println("SwitchBlock ::= LBRACE RBRACE"); } //$NON-NLS-1$ + consumeEmptySwitchBlock() ; break; - case 458 : if (DEBUG) { System.out.println("SwitchLabels ::= SwitchLabels SwitchLabel"); } //$NON-NLS-1$ - consumeSwitchLabels() ; - break; + case 457 : if (DEBUG) { System.out.println("SwitchBlock ::= LBRACE SwitchBlockStatements..."); } //$NON-NLS-1$ + consumeSwitchBlock() ; break; - case 459 : if (DEBUG) { System.out.println("SwitchLabel ::= SwitchLabelCaseLhs COLON"); } //$NON-NLS-1$ - consumeCaseLabel(); - break; + case 459 : if (DEBUG) { System.out.println("SwitchBlockStatements ::= SwitchBlockStatements..."); } //$NON-NLS-1$ + consumeSwitchBlockStatements() ; break; - case 460 : if (DEBUG) { System.out.println("SwitchLabel ::= default COLON"); } //$NON-NLS-1$ - consumeDefaultLabel(); - break; + case 461 : if (DEBUG) { System.out.println("SwitchBlockStatement ::= SwitchLabels BlockStatements"); } //$NON-NLS-1$ + consumeSwitchBlockStatement() ; break; - case 463 : if (DEBUG) { System.out.println("SwitchExpression ::= switch LPAREN Expression RPAREN..."); } //$NON-NLS-1$ - consumeSwitchExpression() ; - break; + case 463 : if (DEBUG) { System.out.println("SwitchLabels ::= SwitchLabels SwitchLabel"); } //$NON-NLS-1$ + consumeSwitchLabels() ; break; - case 466 : if (DEBUG) { System.out.println("SwitchLabeledRule ::= SwitchLabeledThrowStatement"); } //$NON-NLS-1$ - consumeSwitchLabeledRule(); - break; + case 464 : if (DEBUG) { System.out.println("SwitchLabel ::= SwitchLabelCaseLhs COLON"); } //$NON-NLS-1$ + consumeCaseLabel(); break; - case 467 : if (DEBUG) { System.out.println("SwitchLabeledExpression ::= SwitchLabelExpr Expression"); } //$NON-NLS-1$ - consumeSwitchLabeledExpression(); - break; + case 465 : if (DEBUG) { System.out.println("SwitchLabel ::= default COLON"); } //$NON-NLS-1$ + consumeDefaultLabel(); break; - case 468 : if (DEBUG) { System.out.println("SwitchLabeledBlock ::= SwitchLabelExpr Block"); } //$NON-NLS-1$ - consumeSwitchLabeledBlock(); - break; + case 468 : if (DEBUG) { System.out.println("SwitchExpression ::= switch LPAREN Expression RPAREN..."); } //$NON-NLS-1$ + consumeSwitchExpression() ; break; - case 469 : if (DEBUG) { System.out.println("SwitchLabeledThrowStatement ::= SwitchLabelExpr..."); } //$NON-NLS-1$ - consumeSwitchLabeledThrowStatement(); - break; + case 471 : if (DEBUG) { System.out.println("SwitchLabeledRule ::= SwitchLabeledThrowStatement"); } //$NON-NLS-1$ + consumeSwitchLabeledRule(); break; - case 470 : if (DEBUG) { System.out.println("SwitchLabelExpr ::= default ARROW"); } //$NON-NLS-1$ - consumeDefaultLabelExpr(); - break; + case 472 : if (DEBUG) { System.out.println("SwitchLabeledExpression ::= SwitchLabelExpr Expression"); } //$NON-NLS-1$ + consumeSwitchLabeledExpression(); break; - case 471 : if (DEBUG) { System.out.println("SwitchLabelExpr ::= SwitchLabelCaseLhs BeginCaseExpr..."); } //$NON-NLS-1$ - consumeCaseLabelExpr(); - break; + case 473 : if (DEBUG) { System.out.println("SwitchLabeledBlock ::= SwitchLabelExpr Block"); } //$NON-NLS-1$ + consumeSwitchLabeledBlock(); break; - case 472 : if (DEBUG) { System.out.println("SwitchLabelCaseLhs ::= case CaseLabelElements"); } //$NON-NLS-1$ - consumeSwitchLabelCaseLhs(); - break; + case 474 : if (DEBUG) { System.out.println("SwitchLabeledThrowStatement ::= SwitchLabelExpr..."); } //$NON-NLS-1$ + consumeSwitchLabeledThrowStatement(); break; - case 474 : if (DEBUG) { System.out.println("CaseLabelElements ::= CaseLabelElements COMMA..."); } //$NON-NLS-1$ - consumeCaseLabelElements(); - break; + case 475 : if (DEBUG) { System.out.println("SwitchLabelExpr ::= default ARROW"); } //$NON-NLS-1$ + consumeDefaultLabelExpr(); break; - case 475 : if (DEBUG) { System.out.println("CaseLabelElement ::= ConstantExpression"); } //$NON-NLS-1$ - consumeCaseLabelElement(CaseLabelKind.CASE_EXPRESSION); - break; + case 476 : if (DEBUG) { System.out.println("SwitchLabelExpr ::= SwitchLabelCaseLhs BeginCaseExpr..."); } //$NON-NLS-1$ + consumeCaseLabelExpr(); break; - case 476 : if (DEBUG) { System.out.println("CaseLabelElement ::= default"); } //$NON-NLS-1$ - consumeCaseLabelElement(CaseLabelKind.CASE_DEFAULT); - break; + case 477 : if (DEBUG) { System.out.println("SwitchLabelCaseLhs ::= case CaseLabelElements"); } //$NON-NLS-1$ + consumeSwitchLabelCaseLhs(); break; - case 477 : if (DEBUG) { System.out.println("CaseLabelElement ::= CaseLabelElementPattern"); } //$NON-NLS-1$ - consumeCaseLabelElement(CaseLabelKind.CASE_PATTERN); - break; + case 479 : if (DEBUG) { System.out.println("CaseLabelElements ::= CaseLabelElements COMMA..."); } //$NON-NLS-1$ + consumeCaseLabelElements(); break; - case 478 : if (DEBUG) { System.out.println("CaseLabelElement ::= CaseLabelElementPattern Guard"); } //$NON-NLS-1$ - consumeCaseLabelElement(CaseLabelKind.CASE_PATTERN); - break; + case 480 : if (DEBUG) { System.out.println("CaseLabelElement ::= ConstantExpression"); } //$NON-NLS-1$ + consumeCaseLabelElement(CaseLabelKind.CASE_EXPRESSION); break; - case 479 : if (DEBUG) { System.out.println("CaseLabelElementPattern ::= BeginCaseElement Pattern"); } //$NON-NLS-1$ - consumeCaseLabelElementPattern(); - break; + case 481 : if (DEBUG) { System.out.println("CaseLabelElement ::= default"); } //$NON-NLS-1$ + consumeCaseLabelElement(CaseLabelKind.CASE_DEFAULT); break; - case 480 : if (DEBUG) { System.out.println("Guard ::= RestrictedIdentifierWhen Expression"); } //$NON-NLS-1$ - consumeGuard(); - break; + case 482 : if (DEBUG) { System.out.println("CaseLabelElement ::= CaseLabelElementPattern"); } //$NON-NLS-1$ + consumeCaseLabelElement(CaseLabelKind.CASE_PATTERN); break; - case 481 : if (DEBUG) { System.out.println("YieldStatement ::= RestrictedIdentifierYield Expression"); } //$NON-NLS-1$ - consumeStatementYield() ; - break; + case 483 : if (DEBUG) { System.out.println("CaseLabelElement ::= CaseLabelElementPattern Guard"); } //$NON-NLS-1$ + consumeCaseLabelElement(CaseLabelKind.CASE_PATTERN); break; - case 482 : if (DEBUG) { System.out.println("WhileStatement ::= while LPAREN Expression RPAREN..."); } //$NON-NLS-1$ - consumeStatementWhile() ; - break; + case 484 : if (DEBUG) { System.out.println("CaseLabelElementPattern ::= BeginCaseElement Pattern"); } //$NON-NLS-1$ + consumeCaseLabelElementPattern(); break; - case 483 : if (DEBUG) { System.out.println("WhileStatementNoShortIf ::= while LPAREN Expression..."); } //$NON-NLS-1$ - consumeStatementWhile() ; - break; + case 485 : if (DEBUG) { System.out.println("Guard ::= RestrictedIdentifierWhen Expression"); } //$NON-NLS-1$ + consumeGuard(); break; - case 484 : if (DEBUG) { System.out.println("DoStatement ::= do Statement while LPAREN Expression..."); } //$NON-NLS-1$ - consumeStatementDo() ; - break; + case 486 : if (DEBUG) { System.out.println("YieldStatement ::= RestrictedIdentifierYield Expression"); } //$NON-NLS-1$ + consumeStatementYield() ; break; - case 485 : if (DEBUG) { System.out.println("ForStatement ::= for LPAREN ForInitopt SEMICOLON..."); } //$NON-NLS-1$ - consumeStatementFor() ; - break; + case 487 : if (DEBUG) { System.out.println("WhileStatement ::= while LPAREN Expression RPAREN..."); } //$NON-NLS-1$ + consumeStatementWhile() ; break; - case 486 : if (DEBUG) { System.out.println("ForStatementNoShortIf ::= for LPAREN ForInitopt..."); } //$NON-NLS-1$ - consumeStatementFor() ; - break; + case 488 : if (DEBUG) { System.out.println("WhileStatementNoShortIf ::= while LPAREN Expression..."); } //$NON-NLS-1$ + consumeStatementWhile() ; break; - case 487 : if (DEBUG) { System.out.println("ForInit ::= StatementExpressionList"); } //$NON-NLS-1$ - consumeForInit() ; - break; + case 489 : if (DEBUG) { System.out.println("DoStatement ::= do Statement while LPAREN Expression..."); } //$NON-NLS-1$ + consumeStatementDo() ; break; - case 491 : if (DEBUG) { System.out.println("StatementExpressionList ::= StatementExpressionList..."); } //$NON-NLS-1$ - consumeStatementExpressionList() ; - break; + case 490 : if (DEBUG) { System.out.println("ForStatement ::= for LPAREN ForInitopt SEMICOLON..."); } //$NON-NLS-1$ + consumeStatementFor() ; break; - case 492 : if (DEBUG) { System.out.println("AssertStatement ::= assert Expression SEMICOLON"); } //$NON-NLS-1$ - consumeSimpleAssertStatement() ; - break; + case 491 : if (DEBUG) { System.out.println("ForStatementNoShortIf ::= for LPAREN ForInitopt..."); } //$NON-NLS-1$ + consumeStatementFor() ; break; - case 493 : if (DEBUG) { System.out.println("AssertStatement ::= assert Expression COLON Expression"); } //$NON-NLS-1$ - consumeAssertStatement() ; - break; + case 492 : if (DEBUG) { System.out.println("ForInit ::= StatementExpressionList"); } //$NON-NLS-1$ + consumeForInit() ; break; - case 494 : if (DEBUG) { System.out.println("BreakStatement ::= break SEMICOLON"); } //$NON-NLS-1$ - consumeStatementBreak() ; - break; + case 496 : if (DEBUG) { System.out.println("StatementExpressionList ::= StatementExpressionList..."); } //$NON-NLS-1$ + consumeStatementExpressionList() ; break; - case 495 : if (DEBUG) { System.out.println("BreakStatement ::= break Identifier SEMICOLON"); } //$NON-NLS-1$ - consumeStatementBreakWithLabel() ; - break; + case 497 : if (DEBUG) { System.out.println("AssertStatement ::= assert Expression SEMICOLON"); } //$NON-NLS-1$ + consumeSimpleAssertStatement() ; break; - case 496 : if (DEBUG) { System.out.println("ContinueStatement ::= continue SEMICOLON"); } //$NON-NLS-1$ - consumeStatementContinue() ; - break; + case 498 : if (DEBUG) { System.out.println("AssertStatement ::= assert Expression COLON Expression"); } //$NON-NLS-1$ + consumeAssertStatement() ; break; - case 497 : if (DEBUG) { System.out.println("ContinueStatement ::= continue Identifier SEMICOLON"); } //$NON-NLS-1$ - consumeStatementContinueWithLabel() ; - break; + case 499 : if (DEBUG) { System.out.println("BreakStatement ::= break SEMICOLON"); } //$NON-NLS-1$ + consumeStatementBreak() ; break; - case 498 : if (DEBUG) { System.out.println("ReturnStatement ::= return Expressionopt SEMICOLON"); } //$NON-NLS-1$ - consumeStatementReturn() ; - break; + case 500 : if (DEBUG) { System.out.println("BreakStatement ::= break Identifier SEMICOLON"); } //$NON-NLS-1$ + consumeStatementBreakWithLabel() ; break; - case 499 : if (DEBUG) { System.out.println("ThrowStatement ::= throw Expression SEMICOLON"); } //$NON-NLS-1$ - consumeStatementThrow(); - break; + case 501 : if (DEBUG) { System.out.println("ContinueStatement ::= continue SEMICOLON"); } //$NON-NLS-1$ + consumeStatementContinue() ; break; - case 500 : if (DEBUG) { System.out.println("ThrowExpression ::= throw Expression"); } //$NON-NLS-1$ - consumeThrowExpression() ; - break; + case 502 : if (DEBUG) { System.out.println("ContinueStatement ::= continue Identifier SEMICOLON"); } //$NON-NLS-1$ + consumeStatementContinueWithLabel() ; break; - case 501 : if (DEBUG) { System.out.println("SynchronizedStatement ::= OnlySynchronized LPAREN..."); } //$NON-NLS-1$ - consumeStatementSynchronized(); - break; + case 503 : if (DEBUG) { System.out.println("ReturnStatement ::= return Expressionopt SEMICOLON"); } //$NON-NLS-1$ + consumeStatementReturn() ; break; - case 502 : if (DEBUG) { System.out.println("OnlySynchronized ::= synchronized"); } //$NON-NLS-1$ - consumeOnlySynchronized(); - break; + case 504 : if (DEBUG) { System.out.println("ThrowStatement ::= throw Expression SEMICOLON"); } //$NON-NLS-1$ + consumeStatementThrow(); break; - case 503 : if (DEBUG) { System.out.println("TryStatement ::= try TryBlock Catches"); } //$NON-NLS-1$ - consumeStatementTry(false, false); - break; + case 505 : if (DEBUG) { System.out.println("ThrowExpression ::= throw Expression"); } //$NON-NLS-1$ + consumeThrowExpression() ; break; - case 504 : if (DEBUG) { System.out.println("TryStatement ::= try TryBlock Catchesopt Finally"); } //$NON-NLS-1$ - consumeStatementTry(true, false); - break; + case 506 : if (DEBUG) { System.out.println("SynchronizedStatement ::= OnlySynchronized LPAREN..."); } //$NON-NLS-1$ + consumeStatementSynchronized(); break; - case 505 : if (DEBUG) { System.out.println("TryStatementWithResources ::= try ResourceSpecification"); } //$NON-NLS-1$ - consumeStatementTry(false, true); - break; + case 507 : if (DEBUG) { System.out.println("OnlySynchronized ::= synchronized"); } //$NON-NLS-1$ + consumeOnlySynchronized(); break; - case 506 : if (DEBUG) { System.out.println("TryStatementWithResources ::= try ResourceSpecification"); } //$NON-NLS-1$ - consumeStatementTry(true, true); - break; + case 508 : if (DEBUG) { System.out.println("TryStatement ::= try TryBlock Catches"); } //$NON-NLS-1$ + consumeStatementTry(false, false); break; - case 507 : if (DEBUG) { System.out.println("ResourceSpecification ::= LPAREN Resources ;opt RPAREN"); } //$NON-NLS-1$ - consumeResourceSpecification(); - break; + case 509 : if (DEBUG) { System.out.println("TryStatement ::= try TryBlock Catchesopt Finally"); } //$NON-NLS-1$ + consumeStatementTry(true, false); break; - case 508 : if (DEBUG) { System.out.println(";opt ::="); } //$NON-NLS-1$ - consumeResourceOptionalTrailingSemiColon(false); - break; + case 510 : if (DEBUG) { System.out.println("TryStatementWithResources ::= try ResourceSpecification"); } //$NON-NLS-1$ + consumeStatementTry(false, true); break; - case 509 : if (DEBUG) { System.out.println(";opt ::= SEMICOLON"); } //$NON-NLS-1$ - consumeResourceOptionalTrailingSemiColon(true); - break; + case 511 : if (DEBUG) { System.out.println("TryStatementWithResources ::= try ResourceSpecification"); } //$NON-NLS-1$ + consumeStatementTry(true, true); break; - case 510 : if (DEBUG) { System.out.println("Resources ::= Resource"); } //$NON-NLS-1$ - consumeSingleResource(); - break; + case 512 : if (DEBUG) { System.out.println("ResourceSpecification ::= LPAREN Resources ;opt RPAREN"); } //$NON-NLS-1$ + consumeResourceSpecification(); break; - case 511 : if (DEBUG) { System.out.println("Resources ::= Resources TrailingSemiColon Resource"); } //$NON-NLS-1$ - consumeMultipleResources(); - break; + case 513 : if (DEBUG) { System.out.println(";opt ::="); } //$NON-NLS-1$ + consumeResourceOptionalTrailingSemiColon(false); break; - case 512 : if (DEBUG) { System.out.println("TrailingSemiColon ::= SEMICOLON"); } //$NON-NLS-1$ - consumeResourceOptionalTrailingSemiColon(true); - break; + case 514 : if (DEBUG) { System.out.println(";opt ::= SEMICOLON"); } //$NON-NLS-1$ + consumeResourceOptionalTrailingSemiColon(true); break; - case 513 : if (DEBUG) { System.out.println("Resource ::= Type PushModifiers VariableDeclaratorId..."); } //$NON-NLS-1$ - consumeResourceAsLocalVariableDeclaration(); - break; + case 515 : if (DEBUG) { System.out.println("Resources ::= Resource"); } //$NON-NLS-1$ + consumeSingleResource(); break; - case 514 : if (DEBUG) { System.out.println("Resource ::= Modifiers Type PushRealModifiers..."); } //$NON-NLS-1$ - consumeResourceAsLocalVariableDeclaration(); - break; + case 516 : if (DEBUG) { System.out.println("Resources ::= Resources TrailingSemiColon Resource"); } //$NON-NLS-1$ + consumeMultipleResources(); break; - case 515 : if (DEBUG) { System.out.println("Resource ::= Name"); } //$NON-NLS-1$ - consumeResourceAsLocalVariable(); - break; + case 517 : if (DEBUG) { System.out.println("TrailingSemiColon ::= SEMICOLON"); } //$NON-NLS-1$ + consumeResourceOptionalTrailingSemiColon(true); break; - case 516 : if (DEBUG) { System.out.println("Resource ::= this"); } //$NON-NLS-1$ - consumeResourceAsThis(); - break; + case 518 : if (DEBUG) { System.out.println("Resource ::= Type PushModifiers VariableDeclaratorId..."); } //$NON-NLS-1$ + consumeResourceAsLocalVariableDeclaration(); break; - case 517 : if (DEBUG) { System.out.println("Resource ::= FieldAccess"); } //$NON-NLS-1$ - consumeResourceAsFieldAccess(); - break; + case 519 : if (DEBUG) { System.out.println("Resource ::= Modifiers Type PushRealModifiers..."); } //$NON-NLS-1$ + consumeResourceAsLocalVariableDeclaration(); break; - case 519 : if (DEBUG) { System.out.println("ExitTryBlock ::="); } //$NON-NLS-1$ - consumeExitTryBlock(); - break; + case 520 : if (DEBUG) { System.out.println("Resource ::= Name"); } //$NON-NLS-1$ + consumeResourceAsLocalVariable(); break; - case 521 : if (DEBUG) { System.out.println("Catches ::= Catches CatchClause"); } //$NON-NLS-1$ - consumeCatches(); - break; + case 521 : if (DEBUG) { System.out.println("Resource ::= this"); } //$NON-NLS-1$ + consumeResourceAsThis(); break; - case 522 : if (DEBUG) { System.out.println("CatchClause ::= catch LPAREN CatchFormalParameter RPAREN"); } //$NON-NLS-1$ - consumeStatementCatch() ; - break; + case 522 : if (DEBUG) { System.out.println("Resource ::= FieldAccess"); } //$NON-NLS-1$ + consumeResourceAsFieldAccess(); break; - case 524 : if (DEBUG) { System.out.println("PushLPAREN ::= LPAREN"); } //$NON-NLS-1$ - consumeLeftParen(); - break; + case 524 : if (DEBUG) { System.out.println("ExitTryBlock ::="); } //$NON-NLS-1$ + consumeExitTryBlock(); break; - case 525 : if (DEBUG) { System.out.println("PushRPAREN ::= RPAREN"); } //$NON-NLS-1$ - consumeRightParen(); - break; + case 526 : if (DEBUG) { System.out.println("Catches ::= Catches CatchClause"); } //$NON-NLS-1$ + consumeCatches(); break; - case 530 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= this"); } //$NON-NLS-1$ - consumePrimaryNoNewArrayThis(); - break; + case 527 : if (DEBUG) { System.out.println("CatchClause ::= catch LPAREN CatchFormalParameter RPAREN"); } //$NON-NLS-1$ + consumeStatementCatch() ; break; - case 531 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PushLPAREN Expression_NotName..."); } //$NON-NLS-1$ - consumePrimaryNoNewArray(); - break; + case 529 : if (DEBUG) { System.out.println("PushLPAREN ::= LPAREN"); } //$NON-NLS-1$ + consumeLeftParen(); break; - case 532 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PushLPAREN Name PushRPAREN"); } //$NON-NLS-1$ - consumePrimaryNoNewArrayWithName(); - break; + case 530 : if (DEBUG) { System.out.println("PushRPAREN ::= RPAREN"); } //$NON-NLS-1$ + consumeRightParen(); break; - case 535 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT this"); } //$NON-NLS-1$ - consumePrimaryNoNewArrayNameThis(); - break; + case 535 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= this"); } //$NON-NLS-1$ + consumePrimaryNoNewArrayThis(); break; - case 536 : if (DEBUG) { System.out.println("QualifiedSuperReceiver ::= Name DOT super"); } //$NON-NLS-1$ - consumeQualifiedSuperReceiver(); - break; + case 536 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PushLPAREN Expression_NotName..."); } //$NON-NLS-1$ + consumePrimaryNoNewArray(); break; - case 537 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT class"); } //$NON-NLS-1$ - consumePrimaryNoNewArrayName(); - break; + case 537 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PushLPAREN Name PushRPAREN"); } //$NON-NLS-1$ + consumePrimaryNoNewArrayWithName(); break; - case 538 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name Dims DOT class"); } //$NON-NLS-1$ - consumePrimaryNoNewArrayArrayType(); - break; + case 540 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT this"); } //$NON-NLS-1$ + consumePrimaryNoNewArrayNameThis(); break; - case 539 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PrimitiveType Dims DOT class"); } //$NON-NLS-1$ - consumePrimaryNoNewArrayPrimitiveArrayType(); - break; + case 541 : if (DEBUG) { System.out.println("QualifiedSuperReceiver ::= Name DOT super"); } //$NON-NLS-1$ + consumeQualifiedSuperReceiver(); break; - case 540 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PrimitiveType DOT class"); } //$NON-NLS-1$ - consumePrimaryNoNewArrayPrimitiveType(); - break; + case 542 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT class"); } //$NON-NLS-1$ + consumePrimaryNoNewArrayName(); break; - case 546 : if (DEBUG) { System.out.println("ReferenceExpressionTypeArgumentsAndTrunk0 ::=..."); } //$NON-NLS-1$ - consumeReferenceExpressionTypeArgumentsAndTrunk(false); - break; + case 543 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name Dims DOT class"); } //$NON-NLS-1$ + consumePrimaryNoNewArrayArrayType(); break; - case 547 : if (DEBUG) { System.out.println("ReferenceExpressionTypeArgumentsAndTrunk0 ::=..."); } //$NON-NLS-1$ - consumeReferenceExpressionTypeArgumentsAndTrunk(true); - break; + case 544 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PrimitiveType Dims DOT class"); } //$NON-NLS-1$ + consumePrimaryNoNewArrayPrimitiveArrayType(); break; - case 548 : if (DEBUG) { System.out.println("ReferenceExpression ::= PrimitiveType Dims COLON_COLON"); } //$NON-NLS-1$ - consumeReferenceExpressionTypeForm(true); - break; + case 545 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PrimitiveType DOT class"); } //$NON-NLS-1$ + consumePrimaryNoNewArrayPrimitiveType(); break; - case 549 : if (DEBUG) { System.out.println("ReferenceExpression ::= Name Dimsopt COLON_COLON..."); } //$NON-NLS-1$ - consumeReferenceExpressionTypeForm(false); - break; + case 551 : if (DEBUG) { System.out.println("ReferenceExpressionTypeArgumentsAndTrunk0 ::=..."); } //$NON-NLS-1$ + consumeReferenceExpressionTypeArgumentsAndTrunk(false); break; - case 550 : if (DEBUG) { System.out.println("ReferenceExpression ::= Name BeginTypeArguments..."); } //$NON-NLS-1$ - consumeReferenceExpressionGenericTypeForm(); - break; + case 552 : if (DEBUG) { System.out.println("ReferenceExpressionTypeArgumentsAndTrunk0 ::=..."); } //$NON-NLS-1$ + consumeReferenceExpressionTypeArgumentsAndTrunk(true); break; - case 551 : if (DEBUG) { System.out.println("ReferenceExpression ::= Primary COLON_COLON..."); } //$NON-NLS-1$ - consumeReferenceExpressionPrimaryForm(); - break; + case 553 : if (DEBUG) { System.out.println("ReferenceExpression ::= PrimitiveType Dims COLON_COLON"); } //$NON-NLS-1$ + consumeReferenceExpressionTypeForm(true); break; - case 552 : if (DEBUG) { System.out.println("ReferenceExpression ::= QualifiedSuperReceiver..."); } //$NON-NLS-1$ - consumeReferenceExpressionPrimaryForm(); - break; + case 554 : if (DEBUG) { System.out.println("ReferenceExpression ::= Name Dimsopt COLON_COLON..."); } //$NON-NLS-1$ + consumeReferenceExpressionTypeForm(false); break; - case 553 : if (DEBUG) { System.out.println("ReferenceExpression ::= super COLON_COLON..."); } //$NON-NLS-1$ - consumeReferenceExpressionSuperForm(); - break; + case 555 : if (DEBUG) { System.out.println("ReferenceExpression ::= Name BeginTypeArguments..."); } //$NON-NLS-1$ + consumeReferenceExpressionGenericTypeForm(); break; - case 554 : if (DEBUG) { System.out.println("NonWildTypeArgumentsopt ::="); } //$NON-NLS-1$ - consumeEmptyTypeArguments(); - break; + case 556 : if (DEBUG) { System.out.println("ReferenceExpression ::= Primary COLON_COLON..."); } //$NON-NLS-1$ + consumeReferenceExpressionPrimaryForm(); break; - case 556 : if (DEBUG) { System.out.println("IdentifierOrNew ::= Identifier"); } //$NON-NLS-1$ - consumeIdentifierOrNew(false); - break; + case 557 : if (DEBUG) { System.out.println("ReferenceExpression ::= QualifiedSuperReceiver..."); } //$NON-NLS-1$ + consumeReferenceExpressionPrimaryForm(); break; - case 557 : if (DEBUG) { System.out.println("IdentifierOrNew ::= new"); } //$NON-NLS-1$ - consumeIdentifierOrNew(true); - break; + case 558 : if (DEBUG) { System.out.println("ReferenceExpression ::= super COLON_COLON..."); } //$NON-NLS-1$ + consumeReferenceExpressionSuperForm(); break; - case 558 : if (DEBUG) { System.out.println("LambdaExpression ::= LambdaParameters ARROW LambdaBody"); } //$NON-NLS-1$ - consumeLambdaExpression(); - break; + case 559 : if (DEBUG) { System.out.println("NonWildTypeArgumentsopt ::="); } //$NON-NLS-1$ + consumeEmptyTypeArguments(); break; - case 559 : if (DEBUG) { System.out.println("NestedLambda ::="); } //$NON-NLS-1$ - consumeNestedLambda(); - break; + case 561 : if (DEBUG) { System.out.println("IdentifierOrNew ::= Identifier"); } //$NON-NLS-1$ + consumeIdentifierOrNew(false); break; - case 560 : if (DEBUG) { System.out.println("LambdaParameters ::= Identifier NestedLambda"); } //$NON-NLS-1$ - consumeTypeElidedLambdaParameter(false); - break; + case 562 : if (DEBUG) { System.out.println("IdentifierOrNew ::= new"); } //$NON-NLS-1$ + consumeIdentifierOrNew(true); break; - case 566 : if (DEBUG) { System.out.println("TypeElidedFormalParameterList ::=..."); } //$NON-NLS-1$ - consumeFormalParameterList(); - break; + case 563 : if (DEBUG) { System.out.println("LambdaExpression ::= LambdaParameters ARROW LambdaBody"); } //$NON-NLS-1$ + consumeLambdaExpression(); break; - case 567 : if (DEBUG) { System.out.println("TypeElidedFormalParameter ::= Modifiersopt Identifier"); } //$NON-NLS-1$ - consumeTypeElidedLambdaParameter(true); - break; + case 564 : if (DEBUG) { System.out.println("NestedLambda ::="); } //$NON-NLS-1$ + consumeNestedLambda(); break; - case 570 : if (DEBUG) { System.out.println("ElidedLeftBraceAndReturn ::="); } //$NON-NLS-1$ - consumeElidedLeftBraceAndReturn(); - break; + case 565 : if (DEBUG) { System.out.println("LambdaParameters ::= UNDERSCORE NestedLambda"); } //$NON-NLS-1$ + consumeTypeElidedLambdaParameter(false); break; - case 571 : if (DEBUG) { System.out.println("AllocationHeader ::= new ClassType LPAREN..."); } //$NON-NLS-1$ - consumeAllocationHeader(); - break; + case 566 : if (DEBUG) { System.out.println("LambdaParameters ::= Identifier NestedLambda"); } //$NON-NLS-1$ + consumeTypeElidedLambdaParameter(false); break; - case 572 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= new..."); } //$NON-NLS-1$ - consumeClassInstanceCreationExpressionWithTypeArguments(); - break; + case 572 : if (DEBUG) { System.out.println("TypeElidedFormalParameterList ::=..."); } //$NON-NLS-1$ + consumeFormalParameterList(); break; - case 573 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= new ClassType..."); } //$NON-NLS-1$ - consumeClassInstanceCreationExpression(); - break; + case 573 : if (DEBUG) { System.out.println("TypeElidedFormalParameter ::= Modifiersopt Identifier"); } //$NON-NLS-1$ + consumeTypeElidedLambdaParameter(true); break; - case 574 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= Primary DOT new..."); } //$NON-NLS-1$ - consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ; - break; + case 574 : if (DEBUG) { System.out.println("TypeElidedFormalParameter ::= UNDERSCORE"); } //$NON-NLS-1$ + consumeBracketedTypeElidedUnderscoreLambdaParameter(); break; - case 575 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= Primary DOT new..."); } //$NON-NLS-1$ - consumeClassInstanceCreationExpressionQualified() ; - break; + case 577 : if (DEBUG) { System.out.println("ElidedLeftBraceAndReturn ::="); } //$NON-NLS-1$ + consumeElidedLeftBraceAndReturn(); break; - case 576 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::=..."); } //$NON-NLS-1$ - consumeClassInstanceCreationExpressionQualified() ; - break; + case 578 : if (DEBUG) { System.out.println("AllocationHeader ::= new ClassType LPAREN..."); } //$NON-NLS-1$ + consumeAllocationHeader(); break; - case 577 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::=..."); } //$NON-NLS-1$ - consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ; - break; + case 579 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= new..."); } //$NON-NLS-1$ + consumeClassInstanceCreationExpressionWithTypeArguments(); break; - case 578 : if (DEBUG) { System.out.println("EnterInstanceCreationArgumentList ::="); } //$NON-NLS-1$ - consumeEnterInstanceCreationArgumentList(); - break; + case 580 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= new ClassType..."); } //$NON-NLS-1$ + consumeClassInstanceCreationExpression(); break; - case 579 : if (DEBUG) { System.out.println("ClassInstanceCreationExpressionName ::= Name DOT new"); } //$NON-NLS-1$ - consumeClassInstanceCreationExpressionName() ; - break; + case 581 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= Primary DOT new..."); } //$NON-NLS-1$ + consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ; break; - case 580 : if (DEBUG) { System.out.println("UnqualifiedClassBodyopt ::="); } //$NON-NLS-1$ - consumeClassBodyopt(); - break; + case 582 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= Primary DOT new..."); } //$NON-NLS-1$ + consumeClassInstanceCreationExpressionQualified() ; break; - case 582 : if (DEBUG) { System.out.println("UnqualifiedEnterAnonymousClassBody ::="); } //$NON-NLS-1$ - consumeEnterAnonymousClassBody(false); - break; + case 583 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::=..."); } //$NON-NLS-1$ + consumeClassInstanceCreationExpressionQualified() ; break; - case 583 : if (DEBUG) { System.out.println("QualifiedClassBodyopt ::="); } //$NON-NLS-1$ - consumeClassBodyopt(); - break; + case 584 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::=..."); } //$NON-NLS-1$ + consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ; break; - case 585 : if (DEBUG) { System.out.println("QualifiedEnterAnonymousClassBody ::="); } //$NON-NLS-1$ - consumeEnterAnonymousClassBody(true); - break; + case 585 : if (DEBUG) { System.out.println("EnterInstanceCreationArgumentList ::="); } //$NON-NLS-1$ + consumeEnterInstanceCreationArgumentList(); break; - case 587 : if (DEBUG) { System.out.println("ArgumentList ::= ArgumentList COMMA Expression"); } //$NON-NLS-1$ - consumeArgumentList(); - break; + case 586 : if (DEBUG) { System.out.println("ClassInstanceCreationExpressionName ::= Name DOT new"); } //$NON-NLS-1$ + consumeClassInstanceCreationExpressionName() ; break; - case 588 : if (DEBUG) { System.out.println("ArrayCreationHeader ::= new PrimitiveType..."); } //$NON-NLS-1$ - consumeArrayCreationHeader(); - break; + case 587 : if (DEBUG) { System.out.println("UnqualifiedClassBodyopt ::="); } //$NON-NLS-1$ + consumeClassBodyopt(); break; - case 589 : if (DEBUG) { System.out.println("ArrayCreationHeader ::= new ClassOrInterfaceType..."); } //$NON-NLS-1$ - consumeArrayCreationHeader(); - break; + case 589 : if (DEBUG) { System.out.println("UnqualifiedEnterAnonymousClassBody ::="); } //$NON-NLS-1$ + consumeEnterAnonymousClassBody(false); break; - case 590 : if (DEBUG) { System.out.println("ArrayCreationWithoutArrayInitializer ::= new..."); } //$NON-NLS-1$ - consumeArrayCreationExpressionWithoutInitializer(); - break; + case 590 : if (DEBUG) { System.out.println("QualifiedClassBodyopt ::="); } //$NON-NLS-1$ + consumeClassBodyopt(); break; - case 591 : if (DEBUG) { System.out.println("ArrayCreationWithArrayInitializer ::= new PrimitiveType"); } //$NON-NLS-1$ - consumeArrayCreationExpressionWithInitializer(); - break; + case 592 : if (DEBUG) { System.out.println("QualifiedEnterAnonymousClassBody ::="); } //$NON-NLS-1$ + consumeEnterAnonymousClassBody(true); break; - case 592 : if (DEBUG) { System.out.println("ArrayCreationWithoutArrayInitializer ::= new..."); } //$NON-NLS-1$ - consumeArrayCreationExpressionWithoutInitializer(); - break; + case 594 : if (DEBUG) { System.out.println("ArgumentList ::= ArgumentList COMMA Expression"); } //$NON-NLS-1$ + consumeArgumentList(); break; - case 593 : if (DEBUG) { System.out.println("ArrayCreationWithArrayInitializer ::= new..."); } //$NON-NLS-1$ - consumeArrayCreationExpressionWithInitializer(); - break; + case 595 : if (DEBUG) { System.out.println("ArrayCreationHeader ::= new PrimitiveType..."); } //$NON-NLS-1$ + consumeArrayCreationHeader(); break; - case 595 : if (DEBUG) { System.out.println("DimWithOrWithOutExprs ::= DimWithOrWithOutExprs..."); } //$NON-NLS-1$ - consumeDimWithOrWithOutExprs(); - break; + case 596 : if (DEBUG) { System.out.println("ArrayCreationHeader ::= new ClassOrInterfaceType..."); } //$NON-NLS-1$ + consumeArrayCreationHeader(); break; - case 597 : if (DEBUG) { System.out.println("DimWithOrWithOutExpr ::= TypeAnnotationsopt LBRACKET..."); } //$NON-NLS-1$ - consumeDimWithOrWithOutExpr(); - break; + case 597 : if (DEBUG) { System.out.println("ArrayCreationWithoutArrayInitializer ::= new..."); } //$NON-NLS-1$ + consumeArrayCreationExpressionWithoutInitializer(); break; - case 598 : if (DEBUG) { System.out.println("Dims ::= DimsLoop"); } //$NON-NLS-1$ - consumeDims(); - break; + case 598 : if (DEBUG) { System.out.println("ArrayCreationWithArrayInitializer ::= new PrimitiveType"); } //$NON-NLS-1$ + consumeArrayCreationExpressionWithInitializer(); break; - case 601 : if (DEBUG) { System.out.println("OneDimLoop ::= LBRACKET RBRACKET"); } //$NON-NLS-1$ - consumeOneDimLoop(false); - break; + case 599 : if (DEBUG) { System.out.println("ArrayCreationWithoutArrayInitializer ::= new..."); } //$NON-NLS-1$ + consumeArrayCreationExpressionWithoutInitializer(); break; - case 602 : if (DEBUG) { System.out.println("OneDimLoop ::= TypeAnnotations LBRACKET RBRACKET"); } //$NON-NLS-1$ - consumeOneDimLoop(true); - break; + case 600 : if (DEBUG) { System.out.println("ArrayCreationWithArrayInitializer ::= new..."); } //$NON-NLS-1$ + consumeArrayCreationExpressionWithInitializer(); break; - case 603 : if (DEBUG) { System.out.println("FieldAccess ::= Primary DOT Identifier"); } //$NON-NLS-1$ - consumeFieldAccess(false); - break; + case 602 : if (DEBUG) { System.out.println("DimWithOrWithOutExprs ::= DimWithOrWithOutExprs..."); } //$NON-NLS-1$ + consumeDimWithOrWithOutExprs(); break; + + case 604 : if (DEBUG) { System.out.println("DimWithOrWithOutExpr ::= TypeAnnotationsopt LBRACKET..."); } //$NON-NLS-1$ + consumeDimWithOrWithOutExpr(); break; + + case 605 : if (DEBUG) { System.out.println("Dims ::= DimsLoop"); } //$NON-NLS-1$ + consumeDims(); break; + + case 608 : if (DEBUG) { System.out.println("OneDimLoop ::= LBRACKET RBRACKET"); } //$NON-NLS-1$ + consumeOneDimLoop(false); break; + + case 609 : if (DEBUG) { System.out.println("OneDimLoop ::= TypeAnnotations LBRACKET RBRACKET"); } //$NON-NLS-1$ + consumeOneDimLoop(true); break; + + case 610 : if (DEBUG) { System.out.println("FieldAccess ::= Primary DOT Identifier"); } //$NON-NLS-1$ + consumeFieldAccess(false); break; - case 604 : if (DEBUG) { System.out.println("FieldAccess ::= super DOT Identifier"); } //$NON-NLS-1$ - consumeFieldAccess(true); - break; + case 611 : if (DEBUG) { System.out.println("FieldAccess ::= super DOT Identifier"); } //$NON-NLS-1$ + consumeFieldAccess(true); break; - case 605 : if (DEBUG) { System.out.println("FieldAccess ::= QualifiedSuperReceiver DOT Identifier"); } //$NON-NLS-1$ - consumeFieldAccess(false); - break; + case 612 : if (DEBUG) { System.out.println("FieldAccess ::= QualifiedSuperReceiver DOT Identifier"); } //$NON-NLS-1$ + consumeFieldAccess(false); break; - case 606 : if (DEBUG) { System.out.println("MethodInvocation ::= Name LPAREN ArgumentListopt RPAREN"); } //$NON-NLS-1$ - consumeMethodInvocationName(); - break; + case 613 : if (DEBUG) { System.out.println("MethodInvocation ::= Name LPAREN ArgumentListopt RPAREN"); } //$NON-NLS-1$ + consumeMethodInvocationName(); break; - case 607 : if (DEBUG) { System.out.println("MethodInvocation ::= Name DOT OnlyTypeArguments..."); } //$NON-NLS-1$ - consumeMethodInvocationNameWithTypeArguments(); - break; + case 614 : if (DEBUG) { System.out.println("MethodInvocation ::= Name DOT OnlyTypeArguments..."); } //$NON-NLS-1$ + consumeMethodInvocationNameWithTypeArguments(); break; - case 608 : if (DEBUG) { System.out.println("MethodInvocation ::= Primary DOT OnlyTypeArguments..."); } //$NON-NLS-1$ - consumeMethodInvocationPrimaryWithTypeArguments(); - break; + case 615 : if (DEBUG) { System.out.println("MethodInvocation ::= Primary DOT OnlyTypeArguments..."); } //$NON-NLS-1$ + consumeMethodInvocationPrimaryWithTypeArguments(); break; - case 609 : if (DEBUG) { System.out.println("MethodInvocation ::= Primary DOT Identifier LPAREN..."); } //$NON-NLS-1$ - consumeMethodInvocationPrimary(); - break; + case 616 : if (DEBUG) { System.out.println("MethodInvocation ::= Primary DOT Identifier LPAREN..."); } //$NON-NLS-1$ + consumeMethodInvocationPrimary(); break; - case 610 : if (DEBUG) { System.out.println("MethodInvocation ::= QualifiedSuperReceiver DOT..."); } //$NON-NLS-1$ - consumeMethodInvocationPrimary(); - break; + case 617 : if (DEBUG) { System.out.println("MethodInvocation ::= QualifiedSuperReceiver DOT..."); } //$NON-NLS-1$ + consumeMethodInvocationPrimary(); break; - case 611 : if (DEBUG) { System.out.println("MethodInvocation ::= QualifiedSuperReceiver DOT..."); } //$NON-NLS-1$ - consumeMethodInvocationPrimaryWithTypeArguments(); - break; + case 618 : if (DEBUG) { System.out.println("MethodInvocation ::= QualifiedSuperReceiver DOT..."); } //$NON-NLS-1$ + consumeMethodInvocationPrimaryWithTypeArguments(); break; - case 612 : if (DEBUG) { System.out.println("MethodInvocation ::= super DOT OnlyTypeArguments..."); } //$NON-NLS-1$ - consumeMethodInvocationSuperWithTypeArguments(); - break; + case 619 : if (DEBUG) { System.out.println("MethodInvocation ::= super DOT OnlyTypeArguments..."); } //$NON-NLS-1$ + consumeMethodInvocationSuperWithTypeArguments(); break; - case 613 : if (DEBUG) { System.out.println("MethodInvocation ::= super DOT Identifier LPAREN..."); } //$NON-NLS-1$ - consumeMethodInvocationSuper(); - break; + case 620 : if (DEBUG) { System.out.println("MethodInvocation ::= super DOT Identifier LPAREN..."); } //$NON-NLS-1$ + consumeMethodInvocationSuper(); break; - case 614 : if (DEBUG) { System.out.println("ArrayAccess ::= Name LBRACKET Expression RBRACKET"); } //$NON-NLS-1$ - consumeArrayAccess(true); - break; + case 621 : if (DEBUG) { System.out.println("ArrayAccess ::= Name LBRACKET Expression RBRACKET"); } //$NON-NLS-1$ + consumeArrayAccess(true); break; - case 615 : if (DEBUG) { System.out.println("ArrayAccess ::= PrimaryNoNewArray LBRACKET Expression..."); } //$NON-NLS-1$ - consumeArrayAccess(false); - break; + case 622 : if (DEBUG) { System.out.println("ArrayAccess ::= PrimaryNoNewArray LBRACKET Expression..."); } //$NON-NLS-1$ + consumeArrayAccess(false); break; - case 616 : if (DEBUG) { System.out.println("ArrayAccess ::= ArrayCreationWithArrayInitializer..."); } //$NON-NLS-1$ - consumeArrayAccess(false); - break; + case 623 : if (DEBUG) { System.out.println("ArrayAccess ::= ArrayCreationWithArrayInitializer..."); } //$NON-NLS-1$ + consumeArrayAccess(false); break; - case 618 : if (DEBUG) { System.out.println("PostfixExpression ::= Name"); } //$NON-NLS-1$ - consumePostfixExpression(); - break; + case 625 : if (DEBUG) { System.out.println("PostfixExpression ::= Name"); } //$NON-NLS-1$ + consumePostfixExpression(); break; - case 621 : if (DEBUG) { System.out.println("PostIncrementExpression ::= PostfixExpression PLUS_PLUS"); } //$NON-NLS-1$ - consumeUnaryExpression(OperatorIds.PLUS,true); - break; + case 628 : if (DEBUG) { System.out.println("PostIncrementExpression ::= PostfixExpression PLUS_PLUS"); } //$NON-NLS-1$ + consumeUnaryExpression(OperatorIds.PLUS,true); break; - case 622 : if (DEBUG) { System.out.println("PostDecrementExpression ::= PostfixExpression..."); } //$NON-NLS-1$ - consumeUnaryExpression(OperatorIds.MINUS,true); - break; + case 629 : if (DEBUG) { System.out.println("PostDecrementExpression ::= PostfixExpression..."); } //$NON-NLS-1$ + consumeUnaryExpression(OperatorIds.MINUS,true); break; - case 623 : if (DEBUG) { System.out.println("PushPosition ::="); } //$NON-NLS-1$ - consumePushPosition(); - break; + case 630 : if (DEBUG) { System.out.println("PushPosition ::="); } //$NON-NLS-1$ + consumePushPosition(); break; - case 626 : if (DEBUG) { System.out.println("UnaryExpression ::= PLUS PushPosition UnaryExpression"); } //$NON-NLS-1$ - consumeUnaryExpression(OperatorIds.PLUS); - break; + case 633 : if (DEBUG) { System.out.println("UnaryExpression ::= PLUS PushPosition UnaryExpression"); } //$NON-NLS-1$ + consumeUnaryExpression(OperatorIds.PLUS); break; - case 627 : if (DEBUG) { System.out.println("UnaryExpression ::= MINUS PushPosition UnaryExpression"); } //$NON-NLS-1$ - consumeUnaryExpression(OperatorIds.MINUS); - break; + case 634 : if (DEBUG) { System.out.println("UnaryExpression ::= MINUS PushPosition UnaryExpression"); } //$NON-NLS-1$ + consumeUnaryExpression(OperatorIds.MINUS); break; - case 629 : if (DEBUG) { System.out.println("PreIncrementExpression ::= PLUS_PLUS PushPosition..."); } //$NON-NLS-1$ - consumeUnaryExpression(OperatorIds.PLUS,false); - break; + case 636 : if (DEBUG) { System.out.println("PreIncrementExpression ::= PLUS_PLUS PushPosition..."); } //$NON-NLS-1$ + consumeUnaryExpression(OperatorIds.PLUS,false); break; - case 630 : if (DEBUG) { System.out.println("PreDecrementExpression ::= MINUS_MINUS PushPosition..."); } //$NON-NLS-1$ - consumeUnaryExpression(OperatorIds.MINUS,false); - break; + case 637 : if (DEBUG) { System.out.println("PreDecrementExpression ::= MINUS_MINUS PushPosition..."); } //$NON-NLS-1$ + consumeUnaryExpression(OperatorIds.MINUS,false); break; - case 632 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus ::= TWIDDLE PushPosition..."); } //$NON-NLS-1$ - consumeUnaryExpression(OperatorIds.TWIDDLE); - break; + case 639 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus ::= TWIDDLE PushPosition..."); } //$NON-NLS-1$ + consumeUnaryExpression(OperatorIds.TWIDDLE); break; - case 633 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus ::= NOT PushPosition..."); } //$NON-NLS-1$ - consumeUnaryExpression(OperatorIds.NOT); - break; + case 640 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus ::= NOT PushPosition..."); } //$NON-NLS-1$ + consumeUnaryExpression(OperatorIds.NOT); break; - case 635 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN PrimitiveType Dimsopt..."); } //$NON-NLS-1$ - consumeCastExpressionWithPrimitiveType(); - break; + case 642 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN PrimitiveType Dimsopt..."); } //$NON-NLS-1$ + consumeCastExpressionWithPrimitiveType(); break; - case 636 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name..."); } //$NON-NLS-1$ - consumeCastExpressionWithGenericsArray(); - break; + case 643 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name..."); } //$NON-NLS-1$ + consumeCastExpressionWithGenericsArray(); break; - case 637 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name..."); } //$NON-NLS-1$ - consumeCastExpressionWithQualifiedGenericsArray(); - break; + case 644 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name..."); } //$NON-NLS-1$ + consumeCastExpressionWithQualifiedGenericsArray(); break; - case 638 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name PushRPAREN..."); } //$NON-NLS-1$ - consumeCastExpressionLL1(); - break; + case 645 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name PushRPAREN..."); } //$NON-NLS-1$ + consumeCastExpressionLL1(); break; - case 639 : if (DEBUG) { System.out.println("CastExpression ::= BeginIntersectionCast PushLPAREN..."); } //$NON-NLS-1$ - consumeCastExpressionLL1WithBounds(); - break; + case 646 : if (DEBUG) { System.out.println("CastExpression ::= BeginIntersectionCast PushLPAREN..."); } //$NON-NLS-1$ + consumeCastExpressionLL1WithBounds(); break; - case 640 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name Dims..."); } //$NON-NLS-1$ - consumeCastExpressionWithNameArray(); - break; + case 647 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name Dims..."); } //$NON-NLS-1$ + consumeCastExpressionWithNameArray(); break; - case 641 : if (DEBUG) { System.out.println("AdditionalBoundsListOpt ::="); } //$NON-NLS-1$ - consumeZeroAdditionalBounds(); - break; + case 648 : if (DEBUG) { System.out.println("AdditionalBoundsListOpt ::="); } //$NON-NLS-1$ + consumeZeroAdditionalBounds(); break; - case 645 : if (DEBUG) { System.out.println("OnlyTypeArgumentsForCastExpression ::= OnlyTypeArguments"); } //$NON-NLS-1$ - consumeOnlyTypeArgumentsForCastExpression(); - break; + case 652 : if (DEBUG) { System.out.println("OnlyTypeArgumentsForCastExpression ::= OnlyTypeArguments"); } //$NON-NLS-1$ + consumeOnlyTypeArgumentsForCastExpression(); break; - case 646 : if (DEBUG) { System.out.println("InsideCastExpression ::="); } //$NON-NLS-1$ - consumeInsideCastExpression(); - break; + case 653 : if (DEBUG) { System.out.println("InsideCastExpression ::="); } //$NON-NLS-1$ + consumeInsideCastExpression(); break; - case 647 : if (DEBUG) { System.out.println("InsideCastExpressionLL1 ::="); } //$NON-NLS-1$ - consumeInsideCastExpressionLL1(); - break; + case 654 : if (DEBUG) { System.out.println("InsideCastExpressionLL1 ::="); } //$NON-NLS-1$ + consumeInsideCastExpressionLL1(); break; - case 648 : if (DEBUG) { System.out.println("InsideCastExpressionLL1WithBounds ::="); } //$NON-NLS-1$ - consumeInsideCastExpressionLL1WithBounds (); - break; + case 655 : if (DEBUG) { System.out.println("InsideCastExpressionLL1WithBounds ::="); } //$NON-NLS-1$ + consumeInsideCastExpressionLL1WithBounds (); break; - case 649 : if (DEBUG) { System.out.println("InsideCastExpressionWithQualifiedGenerics ::="); } //$NON-NLS-1$ - consumeInsideCastExpressionWithQualifiedGenerics(); - break; + case 656 : if (DEBUG) { System.out.println("InsideCastExpressionWithQualifiedGenerics ::="); } //$NON-NLS-1$ + consumeInsideCastExpressionWithQualifiedGenerics(); break; - case 651 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.MULTIPLY); - break; + case 658 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.MULTIPLY); break; - case 652 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.DIVIDE); - break; + case 659 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.DIVIDE); break; - case 653 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.REMAINDER); - break; + case 660 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.REMAINDER); break; - case 655 : if (DEBUG) { System.out.println("AdditiveExpression ::= AdditiveExpression PLUS..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.PLUS); - break; + case 662 : if (DEBUG) { System.out.println("AdditiveExpression ::= AdditiveExpression PLUS..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.PLUS); break; - case 656 : if (DEBUG) { System.out.println("AdditiveExpression ::= AdditiveExpression MINUS..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.MINUS); - break; + case 663 : if (DEBUG) { System.out.println("AdditiveExpression ::= AdditiveExpression MINUS..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.MINUS); break; - case 658 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression LEFT_SHIFT..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.LEFT_SHIFT); - break; + case 665 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression LEFT_SHIFT..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.LEFT_SHIFT); break; - case 659 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression RIGHT_SHIFT..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.RIGHT_SHIFT); - break; + case 666 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression RIGHT_SHIFT..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.RIGHT_SHIFT); break; - case 660 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression UNSIGNED_RIGHT_SHIFT"); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT); - break; + case 667 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression UNSIGNED_RIGHT_SHIFT"); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT); break; - case 662 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression LESS..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.LESS); - break; + case 669 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression LESS..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.LESS); break; - case 663 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression GREATER..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.GREATER); - break; + case 670 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression GREATER..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.GREATER); break; - case 664 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression LESS_EQUAL"); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.LESS_EQUAL); - break; + case 671 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression LESS_EQUAL"); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.LESS_EQUAL); break; - case 665 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.GREATER_EQUAL); - break; + case 672 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.GREATER_EQUAL); break; - case 667 : if (DEBUG) { System.out.println("EqualityExpression ::= EqualityExpression EQUAL_EQUAL..."); } //$NON-NLS-1$ - consumeEqualityExpression(OperatorIds.EQUAL_EQUAL); - break; + case 674 : if (DEBUG) { System.out.println("EqualityExpression ::= EqualityExpression EQUAL_EQUAL..."); } //$NON-NLS-1$ + consumeEqualityExpression(OperatorIds.EQUAL_EQUAL); break; - case 668 : if (DEBUG) { System.out.println("EqualityExpression ::= EqualityExpression NOT_EQUAL..."); } //$NON-NLS-1$ - consumeEqualityExpression(OperatorIds.NOT_EQUAL); - break; + case 675 : if (DEBUG) { System.out.println("EqualityExpression ::= EqualityExpression NOT_EQUAL..."); } //$NON-NLS-1$ + consumeEqualityExpression(OperatorIds.NOT_EQUAL); break; - case 670 : if (DEBUG) { System.out.println("AndExpression ::= AndExpression AND EqualityExpression"); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.AND); - break; + case 677 : if (DEBUG) { System.out.println("AndExpression ::= AndExpression AND EqualityExpression"); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.AND); break; - case 672 : if (DEBUG) { System.out.println("ExclusiveOrExpression ::= ExclusiveOrExpression XOR..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.XOR); - break; + case 679 : if (DEBUG) { System.out.println("ExclusiveOrExpression ::= ExclusiveOrExpression XOR..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.XOR); break; - case 674 : if (DEBUG) { System.out.println("InclusiveOrExpression ::= InclusiveOrExpression OR..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.OR); - break; + case 681 : if (DEBUG) { System.out.println("InclusiveOrExpression ::= InclusiveOrExpression OR..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.OR); break; - case 676 : if (DEBUG) { System.out.println("ConditionalAndExpression ::= ConditionalAndExpression..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.AND_AND); - break; + case 683 : if (DEBUG) { System.out.println("ConditionalAndExpression ::= ConditionalAndExpression..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.AND_AND); break; - case 678 : if (DEBUG) { System.out.println("ConditionalOrExpression ::= ConditionalOrExpression..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.OR_OR); - break; + case 685 : if (DEBUG) { System.out.println("ConditionalOrExpression ::= ConditionalOrExpression..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.OR_OR); break; - case 680 : if (DEBUG) { System.out.println("ConditionalExpression ::= ConditionalOrExpression..."); } //$NON-NLS-1$ - consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ; - break; + case 687 : if (DEBUG) { System.out.println("ConditionalExpression ::= ConditionalOrExpression..."); } //$NON-NLS-1$ + consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ; break; - case 683 : if (DEBUG) { System.out.println("Assignment ::= PostfixExpression AssignmentOperator..."); } //$NON-NLS-1$ - consumeAssignment(); - break; + case 690 : if (DEBUG) { System.out.println("Assignment ::= PostfixExpression AssignmentOperator..."); } //$NON-NLS-1$ + consumeAssignment(); break; - case 685 : if (DEBUG) { System.out.println("Assignment ::= InvalidArrayInitializerAssignement"); } //$NON-NLS-1$ - ignoreExpressionAssignment(); - break; + case 692 : if (DEBUG) { System.out.println("Assignment ::= InvalidArrayInitializerAssignement"); } //$NON-NLS-1$ + ignoreExpressionAssignment(); break; - case 686 : if (DEBUG) { System.out.println("AssignmentOperator ::= EQUAL"); } //$NON-NLS-1$ - consumeAssignmentOperator(EQUAL); - break; + case 693 : if (DEBUG) { System.out.println("AssignmentOperator ::= EQUAL"); } //$NON-NLS-1$ + consumeAssignmentOperator(EQUAL); break; - case 687 : if (DEBUG) { System.out.println("AssignmentOperator ::= MULTIPLY_EQUAL"); } //$NON-NLS-1$ - consumeAssignmentOperator(MULTIPLY); - break; + case 694 : if (DEBUG) { System.out.println("AssignmentOperator ::= MULTIPLY_EQUAL"); } //$NON-NLS-1$ + consumeAssignmentOperator(MULTIPLY); break; - case 688 : if (DEBUG) { System.out.println("AssignmentOperator ::= DIVIDE_EQUAL"); } //$NON-NLS-1$ - consumeAssignmentOperator(DIVIDE); - break; + case 695 : if (DEBUG) { System.out.println("AssignmentOperator ::= DIVIDE_EQUAL"); } //$NON-NLS-1$ + consumeAssignmentOperator(DIVIDE); break; - case 689 : if (DEBUG) { System.out.println("AssignmentOperator ::= REMAINDER_EQUAL"); } //$NON-NLS-1$ - consumeAssignmentOperator(REMAINDER); - break; + case 696 : if (DEBUG) { System.out.println("AssignmentOperator ::= REMAINDER_EQUAL"); } //$NON-NLS-1$ + consumeAssignmentOperator(REMAINDER); break; - case 690 : if (DEBUG) { System.out.println("AssignmentOperator ::= PLUS_EQUAL"); } //$NON-NLS-1$ - consumeAssignmentOperator(PLUS); - break; + case 697 : if (DEBUG) { System.out.println("AssignmentOperator ::= PLUS_EQUAL"); } //$NON-NLS-1$ + consumeAssignmentOperator(PLUS); break; - case 691 : if (DEBUG) { System.out.println("AssignmentOperator ::= MINUS_EQUAL"); } //$NON-NLS-1$ - consumeAssignmentOperator(MINUS); - break; + case 698 : if (DEBUG) { System.out.println("AssignmentOperator ::= MINUS_EQUAL"); } //$NON-NLS-1$ + consumeAssignmentOperator(MINUS); break; - case 692 : if (DEBUG) { System.out.println("AssignmentOperator ::= LEFT_SHIFT_EQUAL"); } //$NON-NLS-1$ - consumeAssignmentOperator(LEFT_SHIFT); - break; + case 699 : if (DEBUG) { System.out.println("AssignmentOperator ::= LEFT_SHIFT_EQUAL"); } //$NON-NLS-1$ + consumeAssignmentOperator(LEFT_SHIFT); break; - case 693 : if (DEBUG) { System.out.println("AssignmentOperator ::= RIGHT_SHIFT_EQUAL"); } //$NON-NLS-1$ - consumeAssignmentOperator(RIGHT_SHIFT); - break; + case 700 : if (DEBUG) { System.out.println("AssignmentOperator ::= RIGHT_SHIFT_EQUAL"); } //$NON-NLS-1$ + consumeAssignmentOperator(RIGHT_SHIFT); break; - case 694 : if (DEBUG) { System.out.println("AssignmentOperator ::= UNSIGNED_RIGHT_SHIFT_EQUAL"); } //$NON-NLS-1$ - consumeAssignmentOperator(UNSIGNED_RIGHT_SHIFT); - break; + case 701 : if (DEBUG) { System.out.println("AssignmentOperator ::= UNSIGNED_RIGHT_SHIFT_EQUAL"); } //$NON-NLS-1$ + consumeAssignmentOperator(UNSIGNED_RIGHT_SHIFT); break; - case 695 : if (DEBUG) { System.out.println("AssignmentOperator ::= AND_EQUAL"); } //$NON-NLS-1$ - consumeAssignmentOperator(AND); - break; + case 702 : if (DEBUG) { System.out.println("AssignmentOperator ::= AND_EQUAL"); } //$NON-NLS-1$ + consumeAssignmentOperator(AND); break; - case 696 : if (DEBUG) { System.out.println("AssignmentOperator ::= XOR_EQUAL"); } //$NON-NLS-1$ - consumeAssignmentOperator(XOR); - break; + case 703 : if (DEBUG) { System.out.println("AssignmentOperator ::= XOR_EQUAL"); } //$NON-NLS-1$ + consumeAssignmentOperator(XOR); break; - case 697 : if (DEBUG) { System.out.println("AssignmentOperator ::= OR_EQUAL"); } //$NON-NLS-1$ - consumeAssignmentOperator(OR); - break; + case 704 : if (DEBUG) { System.out.println("AssignmentOperator ::= OR_EQUAL"); } //$NON-NLS-1$ + consumeAssignmentOperator(OR); break; - case 698 : if (DEBUG) { System.out.println("Expression ::= AssignmentExpression"); } //$NON-NLS-1$ - consumeExpression(); - break; + case 705 : if (DEBUG) { System.out.println("Expression ::= AssignmentExpression"); } //$NON-NLS-1$ + consumeExpression(); break; - case 701 : if (DEBUG) { System.out.println("Expressionopt ::="); } //$NON-NLS-1$ - consumeEmptyExpression(); - break; + case 708 : if (DEBUG) { System.out.println("Expressionopt ::="); } //$NON-NLS-1$ + consumeEmptyExpression(); break; - case 706 : if (DEBUG) { System.out.println("ClassBodyDeclarationsopt ::="); } //$NON-NLS-1$ - consumeEmptyClassBodyDeclarationsopt(); - break; + case 713 : if (DEBUG) { System.out.println("ClassBodyDeclarationsopt ::="); } //$NON-NLS-1$ + consumeEmptyClassBodyDeclarationsopt(); break; - case 707 : if (DEBUG) { System.out.println("ClassBodyDeclarationsopt ::= NestedType..."); } //$NON-NLS-1$ - consumeClassBodyDeclarationsopt(); - break; + case 714 : if (DEBUG) { System.out.println("ClassBodyDeclarationsopt ::= NestedType..."); } //$NON-NLS-1$ + consumeClassBodyDeclarationsopt(); break; - case 708 : if (DEBUG) { System.out.println("Modifiersopt ::="); } //$NON-NLS-1$ - consumeDefaultModifiers(); - break; + case 715 : if (DEBUG) { System.out.println("Modifiersopt ::="); } //$NON-NLS-1$ + consumeDefaultModifiers(); break; - case 709 : if (DEBUG) { System.out.println("Modifiersopt ::= Modifiers"); } //$NON-NLS-1$ - consumeModifiers(); - break; + case 716 : if (DEBUG) { System.out.println("Modifiersopt ::= Modifiers"); } //$NON-NLS-1$ + consumeModifiers(); break; - case 710 : if (DEBUG) { System.out.println("BlockStatementsopt ::="); } //$NON-NLS-1$ - consumeEmptyBlockStatementsopt(); - break; + case 717 : if (DEBUG) { System.out.println("BlockStatementsopt ::="); } //$NON-NLS-1$ + consumeEmptyBlockStatementsopt(); break; - case 712 : if (DEBUG) { System.out.println("Dimsopt ::="); } //$NON-NLS-1$ - consumeEmptyDimsopt(); - break; + case 719 : if (DEBUG) { System.out.println("Dimsopt ::="); } //$NON-NLS-1$ + consumeEmptyDimsopt(); break; - case 714 : if (DEBUG) { System.out.println("ArgumentListopt ::="); } //$NON-NLS-1$ - consumeEmptyArgumentListopt(); - break; + case 721 : if (DEBUG) { System.out.println("ArgumentListopt ::="); } //$NON-NLS-1$ + consumeEmptyArgumentListopt(); break; - case 718 : if (DEBUG) { System.out.println("FormalParameterListopt ::="); } //$NON-NLS-1$ - consumeFormalParameterListopt(); - break; + case 725 : if (DEBUG) { System.out.println("FormalParameterListopt ::="); } //$NON-NLS-1$ + consumeFormalParameterListopt(); break; - case 725 : if (DEBUG) { System.out.println("ClassHeaderPermittedSubclasses ::=..."); } //$NON-NLS-1$ - consumeClassHeaderPermittedSubclasses(); - break; + case 732 : if (DEBUG) { System.out.println("ClassHeaderPermittedSubclasses ::=..."); } //$NON-NLS-1$ + consumeClassHeaderPermittedSubclasses(); break; - case 728 : if (DEBUG) { System.out.println("InterfaceHeaderPermittedSubClassesAndSubInterfaces ::="); } //$NON-NLS-1$ - consumeInterfaceHeaderPermittedSubClassesAndSubInterfaces(); - break; + case 735 : if (DEBUG) { System.out.println("InterfaceHeaderPermittedSubClassesAndSubInterfaces ::="); } //$NON-NLS-1$ + consumeInterfaceHeaderPermittedSubClassesAndSubInterfaces(); break; - case 729 : if (DEBUG) { System.out.println("InterfaceMemberDeclarationsopt ::="); } //$NON-NLS-1$ - consumeEmptyInterfaceMemberDeclarationsopt(); - break; + case 736 : if (DEBUG) { System.out.println("InterfaceMemberDeclarationsopt ::="); } //$NON-NLS-1$ + consumeEmptyInterfaceMemberDeclarationsopt(); break; - case 730 : if (DEBUG) { System.out.println("InterfaceMemberDeclarationsopt ::= NestedType..."); } //$NON-NLS-1$ - consumeInterfaceMemberDeclarationsopt(); - break; + case 737 : if (DEBUG) { System.out.println("InterfaceMemberDeclarationsopt ::= NestedType..."); } //$NON-NLS-1$ + consumeInterfaceMemberDeclarationsopt(); break; - case 731 : if (DEBUG) { System.out.println("NestedType ::="); } //$NON-NLS-1$ - consumeNestedType(); - break; + case 738 : if (DEBUG) { System.out.println("NestedType ::="); } //$NON-NLS-1$ + consumeNestedType(); break; - case 732 : if (DEBUG) { System.out.println("ForInitopt ::="); } //$NON-NLS-1$ - consumeEmptyForInitopt(); - break; + case 739 : if (DEBUG) { System.out.println("ForInitopt ::="); } //$NON-NLS-1$ + consumeEmptyForInitopt(); break; - case 734 : if (DEBUG) { System.out.println("ForUpdateopt ::="); } //$NON-NLS-1$ - consumeEmptyForUpdateopt(); - break; + case 741 : if (DEBUG) { System.out.println("ForUpdateopt ::="); } //$NON-NLS-1$ + consumeEmptyForUpdateopt(); break; - case 738 : if (DEBUG) { System.out.println("Catchesopt ::="); } //$NON-NLS-1$ - consumeEmptyCatchesopt(); - break; + case 745 : if (DEBUG) { System.out.println("Catchesopt ::="); } //$NON-NLS-1$ + consumeEmptyCatchesopt(); break; - case 740 : if (DEBUG) { System.out.println("EnumDeclaration ::= EnumHeader EnumBody"); } //$NON-NLS-1$ - consumeEnumDeclaration(); - break; + case 747 : if (DEBUG) { System.out.println("EnumDeclaration ::= EnumHeader EnumBody"); } //$NON-NLS-1$ + consumeEnumDeclaration(); break; - case 741 : if (DEBUG) { System.out.println("EnumHeader ::= EnumHeaderName ClassHeaderImplementsopt"); } //$NON-NLS-1$ - consumeEnumHeader(); - break; + case 748 : if (DEBUG) { System.out.println("EnumHeader ::= EnumHeaderName ClassHeaderImplementsopt"); } //$NON-NLS-1$ + consumeEnumHeader(); break; - case 742 : if (DEBUG) { System.out.println("EnumHeaderName ::= Modifiersopt enum Identifier"); } //$NON-NLS-1$ - consumeEnumHeaderName(); - break; + case 749 : if (DEBUG) { System.out.println("EnumHeaderName ::= Modifiersopt enum Identifier"); } //$NON-NLS-1$ + consumeEnumHeaderName(); break; - case 743 : if (DEBUG) { System.out.println("EnumHeaderName ::= Modifiersopt enum Identifier..."); } //$NON-NLS-1$ - consumeEnumHeaderNameWithTypeParameters(); - break; + case 750 : if (DEBUG) { System.out.println("EnumHeaderName ::= Modifiersopt enum Identifier..."); } //$NON-NLS-1$ + consumeEnumHeaderNameWithTypeParameters(); break; - case 744 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumBodyDeclarationsopt RBRACE"); } //$NON-NLS-1$ - consumeEnumBodyNoConstants(); - break; + case 751 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumBodyDeclarationsopt RBRACE"); } //$NON-NLS-1$ + consumeEnumBodyNoConstants(); break; - case 745 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE COMMA EnumBodyDeclarationsopt..."); } //$NON-NLS-1$ - consumeEnumBodyNoConstants(); - break; + case 752 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE COMMA EnumBodyDeclarationsopt..."); } //$NON-NLS-1$ + consumeEnumBodyNoConstants(); break; - case 746 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumConstants COMMA..."); } //$NON-NLS-1$ - consumeEnumBodyWithConstants(); - break; + case 753 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumConstants COMMA..."); } //$NON-NLS-1$ + consumeEnumBodyWithConstants(); break; - case 747 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumConstants..."); } //$NON-NLS-1$ - consumeEnumBodyWithConstants(); - break; + case 754 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumConstants..."); } //$NON-NLS-1$ + consumeEnumBodyWithConstants(); break; - case 749 : if (DEBUG) { System.out.println("EnumConstants ::= EnumConstants COMMA EnumConstant"); } //$NON-NLS-1$ - consumeEnumConstants(); - break; + case 756 : if (DEBUG) { System.out.println("EnumConstants ::= EnumConstants COMMA EnumConstant"); } //$NON-NLS-1$ + consumeEnumConstants(); break; - case 750 : if (DEBUG) { System.out.println("EnumConstantHeaderName ::= Modifiersopt Identifier"); } //$NON-NLS-1$ - consumeEnumConstantHeaderName(); - break; + case 757 : if (DEBUG) { System.out.println("EnumConstantHeaderName ::= Modifiersopt Identifier"); } //$NON-NLS-1$ + consumeEnumConstantHeaderName(); break; - case 751 : if (DEBUG) { System.out.println("EnumConstantHeader ::= EnumConstantHeaderName..."); } //$NON-NLS-1$ - consumeEnumConstantHeader(); - break; + case 758 : if (DEBUG) { System.out.println("EnumConstantHeader ::= EnumConstantHeaderName..."); } //$NON-NLS-1$ + consumeEnumConstantHeader(); break; - case 752 : if (DEBUG) { System.out.println("EnumConstant ::= EnumConstantHeader ForceNoDiet..."); } //$NON-NLS-1$ - consumeEnumConstantWithClassBody(); - break; + case 759 : if (DEBUG) { System.out.println("EnumConstant ::= EnumConstantHeader ForceNoDiet..."); } //$NON-NLS-1$ + consumeEnumConstantWithClassBody(); break; - case 753 : if (DEBUG) { System.out.println("EnumConstant ::= EnumConstantHeader"); } //$NON-NLS-1$ - consumeEnumConstantNoClassBody(); - break; + case 760 : if (DEBUG) { System.out.println("EnumConstant ::= EnumConstantHeader"); } //$NON-NLS-1$ + consumeEnumConstantNoClassBody(); break; - case 754 : if (DEBUG) { System.out.println("Arguments ::= LPAREN ArgumentListopt RPAREN"); } //$NON-NLS-1$ - consumeArguments(); - break; + case 761 : if (DEBUG) { System.out.println("Arguments ::= LPAREN ArgumentListopt RPAREN"); } //$NON-NLS-1$ + consumeArguments(); break; - case 755 : if (DEBUG) { System.out.println("Argumentsopt ::="); } //$NON-NLS-1$ - consumeEmptyArguments(); - break; + case 762 : if (DEBUG) { System.out.println("Argumentsopt ::="); } //$NON-NLS-1$ + consumeEmptyArguments(); break; - case 757 : if (DEBUG) { System.out.println("EnumDeclarations ::= SEMICOLON ClassBodyDeclarationsopt"); } //$NON-NLS-1$ - consumeEnumDeclarations(); - break; + case 764 : if (DEBUG) { System.out.println("EnumDeclarations ::= SEMICOLON ClassBodyDeclarationsopt"); } //$NON-NLS-1$ + consumeEnumDeclarations(); break; - case 758 : if (DEBUG) { System.out.println("EnumBodyDeclarationsopt ::="); } //$NON-NLS-1$ - consumeEmptyEnumDeclarations(); - break; + case 765 : if (DEBUG) { System.out.println("EnumBodyDeclarationsopt ::="); } //$NON-NLS-1$ + consumeEmptyEnumDeclarations(); break; - case 760 : if (DEBUG) { System.out.println("EnhancedForStatement ::= EnhancedForStatementHeader..."); } //$NON-NLS-1$ - consumeEnhancedForStatement(); - break; + case 767 : if (DEBUG) { System.out.println("EnhancedForStatement ::= EnhancedForStatementHeader..."); } //$NON-NLS-1$ + consumeEnhancedForStatement(); break; - case 761 : if (DEBUG) { System.out.println("EnhancedForStatementNoShortIf ::=..."); } //$NON-NLS-1$ - consumeEnhancedForStatement(); - break; + case 768 : if (DEBUG) { System.out.println("EnhancedForStatementNoShortIf ::=..."); } //$NON-NLS-1$ + consumeEnhancedForStatement(); break; - case 762 : if (DEBUG) { System.out.println("EnhancedForStatementHeaderInit ::= for LPAREN Type..."); } //$NON-NLS-1$ - consumeEnhancedForStatementHeaderInit(false); - break; + case 769 : if (DEBUG) { System.out.println("EnhancedForStatementHeaderInit ::= for LPAREN Type..."); } //$NON-NLS-1$ + consumeEnhancedForStatementHeaderInit(false); break; - case 763 : if (DEBUG) { System.out.println("EnhancedForStatementHeaderInit ::= for LPAREN Modifiers"); } //$NON-NLS-1$ - consumeEnhancedForStatementHeaderInit(true); - break; + case 770 : if (DEBUG) { System.out.println("EnhancedForStatementHeaderInit ::= for LPAREN Modifiers"); } //$NON-NLS-1$ + consumeEnhancedForStatementHeaderInit(true); break; - case 764 : if (DEBUG) { System.out.println("EnhancedForStatementHeader ::=..."); } //$NON-NLS-1$ - consumeEnhancedForStatementHeader(); - break; + case 771 : if (DEBUG) { System.out.println("EnhancedForStatementHeader ::=..."); } //$NON-NLS-1$ + consumeEnhancedForStatementHeader(); break; - case 765 : if (DEBUG) { System.out.println("SingleStaticImportDeclaration ::=..."); } //$NON-NLS-1$ - consumeImportDeclaration(); - break; + case 772 : if (DEBUG) { System.out.println("SingleStaticImportDeclaration ::=..."); } //$NON-NLS-1$ + consumeImportDeclaration(); break; - case 766 : if (DEBUG) { System.out.println("SingleStaticImportDeclarationName ::= import static Name"); } //$NON-NLS-1$ - consumeSingleStaticImportDeclarationName(); - break; + case 773 : if (DEBUG) { System.out.println("SingleStaticImportDeclarationName ::= import static Name"); } //$NON-NLS-1$ + consumeSingleStaticImportDeclarationName(); break; - case 767 : if (DEBUG) { System.out.println("StaticImportOnDemandDeclaration ::=..."); } //$NON-NLS-1$ - consumeImportDeclaration(); - break; + case 774 : if (DEBUG) { System.out.println("StaticImportOnDemandDeclaration ::=..."); } //$NON-NLS-1$ + consumeImportDeclaration(); break; - case 768 : if (DEBUG) { System.out.println("StaticImportOnDemandDeclarationName ::= import static..."); } //$NON-NLS-1$ - consumeStaticImportOnDemandDeclarationName(); - break; + case 775 : if (DEBUG) { System.out.println("StaticImportOnDemandDeclarationName ::= import static..."); } //$NON-NLS-1$ + consumeStaticImportOnDemandDeclarationName(); break; - case 769 : if (DEBUG) { System.out.println("TypeArguments ::= LESS TypeArgumentList1"); } //$NON-NLS-1$ - consumeTypeArguments(); - break; + case 776 : if (DEBUG) { System.out.println("TypeArguments ::= LESS TypeArgumentList1"); } //$NON-NLS-1$ + consumeTypeArguments(); break; - case 770 : if (DEBUG) { System.out.println("OnlyTypeArguments ::= LESS TypeArgumentList1"); } //$NON-NLS-1$ - consumeOnlyTypeArguments(); - break; + case 777 : if (DEBUG) { System.out.println("OnlyTypeArguments ::= LESS TypeArgumentList1"); } //$NON-NLS-1$ + consumeOnlyTypeArguments(); break; - case 772 : if (DEBUG) { System.out.println("TypeArgumentList1 ::= TypeArgumentList COMMA..."); } //$NON-NLS-1$ - consumeTypeArgumentList1(); - break; + case 779 : if (DEBUG) { System.out.println("TypeArgumentList1 ::= TypeArgumentList COMMA..."); } //$NON-NLS-1$ + consumeTypeArgumentList1(); break; - case 774 : if (DEBUG) { System.out.println("TypeArgumentList ::= TypeArgumentList COMMA TypeArgument"); } //$NON-NLS-1$ - consumeTypeArgumentList(); - break; + case 781 : if (DEBUG) { System.out.println("TypeArgumentList ::= TypeArgumentList COMMA TypeArgument"); } //$NON-NLS-1$ + consumeTypeArgumentList(); break; - case 775 : if (DEBUG) { System.out.println("TypeArgument ::= ReferenceType"); } //$NON-NLS-1$ - consumeTypeArgument(); - break; + case 782 : if (DEBUG) { System.out.println("TypeArgument ::= ReferenceType"); } //$NON-NLS-1$ + consumeTypeArgument(); break; - case 779 : if (DEBUG) { System.out.println("ReferenceType1 ::= ReferenceType GREATER"); } //$NON-NLS-1$ - consumeReferenceType1(); - break; + case 786 : if (DEBUG) { System.out.println("ReferenceType1 ::= ReferenceType GREATER"); } //$NON-NLS-1$ + consumeReferenceType1(); break; - case 780 : if (DEBUG) { System.out.println("ReferenceType1 ::= ClassOrInterface LESS..."); } //$NON-NLS-1$ - consumeTypeArgumentReferenceType1(); - break; + case 787 : if (DEBUG) { System.out.println("ReferenceType1 ::= ClassOrInterface LESS..."); } //$NON-NLS-1$ + consumeTypeArgumentReferenceType1(); break; - case 782 : if (DEBUG) { System.out.println("TypeArgumentList2 ::= TypeArgumentList COMMA..."); } //$NON-NLS-1$ - consumeTypeArgumentList2(); - break; + case 789 : if (DEBUG) { System.out.println("TypeArgumentList2 ::= TypeArgumentList COMMA..."); } //$NON-NLS-1$ + consumeTypeArgumentList2(); break; - case 785 : if (DEBUG) { System.out.println("ReferenceType2 ::= ReferenceType RIGHT_SHIFT"); } //$NON-NLS-1$ - consumeReferenceType2(); - break; + case 792 : if (DEBUG) { System.out.println("ReferenceType2 ::= ReferenceType RIGHT_SHIFT"); } //$NON-NLS-1$ + consumeReferenceType2(); break; - case 786 : if (DEBUG) { System.out.println("ReferenceType2 ::= ClassOrInterface LESS..."); } //$NON-NLS-1$ - consumeTypeArgumentReferenceType2(); - break; + case 793 : if (DEBUG) { System.out.println("ReferenceType2 ::= ClassOrInterface LESS..."); } //$NON-NLS-1$ + consumeTypeArgumentReferenceType2(); break; - case 788 : if (DEBUG) { System.out.println("TypeArgumentList3 ::= TypeArgumentList COMMA..."); } //$NON-NLS-1$ - consumeTypeArgumentList3(); - break; + case 795 : if (DEBUG) { System.out.println("TypeArgumentList3 ::= TypeArgumentList COMMA..."); } //$NON-NLS-1$ + consumeTypeArgumentList3(); break; - case 791 : if (DEBUG) { System.out.println("ReferenceType3 ::= ReferenceType UNSIGNED_RIGHT_SHIFT"); } //$NON-NLS-1$ - consumeReferenceType3(); - break; + case 798 : if (DEBUG) { System.out.println("ReferenceType3 ::= ReferenceType UNSIGNED_RIGHT_SHIFT"); } //$NON-NLS-1$ + consumeReferenceType3(); break; - case 792 : if (DEBUG) { System.out.println("Wildcard ::= TypeAnnotationsopt QUESTION"); } //$NON-NLS-1$ - consumeWildcard(); - break; + case 799 : if (DEBUG) { System.out.println("Wildcard ::= TypeAnnotationsopt QUESTION"); } //$NON-NLS-1$ + consumeWildcard(); break; - case 793 : if (DEBUG) { System.out.println("Wildcard ::= TypeAnnotationsopt QUESTION WildcardBounds"); } //$NON-NLS-1$ - consumeWildcardWithBounds(); - break; + case 800 : if (DEBUG) { System.out.println("Wildcard ::= TypeAnnotationsopt QUESTION WildcardBounds"); } //$NON-NLS-1$ + consumeWildcardWithBounds(); break; - case 794 : if (DEBUG) { System.out.println("WildcardBounds ::= extends ReferenceType"); } //$NON-NLS-1$ - consumeWildcardBoundsExtends(); - break; + case 801 : if (DEBUG) { System.out.println("WildcardBounds ::= extends ReferenceType"); } //$NON-NLS-1$ + consumeWildcardBoundsExtends(); break; - case 795 : if (DEBUG) { System.out.println("WildcardBounds ::= super ReferenceType"); } //$NON-NLS-1$ - consumeWildcardBoundsSuper(); - break; + case 802 : if (DEBUG) { System.out.println("WildcardBounds ::= super ReferenceType"); } //$NON-NLS-1$ + consumeWildcardBoundsSuper(); break; - case 796 : if (DEBUG) { System.out.println("Wildcard1 ::= TypeAnnotationsopt QUESTION GREATER"); } //$NON-NLS-1$ - consumeWildcard1(); - break; + case 803 : if (DEBUG) { System.out.println("Wildcard1 ::= TypeAnnotationsopt QUESTION GREATER"); } //$NON-NLS-1$ + consumeWildcard1(); break; - case 797 : if (DEBUG) { System.out.println("Wildcard1 ::= TypeAnnotationsopt QUESTION..."); } //$NON-NLS-1$ - consumeWildcard1WithBounds(); - break; + case 804 : if (DEBUG) { System.out.println("Wildcard1 ::= TypeAnnotationsopt QUESTION..."); } //$NON-NLS-1$ + consumeWildcard1WithBounds(); break; - case 798 : if (DEBUG) { System.out.println("WildcardBounds1 ::= extends ReferenceType1"); } //$NON-NLS-1$ - consumeWildcardBounds1Extends(); - break; + case 805 : if (DEBUG) { System.out.println("WildcardBounds1 ::= extends ReferenceType1"); } //$NON-NLS-1$ + consumeWildcardBounds1Extends(); break; - case 799 : if (DEBUG) { System.out.println("WildcardBounds1 ::= super ReferenceType1"); } //$NON-NLS-1$ - consumeWildcardBounds1Super(); - break; + case 806 : if (DEBUG) { System.out.println("WildcardBounds1 ::= super ReferenceType1"); } //$NON-NLS-1$ + consumeWildcardBounds1Super(); break; - case 800 : if (DEBUG) { System.out.println("Wildcard2 ::= TypeAnnotationsopt QUESTION RIGHT_SHIFT"); } //$NON-NLS-1$ - consumeWildcard2(); - break; + case 807 : if (DEBUG) { System.out.println("Wildcard2 ::= TypeAnnotationsopt QUESTION RIGHT_SHIFT"); } //$NON-NLS-1$ + consumeWildcard2(); break; - case 801 : if (DEBUG) { System.out.println("Wildcard2 ::= TypeAnnotationsopt QUESTION..."); } //$NON-NLS-1$ - consumeWildcard2WithBounds(); - break; + case 808 : if (DEBUG) { System.out.println("Wildcard2 ::= TypeAnnotationsopt QUESTION..."); } //$NON-NLS-1$ + consumeWildcard2WithBounds(); break; - case 802 : if (DEBUG) { System.out.println("WildcardBounds2 ::= extends ReferenceType2"); } //$NON-NLS-1$ - consumeWildcardBounds2Extends(); - break; + case 809 : if (DEBUG) { System.out.println("WildcardBounds2 ::= extends ReferenceType2"); } //$NON-NLS-1$ + consumeWildcardBounds2Extends(); break; - case 803 : if (DEBUG) { System.out.println("WildcardBounds2 ::= super ReferenceType2"); } //$NON-NLS-1$ - consumeWildcardBounds2Super(); - break; + case 810 : if (DEBUG) { System.out.println("WildcardBounds2 ::= super ReferenceType2"); } //$NON-NLS-1$ + consumeWildcardBounds2Super(); break; - case 804 : if (DEBUG) { System.out.println("Wildcard3 ::= TypeAnnotationsopt QUESTION..."); } //$NON-NLS-1$ - consumeWildcard3(); - break; + case 811 : if (DEBUG) { System.out.println("Wildcard3 ::= TypeAnnotationsopt QUESTION..."); } //$NON-NLS-1$ + consumeWildcard3(); break; - case 805 : if (DEBUG) { System.out.println("Wildcard3 ::= TypeAnnotationsopt QUESTION..."); } //$NON-NLS-1$ - consumeWildcard3WithBounds(); - break; + case 812 : if (DEBUG) { System.out.println("Wildcard3 ::= TypeAnnotationsopt QUESTION..."); } //$NON-NLS-1$ + consumeWildcard3WithBounds(); break; - case 806 : if (DEBUG) { System.out.println("WildcardBounds3 ::= extends ReferenceType3"); } //$NON-NLS-1$ - consumeWildcardBounds3Extends(); - break; + case 813 : if (DEBUG) { System.out.println("WildcardBounds3 ::= extends ReferenceType3"); } //$NON-NLS-1$ + consumeWildcardBounds3Extends(); break; - case 807 : if (DEBUG) { System.out.println("WildcardBounds3 ::= super ReferenceType3"); } //$NON-NLS-1$ - consumeWildcardBounds3Super(); - break; + case 814 : if (DEBUG) { System.out.println("WildcardBounds3 ::= super ReferenceType3"); } //$NON-NLS-1$ + consumeWildcardBounds3Super(); break; - case 808 : if (DEBUG) { System.out.println("TypeParameterHeader ::= TypeAnnotationsopt Identifier"); } //$NON-NLS-1$ - consumeTypeParameterHeader(); - break; + case 815 : if (DEBUG) { System.out.println("TypeParameterHeader ::= TypeAnnotationsopt Identifier"); } //$NON-NLS-1$ + consumeTypeParameterHeader(); break; - case 809 : if (DEBUG) { System.out.println("TypeParameters ::= LESS TypeParameterList1"); } //$NON-NLS-1$ - consumeTypeParameters(); - break; + case 816 : if (DEBUG) { System.out.println("TypeParameters ::= LESS TypeParameterList1"); } //$NON-NLS-1$ + consumeTypeParameters(); break; - case 811 : if (DEBUG) { System.out.println("TypeParameterList ::= TypeParameterList COMMA..."); } //$NON-NLS-1$ - consumeTypeParameterList(); - break; + case 818 : if (DEBUG) { System.out.println("TypeParameterList ::= TypeParameterList COMMA..."); } //$NON-NLS-1$ + consumeTypeParameterList(); break; - case 813 : if (DEBUG) { System.out.println("TypeParameter ::= TypeParameterHeader extends..."); } //$NON-NLS-1$ - consumeTypeParameterWithExtends(); - break; + case 820 : if (DEBUG) { System.out.println("TypeParameter ::= TypeParameterHeader extends..."); } //$NON-NLS-1$ + consumeTypeParameterWithExtends(); break; - case 814 : if (DEBUG) { System.out.println("TypeParameter ::= TypeParameterHeader extends..."); } //$NON-NLS-1$ - consumeTypeParameterWithExtendsAndBounds(); - break; + case 821 : if (DEBUG) { System.out.println("TypeParameter ::= TypeParameterHeader extends..."); } //$NON-NLS-1$ + consumeTypeParameterWithExtendsAndBounds(); break; - case 816 : if (DEBUG) { System.out.println("AdditionalBoundList ::= AdditionalBoundList..."); } //$NON-NLS-1$ - consumeAdditionalBoundList(); - break; + case 823 : if (DEBUG) { System.out.println("AdditionalBoundList ::= AdditionalBoundList..."); } //$NON-NLS-1$ + consumeAdditionalBoundList(); break; - case 817 : if (DEBUG) { System.out.println("AdditionalBound ::= AND ReferenceType"); } //$NON-NLS-1$ - consumeAdditionalBound(); - break; + case 824 : if (DEBUG) { System.out.println("AdditionalBound ::= AND ReferenceType"); } //$NON-NLS-1$ + consumeAdditionalBound(); break; - case 819 : if (DEBUG) { System.out.println("TypeParameterList1 ::= TypeParameterList COMMA..."); } //$NON-NLS-1$ - consumeTypeParameterList1(); - break; + case 826 : if (DEBUG) { System.out.println("TypeParameterList1 ::= TypeParameterList COMMA..."); } //$NON-NLS-1$ + consumeTypeParameterList1(); break; - case 820 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader GREATER"); } //$NON-NLS-1$ - consumeTypeParameter1(); - break; + case 827 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader GREATER"); } //$NON-NLS-1$ + consumeTypeParameter1(); break; - case 821 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader extends..."); } //$NON-NLS-1$ - consumeTypeParameter1WithExtends(); - break; + case 828 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader extends..."); } //$NON-NLS-1$ + consumeTypeParameter1WithExtends(); break; - case 822 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader extends..."); } //$NON-NLS-1$ - consumeTypeParameter1WithExtendsAndBounds(); - break; + case 829 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader extends..."); } //$NON-NLS-1$ + consumeTypeParameter1WithExtendsAndBounds(); break; - case 824 : if (DEBUG) { System.out.println("AdditionalBoundList1 ::= AdditionalBoundList..."); } //$NON-NLS-1$ - consumeAdditionalBoundList1(); - break; + case 831 : if (DEBUG) { System.out.println("AdditionalBoundList1 ::= AdditionalBoundList..."); } //$NON-NLS-1$ + consumeAdditionalBoundList1(); break; - case 825 : if (DEBUG) { System.out.println("AdditionalBound1 ::= AND ReferenceType1"); } //$NON-NLS-1$ - consumeAdditionalBound1(); - break; + case 832 : if (DEBUG) { System.out.println("AdditionalBound1 ::= AND ReferenceType1"); } //$NON-NLS-1$ + consumeAdditionalBound1(); break; - case 831 : if (DEBUG) { System.out.println("UnaryExpression_NotName ::= PLUS PushPosition..."); } //$NON-NLS-1$ - consumeUnaryExpression(OperatorIds.PLUS); - break; + case 838 : if (DEBUG) { System.out.println("UnaryExpression_NotName ::= PLUS PushPosition..."); } //$NON-NLS-1$ + consumeUnaryExpression(OperatorIds.PLUS); break; - case 832 : if (DEBUG) { System.out.println("UnaryExpression_NotName ::= MINUS PushPosition..."); } //$NON-NLS-1$ - consumeUnaryExpression(OperatorIds.MINUS); - break; + case 839 : if (DEBUG) { System.out.println("UnaryExpression_NotName ::= MINUS PushPosition..."); } //$NON-NLS-1$ + consumeUnaryExpression(OperatorIds.MINUS); break; - case 835 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus_NotName ::= TWIDDLE..."); } //$NON-NLS-1$ - consumeUnaryExpression(OperatorIds.TWIDDLE); - break; + case 842 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus_NotName ::= TWIDDLE..."); } //$NON-NLS-1$ + consumeUnaryExpression(OperatorIds.TWIDDLE); break; - case 836 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus_NotName ::= NOT PushPosition"); } //$NON-NLS-1$ - consumeUnaryExpression(OperatorIds.NOT); - break; + case 843 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus_NotName ::= NOT PushPosition"); } //$NON-NLS-1$ + consumeUnaryExpression(OperatorIds.NOT); break; - case 839 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.MULTIPLY); - break; + case 846 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.MULTIPLY); break; - case 840 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= Name MULTIPLY..."); } //$NON-NLS-1$ - consumeBinaryExpressionWithName(OperatorIds.MULTIPLY); - break; + case 847 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= Name MULTIPLY..."); } //$NON-NLS-1$ + consumeBinaryExpressionWithName(OperatorIds.MULTIPLY); break; - case 841 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.DIVIDE); - break; + case 848 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.DIVIDE); break; - case 842 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= Name DIVIDE..."); } //$NON-NLS-1$ - consumeBinaryExpressionWithName(OperatorIds.DIVIDE); - break; + case 849 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= Name DIVIDE..."); } //$NON-NLS-1$ + consumeBinaryExpressionWithName(OperatorIds.DIVIDE); break; - case 843 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.REMAINDER); - break; + case 850 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.REMAINDER); break; - case 844 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= Name REMAINDER..."); } //$NON-NLS-1$ - consumeBinaryExpressionWithName(OperatorIds.REMAINDER); - break; + case 851 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= Name REMAINDER..."); } //$NON-NLS-1$ + consumeBinaryExpressionWithName(OperatorIds.REMAINDER); break; - case 846 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::=..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.PLUS); - break; + case 853 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::=..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.PLUS); break; - case 847 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::= Name PLUS..."); } //$NON-NLS-1$ - consumeBinaryExpressionWithName(OperatorIds.PLUS); - break; + case 854 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::= Name PLUS..."); } //$NON-NLS-1$ + consumeBinaryExpressionWithName(OperatorIds.PLUS); break; - case 848 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::=..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.MINUS); - break; + case 855 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::=..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.MINUS); break; - case 849 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::= Name MINUS..."); } //$NON-NLS-1$ - consumeBinaryExpressionWithName(OperatorIds.MINUS); - break; + case 856 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::= Name MINUS..."); } //$NON-NLS-1$ + consumeBinaryExpressionWithName(OperatorIds.MINUS); break; - case 851 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.LEFT_SHIFT); - break; + case 858 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.LEFT_SHIFT); break; - case 852 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= Name LEFT_SHIFT..."); } //$NON-NLS-1$ - consumeBinaryExpressionWithName(OperatorIds.LEFT_SHIFT); - break; + case 859 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= Name LEFT_SHIFT..."); } //$NON-NLS-1$ + consumeBinaryExpressionWithName(OperatorIds.LEFT_SHIFT); break; - case 853 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.RIGHT_SHIFT); - break; + case 860 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.RIGHT_SHIFT); break; - case 854 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= Name RIGHT_SHIFT..."); } //$NON-NLS-1$ - consumeBinaryExpressionWithName(OperatorIds.RIGHT_SHIFT); - break; + case 861 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= Name RIGHT_SHIFT..."); } //$NON-NLS-1$ + consumeBinaryExpressionWithName(OperatorIds.RIGHT_SHIFT); break; - case 855 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT); - break; + case 862 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT); break; - case 856 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= Name UNSIGNED_RIGHT_SHIFT..."); } //$NON-NLS-1$ - consumeBinaryExpressionWithName(OperatorIds.UNSIGNED_RIGHT_SHIFT); - break; + case 863 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= Name UNSIGNED_RIGHT_SHIFT..."); } //$NON-NLS-1$ + consumeBinaryExpressionWithName(OperatorIds.UNSIGNED_RIGHT_SHIFT); break; - case 858 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= ShiftExpression_NotName"); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.LESS); - break; + case 865 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= ShiftExpression_NotName"); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.LESS); break; - case 859 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name LESS..."); } //$NON-NLS-1$ - consumeBinaryExpressionWithName(OperatorIds.LESS); - break; + case 866 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name LESS..."); } //$NON-NLS-1$ + consumeBinaryExpressionWithName(OperatorIds.LESS); break; - case 860 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= ShiftExpression_NotName"); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.GREATER); - break; + case 867 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= ShiftExpression_NotName"); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.GREATER); break; - case 861 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name GREATER..."); } //$NON-NLS-1$ - consumeBinaryExpressionWithName(OperatorIds.GREATER); - break; + case 868 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name GREATER..."); } //$NON-NLS-1$ + consumeBinaryExpressionWithName(OperatorIds.GREATER); break; - case 862 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.LESS_EQUAL); - break; + case 869 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.LESS_EQUAL); break; - case 863 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name LESS_EQUAL..."); } //$NON-NLS-1$ - consumeBinaryExpressionWithName(OperatorIds.LESS_EQUAL); - break; + case 870 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name LESS_EQUAL..."); } //$NON-NLS-1$ + consumeBinaryExpressionWithName(OperatorIds.LESS_EQUAL); break; - case 864 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.GREATER_EQUAL); - break; + case 871 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.GREATER_EQUAL); break; - case 865 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name GREATER_EQUAL..."); } //$NON-NLS-1$ - consumeBinaryExpressionWithName(OperatorIds.GREATER_EQUAL); - break; + case 872 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name GREATER_EQUAL..."); } //$NON-NLS-1$ + consumeBinaryExpressionWithName(OperatorIds.GREATER_EQUAL); break; - case 867 : if (DEBUG) { System.out.println("InstanceofExpression_NotName ::= Name InstanceofRHS"); } //$NON-NLS-1$ - consumeInstanceOfExpressionWithName(); - break; + case 874 : if (DEBUG) { System.out.println("InstanceofExpression_NotName ::= Name InstanceofRHS"); } //$NON-NLS-1$ + consumeInstanceOfExpressionWithName(); break; - case 868 : if (DEBUG) { System.out.println("InstanceofExpression_NotName ::=..."); } //$NON-NLS-1$ - consumeInstanceOfExpression(); - break; + case 875 : if (DEBUG) { System.out.println("InstanceofExpression_NotName ::=..."); } //$NON-NLS-1$ + consumeInstanceOfExpression(); break; - case 870 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::=..."); } //$NON-NLS-1$ - consumeEqualityExpression(OperatorIds.EQUAL_EQUAL); - break; + case 877 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::=..."); } //$NON-NLS-1$ + consumeEqualityExpression(OperatorIds.EQUAL_EQUAL); break; - case 871 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::= Name EQUAL_EQUAL..."); } //$NON-NLS-1$ - consumeEqualityExpressionWithName(OperatorIds.EQUAL_EQUAL); - break; + case 878 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::= Name EQUAL_EQUAL..."); } //$NON-NLS-1$ + consumeEqualityExpressionWithName(OperatorIds.EQUAL_EQUAL); break; - case 872 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::=..."); } //$NON-NLS-1$ - consumeEqualityExpression(OperatorIds.NOT_EQUAL); - break; + case 879 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::=..."); } //$NON-NLS-1$ + consumeEqualityExpression(OperatorIds.NOT_EQUAL); break; - case 873 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::= Name NOT_EQUAL..."); } //$NON-NLS-1$ - consumeEqualityExpressionWithName(OperatorIds.NOT_EQUAL); - break; + case 880 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::= Name NOT_EQUAL..."); } //$NON-NLS-1$ + consumeEqualityExpressionWithName(OperatorIds.NOT_EQUAL); break; - case 875 : if (DEBUG) { System.out.println("AndExpression_NotName ::= AndExpression_NotName AND..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.AND); - break; + case 882 : if (DEBUG) { System.out.println("AndExpression_NotName ::= AndExpression_NotName AND..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.AND); break; - case 876 : if (DEBUG) { System.out.println("AndExpression_NotName ::= Name AND EqualityExpression"); } //$NON-NLS-1$ - consumeBinaryExpressionWithName(OperatorIds.AND); - break; + case 883 : if (DEBUG) { System.out.println("AndExpression_NotName ::= Name AND EqualityExpression"); } //$NON-NLS-1$ + consumeBinaryExpressionWithName(OperatorIds.AND); break; - case 878 : if (DEBUG) { System.out.println("ExclusiveOrExpression_NotName ::=..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.XOR); - break; + case 885 : if (DEBUG) { System.out.println("ExclusiveOrExpression_NotName ::=..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.XOR); break; - case 879 : if (DEBUG) { System.out.println("ExclusiveOrExpression_NotName ::= Name XOR AndExpression"); } //$NON-NLS-1$ - consumeBinaryExpressionWithName(OperatorIds.XOR); - break; + case 886 : if (DEBUG) { System.out.println("ExclusiveOrExpression_NotName ::= Name XOR AndExpression"); } //$NON-NLS-1$ + consumeBinaryExpressionWithName(OperatorIds.XOR); break; - case 881 : if (DEBUG) { System.out.println("InclusiveOrExpression_NotName ::=..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.OR); - break; + case 888 : if (DEBUG) { System.out.println("InclusiveOrExpression_NotName ::=..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.OR); break; - case 882 : if (DEBUG) { System.out.println("InclusiveOrExpression_NotName ::= Name OR..."); } //$NON-NLS-1$ - consumeBinaryExpressionWithName(OperatorIds.OR); - break; + case 889 : if (DEBUG) { System.out.println("InclusiveOrExpression_NotName ::= Name OR..."); } //$NON-NLS-1$ + consumeBinaryExpressionWithName(OperatorIds.OR); break; - case 884 : if (DEBUG) { System.out.println("ConditionalAndExpression_NotName ::=..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.AND_AND); - break; + case 891 : if (DEBUG) { System.out.println("ConditionalAndExpression_NotName ::=..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.AND_AND); break; - case 885 : if (DEBUG) { System.out.println("ConditionalAndExpression_NotName ::= Name AND_AND..."); } //$NON-NLS-1$ - consumeBinaryExpressionWithName(OperatorIds.AND_AND); - break; + case 892 : if (DEBUG) { System.out.println("ConditionalAndExpression_NotName ::= Name AND_AND..."); } //$NON-NLS-1$ + consumeBinaryExpressionWithName(OperatorIds.AND_AND); break; - case 887 : if (DEBUG) { System.out.println("ConditionalOrExpression_NotName ::=..."); } //$NON-NLS-1$ - consumeBinaryExpression(OperatorIds.OR_OR); - break; + case 894 : if (DEBUG) { System.out.println("ConditionalOrExpression_NotName ::=..."); } //$NON-NLS-1$ + consumeBinaryExpression(OperatorIds.OR_OR); break; - case 888 : if (DEBUG) { System.out.println("ConditionalOrExpression_NotName ::= Name OR_OR..."); } //$NON-NLS-1$ - consumeBinaryExpressionWithName(OperatorIds.OR_OR); - break; + case 895 : if (DEBUG) { System.out.println("ConditionalOrExpression_NotName ::= Name OR_OR..."); } //$NON-NLS-1$ + consumeBinaryExpressionWithName(OperatorIds.OR_OR); break; - case 890 : if (DEBUG) { System.out.println("ConditionalExpression_NotName ::=..."); } //$NON-NLS-1$ - consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ; - break; + case 897 : if (DEBUG) { System.out.println("ConditionalExpression_NotName ::=..."); } //$NON-NLS-1$ + consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ; break; - case 891 : if (DEBUG) { System.out.println("ConditionalExpression_NotName ::= Name QUESTION..."); } //$NON-NLS-1$ - consumeConditionalExpressionWithName(OperatorIds.QUESTIONCOLON) ; - break; + case 898 : if (DEBUG) { System.out.println("ConditionalExpression_NotName ::= Name QUESTION..."); } //$NON-NLS-1$ + consumeConditionalExpressionWithName(OperatorIds.QUESTIONCOLON) ; break; - case 895 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= Modifiers AT..."); } //$NON-NLS-1$ - consumeAnnotationTypeDeclarationHeaderName() ; - break; + case 902 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= Modifiers AT..."); } //$NON-NLS-1$ + consumeAnnotationTypeDeclarationHeaderName() ; break; - case 896 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= Modifiers AT..."); } //$NON-NLS-1$ - consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters() ; - break; + case 903 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= Modifiers AT..."); } //$NON-NLS-1$ + consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters() ; break; - case 897 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= AT..."); } //$NON-NLS-1$ - consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters() ; - break; + case 904 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= AT..."); } //$NON-NLS-1$ + consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters() ; break; - case 898 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= AT..."); } //$NON-NLS-1$ - consumeAnnotationTypeDeclarationHeaderName() ; - break; + case 905 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= AT..."); } //$NON-NLS-1$ + consumeAnnotationTypeDeclarationHeaderName() ; break; - case 899 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeader ::=..."); } //$NON-NLS-1$ - consumeAnnotationTypeDeclarationHeader() ; - break; + case 906 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeader ::=..."); } //$NON-NLS-1$ + consumeAnnotationTypeDeclarationHeader() ; break; - case 900 : if (DEBUG) { System.out.println("AnnotationTypeDeclaration ::=..."); } //$NON-NLS-1$ - consumeAnnotationTypeDeclaration() ; - break; + case 907 : if (DEBUG) { System.out.println("AnnotationTypeDeclaration ::=..."); } //$NON-NLS-1$ + consumeAnnotationTypeDeclaration() ; break; - case 902 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarationsopt ::="); } //$NON-NLS-1$ - consumeEmptyAnnotationTypeMemberDeclarationsopt() ; - break; + case 909 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarationsopt ::="); } //$NON-NLS-1$ + consumeEmptyAnnotationTypeMemberDeclarationsopt() ; break; - case 903 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarationsopt ::= NestedType..."); } //$NON-NLS-1$ - consumeAnnotationTypeMemberDeclarationsopt() ; - break; + case 910 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarationsopt ::= NestedType..."); } //$NON-NLS-1$ + consumeAnnotationTypeMemberDeclarationsopt() ; break; - case 905 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarations ::=..."); } //$NON-NLS-1$ - consumeAnnotationTypeMemberDeclarations() ; - break; + case 912 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarations ::=..."); } //$NON-NLS-1$ + consumeAnnotationTypeMemberDeclarations() ; break; - case 906 : if (DEBUG) { System.out.println("AnnotationMethodHeaderName ::= Modifiersopt..."); } //$NON-NLS-1$ - consumeMethodHeaderNameWithTypeParameters(true); - break; + case 913 : if (DEBUG) { System.out.println("AnnotationMethodHeaderName ::= Modifiersopt..."); } //$NON-NLS-1$ + consumeMethodHeaderNameWithTypeParameters(true); break; - case 907 : if (DEBUG) { System.out.println("AnnotationMethodHeaderName ::= Modifiersopt Type..."); } //$NON-NLS-1$ - consumeMethodHeaderName(true); - break; + case 914 : if (DEBUG) { System.out.println("AnnotationMethodHeaderName ::= Modifiersopt Type..."); } //$NON-NLS-1$ + consumeMethodHeaderName(true); break; - case 908 : if (DEBUG) { System.out.println("AnnotationMethodHeaderDefaultValueopt ::="); } //$NON-NLS-1$ - consumeEmptyMethodHeaderDefaultValue() ; - break; + case 915 : if (DEBUG) { System.out.println("AnnotationMethodHeaderDefaultValueopt ::="); } //$NON-NLS-1$ + consumeEmptyMethodHeaderDefaultValue() ; break; - case 909 : if (DEBUG) { System.out.println("AnnotationMethodHeaderDefaultValueopt ::= DefaultValue"); } //$NON-NLS-1$ - consumeMethodHeaderDefaultValue(); - break; + case 916 : if (DEBUG) { System.out.println("AnnotationMethodHeaderDefaultValueopt ::= DefaultValue"); } //$NON-NLS-1$ + consumeMethodHeaderDefaultValue(); break; - case 910 : if (DEBUG) { System.out.println("AnnotationMethodHeader ::= AnnotationMethodHeaderName..."); } //$NON-NLS-1$ - consumeMethodHeader(); - break; + case 917 : if (DEBUG) { System.out.println("AnnotationMethodHeader ::= AnnotationMethodHeaderName..."); } //$NON-NLS-1$ + consumeMethodHeader(); break; - case 911 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclaration ::=..."); } //$NON-NLS-1$ - consumeAnnotationTypeMemberDeclaration() ; - break; + case 918 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclaration ::=..."); } //$NON-NLS-1$ + consumeAnnotationTypeMemberDeclaration() ; break; - case 919 : if (DEBUG) { System.out.println("AnnotationName ::= AT UnannotatableName"); } //$NON-NLS-1$ - consumeAnnotationName() ; - break; + case 926 : if (DEBUG) { System.out.println("AnnotationName ::= AT UnannotatableName"); } //$NON-NLS-1$ + consumeAnnotationName() ; break; - case 920 : if (DEBUG) { System.out.println("NormalAnnotation ::= AnnotationName LPAREN..."); } //$NON-NLS-1$ - consumeNormalAnnotation(false) ; - break; + case 927 : if (DEBUG) { System.out.println("NormalAnnotation ::= AnnotationName LPAREN..."); } //$NON-NLS-1$ + consumeNormalAnnotation(false) ; break; - case 921 : if (DEBUG) { System.out.println("MemberValuePairsopt ::="); } //$NON-NLS-1$ - consumeEmptyMemberValuePairsopt() ; - break; + case 928 : if (DEBUG) { System.out.println("MemberValuePairsopt ::="); } //$NON-NLS-1$ + consumeEmptyMemberValuePairsopt() ; break; - case 924 : if (DEBUG) { System.out.println("MemberValuePairs ::= MemberValuePairs COMMA..."); } //$NON-NLS-1$ - consumeMemberValuePairs() ; - break; + case 931 : if (DEBUG) { System.out.println("MemberValuePairs ::= MemberValuePairs COMMA..."); } //$NON-NLS-1$ + consumeMemberValuePairs() ; break; - case 925 : if (DEBUG) { System.out.println("MemberValuePair ::= SimpleName EQUAL EnterMemberValue..."); } //$NON-NLS-1$ - consumeMemberValuePair() ; - break; + case 932 : if (DEBUG) { System.out.println("MemberValuePair ::= SimpleName EQUAL EnterMemberValue..."); } //$NON-NLS-1$ + consumeMemberValuePair() ; break; - case 926 : if (DEBUG) { System.out.println("EnterMemberValue ::="); } //$NON-NLS-1$ - consumeEnterMemberValue() ; - break; + case 933 : if (DEBUG) { System.out.println("EnterMemberValue ::="); } //$NON-NLS-1$ + consumeEnterMemberValue() ; break; - case 927 : if (DEBUG) { System.out.println("ExitMemberValue ::="); } //$NON-NLS-1$ - consumeExitMemberValue() ; - break; + case 934 : if (DEBUG) { System.out.println("ExitMemberValue ::="); } //$NON-NLS-1$ + consumeExitMemberValue() ; break; - case 929 : if (DEBUG) { System.out.println("MemberValue ::= Name"); } //$NON-NLS-1$ - consumeMemberValueAsName() ; - break; + case 936 : if (DEBUG) { System.out.println("MemberValue ::= Name"); } //$NON-NLS-1$ + consumeMemberValueAsName() ; break; - case 932 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$ - consumeMemberValueArrayInitializer() ; - break; + case 939 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$ + consumeMemberValueArrayInitializer() ; break; - case 933 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$ - consumeMemberValueArrayInitializer() ; - break; + case 940 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$ + consumeMemberValueArrayInitializer() ; break; - case 934 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$ - consumeEmptyMemberValueArrayInitializer() ; - break; + case 941 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$ + consumeEmptyMemberValueArrayInitializer() ; break; - case 935 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$ - consumeEmptyMemberValueArrayInitializer() ; - break; + case 942 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$ + consumeEmptyMemberValueArrayInitializer() ; break; - case 936 : if (DEBUG) { System.out.println("EnterMemberValueArrayInitializer ::="); } //$NON-NLS-1$ - consumeEnterMemberValueArrayInitializer() ; - break; + case 943 : if (DEBUG) { System.out.println("EnterMemberValueArrayInitializer ::="); } //$NON-NLS-1$ + consumeEnterMemberValueArrayInitializer() ; break; - case 938 : if (DEBUG) { System.out.println("MemberValues ::= MemberValues COMMA MemberValue"); } //$NON-NLS-1$ - consumeMemberValues() ; - break; + case 945 : if (DEBUG) { System.out.println("MemberValues ::= MemberValues COMMA MemberValue"); } //$NON-NLS-1$ + consumeMemberValues() ; break; - case 939 : if (DEBUG) { System.out.println("MarkerAnnotation ::= AnnotationName"); } //$NON-NLS-1$ - consumeMarkerAnnotation(false) ; - break; + case 946 : if (DEBUG) { System.out.println("MarkerAnnotation ::= AnnotationName"); } //$NON-NLS-1$ + consumeMarkerAnnotation(false) ; break; - case 940 : if (DEBUG) { System.out.println("SingleMemberAnnotationMemberValue ::= MemberValue"); } //$NON-NLS-1$ - consumeSingleMemberAnnotationMemberValue() ; - break; + case 947 : if (DEBUG) { System.out.println("SingleMemberAnnotationMemberValue ::= MemberValue"); } //$NON-NLS-1$ + consumeSingleMemberAnnotationMemberValue() ; break; - case 941 : if (DEBUG) { System.out.println("SingleMemberAnnotation ::= AnnotationName LPAREN..."); } //$NON-NLS-1$ - consumeSingleMemberAnnotation(false) ; - break; + case 948 : if (DEBUG) { System.out.println("SingleMemberAnnotation ::= AnnotationName LPAREN..."); } //$NON-NLS-1$ + consumeSingleMemberAnnotation(false) ; break; - case 942 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= Modifiersopt TypeParameters"); } //$NON-NLS-1$ - consumeRecoveryMethodHeaderNameWithTypeParameters(); - break; + case 949 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= Modifiersopt TypeParameters"); } //$NON-NLS-1$ + consumeRecoveryMethodHeaderNameWithTypeParameters(); break; - case 943 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= Modifiersopt Type..."); } //$NON-NLS-1$ - consumeRecoveryMethodHeaderName(); - break; + case 950 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= Modifiersopt Type..."); } //$NON-NLS-1$ + consumeRecoveryMethodHeaderName(); break; - case 944 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= ModifiersWithDefault..."); } //$NON-NLS-1$ - consumeRecoveryMethodHeaderNameWithTypeParameters(); - break; + case 951 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= ModifiersWithDefault..."); } //$NON-NLS-1$ + consumeRecoveryMethodHeaderNameWithTypeParameters(); break; - case 945 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= ModifiersWithDefault Type"); } //$NON-NLS-1$ - consumeRecoveryMethodHeaderName(); - break; + case 952 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= ModifiersWithDefault Type"); } //$NON-NLS-1$ + consumeRecoveryMethodHeaderName(); break; - case 946 : if (DEBUG) { System.out.println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); } //$NON-NLS-1$ - consumeMethodHeader(); - break; + case 953 : if (DEBUG) { System.out.println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); } //$NON-NLS-1$ + consumeMethodHeader(); break; - case 947 : if (DEBUG) { System.out.println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); } //$NON-NLS-1$ - consumeMethodHeader(); - break; + case 954 : if (DEBUG) { System.out.println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); } //$NON-NLS-1$ + consumeMethodHeader(); break; } } @@ -9049,8 +8499,13 @@ protected void consumeLambdaHeader() { if (argument.isReceiver()) { problemReporter().illegalThis(argument); } - if (argument.name.length == 1 && argument.name[0] == '_') - problemReporter().illegalUseOfUnderscoreAsAnIdentifier(argument.sourceStart, argument.sourceEnd, true); // true == lambdaParameter + if (this.parsingJava8Plus && !(this.parsingJava21Plus && this.previewEnabled) && argument.name.length == 1 && argument.name[0] == '_') { + if (this.parsingJava21Plus) { + problemReporter().validateJavaFeatureSupport(JavaFeature.UNNAMMED_PATTERNS_AND_VARS, argument.sourceStart, argument.sourceEnd); + } else { + problemReporter().illegalUseOfUnderscoreAsAnIdentifier(argument.sourceStart, argument.sourceEnd, true, false); // true == lambdaParameter + } + } } LambdaExpression lexp = (LambdaExpression) this.astStack[this.astPtr]; lexp.setArguments(arguments); @@ -9182,6 +8637,10 @@ protected void consumeTypeElidedLambdaParameter(boolean parenthesized) { pushOnAstStack(arg); this.listLength++; // not relevant really. } +protected void consumeBracketedTypeElidedUnderscoreLambdaParameter() { + consumeDefaultModifiers(); + consumeTypeElidedLambdaParameter(true); +} protected void consumeElidedLeftBraceAndReturn() { /* ElidedLeftBraceAndReturn ::= $empty Alert ! Sleight of hand - Part I : Record stack depth now that we are at the state with the kernel item @@ -10290,6 +9749,7 @@ protected void consumeToken(int type) { case TokenNameBeginLambda: flushCommentsDefinedPriorTo(this.scanner.currentPosition); break; + case TokenNameUNDERSCORE: case TokenNameIdentifier : pushIdentifier(); if (this.scanner.useAssertAsAnIndentifier && @@ -10925,6 +10385,25 @@ protected void consumeTypePattern() { problemReporter().validateJavaFeatureSupport(JavaFeature.PATTERN_MATCHING_IN_INSTANCEOF, type.sourceStart, local.declarationEnd); pushOnAstStack(aTypePattern); } +protected void consumeUnnamedPattern() { + // UnnamedPattern -> '_' + + //name + char[] identifierName = this.identifierStack[this.identifierPtr]; + long namePosition = this.identifierPositionStack[this.identifierPtr]; + + LocalDeclaration local = createLocalDeclaration(identifierName, (int) (namePosition >>> 32), (int) namePosition); + local.declarationSourceEnd = local.declarationEnd; + local.declarationSourceStart = (int) (namePosition >>> 32); + this.identifierPtr--; + this.identifierLengthPtr--; + + TypePattern aUnnamedPattern = new TypePattern(local); + aUnnamedPattern.sourceStart = local.sourceStart; + aUnnamedPattern.sourceEnd = local.sourceEnd; + + pushOnAstStack(aUnnamedPattern); +} protected void consumeRecordPattern() { int length; @@ -10967,7 +10446,7 @@ protected void consumeRecordPattern() { recPattern.patterns = patterns; this.recordPatternLevel.put(this.tryNestingLevel, true); for (int i = 0; i < length; ++i) { - TypePattern pattern = (TypePattern) patterns[i]; + Pattern pattern = patterns[i]; pattern.setEnclosingPattern(recPattern); pattern.index = i; } @@ -13924,8 +13403,12 @@ protected void pushIdentifier(char [] identifier, long position) { stackLength); } this.identifierLengthStack[this.identifierLengthPtr] = 1; - if (this.parsingJava8Plus && identifier.length == 1 && identifier[0] == '_' && !this.processingLambdaParameterList) { - problemReporter().illegalUseOfUnderscoreAsAnIdentifier((int) (position >>> 32), (int) position, this.parsingJava9Plus); + if (this.parsingJava8Plus && !(this.parsingJava21Plus && this.previewEnabled) && identifier.length == 1 && identifier[0] == '_' && !this.processingLambdaParameterList) { + if (this.parsingJava21Plus) { + problemReporter().validateJavaFeatureSupport(JavaFeature.UNNAMMED_PATTERNS_AND_VARS, (int) (position >>> 32), (int) position); + } else { + problemReporter().illegalUseOfUnderscoreAsAnIdentifier((int) (position >>> 32), (int) position, this.parsingJava9Plus, false); + } } } protected void pushIdentifier() { diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.java index d46caed39cd..403e15bdf15 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.java @@ -20,22 +20,22 @@ public interface ParserBasicInformation { public final static int // BEGIN_AUTOGENERATED_REGION - ERROR_SYMBOL = 139, + ERROR_SYMBOL = 140, MAX_NAME_LENGTH = 53, - NUM_STATES = 1249, + NUM_STATES = 1248, - NT_OFFSET = 139, - SCOPE_UBOUND = 319, - SCOPE_SIZE = 320, - LA_STATE_OFFSET = 18272, + NT_OFFSET = 140, + SCOPE_UBOUND = 321, + SCOPE_SIZE = 322, + LA_STATE_OFFSET = 18335, MAX_LA = 1, - NUM_RULES = 947, - NUM_TERMINALS = 139, - NUM_NON_TERMINALS = 437, - NUM_SYMBOLS = 576, - START_STATE = 1152, - EOFT_SYMBOL = 63, - EOLT_SYMBOL = 63, - ACCEPT_ACTION = 18271, - ERROR_ACTION = 18272; + NUM_RULES = 954, + NUM_TERMINALS = 140, + NUM_NON_TERMINALS = 439, + NUM_SYMBOLS = 579, + START_STATE = 1002, + EOFT_SYMBOL = 64, + EOLT_SYMBOL = 64, + ACCEPT_ACTION = 18334, + ERROR_ACTION = 18335; } diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Scanner.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Scanner.java index 122a8d898db..d570c25f687 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Scanner.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Scanner.java @@ -3082,13 +3082,20 @@ public int scanIdentifierOrKeyword() { //have a length which is <= 12...but there are lots of identifier with //only one char.... if ((length = this.currentPosition - this.startPosition) == 1) { + if (this.source[this.startPosition] == '_') { + return TokenNameUNDERSCORE; + } return TokenNameIdentifier; } data = this.source; index = this.startPosition; } else { - if ((length = this.withoutUnicodePtr) == 1) + if ((length = this.withoutUnicodePtr) == 1) { + if (this.withoutUnicodeBuffer[0] == '_') { + return TokenNameUNDERSCORE; + } return TokenNameIdentifier; + } data = this.withoutUnicodeBuffer; index = 1; } diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java index 777a123d8d3..a4a8ec6fb0f 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java @@ -72,79 +72,79 @@ static int getRestrictedKeyword(String text) { // BEGIN_AUTOGENERATED_REGION int TokenNameIdentifier = 22, - TokenNameabstract = 44, - TokenNameassert = 81, - TokenNameboolean = 105, - TokenNamebreak = 82, - TokenNamebyte = 106, - TokenNamecase = 91, - TokenNamecatch = 107, - TokenNamechar = 108, - TokenNameclass = 70, - TokenNamecontinue = 83, - TokenNameconst = 137, - TokenNamedefault = 76, - TokenNamedo = 84, - TokenNamedouble = 109, - TokenNameelse = 123, - TokenNameenum = 74, - TokenNameextends = 92, - TokenNamefalse = 54, - TokenNamefinal = 45, - TokenNamefinally = 116, - TokenNamefloat = 110, - TokenNamefor = 85, - TokenNamegoto = 138, - TokenNameif = 86, - TokenNameimplements = 134, - TokenNameimport = 111, + TokenNameabstract = 42, + TokenNameassert = 82, + TokenNameboolean = 106, + TokenNamebreak = 83, + TokenNamebyte = 107, + TokenNamecase = 92, + TokenNamecatch = 108, + TokenNamechar = 109, + TokenNameclass = 71, + TokenNamecontinue = 84, + TokenNameconst = 138, + TokenNamedefault = 77, + TokenNamedo = 85, + TokenNamedouble = 110, + TokenNameelse = 124, + TokenNameenum = 75, + TokenNameextends = 93, + TokenNamefalse = 55, + TokenNamefinal = 43, + TokenNamefinally = 117, + TokenNamefloat = 111, + TokenNamefor = 86, + TokenNamegoto = 139, + TokenNameif = 87, + TokenNameimplements = 135, + TokenNameimport = 112, TokenNameinstanceof = 16, - TokenNameint = 112, - TokenNameinterface = 73, - TokenNamelong = 113, - TokenNamenative = 46, - TokenNamenew = 37, - TokenNamenon_sealed = 47, - TokenNamenull = 55, - TokenNamepackage = 90, - TokenNameprivate = 48, - TokenNameprotected = 49, - TokenNamepublic = 50, - TokenNamereturn = 87, - TokenNameshort = 114, - TokenNamestatic = 38, - TokenNamestrictfp = 51, - TokenNamesuper = 34, - TokenNameswitch = 64, - TokenNamesynchronized = 40, - TokenNamethis = 35, - TokenNamethrow = 78, - TokenNamethrows = 117, - TokenNametransient = 52, - TokenNametrue = 56, - TokenNametry = 88, - TokenNamevoid = 115, - TokenNamevolatile = 53, - TokenNamewhile = 79, - TokenNamemodule = 118, - TokenNameopen = 119, - TokenNamerequires = 124, - TokenNametransitive = 130, - TokenNameexports = 125, - TokenNameopens = 126, - TokenNameto = 135, - TokenNameuses = 127, - TokenNameprovides = 128, - TokenNamewith = 136, - TokenNameIntegerLiteral = 57, - TokenNameLongLiteral = 58, - TokenNameFloatingPointLiteral = 59, - TokenNameDoubleLiteral = 60, - TokenNameCharacterLiteral = 61, - TokenNameStringLiteral = 41, - TokenNameTextBlock = 42, - TokenNameStringTemplate = 120, - TokenNameTextBlockTemplate = 121, + TokenNameint = 113, + TokenNameinterface = 74, + TokenNamelong = 114, + TokenNamenative = 44, + TokenNamenew = 40, + TokenNamenon_sealed = 45, + TokenNamenull = 56, + TokenNamepackage = 91, + TokenNameprivate = 46, + TokenNameprotected = 47, + TokenNamepublic = 48, + TokenNamereturn = 88, + TokenNameshort = 115, + TokenNamestatic = 36, + TokenNamestrictfp = 49, + TokenNamesuper = 37, + TokenNameswitch = 65, + TokenNamesynchronized = 39, + TokenNamethis = 38, + TokenNamethrow = 79, + TokenNamethrows = 118, + TokenNametransient = 50, + TokenNametrue = 57, + TokenNametry = 89, + TokenNamevoid = 116, + TokenNamevolatile = 51, + TokenNamewhile = 80, + TokenNamemodule = 119, + TokenNameopen = 120, + TokenNamerequires = 125, + TokenNametransitive = 131, + TokenNameexports = 126, + TokenNameopens = 127, + TokenNameto = 136, + TokenNameuses = 128, + TokenNameprovides = 129, + TokenNamewith = 137, + TokenNameIntegerLiteral = 58, + TokenNameLongLiteral = 59, + TokenNameFloatingPointLiteral = 60, + TokenNameDoubleLiteral = 61, + TokenNameCharacterLiteral = 62, + TokenNameStringLiteral = 53, + TokenNameTextBlock = 54, + TokenNameStringTemplate = 121, + TokenNameTextBlockTemplate = 122, TokenNamePLUS_PLUS = 2, TokenNameMINUS_MINUS = 3, TokenNameEQUAL_EQUAL = 19, @@ -154,60 +154,61 @@ static int getRestrictedKeyword(String text) { TokenNameLEFT_SHIFT = 18, TokenNameRIGHT_SHIFT = 14, TokenNameUNSIGNED_RIGHT_SHIFT = 17, - TokenNamePLUS_EQUAL = 93, - TokenNameMINUS_EQUAL = 94, - TokenNameMULTIPLY_EQUAL = 95, - TokenNameDIVIDE_EQUAL = 96, - TokenNameAND_EQUAL = 97, - TokenNameOR_EQUAL = 98, - TokenNameXOR_EQUAL = 99, - TokenNameREMAINDER_EQUAL = 100, - TokenNameLEFT_SHIFT_EQUAL = 101, - TokenNameRIGHT_SHIFT_EQUAL = 102, - TokenNameUNSIGNED_RIGHT_SHIFT_EQUAL = 103, + TokenNamePLUS_EQUAL = 94, + TokenNameMINUS_EQUAL = 95, + TokenNameMULTIPLY_EQUAL = 96, + TokenNameDIVIDE_EQUAL = 97, + TokenNameAND_EQUAL = 98, + TokenNameOR_EQUAL = 99, + TokenNameXOR_EQUAL = 100, + TokenNameREMAINDER_EQUAL = 101, + TokenNameLEFT_SHIFT_EQUAL = 102, + TokenNameRIGHT_SHIFT_EQUAL = 103, + TokenNameUNSIGNED_RIGHT_SHIFT_EQUAL = 104, TokenNameOR_OR = 31, TokenNameAND_AND = 30, TokenNamePLUS = 4, TokenNameMINUS = 5, - TokenNameNOT = 66, + TokenNameNOT = 67, TokenNameREMAINDER = 9, TokenNameXOR = 23, TokenNameAND = 21, TokenNameMULTIPLY = 8, TokenNameOR = 27, - TokenNameTWIDDLE = 67, + TokenNameTWIDDLE = 68, TokenNameDIVIDE = 10, TokenNameGREATER = 15, TokenNameLESS = 11, TokenNameLPAREN = 24, TokenNameRPAREN = 25, - TokenNameLBRACE = 39, + TokenNameLBRACE = 52, TokenNameRBRACE = 33, TokenNameLBRACKET = 6, - TokenNameRBRACKET = 68, + TokenNameRBRACKET = 69, TokenNameSEMICOLON = 26, TokenNameQUESTION = 29, - TokenNameCOLON = 65, + TokenNameCOLON = 66, TokenNameCOMMA = 32, TokenNameDOT = 1, - TokenNameEQUAL = 77, - TokenNameAT = 36, - TokenNameELLIPSIS = 122, - TokenNameARROW = 104, + TokenNameEQUAL = 78, + TokenNameAT = 35, + TokenNameELLIPSIS = 123, + TokenNameARROW = 105, TokenNameCOLON_COLON = 7, - TokenNameBeginLambda = 62, - TokenNameBeginIntersectionCast = 69, - TokenNameBeginTypeArguments = 89, - TokenNameElidedSemicolonAndRightBrace = 71, + TokenNameBeginLambda = 63, + TokenNameBeginIntersectionCast = 70, + TokenNameBeginTypeArguments = 90, + TokenNameElidedSemicolonAndRightBrace = 72, TokenNameAT308 = 28, - TokenNameAT308DOTDOTDOT = 131, - TokenNameBeginCaseExpr = 72, - TokenNameRestrictedIdentifierYield = 80, - TokenNameRestrictedIdentifierrecord = 75, - TokenNameRestrictedIdentifiersealed = 43, - TokenNameRestrictedIdentifierpermits = 129, - TokenNameBeginCaseElement = 132, - TokenNameRestrictedIdentifierWhen = 133, - TokenNameEOF = 63, - TokenNameERROR = 139; + TokenNameAT308DOTDOTDOT = 132, + TokenNameBeginCaseExpr = 73, + TokenNameRestrictedIdentifierYield = 81, + TokenNameRestrictedIdentifierrecord = 76, + TokenNameRestrictedIdentifiersealed = 41, + TokenNameRestrictedIdentifierpermits = 130, + TokenNameBeginCaseElement = 133, + TokenNameRestrictedIdentifierWhen = 134, + TokenNameUNDERSCORE = 34, + TokenNameEOF = 64, + TokenNameERROR = 140; } diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser1.rsc b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser1.rsc index a251e98a525eb8cb4e4a37f4a09de92276ee5dc9..696ea2979cef959fbbe9856e3b71a40637ec3f00 100644 GIT binary patch literal 37154 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 diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser10.rsc b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser10.rsc index 888459e4e2aaf4b62da931d91f3524c671e06642..5622265ed462b7c28880b327f2a13d37bf232119 100644 GIT binary patch literal 644 zcma)1O=y!*5ZsyFQnViIp(TQZBEdt%Ac}<^61>zO3I-JdQt$_hNCcHAScu@oB6t%~ zTBIbHAXo}DClTsFEus>vpn@J+QK%vmDpZL@sqXts@hZdH9cE|ey~i!wpl#ZQJ-C7q zJit>dGpj`{T8kxYo9$V`-ITtmQS{`sYenDNaXanxmg^1l^0Mx74B;xun8GyU?9-!;A=jpZf+_9NF6?7n zy0HrDF^?ZS#A7^x4Da(Rm-tIf`}BbJ>!21mD{+bILrLi~@1OOjotL;xN<7*u^R5;o zWy3Zae6mhb=5v}D%5^D8%~214LM4HXt|xS_ z=Jke-I$P9+E*Z386ZQx*_L`Mwr{=!@K}p7%{%}*kOL@~g2_zj=%($B6Nl%Uv{q~&Z z!aG)=3o9&id+W6%U%Uo?4b^Bf?UQoTm-f8MUmj^`R70K(*nt1hIol;`o5K0WB>e|= Cq>$qP literal 640 zcma)%U4+zO6vofSCAD$3=6oG1W#U_Wb|5>9+UhJ@4auJn#E5$!*%DT{wV? zxPixbjt+;kpam1#YDpX79-K!F4|z_$v6ln7)4DBT`z(v&OlXhxa9Uzm$IG1LC;rj9 z5|fTL?Wmp5CU#+z$}Hb;uRu1)r1J%9(ThALa29Xy0iV(47{^)Qd$#lpXLL#{HfHy1 z+Md}9>63$U1UvYM-?gH1He#nePDvjIctQ6&Mfr(KD4~g2ZsDNjoT3&n8)nedKm%kr zBfAm9X0))xV;td0q}bphfAP0c2lcQH>xAaHAb~a{sZagmeQ0 zt9r}TqPF#icC>9ZdxCj;#Y!|&_rCw3EVb4C@TQR0GPkM`uDqZ-Ynz2fhUNV{8QMMt?bs-c_ZEayLT&GnM8?cx5XB)tqJ C9gkfA diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser11.rsc b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser11.rsc index e1f74c603f80bcceb092e10c9f1e0ab6932665c4..be811ebe84efbb4f401805f635bacb2bb7fb737e 100644 GIT binary patch literal 644 zcmYL`Pe@cz6vn@EzB9OaBZLb#LopOmAe38YF$gVZQHvmiqKJk9LxTPx2tzS}D2h=e zMT-`i!a(3-!Vt`0C~OfnNJB#*)ouzTV^#yvxuYUKxaZ#U&OP6E-bDflcJY{G;JZC| zmy^uwAT>01@>&dWFVBo*q{b9`bq$f%L|Swj=+-QBTe_eNyy@Dh;K0fr zd(attxRVYp`l-irDQ;Ln1~?#jO*-o`=qecu<1yyF^9OuH9rKcq4#aZQ|4Pg&9BMm> z*$mOxUMp6$&(1g7wC@iOR`3=T zyhjx^e8nby$YJS~<5HJRr={1zJR0jOp5j@a=L;@#h40YfZ~oyw8?kAh@~OSCy3h3- zzvPe<{6!0TM@w4b6MGmYwk7o8Bu?ur%lv8Me(FP37Il(e`~@N_%ACw;(hfQ~%W0P# JaI%)wjsJDqj9vf$ literal 640 zcmYL`Pe@cz6vn@EzVmP~!+l}>`$Lfo3>eD5 zK!LSs5h;oUO}v7zm>DqzF6_T6{-<_Ut!&Z^TXh5r4MXICh*|cPJI&{x|wB^x0?#40a0n66q z4A~G5@raz%x@)?(w4|lyHNVdv_xX?ex_``N?W4TNsc+mYr?6^Y4m_`X@Jj6U+;0@m59jf?< zPpDxHU$Kd8e3!Hg$YEKREvK!Q!#w&*U-LLm@hs=j=6i1QCx5eTH?8C|&f2mye5z;o zC4DmKe{)iA>5?w-iIu~=7Gn^{a6+Fm<~N)2(;#wE(GoxV>vvf}=44J2cEB025$(35 JGi<}U_74hki8=rP diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser12.rsc b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser12.rsc index f5b96cb0f5e97c088102c687469058ab97f7cd68..c7f0a0906f858a99ac28d7176c9f2495c29cb218 100644 GIT binary patch literal 644 zcmY+COG}ke7=@n|g54(NS4Yo>qt2)%5m6WfQc{B;qGQKPM5xeBRHzITydVf3y3r)0 ziB?)ijVyC2bOC?Fu^-V?B53XH;RAUlo4wz6ziX|%Nl5s~eF`+x2s_`oOK**Y(b`Gs zlZ2t{q_ESgBAbk=LTaAS&la0H7ppdWZ>UOKlW>|->QgTxs<^r-(!eT5P3TSahGDf* z<_5E@Fh(7F*snax<~;v+#B6r+OI}!6!F@lt$DLjJk1@E*Lv*O3zG}sjbL2Fql1dyh z!#w7pRrlzU+SD57SE=%fZOy1fWliZM8~m}3pwvCCnPh^XU`(mxj}a`4Y#JFnV# z3)i{Awdj13X|B>{pM8wDzsXsz+HFX$>?C$_$kXmuO4*9e!(O}V((Jv$|4OpIldV+z E58E_&#{d8T literal 640 zcmY+CO-oc^7>2JqG*H@^Lvd{m&-;Ab_wyVQ625bj0&NXKnT{TkkklSps&bW@ptX207S&4HJj&N9I4Kt>i^E)DK)Y)f3b*d_(>Sme& zs(fOCCU(%OJWJ*Tf4EOI>->UQ_fA>k2G^|ZU;X>J`=5vCP({_X=*c;9dZm&|>^7r3 z;GT7t)vHtLj`KH|V@p%&(i2s5h*f@BMbPOAXHY5Ph=;0kN?Nf=CX8&EaVfEJQ>QIYd$l2CquvPq7KX;z(f;uuY-Y2J#24 zNNuY>!SV`A-|V{H*~x>u+45fyzI&y?Jtnq-Ayb>R%P@phR*kg1ZI-^9{aQMs7 zWXx=7@CwQE3OoL0oXAKODiMj7^40rc|<_Gmt(uu_Zk>zeoCSaRWg_Cdabid5I;z&nRWe3Dl_N zOQDna2T~kho9Ln|eTM;WJCvU6%f!4B7WeJR^Q`J4Zi(8dJdugQDWBtoR!yDU9qU_L b#Co{YRRyD7uu@HX)hG=Ib literal 640 zcma)4Jxjw-6g~F^3gY5W1QAkPUSEoeOA!Y}L_$ZQ5a?9!x44wz5IRZ0wS#6Y^bcg{ z?5@ASF_S~jP4Y~}avE&Fz%_jxxxyE=c)>WrZzl4y?CBew{Mj`pX9L{_+i#XTNyiV<#*`wom*66}u+XUkc! zR?j?T6;`!ZJK~HXyXP{ejsx9*^l^wI>6P1iB|pX!1OaCm%8Ktb*8ILBlR5PlDCAF} zd)NaJ1~?|V=t{rDCA(cnPX;nG--N?+d+&U!_JB8_2d#oCc{gUaF2+0k YZ-FtXW~*-1Uq{;dFJM-)>Bd610~JeYh5!Hn diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser14.rsc b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser14.rsc index 5e03d035736d5c156872a204c8b7c3c29250ae5e..5151401eab2992cc7e43bbd77fac978f23d233ef 100644 GIT binary patch literal 2502 zcmZXWOKg@^5Qb+yp)JxzFt)VCVky1S{!kEV)F815kZ6n-Vg(FF2n#hV+`CibPJ<*W z8Wds-)rfzH2{9(scw4A#iPQ^C492j~iWj18T>89o&iA(si+SgrIrE*{oHOS$^Y^UP zJ~gv$vtrc0vMs(Fs}~s(`svi}<9G(J$NUsn!J4sYaKzSuV%5xNyh(P(m8HM9!?qAL z%Q(a6DP*JVwh>=hGW4W%*h}a^{~HurZ*OFaHs6Y;*{^^t{uj8${{&b2AK;DtJ6Pv? z!E1#6Fl?z`2A2e`4eSbB=D*=@2&@lm^*KDN0^9v3cxPaT(DyO#oA8~p{Tj1agHL1c zvNPhgtGE_iOUv!(p`wHKUtzBxBgpzzi_L+IHA+?vZdVV-@;J)kq}AD*=>E)K&swLekDZcVt8Ov3 zo*F-&ty1fpv!^*y-nXzyEne|$aRcU~QcUG4@9{T6Y%|j_F?$=?88iG1mz)dKh1~t4=)P4f(E`ZE(&{&6-L!H8it`)y+-!*NXn4FK+Bb|FP&b zRlN@otl$aHGSVbjS`zwR+E3b^;G_5-2qskB7@&35+KFiQ3-mmOzdNeKLeD_7RxEw*Gl#fhi6#y59j zb^B}JATiTuWpujeQmsnp$Ky4dj_P%ne{F5?XD{4uO{GJH-iU_yV?55mu6eY1M7gu2Jmwjw;nJBVGhMNdard3s-m zqjGPwaZ9YqtC_i1b4)e0@xrt+EAng4MUA+Kbr04B^xepEq>VAIk1=?AY5N|ZPAvD2 z9V#o%p}76ZiK^PXm7-Ers$AtSt5{jddKXl+o?71r7WF-Esqda#@pNNU?KFerFZ(W| z$}!ZhDnc1Izmk$gp1hNFH!3TBOYG<{8P^|(_EN0e*Tj=AaWHbje-3{?jl_;3Gx~3l zz?y<59P`x?*A6Nhx1}6$X0#Ta9khQE8Q2~f_zrtHqCc@0(fZ>;Q{mG-e+>TynLxfk OD)u4x1ad3#zS;k=SZc5U literal 2492 zcmZXWTZola6vx;4yo_UJQ<*c4w{b2_GjmSq(1ej#f(k`+kxq^wq)0?a@4Z&^q6kUR z1yhL9A{(UeAsC|@WE_=d%BkprU{|ZjUV88MU;EqV%;3ZNum4(m?d#fmeV>`XYaRBn znf00#clzhn@7u6$L@Gi*p4$Bwo&oHd9|bE|lXeyyu^v!ttmKovNOp;B**d5sFzu{jH*b>;`zv5{R?DQYtU4biwzJqnIz<17eYR+OgKFz(= zPKevqq6J(-%X)OB=%oD@*h|O=GFU7TT5Is@gD(hvU2u95b8T?VVv6*~(UoE`_$ks| zTn(yMrC1oYMynKaz`AYn`Sd_+h%+OfzLOlCA%8V|Su0EChiM7F&%=5Od6Jk*_{ ziKuD&#Jm_v?O9vZPL`1uX7K$sog@50*^bX%F6U7O>o(tBN8eQP*GjFM)z2x(uU#)S zx9$d?D6On@$2re3Qr`l5hnJI2%%>s?%F8}ZL~RMHaT^%bM}0A~yiG)dCEHGwv#D)E!^(Yf542Vn zz5CK0X7Wbc1hdBu%XvzRxiV{xlGdWtW}l++3gr*m>ct@Z8D85!$~G~zxKnT8U*}(7 zZ?_iZG_-Owtg{P?)0XykY=_R4s%M$ouq=DpjwTlI(~*I|urG3!#*G$A#>-w++Za~T zy7Al$+ZDKnIev<@j+4>7_!UYV~5nrhb+zV)b&<`?aF4=#3Zq zy?F`b89|Dk3ZC%$VQqx6AgB#?ve%-^)EyrIIJbNI$?TRJotEb>z3pC$J@Nra1Am z*64E=RhL4hy;$F%??DzKL=@M=Y-DR!QTTz|U3X(sM zoul#`8dtR-$2E77S!Bppv+vgU8@Vmcb}hNiCoGmvIPuh)I2c*di>&!o#BM?+@yRc? zD0sq}>w91GWnepUd&(BKMSIb$LHkFMfsK)Yudx>*`u}D;Is%iWH diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser15.rsc b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser15.rsc index c0bcc283cc1a817c5f4a66ca7d14aefcb6b55bd7..6c7c1388f11f4f1cbda6de9d17cc31d6966594e7 100644 GIT binary patch literal 1656 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 literal 2500 zcmeHI?N8QK7{0Cpf(QwcJUkC7`~rpYtsWa zVGA~6Bc@;?(h{X6(dx zyn#0n!EVGc2~Bt#4`G*X&GL5+;}aagQGANyIEGU=fexHTi+r}C6J5IBjxP{rtzzg= z6uU4VPvCp>;Rk$!ete7b_zsuwH7-c|BFV+e2y*N|8B#EQ#hH^IF+|@I&bG~oXHu=><(F|z*GE( z@A6M(38OAPix;^D8@LX&d=4*jEnec^I?rJN|79Tyg#umjIgPc*Is5Qf=bL` zhU5{f)il|i+< zC=QQ$oB3rUBF?!a9>J@^Fz!a+H6e9Gu@)$nReW0PuI542Xu@-s;wFo)2p5O{#p)8F z`w?6C2kOI9RmvcK{UN5^$Zg*qR z<#Jp^U9(=Xf6nc^z<$;CMK@8sw@)m_)nmQ#HczuiaTh8F<8zSp;?|-*FL|f1*{bzj zvXY82RPnG!E#E+F#rlBwV16I3x^dbhRa#?zt zav9aVKwLDlpBJ$PQCI9HAx{YHK}`N_7Ri>a1~p=eFQ$aMrtfZSAXau~rE?chgmqZOS~~ zeEVAKR<=7)BR@M>qqQ<-El-HaRJ|h;yfw3_sM*0U?Tt`P7^>#SBy%i6j1vcEwewlB z)TCm-?hUdDL&CeszgHo$HNL{lZ;YwJAf~%l5MmjAx8DX;>LMly%OQEJ9+v7Yit%-C zeL$;ivK^>nEQ@Z`$Wpm9V_5HFv)8Im^*qGocIpb)qiC1WI2aTL#&NmcjPpWAXI#OA v3$&VxNA$}eP2HJlmZh^?kr)QcrL|W$bZ~`OEMuR1#q_g%{qH&g9)bS=E)a)i diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser17.rsc b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser17.rsc index d4988da19d276d7379c9787196e1b6a45802e974..3e768c26c481da0d6b0d46bc056d8c10968d638b 100644 GIT binary patch delta 51 zcmdnOzMFl*|B3%{1ejSF7#W!vA%K~gadH{sZcZj zd`q8;JRPu#)_;q( zDNGrMdYLdpY7D`??F=ziw_!Gh+*AogUf0 zrBR;PuIF)>@xe?Y=E< zk~b%jkkJzfpRXd}zCJO|yRQ=GW8|3z4$*EqL{^Kcdm2?m`L(IC=4Jc2`ZEO%ifZRZ z@Eh}Xd~T}RL9XY6Z_9V&yYfBxzWhLbC_j=P%TMH|t@+?);_Y>W^x5X^CjqnN4f79B zlO6C6(}xd`K|m8v0Cqb6wQ)nDjAPQ@~o1~ zhzy;78@i1!^O&?~#QcN#(oxX$PC2HW`O<0Yd}*RKkQI$Kj|IC+V0ZL>^WJ=Y%!3SU zyC3>os>Gw9&11cr$Yb(&HkPB2SZq9G^nGQj=$z|$5Dka(#cebniN)j?mM2O-9LC-8HUf*==*~baM?ts$34DREOT8QFN9W_y z#{yr*VsW3|XwggFY{hI;Xk;@#+SGWtzE6+Ui`huj)_C^grH#mm>tlJW^yx*5UXa?A z;ouxOi?t=%S?cE~ni+Q$X6Q2RE zn@x-{uHkl%?89Pmny|!KoP_lpYpg@n+o3SdnLeXzsTL2y?>6IpSm(S;eSQ>b9qTVw zf`*G0z3u7>>#}@SKBsLyub*hqoS38y5(Y2}6S*nOyf2kA@6BrFUFb9R3)w$lt-*>B ztuz0fh4rE6eql3$wzU@Mr9wZ~d$WJ{3g~9yVNLdrYoE6LOGn9A(39I=Zvv|~D^}mt zJgnWOeTs?2;{gvS9>mf<`6MdT1 z=u`T6Mv=_4XV$b6y*t&t^v%*Q@nw%H=b@8kB%%=ktxXllAM|Rh@crUR86j?0NL%I-n@;Kx!mT4AMoAf?E>tm!7>j&ctIvY`=Dn;mR$#<6^3Z8O3M6DNuxC<0hS1tF<-$F=9sO91lOM4#?1v=X))2AaeXT%(xz?(3nl< zL7equ%<{FN+4NZVg-2?20x$kh?-`Gzp9ltZgxSxO&&SFwjiiFEkmc0&4Akj^`!TDCX@i5qzHRA)q3hSD83R8S>fX!HPQ=mqTP9Zx}1+u_=WeN{Tqa#4;O>0k#f(&0Pj6k-{I{a%nxq^8(4#U7=v zk9|L2UuaITQkTA=*e%xDuiaK{(v0if*Ke|6)XY37KYi|8UIS4S006tVJdzLUpYW?QQfz$3DFOxwanHKN5!b zuZ>6c&+KnZ|I3l>$Mrwg(T~GF8Lj_u_8Z&(q}Be{v-l5#>h>ot=lIXF>i;vHIbR;w zo}J6{Xb=9~YIcS`^YGg{S6dGcY41C)tfybD_C;8^4DY|Gy=Sw$ooBS2o&$-wmR~&n za=)c{ig~CN&RB9ac1t$WewB?m?Jp%B zF{HiWH;;Nb+wX+&yZ$^|A7ytdnMJ%^WZmfD?@s;b28qqzu~mMUz{G>G_%xByR1+joyVhLtr%Z^ zU)1i`#rcfO`&#Nv7eeZJi7{G zmp2d5Lpm0__n!Lf+8=9?msg9L{dUi_P`^!bC7oq3DW|t?Jvj68YPIRfq_CQyq`Rr< z+%xVY+iZ?2D`dOcIfKn`B1!aWf7`m>u0&o=FwOP*K(BUQ#LgM&qm{yWb;`C%n$>oP zXi?vlwwO*Ye#+C&=Y>alISo5;r{T1SKRXFGUXwirD}G|4{<}#RJ-Pc#?Y!7BIa6!r fnEihNQ`1Y7?oZmjIX~83Qkm_w+JEVmUbXu#Xzmds literal 17524 zcmeHOiFO-F6@6xr1A?&!up-&YjGTDvVc+*f2#kj%o*8!HG5cl+5SCt@YJ#KHeci21aUG{E!kGO*X$8{6q>eiJpf{19s}z`wuO5Scfx!K%zv@J+TZN&_MDyA zxlQMoFETK11e|2L2h5zYGwoap^CoyEzp_p@o+k^Kp?HqD*8%g{d@h%ddAia!$kS@y z5MPmHTVPpiKLyX|!83Ni@;|_`drcQ_UWa&{H!mVC`^7b2do=Jo2;S`R*S9y>n}K|* zL;S5q{4b1{&+#H+#^3YM5E1VJshA(zKRX~!Ge!^57c&Ni>wx%n3GpGkB1LQ+5T_i! zynuMMAIDs5^9&)2Gly*>hrK1qeHO0w?1dutkqdeib2*!sua@6I?qmix|hTp{R>I^@$@7nk5`}PC-q5a5yY(KG|+RyCg=ueG?*`LB<%J81; zh%sitRq~n-RG^8QqlLI8FI(Ux`rH6M$H?Yi#$k?qRH^IpD&?BW2$rkVev*mGeTim$ zl*j_-Yc0U)MQe?c>P6Pwf)muMbr#%(yxJb5RQ=SyxQ(yqPp38hRBeF+y9etZ!uqH7 zV1@N(Hp58O@h6$334oCn29w;Q@qzjU^oOsmF z5+uwP&8(C9$$m>t90@A`twTiyh5}E0aA`ly)8~9TCYXV&}gD38VOb83}WN zM{(QCM(Z47)!EHYE(;00q#F`>+huqxS0enZik-S#kaFU?hNd}IIyQ=3%Bs547717W zoTIOzbM%ne+u&q?*csX+Ar9Bqr zWntx6t#f$?Gs60J*FI;ThwK+HuSvoA#@c;FYU5rhKlZVj{)PP#+J0rfw%_3UxAr^x zz5SusYdyST7cj+X*$lmhfmxd~i(6}vjFMcCdfON~1}n}U4HoI)SM|=+nPT-K`%|ps zBa-PH$x#iGvjoY`0w{&okWRPWm2=^+GwL>u>^JZn8iJslU^xLr9)jKtM@9`4n(-%~wS6q_-(_&M_?s`d54 z|9PIv=DG)VtKyvbI{g1e@c#k)pBOg~57OO(=4a=+4Z8bA0!8dEDL!y6*wE?6exo%)I4M1|-3^cHFrZtCtQ zej@*_(@or|ZlN0^vkZf7#*3cOknfiY|Hjavxqowx)tscdDY6kb83OY@emN)9Exvb) zIn?1^w52?J3`T~)@+3agZH1pGc7}NRqZV;j@x7?K2P=8Z-wPI_?iZn3UPoIFftyWL zmvO@98q1sv!FQTZ81pq93!9bbd52?#%E(}M48$%V&`9@JqN&8t^YKMO~%D(!prs? zdyJpz^TKM~ihE)w7jFN$T*i|LRTJ)8b=5@P&sTL)(^j5d(SCfc5xU4j*d`sur+@Ev zke^_Dow>E;k27e`AEmqCCwm=3B ziX57*Z#X;VXTA}^{Y}jO{dxXpO;q)9+|2Fka;Rzx^?6OiB`TrUtsZojbAMe;WZg<} zQ#Wy|?U!nKs+%=2)t$phs+-k2t`ja7_oSqowu_u_WfpOB^;yq1M1qvos;Mo@x);}z zIh^F`)>|>|CmgpaZu+D9$*jc5BJMVvMBQah%DB1W%E7JJ;W|k^?+aX|xVbCR-k@rgvW%PSNyQG&XVQFDcWT8Przd*x>AfA?@L5J^H5bxy#3Oe^vO0^JfQTdFRhhB$jl*s-ePFKl zL0TrQoYhZtIDhS?_#RfwiCj(b6qhselPGyH^+qpPUh#0Z5T8gFIUCvF4GxF>2u~OC> z_Xvmhtk0-kQ@D#K$9z{LClb&tX=k|3le&}LGf&@tzE=~=H|tA6-STxF#lEz>`VZ%s zF+MTo-(yB*|gn|3?r^iE=B<57Wj$POIi4mtm4AoT5GgK3~d}bCc(gbJO+w$foWNu5wM%)d?*zl;# zi=A}u=qCaFWJeq;3jL_MVsgjs&pmtxlE=Ky$iL%gyt8^V?;pSOB>!Z8o{O9nS2>cj zblGD0^Q+H|1d`W_J?rhtUOBVM?L~cyv*$f;WHM*GoIcdKjtlqhyk4ugiduXQ{MP$g z`d7cN;hyrR{^dKue4@u++;!=H5b~T%e((1r9bl#*{H}UcR zPpGH6d{e@A{d{&`eX>Rk(iWvPn*3gw|5^KEm?`gV6?5i2o%ZRS1|$->`>KpupNF(@cKq<} mxP*eE%E!rt^ep;(-S0HJXdYy>EX8r+SoqO$EK2_0w|@f?d-+BH diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser19.rsc b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser19.rsc index 89d1f990f99f33c1af2662f7c165f3b816c2ffec..d63e98d5514506f326cccc040857f029bcf17a3e 100644 GIT binary patch literal 644 zcmZvZ+fD*O5JU^3pssgi+*MFk0$;!vkQgs08Xt{(fR{&kl1D$BQ!^~Y#8l?eJyq4+ zyDIb_W|}SYxx(UJohwDIGcZ;O$17+`T&Sa;s7ZUS98OX<)#RlF*AWH#09b3rbm3)& zor;(r%5b!DHorxt5%Y=XoU2tG_SIJpxXT)EB`+namTs4vulQ<);krRr(L2p#MZm|q zl{N6jy{cG{>ku`-klNri{#UO*t=Zoj>L(7kAjX8I%*bfSZpe+e>G}dbtty7lZz4VIB)+GLtokzI z)$;wskuwDpM9Z7S(VRa-jwd*B1xM`(_PG5nqY?J8L+_dJ%$Kw+J2in~oxSzc$?=7E zeBc~sIK?sfM>xbbwy5Du>i}z5#RfL9jyWe9{XtDu`lkF7GwvYG3~#oNcDltQR(M7- xBksA$9Z$W&1FkJU=Y&&sRs0I;Ph7DaE_q*0c8U~dcwsc=+of0Y%p|zMi@%l^CqMuI diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser2.rsc b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser2.rsc index f0508b35adf25d49791ab6c741ad7ae9baab39e0..0a6175d5e0267c29717cec164003c8d53b6eac2d 100644 GIT binary patch literal 35244 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 delta 45 zcmZ25m2t-u#trO@o4FZ}sZM^ZW+EEEkjPL1gsBWg40#Mb44DkY3?-ZE)RmM0Mv4sL diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser21.rsc b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser21.rsc index 4bb3eea637ebd5a2dbf16c33a40c9a9a4157c2c5..0d651c0230be335e1c81fd56d59c43c6591a694d 100644 GIT binary patch delta 59 zcmZ2reZzW#E5}3uj>)lt0uu!sCihBmY@W-pgNe~`vLClOqvJ$I{mDzY1vanczQGC< Ps}po*blkj8@DVovLc0?= delta 56 zcmca%y}){dE5~ME4gu!LsoVw=1r#R7a&t^R%gwR*F82l2$#0nyCZFY$m^@cd0LV_5 MD6nEPukdLu05wSzC;$Ke diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser22.rsc b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser22.rsc index 60e27b7b25a4aeeb6ace2f8564af5dc1500cd148..60da9de8cb84a768b854ed30acc7dc77a44bd9a3 100644 GIT binary patch delta 27 lcmV+$0ObGd2Ji-u$C1e}k@v8Zr2)E=VFEyrFa(pK0?WlE4DkQ} delta 24 icmV+z0O$Yk2J8lq$C1S{k@>EZsR6i?Ujjmtr2@;LfebJJ diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser23.rsc b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser23.rsc index b39d3a997af24a32a5505ff9c9cbb9424d5706db..1623902ec44eb39615a121c83e838cad36cf4e52 100644 GIT binary patch delta 42 jcmYdEnP9J4%3#8v$iToL0mPC(EC$4WP+A7e1Bw6uagGCe delta 42 jcmYdEnP9J4!l2He$iToL0mPC(EC$5BP+A7e1Bw6uZ;=CQ diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser24.rsc b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser24.rsc index 139d1d5d5bc900ecef3b27a65ac6ebebea669b9f..28bd6c8947bacd85ba1da481dab7261deb915f65 100644 GIT binary patch delta 32 hcmaFE_JM7~ea6Xm8RbBDqQJDt_Zej-3MfFRbO7de47C6N delta 16 Ycmeys_J(c4ea6ZE8D%#AXDnm{07S9}O#lD@ diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser3.rsc b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser3.rsc index f752e5770656b01daf5370248f7cfb4845a1ecc9..6ce99f82ce49e9c18560c76b478c1b0615edfc38 100644 GIT binary patch literal 2498 zcmc&#Z)lZO7(dTB&vOo91*N;2A?TFBHt&_LBDX*q(r05=^XfLgWRMvmCWJ7X<~FA# zI2o;7W(>1$dND;)@XxGd!|N9*x;H5ezo^evTZ;{B;becvl&~sEmGpLjzG>gjIecb8{ zTWo^z=79a&9yI--&P}JBbU{njjzQxxj8*0h%me0C%sXj|9g&o*Qak)`C^CPR4TKW12@=M5nDTh%coYL`L}C-PP9W`KejD(;8)|$Le2nthB2mr^ za5FdXS^t}4`JDg7-ww0EIS4Ovu3PPZyrhqFWibMe&(!<)-o#FnKj8+S@q6Wg=g?0% zC7#do?C(4n8dS1GILUq7XA`h~A#!9Z<@_u=2F|PYi1Pb-#4qjZO*7?-8SzN8o>k-uD^V;cxS0=)G(R@kwgN*aR#{@)tJY zGyENLIN?5p9=ve}79xvUT-8&3oXE`odJY}E<|MSJ9YEc6t6smFe})ZXA%e^vk`}yk zJQ5;^cFMYNOj3S@*=RNpBQ}G6Td0ATdHW{r6lO&LH`T8`9xLwh8T~?p2lX47u+81% zyUOWqhMG`=(^{G7Zo&6QA`%BWQ3OP4(u>O#N7+%sGY z-d^7m-j-P=iwr*Ot9-SucPl9GlD?W&1J%PkpYpO0`wfaeECPo;V(;q?joXW`d|WF1 zb*YdF*8zDMP9jTnY}dDBk*Sb|XhVO9D1uz!+Bu1_((R+X#+q7ryX!&TRlAiy>zLwU zI!z}~`5t_|=9KF~mbBno`__4^7P~4`+*Z4Nf*MhQji|jA)LtuUZ#TsYHK?_yHQDkH zPTW-v^~!uDS*M*M&o^N0je?du@~B;!b-<$PaLjDX{X$2JeP*ZcbJT%yZW;A+mhs=>u)J`?%MM=?BbGnex^#=XO zq{Djc*1nz|0Bh~cM3kvAqC5}O;g-ACp=E^~Qjg7PWJLxNl7h-EX33=G@B>!3s2!a=;kC5HRU=Zc zKz)StTc{P>Q!BAf0$HF8oagi0BC>9|9Y)4>C`!~xogpHrNrdDMJ=A}L62;{Tr(AUM zER?xhss%Qs3XC#m4O}v1YVoaq;c?FD&b$g?=^u zS3_na5i#h|$MQJhuoUxDdKn#((2btJkA1lQ$W!Fddl5QmYeF~Aye0Z!xo on(Oe_{wCLsUe+wlTw6H((qH6f{l%$df07gbg2$8me#m`)0_L+Ph5!Hn literal 2500 zcmcIlU1(HC6rMSAX69{?h-C4Hg(lsYB{V@TO0gJI-HQf`p$SrA6$~i&5PxDCwX`pS z#2V4q)`~QtHfq+UrdsSniBw8xvGuP$1UK1L5F1;c6oLg=i~Y{sU5QouP$(ZWckaFC zo;m0H&Y7!}I!m`Hpa^GZgtI(LC)^EvSKp9LKf%dii0 z!k)ocs&Be3*TpmZVv3vJ%(&8&Qie;YpZaw|Eb~yMYNnd5%2Z6nRk@n2DpW#My3_dT zPyd$AQd}*eJ2b9ZeXaSJGdzqvJZ-^#`)rgdX||2(g!%>dpX;sEYNNJPqHwo7dD25V zVH$x3(?EfGPwg;WW{>Ld2Hys%PA34^s5i4AYhO)n^YwC)ch8*VEhrU8Gq!S@On1um~hk3>L-TYIYAxuNzd2;V7P!TqhQ2H)s!c`$}|~pj4IWEP5`Fa&%r9dM>W&RHd37`X8ooUkh#f%qOl9u}3J% zpYb7dT|oD2zfIY+sYVSfuqnL?=fgdhK~Bf;d{p@7m{`z#+AL3WpW2Iv`dl+=FvTes zgFobf7%^zQTy4(gFsGn4bQ6Xs;u59>RodcKnRSw#ZdV<&-gKevQU-nC)(RiA3xLM3 z+ppHRGSv70yzl3Xnacy_08~B)3>R>o1Q&pd=)uc$34M|G??Bk;2t@vZCW4G zeK^}9`Z2tm73SomLv)26@+QwQDsM;+xmzK(7op}l+GJW_U9h92P^Q(jN;M(NSIq%) zP?(plfyX%CggT4zDl)vFyRSjPg_yCIXqq3YlN)3m`f0N{sY>usPl164Tq9wvec{I3 zn33ZQS5SGDn#-$6)Zm{hdI|)mwQ+3LzU1W$S^l|w&2vnWZ?l5*t7T@}Q*IS4x8v3sH zwS3f#x>37LViwCVQaPytFfE!MHZ9@V*3S>@617;vhj0*ToGkj*L#9RdiyfF=s{7HI zb*>jtr(K$o=%ZVqa?P%}pkcGqJOPG9&r|MucN#b~8OoS(H>h4SIg_*7?U!neYPH|0 z?Q~mhe}Ww@p-uq3{Plh2^?P@V5qsrCToo0$lb4)F=Blu@6!x>hhrU4~S zVJh!L{=?kAfXV=jCi~RhL_Mr}glQqB^y5O(a=k~f7 k#uJzpQ^SKih_hPWu5nx4j~J6+SM$w(;o~`Z=;Ivw8$bW|@&Et; diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser4.rsc b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser4.rsc index dedbbc499e7546416764cbd3f0ccaf2ffbe3cd43..013f62fb9f9662b8c5e31a9b3d41d3355ace4b1d 100644 GIT binary patch literal 4008 zcmb7{`9suI6vfY^u{asHO*13Z44Wv~=9re5Kq-QOTe*a$S!QOM3lT-B5k>yjea?G+ zX9niW7yAKbd+)w`&pG$J`<2wE9-YuJRa8|?MSZGI^s+WAB6*f@}uY2Cdf{M)@BeKBinY$vfZim$~`d+v6oo?z|eWM%tTGw?=U$Od2R<%(+ zQo|1I40Y|MGP9M&l^HPKC#mx|)t11u0!riLQQ)i&UTgYMXLVVpbxEJ=yuP3&=NjvB zRmIf0&gr7g=mI#FQ}F2_et!nf6R6=7da%|e$!Q$z8Jls?$%ot`4mpsx4mvl%<{Eh2 z0=F9hGpl-rJyjyq>e{+MP8W5K7-Lj&o{BC}*<~s$*Q;8;roNO)k}6uYIsk$NGT6)M zJwds7SeUE#%%i5Rc}T79%@L};M-RmQ+{gYZ5eoW?9urLbtlz2Uil*xoRa0?{-BNqb z+@2=x%tyk_aEltP&|*;RF&H+6*1;Y0{Q!mECBu98#vHjM9%SuidCqW(>sY~)sBRq9 znZfncZk;t0Zf!@Ew<^3sRo1W7oG_B+AERWRr=oV&yZ4Lq$O<`BK()C`8h+*;Swca^ z-)>R{`^bbpM-|4sW#X;ZW$xErGTegObl^6f!LRMM+vwZv^y*gnc1O@)HyL)3(Jsze z!t3m#>-(+qv)AQV)gCew`Z!BvG2hj7H9NI;&WCC$VCI{|eA~6+?Go>mR&JBqq?K9w z+z{v5ajR62=8UxzUrcupXJK{qb3ZsUQC}{wmhO#K%M2&`T=QFkoj!KhFWSJPhwqCa zhUz`}|NGInx}*EUowb(l*>DF=g+87D-&%@e*cI{t_a1(4R^3{5qR-D{IGo+lePsVG zH7U$DT0>(EeOX&pob}}%u7v)MDqgP(jk>YzWpCGp3hqX?C1RI?7H2r2On&~HIEE*O zjb@gyFt4;K%=#K6T8;>#WYm^|uN`YKtVvwKYiHriQ%0OIrZZil^*)cB34J+c8z)!? zrGVlY-Wka*uryZD8?96;uSSn~ZK6cylEt|_#`Tr;Z+Lyi|L8L_q23qaz-)DsT{~RF ze3n5Z4|WCejLi7^q@O$=Srvo)dX+lT`u23_LHFYc?tEjsc9QYk;aSHw$5`m{BGn7z zpXg6L)nom^&Vf4etvBX<_*tMcTJg7MCo_TXRI}g;PV#pQd{?`aXWl_(t6?%qyR!>m zkabJgDePstd5vtP&$@O{XAx0}HMizo%D`*&T`O+)c(PUC$m7gB=IL3ugI3_M2tVd3 z$1J-@onD!^fG66u^K3VjxXZI=>MEy2&GP^AwZ(-TkW3itK|S{({c1HbCGpcOx3 zwd%-sVA6l--Pcf4)M5c7T+tQI+$iFD9lbW@aUwNmlI8+y_t-sKXUJY64Z&vtg)Z|x s(ZK{+k7np4t8<0s8cK^Zb@N2MQ6J2bN8>p(>!kYu+ujtOj3gfVAKz7!5C8xG literal 3954 zcmb7{>0?t>5XDbWQXrybdp0G(gf2l4aRWhwwg_!04WKMasUV7oEV5ZqKoHT&pY8A5 zo2|*~tA1#j_j2#dnKN_G%$0OqiR$`6*Yv%v>N|a_EBZ#4bxB{Vqzf8QUVX}Gm0r;r ztpH76?s-{4OX|YZ!MM#_uuWI6{=Gz%QOBSw9qh{Z+rQ%UKhV-qdM*rIY$n zXY_^6V%d9a-L?l(t$(ibI;C@17)-%f!uD_mJCpD-L)=Dn3@;U8t>MXdR}!lQ~vv^MMU%>xL=fUTuswetgPxVZH@Kk{-=ftPP)fV#lD-ccJU<6$@d9dyivE?@;EljzxRvRj*n@yP|HT zYfGnc4WqeMB7xn0T}vf$CBBdG#+chW`~Nl8%4n4y4$9um-CXFB$AdOcqRF+Ch^%#m zz)KEJwlomsz&l2b394OpfVsDwvtgc>OBMO0_g5^{ERj8b#!C4N3 z3FsHVGk|xq=QsA-S&iNKj_l^h=09Q2OFoP2w`RM~w-wu2&pMs4hjnW92)5!hQx81( z)U9K>Si{V+Hgo}ZW!L^jCXMw>HJgG$_Jg1go?QziKJ!FU;oT6NCY&6FJ==LVk459{ zW6fY#Z@#^6ioe64Uy9gWW_#!``%ko>M%17{O!ydb4;k=&hCR zSm@8C)UM;cY~8ai50C{gX9Vs$GseJ|f1bNKwH(e|BqKKQ@w#Im44z z6(3d#&v08<@A}P$9Juy9ou#QpJo&L|cef@DPh}5b={RR~1}1H}ijBe&K4)8VNwe=~ z&xw=Ri8+rs?afUwqZ&GA5VPqVT?kydCS#;#sd;l)t_M1QKE-ABu6z>v;j#$sI*i&& z5x=6Yvh`#zXpq?BN@@G?Jth0hJC44FKX=p;`E+&W1A;-S)laodHH){Vdd6MD6QrjF z--e1E)w~p6TaWsQ!3yPC7PIE*fT}lto}!wkI{i#HvluHN32bKDaYnmm{?3^+S~?1@ zPVX!4a3|@VW6RiSR`Vq2#_+ye)o0B`;^ee<#+y&)y=SG=oHB?sZ(HBUxC})uoL?2 zcA9v$0?%XPgN`_C0cN14V{$zf1zl9zs@}z7zBI|?rBn^o68$OH5)o=|p$7Ov0 z{gQi|3w|nF_Bih2OKfu{z6R%%)5n~#rzNv3`MoY{ouW4cU2_v_$?UIeXE((7Zd#_; zKDVu}*DGX)P~$Z;B9hap*s$YlVoj7aW#zRP$G2#tNp-A&U-7x%pFDv5=^>jHEmy0+ zDq9?4r@buwc4o=AkPvxDPV^+W;*nsFpeBloe8cw2it5d;_#$qE*Sdah#Ps+iHp)n9 znx;uEidVxq^gJlXe@&mX%Xn2@)K}~D%DZ3BRQ-G{V9q+vNL^7UTg9hX+XVa?5bp70!Y-xID7E5a{NT(-t@_T7s zR1OcPJ*K#^?43zd!d4w}M7iAcj#tOt<>74GPSUiCg_DzzlMNNE5o~CncGjxu4 zOFS=*Z$y{id)}|`9xxyN zHh4j~uJHoLQjs3zciFlf_c>OrZ+gal6q)*uV{S2P3+wWCo%7<2c+{EWz1COP7JZa; zvBhQQ#_e9nHRUnihiy>jIN$gB%2F%*6m8w?y{oiTs7CXZf92bYEsTckQQT7=3#ps8 zvTVFd+6{46;+7s_((k%- UyL8r(Z3_>p5%vGrf4u^K11iimiU0rr literal 2500 zcmeHI&1+m$6#xCslY&B!_yHlr~Z<0U|7cP~{yZ4-P&-cfD z0G>w93P#Yh9t_|%9<*IJj?DJhNvmc1Sht_~YL?+6{%UvdevIQhhO~07U>9T<1E^i^F|)OS2mqbJ^UviFG(SJiJ%X5qk75zlRLEkr&hMQ?I4B+F=QJ@lfBAV$zj&e7NxDIJQpMQ2F+|x6>H*Md?g*+YWnd}o*V){5$fF8dI_r(D}P9?>l3R>J{KiMJa^l6G}T-Dhp< zii(QTiCFhOhruHso)zSE+_Kay%Z_^&Ci=!X<5X36g)=po4QUBAfvCxyV&);>)FS5(MPB&g_eGS#% ztwOfNSNt}x%fVNZ-GrBHzwPH?z8v}WEP0>h8?q@!eTAl6Ir45xvbxJ2Knv@keI1t- zNyVP$X9c&iQ$>cHK|%PdP6(atc*@6Qk5z-PZcWBBT6Z$GR;=GN>!+YWY2=vB>e_H z*FJVzz#?`xz^~u}K4cB7{$}38+{^qr^L^%5Cq#b`DHo@Dj7>zmDxy}xAp=L*XJ8>% zuY@%+7lGaQ{mC}6N`g<=B?8;xz&l9>g|>pzzxcY?9%9u83a~oO$wB*oaVvRe$bTo1 zYtX~9bv7v!C<$6Lp;Rr3rBQBW&?t$AO4!NX1UtZ!_`S;94qoP~fBVP|J9GVG4E8n1 zfcHS3uv7n(YUFC;b;+QF`>lkdG=P_S@Qr6>FWO6tYv3$v22bd&?&ufY*3axd1z(P- z*220B1!Vo;Lr|#Q>d?EaO29k#ZVozRm2@SNM17#ehM<&3`WSSC_-SrkX7`L&UsqVo zmn(A=c$eT^XPJ*P53A9(J5xp0!!YGtPV`VO|~C}hEYmZ zpyO(xKXcuw*b7YQ8h-p8C+S;R1%1}0R{AYc7wmh~tIT8ZR+cU`y8ZNwJPQA2drN!=u36m-nSlRg7V^b>O%tv(3rrX?cY}`|1 zbKvqVV-y(2qG2uD7F3R6ipY-e@9Ra^wM37s6RTskc0zq#2su9fABApVz0MxiV7$)u Xbg(YU*EgYE*d5~Z4D&3aOq2cvLgV=0 literal 1648 zcmai!TWHR47{|YlycqAw%x2Ezd`bCha=fsn)Ourc$SHEVa7xmQG1|to%{j~YP!e)> zg*yv54Bn;`m3K()m_Pos*f_%SLsSpM6y|6HAs_m0PN!285Emw`ve|iLwe2IOf-_% zb3k{nh4*vX$7uvOWCyuF60L5L+iaW$7FDFb#sGM;0osU%XPmZyKKPOzfS>xs z`Wfuy{V@CfHknD(&(*FBRvhb@L@9m5#&%E&3c)aNKF&uoPqq%pr+hiZ{)4?6=%}qK z)ecT$dEMZ%j#d%!}$f?Y-Cx~g?sH+2Jk?|9Y|-RUw;SBk5!ui8B{#)B&5xen2y zQ0>B5Q29_EBCaQBrGpf30vxepzQ>ld@E7;xqKLT4*#$jfJ!kW*r)A)8o1ZS%2{B@& z{}mWq`q_%`lIS1TduhZVt8ALIP%d_yF4%>Sxk&79MZ#xiJ(_rF!1f3H#qd0pPAs*h zDq#}pn2CC(!o^X+S`^awpS+vo>o%xKTB_1TU#}W1uvMP#s#fBXbll)xuSS4WyrL(pS}bgT=se7q=-Z;qG)R8?{PX_$ei1@SH3SXfh#J2tbz%KXX diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser7.rsc b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser7.rsc index 881106a9c21567242cb1a125e0d54cb756e9bbf4..9c5f262ac45f93ec53ad1662e19e3bef826f521d 100644 GIT binary patch literal 282 zcmWO1*ESFU007V%nc1@UuE^>fviII3Tgq%8dnPl&NAq|eFW!40K$2udDrHEOE!Rsy zLgg3{CPbiM>8hm3lkcreW!_1YphTe$&-&u4C5t}0RjtRk3DaiGTCnP;0;m4yHfha) zLr0FCIQQV2Vkxq`aiPhTYhyb7)2h_6Uv7L%_f0gU7Y0I`_007WyCY!QHwro0wB!sN&y>}riBeKefWc+F0<9)lR5F}WNRK?!Ok}gM{ zP+=nE8uHQ$A;M*oI89sCgT{Sha1(9~Y{%`(e+%pAP-E8`$4_FyO$E7JZ(c0lPFM`Tzg` diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser8.rsc b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser8.rsc index d54e870793f9a12ee8ea4f9bf9ec06373f419f47..d121534c0422256493973cfb28a3e828cdf68fa8 100644 GIT binary patch literal 880 zcmV~$17H{c00gnWpKaTAXLPo0+qP}nwr$(CZQF^YgF2+cI-;XmrUTlm9onZ2T1S1Y z)*ABBlx9q33VYbk0Sa7{t=CrVBCpocTJQ8;AM{b52unorQ;5=(<%cs6kDvr2 zI3WnhE$!wec^JzzEhjha=}Z^8(v9x)peF+u$RGwYgrN*$I3pOzC`L1eO~xjLPHUP& z>l*np)dXD?;sB9KQj(F5%;cmvb*blI4xt&^s7>0e3%aD6x~1E?qr1ANM|!Ro zda0lKLm0vnh4f?~3stB}HLBB`d2C=Gr@6#cu5+I+{Ind-5gb_)G+&FfQ>S!ASM{A} zB&Q>5Il%+|II5#Li?cb8W^0a?>X?q}q|WKQF6xFJ>am{anO^IyKI@CV>IdP7OjM#1 zmtvHlBo(PdW17%{>C9jzvzfzO7O|KmEM)~NS;ZRGv7U`=W(!-{#x4$Wj5D0$B3F3A zCw@DuBRPtrJEr3}o)b8|1Dw^lT~K2*RueT@Q#DHqv{*~DQfG8lmvv3obzcwkRIl`g z2qY#uIS8Zx1u0Asic*R)l%qTqs7wPI(UMlQr4v(`#w?bxoYib+2Rqr#UQThA^E~7c hk9o>hzVV%3{NUQwN=}A#cM+HhPS-a9R1Wpt@AW|+2}1+|DM%^G@YQLF%XRG{ z2tf%(a6)j6+>GL~mXVxXw4nnX=|pF`(3NiVr62tnz(58um>~>h7{eLCNY?Y0e>$b9 z4xz6E5K-f_Tl>gJPR$@DZHYw+Qj&_)WS}Oss7(W6(~{QQ)Li0`fO(GPc#iJ`PUu8V z>?BU=WKQlBPU%!mt+7NW2JyM-AP(l>4(TwOrUm+=zxsy&la=oDpeMcPO&`lRkMnA> zj+2Hg9N{dFwOlLpi^L=$DQU?>4vJBSy0(LAx;AK|HtD=B>V|IWmTv2g?&_hQ>A7C$ zhkg^9a6~2@>B&rGs!)|`G+{Pt+0A(_afLg40*<26qUwL>R$Sy%Lps3asA z?O4T8PH>l>j^xPB=m6)`EX~#u9n~?N&{>_+1zpzzJEVJBH&pozpvmb2+#3Dd0aHX5x|n diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser9.rsc b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser9.rsc index 90f5f93164e831fdb4d05993e60b4737ce01c999..754b70378565cad53c1b02d6ee0a6a492ad97eb8 100644 GIT binary patch literal 17662 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 X!80uF_W17aynB*nce%noCGGzQeUIn( literal 17260 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 ClassFileConstants.JDK21) { + errorMessage = "Unnamed Patterns and Variables is a preview feature and disabled by default. Use --enable-preview to enable\n"; + } String expectedProblemLog = "----------\n" + "1. " + usLevel +" in X.java (at line 2)\n" + diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CompilerInvocationTests.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CompilerInvocationTests.java index ee67e9af414..58ab0b43c9f 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CompilerInvocationTests.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CompilerInvocationTests.java @@ -1336,6 +1336,8 @@ class ProblemAttributes { expectedProblemAttributes.put("ClassExtendFinalRecord", new ProblemAttributes(CategorizedProblem.CAT_TYPE)); expectedProblemAttributes.put("RecordErasureIncompatibilityInCanonicalConstructor", new ProblemAttributes(CategorizedProblem.CAT_TYPE)); expectedProblemAttributes.put("JavadocInvalidModule", new ProblemAttributes(CategorizedProblem.CAT_INTERNAL)); + expectedProblemAttributes.put("UnderscoreCannotBeUsedHere", new ProblemAttributes(CategorizedProblem.CAT_PREVIEW_RELATED)); + expectedProblemAttributes.put("UnnamedVariableMustHaveInitializer", new ProblemAttributes(CategorizedProblem.CAT_PREVIEW_RELATED)); StringBuilder failures = new StringBuilder(); StringBuilder correctResult = new StringBuilder(70000); Field[] fields = (iProblemClass = IProblem.class).getFields(); @@ -2445,6 +2447,8 @@ class ProblemAttributes { expectedProblemAttributes.put("ClassExtendFinalRecord", SKIP); expectedProblemAttributes.put("RecordErasureIncompatibilityInCanonicalConstructor", SKIP); expectedProblemAttributes.put("JavadocInvalidModule", SKIP); + expectedProblemAttributes.put("UnderscoreCannotBeUsedHere", SKIP); + expectedProblemAttributes.put("UnnamedVariableMustHaveInitializer", SKIP); Map constantNamesIndex = new HashMap(); Field[] fields = JavaCore.class.getFields(); diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NegativeLambdaExpressionsTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NegativeLambdaExpressionsTest.java index a4cdf0fc934..9823cc9b763 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NegativeLambdaExpressionsTest.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NegativeLambdaExpressionsTest.java @@ -7371,6 +7371,10 @@ public void testIntersectionCast() { public void testUnderScoreParameter() { String level = this.complianceLevel >= ClassFileConstants.JDK9 ? "ERROR" : "WARNING"; String errorMessage = this.complianceLevel >= ClassFileConstants.JDK9 ? "\'_\' is a keyword from source level 9 onwards, cannot be used as identifier\n" : "\'_\' should not be used as an identifier, since it is a reserved keyword from source level 1.8 on\n"; + if (this.complianceLevel >= ClassFileConstants.JDK21) { + errorMessage = "Unnamed Patterns and Variables is a preview feature and disabled by default. Use --enable-preview to enable\n"; + } + String otherErrorMessage = this.complianceLevel >= ClassFileConstants.JDK21 ? errorMessage : "\'_\' is a keyword from source level 9 onwards, cannot be used as identifier\n"; this.runNegativeTest( new String[] { "X.java", @@ -7389,7 +7393,7 @@ public void testUnderScoreParameter() { "1. ERROR in X.java (at line 6)\n" + " F f = (int _) -> {\n" + " ^\n" + - "\'_\' is a keyword from source level 9 onwards, cannot be used as identifier\n" + + otherErrorMessage + "----------\n" + "2. "+ level +" in X.java (at line 8)\n" + " F f2 = _ -> {};\n" + @@ -7399,7 +7403,7 @@ public void testUnderScoreParameter() { "3. ERROR in X.java (at line 8)\n" + " F f2 = _ -> {};\n" + " ^\n" + - "\'_\' is a keyword from source level 9 onwards, cannot be used as identifier\n" + + otherErrorMessage + "----------\n" ); } diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java index 8405bbc5ce7..9538665de8d 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/TestAll.java @@ -161,6 +161,7 @@ public static Test suite() { since_1_8.add(Unicode18Test.class); since_1_8.add(LambdaShapeTests.class); since_1_8.add(StringConcatTest.class); + since_1_8.add(UseOfUnderscoreTest.class); ArrayList since_9 = new ArrayList(); since_9.add(Unicode9Test.class); @@ -235,7 +236,8 @@ public static Test suite() { ArrayList since_21 = new ArrayList(); since_21.add(SwitchPatternTest.class); since_21.add(RecordPatternTest.class); -// since_21.add(UnnammedPatternsAndVarsTest.class); Enable after implementation. + since_21.add(UnnamedPatternsAndVariablesTest.class); + since_21.add(UseOfUnderscoreWithPreviewTest.class); since_21.add(NullAnnotationTests21.class); since_21.add(StringTemplateTest.class); since_21.add(BatchCompilerTest_21.class); diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UnnamedPatternsAndVariablesTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UnnamedPatternsAndVariablesTest.java new file mode 100644 index 00000000000..e6b8d36f074 --- /dev/null +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UnnamedPatternsAndVariablesTest.java @@ -0,0 +1,690 @@ +/******************************************************************************* + * Copyright (c) 2023 Red Hat, Inc. and others. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ +package org.eclipse.jdt.core.tests.compiler.regression; + +import java.util.Map; + +import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; +import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; + +import junit.framework.Test; + +public class UnnamedPatternsAndVariablesTest extends AbstractBatchCompilerTest { + + private static String[] JAVAC_OPTIONS = new String[] { "--enable-preview" }; + + public static Test suite() { + return buildMinimalComplianceTestSuite(UnnamedPatternsAndVariablesTest.class, F_21); + } + + public UnnamedPatternsAndVariablesTest(String name) { + super(name); + } + + @Override + protected Map getCompilerOptions() { + CompilerOptions compilerOptions = new CompilerOptions(super.getCompilerOptions()); + if (compilerOptions.sourceLevel == ClassFileConstants.JDK21) { + compilerOptions.enablePreviewFeatures = true; + } + return compilerOptions.getMap(); + } + + public void runConformTest(String[] files, String expectedOutput) { + super.runConformTest(files, expectedOutput, null, JAVAC_OPTIONS); + } + + public void testAllSnippetsFromUnnamedVariablesAndPatternsProposal() { + runConformTest(new String[] { "X.java", """ + import java.util.Queue; + import java.util.LinkedList; + import java.util.stream.Collectors; + import java.util.stream.Stream; + + record Point(int x, int y) { } + enum Color { RED, GREEN, BLUE } + record ColoredPoint(Point p, Color c) { } + record Box(T content) { } + + sealed abstract class Ball permits RedBall, BlueBall, GreenBall { } + final class RedBall extends Ball { } + final class BlueBall extends Ball { } + final class GreenBall extends Ball { } + + public class X { + public static void main(String[] args) throws Exception { + ColoredPoint r = new ColoredPoint(new Point(3,4), Color.GREEN); + if (r instanceof ColoredPoint(Point(int x, int y), Color _)) { + } + if (r instanceof ColoredPoint(Point(int x, int y), var _)) { + } + for (int i = 0, _ = sideEffect(); i < 10; i++) { + } + Queue q = new LinkedList<>(); + q.offer(1); q.offer(1); q.offer(1); + while (q.size() >= 3) { + var x = q.remove(); + var _ = q.remove(); // Unnamed variable + var _ = q.remove(); // Unnamed variable + } + String s = ""; + try { + int i = Integer.parseInt(s); + } catch (NumberFormatException _) { // Unnamed variable + System.out.println("Bad number: " + s); + } catch (NullPointerException _) { + } + class ScopedContext implements AutoCloseable { + public static ScopedContext acquire() { + return null; + } + @Override + public void close() throws Exception { + } + } + try (var _ = ScopedContext.acquire()) { // Unnamed variable + } + Stream stream = new LinkedList().stream(); + stream.collect(Collectors.toMap(String::toUpperCase, _ -> "NODATA")) ; + Ball ball = new GreenBall(); + switch (ball) { + case RedBall _ -> process(ball); + case BlueBall _ -> process(ball); + case GreenBall _ -> stopProcessing(); + } + Box box = new Box<>(new GreenBall()); + switch (box) { + case Box(RedBall red) -> processBox(box); + case Box(BlueBall blue) -> processBox(box); + case Box(GreenBall green) -> stopProcessing(); + case Box(var itsNull) -> pickAnotherBox(); + default -> throw new IllegalArgumentException("Unexpected value: " + box); + } + switch (box) { + case Box(RedBall _) -> processBox(box); // Unnamed pattern variable + case Box(BlueBall _) -> processBox(box); // Unnamed pattern variable + case Box(GreenBall _) -> stopProcessing(); // Unnamed pattern variable + case Box(var _) -> pickAnotherBox(); // Unnamed pattern variable + default -> throw new IllegalArgumentException("Unexpected value: " + box); + } + } + + private static Object pickAnotherBox() { + // TODO Auto-generated method stub + return null; + } + + private static Object processBox(Box box) { + // TODO Auto-generated method stub + return null; + } + + private static Object stopProcessing() { + return null; + } + + private static Object process(Ball ball) { + return null; + } + + static int sideEffect() { + return 0; + } + + class Order {} + + static int count(Iterable orders) { + int total = 0; + for (Order _ : orders) // Unnamed variable + total++; + return total; + } + } + """}, "Bad number:"); + } + + public void testCatchStatementWithUnnamedVars() { + runConformTest(new String[] { "A.java", """ + public class A { + public static void main(String... args) { + try { + throw new Exception(); + } catch( Exception _) { + int i = 12; + System.out.println(Integer.toString(i)); + } + } + } + """}, "12"); + } + + public void testTryWithResourcesWithUnnamedVars() { + runConformTest(new String[] { "A.java", """ + import java.io.File; + import java.io.FileInputStream; + import java.io.InputStream; + public class A { + public static void main(String... args) { + File f = null; + try (final InputStream _ = new FileInputStream(f)){ + System.out.println("unexpected success"); + } catch( Exception e) { + System.out.println("expected failure"); + } + } + } + """}, "expected failure"); + } + + public void testLambdaUnnamedParameter() { + runConformTest(new String[] { "A.java", """ + public class A { + interface FuncInterface { + void abstractFun(int x, String y); + } + public static void main(String args[]) { + FuncInterface fobj = (int x, String _) -> System.out.println(2 * x); + fobj.abstractFun(5, "blah"); + } + } + """}, "10"); + } + + public void testLambdaBracketedUnnamedParameter() { + runConformTest(new String[] { "A.java", """ + import java.util.function.Function; + public class A { + public static void main(String... args) { + Function myFunc = (Integer _) -> "Hello"; + System.out.println(myFunc.apply(1)); + } + } + """}, "Hello"); + } + + public void testLambdaNoTypeBracketedUnnamedParameter() { + runConformTest(new String[] { "A.java", """ + import java.util.function.Function; + public class A { + public static void main(String... args) { + Function myFunc = (_) -> "Hello"; + System.out.println(myFunc.apply(1)); + } + } + """}, "Hello"); + } + + public void testLambdaNoTypeNoBracketsUnnamedParameter() { + runConformTest(new String[] { "A.java", """ + import java.util.function.Function; + public class A { + public static void main(String... args) { + Function myFunc = _ -> "Hello"; + System.out.println(myFunc.apply(1)); + } + } + """}, "Hello"); + } + + public void testLambdaTypeWithNoParens() { + runNegativeTest(new String[] { "A.java", """ + import java.util.function.Function; + public class A { + public static void main(String... args) { + Function myFunc = Integer _ -> "Hello"; + System.out.println(myFunc.apply(1)); + } + } + """}, + """ + ---------- + 1. ERROR in A.java (at line 4) + Function myFunc = Integer _ -> "Hello"; + ^^^^^^^ + Syntax error, insert ":: IdentifierOrNew" to complete ReferenceExpression + ---------- + 2. ERROR in A.java (at line 4) + Function myFunc = Integer _ -> "Hello"; + ^^^^^^^ + Syntax error, insert ";" to complete BlockStatements + ---------- + 3. ERROR in A.java (at line 4) + Function myFunc = Integer _ -> "Hello"; + ^^^^^^^ + Syntax error, insert "AssignmentOperator Expression" to complete Expression + ---------- + """); + } + + public void testLambdaBiFunctionBracketedWithOneNamedParam() { + runConformTest(new String[] { "A.java", """ + import java.util.function.BiFunction; + public class A { + public static void main(String... args) { + BiFunction myFunc = (_,b) -> "Hello, " + b; + System.out.println(myFunc.apply(2, 3)); + } + } + """}, "Hello, 3"); + } + + public void testLambdaBiFunctionBracketedWithNoNamedParam() { + runConformTest(new String[] { "A.java", """ + import java.util.function.BiFunction; + public class A { + public static void main(String... args) { + BiFunction myFunc = (_,_) -> "Hello"; + System.out.println(myFunc.apply(2, 3)); + } + } + """}, "Hello"); + } + + public void testLambdaBiFunctionUnbracketedWithNoNamedParam() { + runNegativeTest(new String[] { "A.java", """ + import java.util.function.BiFunction; + public class A { + public static void main(String... args) { + BiFunction myFunc = _,_ -> "Hello"; + System.out.println(myFunc.apply(2, 3)); + } + } + """}, + """ + ---------- + 1. ERROR in A.java (at line 4) + BiFunction myFunc = _,_ -> "Hello"; + ^ + Syntax error on token ",", -> expected + ---------- + """); + } + + public void testInstanceOfPatternMatchingWithUnnamedPatterns() { + runConformTest(new String[] { "A.java", """ + public class A { + public static void main(String[] args) { + var namedPoint = new NamedPoint("salutations", new Point(1, 2)); + if (namedPoint instanceof NamedPoint(_, Point(_, _))) { + System.out.println("matched point"); + } + } + } + record NamedPoint(String name, Point point) {} + record Point(int x, int y) {} + """}, "matched point"); + } + + public void testInstanceOfPatternMatchingWithMixedPatterns() { + runConformTest(new String[] { "A.java", """ + public class A { + public static void main(String[] args) { + var namedPoint = new NamedPoint("salutations", new Point(1, 2)); + if (namedPoint instanceof NamedPoint(_, Point(_, int y))) { + System.out.println("matched point! y: " + y); + } + } + } + record NamedPoint(String name, Point point) {} + record Point(int x, int y) {} + """}, "matched point! y: 2"); + } + + public void testInstanceOfPatternMatchingWithMixedPatterns2() { + runConformTest(new String[] { "A.java", """ + public class A { + public static void main(String[] args) { + var namedPoint = new NamedPoint("salutations", new Point(1, 2)); + if (namedPoint instanceof NamedPoint(_, Point(int x, _))) { + System.out.println("matched point! x: " + x); + } + } + } + record NamedPoint(String name, Point point) {} + record Point(int x, int y) {} + """}, "matched point! x: 1"); + } + + public void testInstanceOfPatternMatchingWithUnnamedVariables() { + runConformTest(new String[] { "A.java", """ + public class A { + public static void main(String[] args) { + var namedPoint = new NamedPoint("salutations", new Point(1, 2)); + if (namedPoint instanceof NamedPoint(String _, Point(int _, int _))) { + System.out.println("matched point"); + } + } + } + record NamedPoint(String name, Point point) {} + record Point(int x, int y) {} + """}, "matched point"); + } + + public void testSwitchPatternMatchingWithUnnamedPatterns() { + runConformTest(new String[] { "A.java", """ + public class A { + public static void main(String[] args) { + var namedPoint = new NamedPoint("name", new Point(1, 2)); + switch (namedPoint) { + case NamedPoint(_, Point(_, _)) -> System.out.println("I am utilizing pattern matching"); + default -> System.out.println("oh no"); + } + } + } + record NamedPoint(String name, Point point) {} + record Point(int x, int y) {} + """}, "I am utilizing pattern matching"); + } + + public void testSwitchPatternMatchingWithMixedPatterns() { + runConformTest(new String[] { "A.java", """ + public class A { + public static void main(String[] args) { + var namedPoint = new NamedPoint("name", new Point(1, 2)); + switch (namedPoint) { + case NamedPoint(_, Point(int x, _)) -> System.out.println(x); + default -> System.out.println("oh no"); + } + } + } + record NamedPoint(String name, Point point) {} + record Point(int x, int y) {} + """}, "1"); + } + + public void testSwitchPatternMatchingWithUnnamedVariables() { + runConformTest(new String[] { "A.java", """ + public class A { + public static void main(String[] args) { + var namedPoint = new NamedPoint("name", new Point(1, 2)); + switch (namedPoint) { + case NamedPoint(String _, Point(int _, int y)) -> System.out.println(y); + default -> System.out.println("oh no"); + } + } + } + record NamedPoint(String name, Point point) {} + record Point(int x, int y) {} + """}, "2"); + } + + public void testSwitchPatternMatchingWithUnnamedVariablesVar() { + runConformTest(new String[] { "A.java", """ + public class A { + public static void main(String[] args) { + var namedPoint = new NamedPoint("name", new Point(1, 2)); + switch (namedPoint) { + case NamedPoint(String _, Point(var _, int y)) -> System.out.println(y); + default -> System.out.println("oh no"); + } + } + } + record NamedPoint(String name, Point point) {} + record Point(int x, int y) {} + """}, "2"); + } + + public void testSwitchPatternMatchingWithUnnamedVariablesUnicodeEscape() { + runConformTest(new String[] { "A.java", """ + public class A { + public static void main(String[] args) { + var namedPoint = new NamedPoint("name", new Point(1, 2)); + switch (namedPoint) { + case NamedPoint(String _, Point(var \\u005F, int y)) -> System.out.println(y); + default -> System.out.println("oh no"); + } + } + } + record NamedPoint(String name, Point point) {} + record Point(int x, int y) {} + """}, "2"); + } + + public void testEnhancedForLoopVariableWithModifier() { + runConformTest(new String[] { "A.java", """ + import java.util.List; + public class A { + public static void main(String... args) { + List myList = List.of("hi", "hello", "salu", "bonjour"); + int accumulator = 0; + for (final String _ : myList) { + accumulator++; + } + System.out.println(accumulator); + accumulator = 0; + for (final int _ : new int[0]) { + } + System.out.println(accumulator); + } + } + """}, "4\n0"); + } + + + + public void testInstanceofUnnamedPatternMatching() { + runConformTest(new String[] { "A.java", """ + public class A { + public static void main(String[] args) { + Object r = null; + if (r instanceof ColoredPoint(Point(int x, _), _)) { + System.out.println("Hello, World!" + x); + } + } + } + record Point(int x, int y) { } + enum Color { RED, GREEN, BLUE } + record ColoredPoint(Point p, Color c) { } + """}, ""); + } + + public void testReuseLocalUnnamedVariable() { + runConformTest(new String[] { "A.java", """ + public class A { + public static void main(String[] args) { + int _ = 1; + int _ = 2; + int _ = 3; + } + } + record Point(int x, int y) { } + enum Color { RED, GREEN, BLUE } + record ColoredPoint(Point p, Color c) { } + """}, ""); + } + + public void testReuseLocalUnnamedVariableUnicodeEscape() { + runConformTest(new String[] { "A.java", """ + public class A { + public static void main(String[] args) { + int _ = 1; + int \\u005F = 2; + int \\u005F = 3; + } + } + record Point(int x, int y) { } + enum Color { RED, GREEN, BLUE } + record ColoredPoint(Point p, Color c) { } + """}, ""); + } + + public void testUnnamedVariableInEnhancedFor() { + runConformTest(new String[] { "A.java", """ + import java.util.List; + public class A { + public static void main(String[] args) { + List orders = List.of(new Order(), new Order()); + int total = 0; + for (Order _ : orders) + total++; + System.out.println(total); + } + } + class Order {} + """}, "2"); + } + + public void testUnnamedVariableAsLambdaParameter() { + runConformTest(new String[] { "A.java", """ + import java.util.function.Function; + public class A { + public static void main(String[] args) { + Function myFunc = _ -> 1; + System.out.println(myFunc.apply(0)); + } + } + """}, "1"); + } + + public void testUnnamedVariableWithoutInitializer() { + runNegativeTest(new String[] { "A.java", """ + import java.io.BufferedReader; + import java.io.IOException; + import java.util.List; + public class A { + void foo(int x, int y) { + int _; + int _; + try (BufferedReader _ = null) { + } catch (IOException _) { + } + for (String _ : List.of("hello")) { + } + int i = 12; + for (int _; i < 14; i++) { + } + } + } + """}, + """ + ---------- + 1. ERROR in A.java (at line 6) + int _; + ^ + Unnamed variables must have an initializer + ---------- + 2. ERROR in A.java (at line 7) + int _; + ^ + Unnamed variables must have an initializer + ---------- + 3. ERROR in A.java (at line 14) + for (int _; i < 14; i++) { + ^ + Unnamed variables must have an initializer + ---------- + """); + } + + public void test001() { + runConformTest(new String[] { + "X.java", + "public class X {\n"+ + " public static int foo() {\n"+ + " int _ = 1;\n"+ + " return 0;\n"+ + " }\n"+ + " public static void main(String[] args) {\n"+ + " System.out.println(X.foo());\n"+ + " }\n"+ + "}" + }, + "0"); + } + + // Test that pattern variables are allowed for the nested patterns (not just the outermost record pattern) + public void test002() { + runConformTest(new String[] { + "X.java", + "@SuppressWarnings(\"preview\")\n" + + "public class X {\n"+ + " public static int foo() {\n"+ + " int _ = bar();\n"+ + " return 0;\n"+ + " }\n"+ + " public static int bar() {\n"+ + " return 0;\n"+ + " }\n"+ + " public static void main(String[] args) {\n"+ + " System.out.println(X.foo());\n"+ + " }\n"+ + "}" + }, + "0"); + } + + public void test003() { + runNegativeTest(new String[] { + "X.java", + "@SuppressWarnings(\"preview\")\n" + + "public class X {\n" + + " public static int foo() {\n"+ + " int _;\n"+ // Error should be thrown - uninitialized + " return 0;\n"+ + " }\n"+ + " public static void main(String[] args) {\n"+ + " System.out.println(X.foo());\n"+ + " }\n"+ + "}" + }, + "----------\n" + + "1. ERROR in X.java (at line 4)\n" + + " int _;\n" + + " ^\n" + + "Unnamed variables must have an initializer\n" + + "----------\n"); + } + + public void test004() { + runNegativeTest(new String[] { + "X.java", + "@SuppressWarnings(\"preview\")\n" + + "public class X {\n" + + " public static int foo() {\n"+ + " int _ = 0;\n"+ + " return _;\n"+ // Error should be thrown - uninitialized + " }\n"+ + " public static void main(String[] args) {\n"+ + " System.out.println(X.foo());\n"+ + " }\n"+ + "}" + }, + """ + ---------- + 1. ERROR in X.java (at line 5) + return _; + ^ + Syntax error, insert "-> LambdaBody" to complete Expression + ---------- + """); + } + + public void test005() { + runNegativeTest(new String[] { + "X.java", + "@SuppressWarnings(\"preview\")\n" + + "public class X {\n" + + " public int _;\n"+ // Error should be thrown - Field not allowed + " public static void main(String[] args) {\n"+ + " System.out.println(0);\n"+ + " }\n"+ + "}" + }, + """ + ---------- + 1. ERROR in X.java (at line 3) + public int _; + ^ + As of release 21, '_' is only allowed to declare unnamed patterns, local variables, exception parameters or lambda parameters + ---------- + """); + } +} diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UnnammedPatternsAndVarsTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UnnammedPatternsAndVarsTest.java deleted file mode 100644 index 47d10629c62..00000000000 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UnnammedPatternsAndVarsTest.java +++ /dev/null @@ -1,226 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2023 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jdt.core.tests.compiler.regression; - -import java.util.Map; - -import org.eclipse.jdt.internal.compiler.batch.FileSystem; -import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; -import org.eclipse.jdt.internal.compiler.env.INameEnvironment; -import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; - -import junit.framework.Test; - -public class UnnammedPatternsAndVarsTest extends AbstractRegressionTest9 { - - private static final JavacTestOptions JAVAC_OPTIONS = new JavacTestOptions("-source 21 --enable-preview -Xlint:-preview"); - static { -// TESTS_NUMBERS = new int [] { 1 }; -// TESTS_RANGE = new int[] { 1, -1 }; -// TESTS_NAMES = new String[] { "test005" }; - } - private String extraLibPath; - public static Class testClass() { - return UnnammedPatternsAndVarsTest.class; - } - public static Test suite() { - return buildMinimalComplianceTestSuite(testClass(), F_21); - } - public UnnammedPatternsAndVarsTest(String testName){ - super(testName); - } - // Enables the tests to run individually - protected Map getCompilerOptions(boolean preview) { - Map defaultOptions = super.getCompilerOptions(); - if (preview) { - if (this.complianceLevel >= ClassFileConstants.getLatestJDKLevel()) { - defaultOptions.put(CompilerOptions.OPTION_EnablePreviews, CompilerOptions.ENABLED); - } else { - defaultOptions.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_21); - defaultOptions.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_21); - defaultOptions.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_21); - } - } - return defaultOptions; - } - - protected Map getCompilerOptions() { - return getCompilerOptions(true); - } - protected String[] getDefaultClassPaths() { - String[] libs = DefaultJavaRuntimeEnvironment.getDefaultClassPaths(); - if (this.extraLibPath != null) { - String[] l = new String[libs.length + 1]; - System.arraycopy(libs, 0, l, 0, libs.length); - l[libs.length] = this.extraLibPath; - return l; - } - return libs; - } - @Override - protected INameEnvironment getNameEnvironment(final String[] testFiles, String[] classPaths, Map options) { - this.classpaths = classPaths == null ? getDefaultClassPaths() : classPaths; - INameEnvironment[] classLibs = getClassLibs(false, options); - for (INameEnvironment nameEnvironment : classLibs) { - ((FileSystem) nameEnvironment).scanForModules(createParser()); - } - return new InMemoryNameEnvironment9(testFiles, this.moduleMap, classLibs); - } - @Override - protected void runConformTest(String[] testFiles, String expectedOutput) { - runConformTest(testFiles, expectedOutput, getCompilerOptions(true)); - } - @Override - protected void runConformTest(String[] testFiles, String expectedOutput, Map customOptions) { - if(!isJRE21Plus) - return; - runConformTest(testFiles, expectedOutput, customOptions, new String[] {"--enable-preview"}, JAVAC_OPTIONS); - } - protected void runConformTest( - String[] testFiles, - String expectedOutputString, - String[] classLibraries, - boolean shouldFlushOutputDirectory, - String[] vmArguments) { - runTest( - // test directory preparation - shouldFlushOutputDirectory /* should flush output directory */, - testFiles /* test files */, - // compiler options - classLibraries /* class libraries */, - null /* no custom options */, - false /* do not perform statements recovery */, - null /* no custom requestor */, - // compiler results - false /* expecting no compiler errors */, - null /* do not check compiler log */, - // runtime options - false /* do not force execution */, - vmArguments /* vm arguments */, - // runtime results - expectedOutputString /* expected output string */, - null /* do not check error string */, - // javac options - JavacTestOptions.DEFAULT /* default javac test options */); - } - protected void runNegativeTest( - String[] testFiles, - String expectedCompilerLog, - String javacLog, - String[] classLibraries, - boolean shouldFlushOutputDirectory, - Map customOptions) { - Runner runner = new Runner(); - runner.testFiles = testFiles; - runner.expectedCompilerLog = expectedCompilerLog; - runner.javacTestOptions = JAVAC_OPTIONS; - runner.customOptions = customOptions; - runner.expectedJavacOutputString = javacLog; - runner.runNegativeTest(); - } - public void _test001() { - runConformTest(new String[] { - "X.java", - "public class X {\n"+ - " public static int foo() {\n"+ - " int _ = 1;\n"+ - " return 0;\n"+ - " }\n"+ - " public static void main(String[] args) {\n"+ - " System.out.println(X.foo());\n"+ - " }\n"+ - "}" - }, - "0"); - } - // Test that pattern variables are allowed for the nested patterns (not just the outermost record pattern) - public void _test002() { - runConformTest(new String[] { - "X.java", - "@SuppressWarnings(\"preview\")\n" + - "public class X {\n"+ - " public static int foo() {\n"+ - " int _ = bar();\n"+ - " return 0;\n"+ - " }\n"+ - " public static int bar() {\n"+ - " return 0;\n"+ - " }\n"+ - " public static void main(String[] args) {\n"+ - " System.out.println(X.foo());\n"+ - " }\n"+ - "}" - }, - "0"); - } - public void _test003() { - runNegativeTest(new String[] { - "X.java", - "@SuppressWarnings(\"preview\")\n" + - "public class X {\n" + - " public static int foo() {\n"+ - " int _;\n"+ // Error should be thrown - uninitialized - " return 0;\n"+ - " }\n"+ - " public static void main(String[] args) {\n"+ - " System.out.println(X.foo());\n"+ - " }\n"+ - "}" - }, - "----------\n" + - "1. ERROR in X.java (at line 4)\n" + - " int _;\\n" + - " ^\n" + - "local variable _ should be initialized\n" + - "----------\n"); - } - public void _test004() { - runNegativeTest(new String[] { - "X.java", - "@SuppressWarnings(\"preview\")\n" + - "public class X {\n" + - " public static int foo() {\n"+ - " int _ = 0;\n"+ // Error should be thrown - uninitialized - " return _;\n"+ - " }\n"+ - " public static void main(String[] args) {\n"+ - " System.out.println(X.foo());\n"+ - " }\n"+ - "}" - }, - "----------\n" + - "1. ERROR in X.java (at line 5)\n" + - " int _;\\n" + - " ^\n" + - "_ can only be used in declarations\n" + - "----------\n"); - } - public void _test005() { - runNegativeTest(new String[] { - "X.java", - "@SuppressWarnings(\"preview\")\n" + - "public class X {\n" + - " public int _;\n"+ // Error should be thrown - Field not allowed - " public static void main(String[] args) {\n"+ - " System.out.println(0);\n"+ - " }\n"+ - "}" - }, - "----------\n" + - "1. ERROR in X.java (at line 5)\n" + - " int _;\\n" + - " ^\n" + - "_ can only be used in declarations\n" + - "----------\n"); - } -} diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UseOfUnderscoreTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UseOfUnderscoreTest.java new file mode 100644 index 00000000000..b0cfb292579 --- /dev/null +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UseOfUnderscoreTest.java @@ -0,0 +1,196 @@ +package org.eclipse.jdt.core.tests.compiler.regression; + +import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; +import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; + +import junit.framework.Test; + +public class UseOfUnderscoreTest extends AbstractBatchCompilerTest { + + public static Test suite() { + return buildMinimalComplianceTestSuite(UseOfUnderscoreTest.class, F_1_8); + } + + public UseOfUnderscoreTest(String name) { + super(name); + } + + public void testReportsUnderscoreInstanceMemberAsError() { + CompilerOptions options = new CompilerOptions(getCompilerOptions()); + + String message; + String errorLevel; + if (options.sourceLevel < ClassFileConstants.JDK9) { + message = "'_' should not be used as an identifier, since it is a reserved keyword from source level 1.8 on"; + errorLevel = "WARNING"; + } else if (options.sourceLevel < ClassFileConstants.JDK21) { + message = "'_' is a keyword from source level 9 onwards, cannot be used as identifier"; + errorLevel = "ERROR"; + } else { + message = "Unnamed Patterns and Variables is a preview feature and disabled by default. Use --enable-preview to enable"; + errorLevel = "ERROR"; + } + + runNegativeTest(new String[] { "A.java", """ + public class A { + int _ = 1; + public static void main(String[] args) { + System.out.println("Hello, World!"); + } + } + """ }, + + "----------\n" + + "1. " + errorLevel + " in A.java (at line 2)\n" + + " int _ = 1;\n" + + " ^\n" + + message + "\n" + + "----------\n"); + } + + public void testReportsUnicodeEscapeUnderscoreInstanceMemberAsError() { + CompilerOptions options = new CompilerOptions(getCompilerOptions()); + + String message; + String errorLevel; + if (options.sourceLevel < ClassFileConstants.JDK9) { + message = "'_' should not be used as an identifier, since it is a reserved keyword from source level 1.8 on"; + errorLevel = "WARNING"; + } else if (options.sourceLevel < ClassFileConstants.JDK21) { + message = "'_' is a keyword from source level 9 onwards, cannot be used as identifier"; + errorLevel = "ERROR"; + } else { + message = "Unnamed Patterns and Variables is a preview feature and disabled by default. Use --enable-preview to enable"; + errorLevel = "ERROR"; + } + + runNegativeTest(new String[] { "A.java", """ + public class A { + int \\u005F = 1; + public static void main(String[] args) { + System.out.println("Hello, World!"); + } + } + """ }, + "----------\n" + + "1. " + errorLevel + " in A.java (at line 2)\n" + + " int \\u005F = 1;\n" + + " ^^^^^^\n" + + message + "\n" + + "----------\n"); + } + + public void testReportsUnderscoreParameterAsError() { + CompilerOptions options = new CompilerOptions(getCompilerOptions()); + + String message; + String errorLevel; + if (options.sourceLevel < ClassFileConstants.JDK9) { + message = "'_' should not be used as an identifier, since it is a reserved keyword from source level 1.8 on"; + errorLevel = "WARNING"; + } else if (options.sourceLevel < ClassFileConstants.JDK21) { + message = "'_' is a keyword from source level 9 onwards, cannot be used as identifier"; + errorLevel = "ERROR"; + } else { + message = "Unnamed Patterns and Variables is a preview feature and disabled by default. Use --enable-preview to enable"; + errorLevel = "ERROR"; + } + + runNegativeTest(new String[] { "A.java", """ + public class A { + public static void main(String[] args) { + foo(1); + } + public static void foo(int _) { + System.out.println("Hello, World!"); + } + } + """ }, + "----------\n" + + "1. " + errorLevel + " in A.java (at line 5)\n" + + " public static void foo(int _) {\n" + + " ^\n" + + message + "\n" + + "----------\n"); + } + + public void testReportsUnderscoreParameterAsErrorUnicodeEscape() { + CompilerOptions options = new CompilerOptions(getCompilerOptions()); + + String message; + String errorLevel; + if (options.sourceLevel < ClassFileConstants.JDK9) { + message = "'_' should not be used as an identifier, since it is a reserved keyword from source level 1.8 on"; + errorLevel = "WARNING"; + } else if (options.sourceLevel < ClassFileConstants.JDK21) { + message = "'_' is a keyword from source level 9 onwards, cannot be used as identifier"; + errorLevel = "ERROR"; + } else { + message = "Unnamed Patterns and Variables is a preview feature and disabled by default. Use --enable-preview to enable"; + errorLevel = "ERROR"; + } + + runNegativeTest(new String[] { "A.java", """ + public class A { + public static void main(String[] args) { + foo(1); + } + public static void foo(int \\u005F) { + System.out.println("Hello, World!"); + } + } + """ }, + "----------\n" + + "1. " + errorLevel + " in A.java (at line 5)\n" + + " public static void foo(int \\u005F) {\n" + + " ^^^^^^\n" + + message + "\n" + + "----------\n"); + } + + public void testReportsUnderscoreLocalVariableAsErrorUnicodeEscape() { + CompilerOptions options = new CompilerOptions(getCompilerOptions()); + + String SOURCE_CODE = """ + public class A { + public static void main(String[] args) { + int \\u005F = 12; + System.out.println("hello, world"); + } + } + """; + + if (options.sourceLevel < ClassFileConstants.JDK9) { + runNegativeTest(new String[] { "A.java", SOURCE_CODE }, + """ + ---------- + 1. WARNING in A.java (at line 3) + int \\u005F = 12; + ^^^^^^ + '_' should not be used as an identifier, since it is a reserved keyword from source level 1.8 on + ---------- + """); + } else if (options.sourceLevel < ClassFileConstants.JDK21) { + runNegativeTest(new String[] { "A.java", SOURCE_CODE }, + """ + ---------- + 1. ERROR in A.java (at line 3) + int \\u005F = 12; + ^^^^^^ + '_' is a keyword from source level 9 onwards, cannot be used as identifier + ---------- + """); + } else { + runNegativeTest(new String[] { "A.java", SOURCE_CODE }, + """ + ---------- + 1. ERROR in A.java (at line 3) + int \\u005F = 12; + ^^^^^^ + Unnamed Patterns and Variables is a preview feature and disabled by default. Use --enable-preview to enable + ---------- + """); + } + } + +} diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UseOfUnderscoreWithPreviewTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UseOfUnderscoreWithPreviewTest.java new file mode 100644 index 00000000000..1c9c633cf44 --- /dev/null +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/UseOfUnderscoreWithPreviewTest.java @@ -0,0 +1,127 @@ +package org.eclipse.jdt.core.tests.compiler.regression; + +import java.util.Map; + +import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; +import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; + +import junit.framework.Test; + +public class UseOfUnderscoreWithPreviewTest extends AbstractBatchCompilerTest { + + public static Test suite() { + return buildMinimalComplianceTestSuite(UseOfUnderscoreWithPreviewTest.class, F_21); + } + + public UseOfUnderscoreWithPreviewTest(String name) { + super(name); + } + + @Override + protected Map getCompilerOptions() { + CompilerOptions compilerOptions = new CompilerOptions(super.getCompilerOptions()); + if (compilerOptions.sourceLevel == ClassFileConstants.JDK21) { + compilerOptions.enablePreviewFeatures = true; + } + return compilerOptions.getMap(); + } + + public void testReportsUnderscoreInstanceMemberAsError() { + String message = "As of release 21, '_' is only allowed to declare unnamed patterns, local variables, exception parameters or lambda parameters"; + String errorLevel = "ERROR"; + + runNegativeTest(new String[] { "A.java", """ + public class A { + int _ = 1; + public static void main(String[] args) { + System.out.println("Hello, World!"); + } + } + """ }, + + "----------\n" + + "1. " + errorLevel + " in A.java (at line 2)\n" + + " int _ = 1;\n" + + " ^\n" + + message + "\n" + + "----------\n"); + } + + public void testReportsUnicodeEscapeUnderscoreInstanceMemberAsError() { + String message = "As of release 21, '_' is only allowed to declare unnamed patterns, local variables, exception parameters or lambda parameters"; + String errorLevel = "ERROR"; + + runNegativeTest(new String[] { "A.java", """ + public class A { + int \\u005F = 1; + public static void main(String[] args) { + System.out.println("Hello, World!"); + } + } + """ }, + "----------\n" + + "1. " + errorLevel + " in A.java (at line 2)\n" + + " int \\u005F = 1;\n" + + " ^^^^^^\n" + + message + "\n" + + "----------\n"); + } + + public void testReportsUnderscoreParameterAsError() { + String message = "As of release 21, '_' is only allowed to declare unnamed patterns, local variables, exception parameters or lambda parameters"; + String errorLevel = "ERROR"; + + runNegativeTest(new String[] { "A.java", """ + public class A { + public static void main(String[] args) { + foo(1); + } + public static void foo(int _) { + System.out.println("Hello, World!"); + } + } + """ }, + "----------\n" + + "1. " + errorLevel + " in A.java (at line 5)\n" + + " public static void foo(int _) {\n" + + " ^\n" + + message + "\n" + + "----------\n"); + } + + public void testReportsUnderscoreParameterAsErrorUnicodeEscape() { + String message = "As of release 21, '_' is only allowed to declare unnamed patterns, local variables, exception parameters or lambda parameters"; + String errorLevel = "ERROR"; + + runNegativeTest(new String[] { "A.java", """ + public class A { + public static void main(String[] args) { + foo(1); + } + public static void foo(int \\u005F) { + System.out.println("Hello, World!"); + } + } + """ }, + "----------\n" + + "1. " + errorLevel + " in A.java (at line 5)\n" + + " public static void foo(int \\u005F) {\n" + + " ^^^^^^\n" + + message + "\n" + + "----------\n"); + } + + public void testReportsUnderscoreLocalVariableAsErrorUnicodeEscape() { + runConformTest(new String[] { "A.java", + """ + public class A { + public static void main(String[] args) { + int \\u005F = 12; + System.out.println("hello, world"); + } + } + """}, + "hello, world", null, new String[] { "--enable-preview" }); + } + +} diff --git a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java index cdf2d65ccc5..c9a6156a665 100644 --- a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java +++ b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionParser.java @@ -4232,6 +4232,7 @@ && isIndirectlyInsideFieldInitialization()) { // enum initializers indeed need m case TokenNamesuper: // e.g. super[.]fred() this.invocationType = SUPER_RECEIVER; break; + case TokenNameUNDERSCORE: case TokenNameIdentifier: // e.g. bar[.]fred() if (topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) != K_BETWEEN_NEW_AND_LEFT_BRACKET) { if (this.identifierPtr != prevIdentifierPtr) { // if identifier has been consumed, e.g. this.x[.]fred() @@ -4246,6 +4247,7 @@ && isIndirectlyInsideFieldInitialization()) { // enum initializers indeed need m case TokenNameCOLON_COLON: this.inReferenceExpression = true; break; + case TokenNameUNDERSCORE: case TokenNameIdentifier: if (this.inReferenceExpression) break; @@ -4317,6 +4319,7 @@ && isInsideSwitch() && checkYieldKeyword()) { this.qualifier = this.expressionPtr; // remenber the last expression so that arguments are correctly computed } switch (previous) { + case TokenNameUNDERSCORE: case TokenNameIdentifier: // e.g. fred[(]) or foo.fred[(]) if (topKnownElementKind(COMPLETION_OR_ASSIST_PARSER) == K_SELECTOR) { int info = 0; @@ -4436,6 +4439,7 @@ && isInsideSwitch() && checkYieldKeyword()) { pushOnElementStack(K_BETWEEN_LEFT_AND_RIGHT_BRACKET); } else { switch (previous) { + case TokenNameUNDERSCORE: case TokenNameIdentifier: case TokenNameboolean: case TokenNamebyte: diff --git a/org.eclipse.jdt.core/jdtCompilerAdapter.jar b/org.eclipse.jdt.core/jdtCompilerAdapter.jar index 8b78e733e319d326a100f32cc8f3233f69f869fd..b436019212e682e1dc59802386ef3aeb49897634 100644 GIT binary patch delta 12697 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 delta 12250 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 X0z^;}Twrt_Jn)1723#)JUta$M