diff --git a/org.eclipse.jdt.core.compiler.batch/grammar/java.g b/org.eclipse.jdt.core.compiler.batch/grammar/java.g index f7659fc1c86..074171cf691 100644 --- a/org.eclipse.jdt.core.compiler.batch/grammar/java.g +++ b/org.eclipse.jdt.core.compiler.batch/grammar/java.g @@ -808,11 +808,19 @@ VariableDeclarators ::= VariableDeclarators ',' VariableDeclarator /:$recovery_template Identifier:/ VariableDeclarator ::= VariableDeclaratorId EnterVariable ExitVariableWithoutInitialization +/:$readableName VariableDeclarator:/ +/:$recovery_template Identifier:/ VariableDeclarator ::= VariableDeclaratorId EnterVariable '=' ForceNoDiet VariableInitializer RestoreDiet ExitVariableWithInitialization +/:$readableName VariableDeclarator:/ +/:$recovery_template Identifier:/ VariableDeclarator ::= UnnamedVariable EnterUnnamedVariable ExitVariableWithoutInitialization +/:$readableName VariableDeclarator:/ +/:$recovery_template Identifier:/ +/:$compliance 21:/ VariableDeclarator ::= UnnamedVariable EnterUnnamedVariable '=' ForceNoDiet VariableInitializer RestoreDiet ExitVariableWithInitialization /:$readableName VariableDeclarator:/ /:$recovery_template Identifier:/ +/:$compliance 21:/ EnterVariable ::= $empty /.$putCase consumeEnterVariable(); $break ./ @@ -843,6 +851,7 @@ VariableDeclaratorId ::= 'Identifier' Dimsopt UnnamedVariable ::= 'Underscore' /:$readableName UnnamedVariable:/ +/:$compliance 21:/ VariableInitializer -> Expression VariableInitializer -> ArrayInitializer @@ -1349,6 +1358,7 @@ ComponentPatternList ::= ComponentPatternList ',' ComponentPattern -- 21 preview feature : unnamed record patterns ----------------------------------------------- ComponentPattern -> Pattern +/:$compliance 20:/ ComponentPattern -> UnnamedPattern /:$compliance 21:/ @@ -2584,10 +2594,12 @@ EnhancedForStatementHeaderInit ::= 'for' '(' Modifiers Type PushRealModifiers Id EnhancedForStatementHeaderInit ::= 'for' '(' Type PushModifiers UnnamedVariable /.$putCase consumeEnhancedForStatementHeaderInitUnnamed(false); $break ./ /:$readableName EnhancedForStatementHeaderInit:/ +/:$compliance 21:/ EnhancedForStatementHeaderInit ::= 'for' '(' Modifiers Type PushRealModifiers UnnamedVariable /.$putCase consumeEnhancedForStatementHeaderInitUnnamed(true); $break ./ /:$readableName EnhancedForStatementHeaderInit:/ +/:$compliance 21:/ EnhancedForStatementHeader ::= EnhancedForStatementHeaderInit ':' Expression ')' /.$putCase consumeEnhancedForStatementHeader(); $break ./ 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 03a744805c6..0c633519f9d 100644 Binary files a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser21.rsc and b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser21.rsc differ 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 3b37cb2b11c..b1c21170c8a 100644 Binary files a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser22.rsc and b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser22.rsc differ 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 b48e3c46b5a..3c82457d097 100644 Binary files a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser23.rsc and b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser23.rsc differ diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/TestAll.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/TestAll.java index 937a7350390..24ee24cb559 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/TestAll.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/TestAll.java @@ -254,11 +254,23 @@ public static TestSuite getTestSuite(boolean addComplianceDiagnoseTest) { TestCase.RUN_ONLY_ID = null; all.addTest(AbstractCompilerTest.buildComplianceTestSuite(ClassFileConstants.getComplianceLevelForJavaVersion(ClassFileConstants.MAJOR_VERSION_19), tests_19)); } + if ((possibleComplianceLevels & AbstractCompilerTest.F_20) != 0) { + ArrayList tests_20 = (ArrayList)testClasses.clone(); + tests_20.addAll(TEST_CLASSES_1_5); + addJava16Tests(tests_20); + // Reset forgotten subsets tests + TestCase.TESTS_PREFIX = null; + TestCase.TESTS_NAMES = null; + TestCase.TESTS_NUMBERS= null; + TestCase.TESTS_RANGE = null; + TestCase.RUN_ONLY_ID = null; + all.addTest(AbstractCompilerTest.buildComplianceTestSuite(ClassFileConstants.getComplianceLevelForJavaVersion(ClassFileConstants.MAJOR_VERSION_20), tests_20)); + } if ((possibleComplianceLevels & AbstractCompilerTest.F_21) != 0) { ArrayList tests_21 = (ArrayList)testClasses.clone(); tests_21.addAll(TEST_CLASSES_1_5); - tests_21.add(JEP443UnnamedVariableTest.class); addJava16Tests(tests_21); + tests_21.add(JEP443UnnamedVariableTest.class); // Reset forgotten subsets tests TestCase.TESTS_PREFIX = null; TestCase.TESTS_NAMES = null;