diff --git a/base-test/org.eclipse.jdt.groovy.core.tests.builder/src/org/eclipse/jdt/core/groovy/tests/builder/BuildAccessRulesTests.java b/base-test/org.eclipse.jdt.groovy.core.tests.builder/src/org/eclipse/jdt/core/groovy/tests/builder/BuildAccessRulesTests.java index 4c8b21cead..067ebe0fb6 100644 --- a/base-test/org.eclipse.jdt.groovy.core.tests.builder/src/org/eclipse/jdt/core/groovy/tests/builder/BuildAccessRulesTests.java +++ b/base-test/org.eclipse.jdt.groovy.core.tests.builder/src/org/eclipse/jdt/core/groovy/tests/builder/BuildAccessRulesTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2009-2022 the original author or authors. + * Copyright 2009-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -48,7 +48,7 @@ public final class BuildAccessRulesTests extends BuilderTestSuite { @Before public void setUp() throws Exception { - prj = env.addProject("Project"); + prj = env.addProject("Project", "1.8"); src = env.getPackageFragmentRootPath(prj, "src"); env.setClasspath(prj, new IClasspathEntry[] { JavaCore.newSourceEntry(src), diff --git a/groovy-eclipse.setup b/groovy-eclipse.setup index f2a45f7d96..e1a91db600 100644 --- a/groovy-eclipse.setup +++ b/groovy-eclipse.setup @@ -311,7 +311,7 @@ + url="https://download.eclipse.org/eclipse/updates/4.33-I-builds/I20240815-1810"/> diff --git a/jdt-patch/e433/Feature-org.codehaus.groovy.jdt.patch/feature.xml b/jdt-patch/e433/Feature-org.codehaus.groovy.jdt.patch/feature.xml index dd42845bc4..2553d4e60b 100644 --- a/jdt-patch/e433/Feature-org.codehaus.groovy.jdt.patch/feature.xml +++ b/jdt-patch/e433/Feature-org.codehaus.groovy.jdt.patch/feature.xml @@ -18,7 +18,7 @@ - + ClassHeaderImplements /:$readableName ClassHeaderImplements:/ +-- Production name hardcoded in scanner. Must be ::= and not -> +PermittedTypes ::= ClassTypeList +/:$readableName PermittedTypes:/ + PermittedTypesopt -> $empty -PermittedTypesopt ::= 'permits' ClassTypeList +PermittedTypesopt ::= RestrictedIdentifierpermits ClassTypeList /.$putCase consumePermittedTypes(); $break ./ -/:$readableName PermittedTypes:/ +/:$readableName PermittedTypesopt:/ /:$compliance 17:/ InterfaceMemberDeclarationsopt ::= $empty @@ -3200,4 +3206,3 @@ UNDERSCORE ::= '_' $end -- need a carriage return after the $end - diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/core/compiler/IProblem.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/core/compiler/IProblem.java index d7a0139da8..9b8f00dc82 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/core/compiler/IProblem.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/core/compiler/IProblem.java @@ -2183,6 +2183,8 @@ public interface IProblem { int FeatureNotSupported = Compliance + 1107; /** @since 3.26*/ int PreviewAPIUsed = Compliance + 1108; + /** @since 3.39*/ + int JavaVersionNotSupported = Compliance + 1109; /** @since 3.13 */ int UnlikelyCollectionMethodArgumentType = 1200; diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ClassFile.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ClassFile.java index 76a6b1841a..41d8f3518c 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ClassFile.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ClassFile.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2023 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -4485,7 +4485,7 @@ public int generateMethodInfoAttributes(MethodBinding methodBinding) { } } if ((methodBinding.tagBits & TagBits.HasMissingType) != 0) { - this.missingTypes = methodBinding.collectMissingTypes(this.missingTypes); + this.missingTypes = methodBinding.collectMissingTypes(this.missingTypes, true); } return attributesNumber; } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/Compiler.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/Compiler.java index 5de6385230..b0602b67e9 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/Compiler.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/Compiler.java @@ -309,8 +309,6 @@ public void accept(IBinaryType binaryType, PackageBinding packageBinding, Access if (this.options.verbose) { this.out.println( Messages.bind(Messages.compilation_loadBinary, new String(binaryType.getName()))); -// new Exception("TRACE BINARY").printStackTrace(System.out); -// System.out.println(); } LookupEnvironment env = packageBinding.environment; env.createBinaryTypeFrom(binaryType, packageBinding, accessRestriction); @@ -842,13 +840,33 @@ private void abortIfPreviewNotAllowed(ICompilationUnit[] sourceUnits, int maxUn throw a; } } + + private void abortIfVersionNotAllowed(ICompilationUnit[] sourceUnits, int maxUnits) { + try { + long firstSupportedJdkLevel = CompilerOptions.getFirstSupportedJdkLevel(); + if (this.options.sourceLevel < firstSupportedJdkLevel + || this.options.targetJDK < firstSupportedJdkLevel + || this.options.complianceLevel < firstSupportedJdkLevel) { + long badVersion = Math.min(this.options.complianceLevel, Math.min(this.options.sourceLevel, this.options.targetJDK)); + this.problemReporter.abortDueToNotSupportedJavaVersion(CompilerOptions.versionFromJdkLevel(badVersion), + CompilerOptions.getFirstSupportedJavaVersion()); + } + } catch (AbortCompilation a) { + // best effort to find a way for reporting this problem: report on the first source + if (a.compilationResult == null) { + a.compilationResult = new CompilationResult(sourceUnits[0], 0, maxUnits, this.options.maxProblemsPerUnit); + } + throw a; + } + } /** * Add the initial set of compilation units into the loop * -> build compilation unit declarations, their bindings and record their results. */ protected void internalBeginToCompile(ICompilationUnit[] sourceUnits, int maxUnits) { + abortIfVersionNotAllowed(sourceUnits,maxUnits); abortIfPreviewNotAllowed(sourceUnits,maxUnits); - if (!this.useSingleThread && maxUnits >= ReadManager.THRESHOLD) + if (!this.useSingleThread) this.parser.readManager = new ReadManager(sourceUnits, maxUnits); try { // Switch the current policy and compilation result for this unit to the requested one. diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ProcessTaskManager.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ProcessTaskManager.java index 98ff40597f..f14b356a27 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ProcessTaskManager.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ProcessTaskManager.java @@ -14,27 +14,41 @@ package org.eclipse.jdt.internal.compiler; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + import org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration; import org.eclipse.jdt.internal.compiler.problem.AbortCompilation; import org.eclipse.jdt.internal.compiler.util.Messages; -public class ProcessTaskManager implements Runnable { +public class ProcessTaskManager { - Compiler compiler; - private int unitIndex; - private Thread processingThread; + private final Compiler compiler; + private final int startingIndex; + private volatile Future processingTask; // synchronized write, volatile read CompilationUnitDeclaration unitToProcess; private Throwable caughtException; // queue volatile int currentIndex, availableIndex, size, sleepCount; - CompilationUnitDeclaration[] units; + private final CompilationUnitDeclaration[] units; public static final int PROCESSED_QUEUE_SIZE = 100; + /** Normally a single thread is created an reused on subsequent builds **/ + private static final ExecutorService executor = Executors.newCachedThreadPool(r -> { + Thread t = new Thread(r, "Compiler Processing Task"); //$NON-NLS-1$ + t.setDaemon(true); + return t; + }); + public ProcessTaskManager(Compiler compiler, int startingIndex) { this.compiler = compiler; - this.unitIndex = startingIndex; + this.startingIndex = startingIndex; this.currentIndex = 0; this.availableIndex = 0; @@ -43,9 +57,7 @@ public ProcessTaskManager(Compiler compiler, int startingIndex) { this.units = new CompilationUnitDeclaration[this.size]; synchronized (this) { - this.processingThread = new Thread(this, "Compiler Processing Task"); //$NON-NLS-1$ - this.processingThread.setDaemon(true); - this.processingThread.start(); + this.processingTask = executor.submit(this::compile); } } @@ -77,7 +89,7 @@ public CompilationUnitDeclaration removeNextUnit() throws Error { next = this.units[this.currentIndex]; if (next == null || this.caughtException != null) { do { - if (this.processingThread == null) { + if (this.processingTask == null) { if (this.caughtException != null) { // rethrow the caught exception from the processingThread in the main compiler thread if (this.caughtException instanceof Error) @@ -112,23 +124,27 @@ public CompilationUnitDeclaration removeNextUnit() throws Error { return next; } -@Override -public void run() { +private void compile() { + int unitIndex = this.startingIndex; + synchronized (this) { // wait until processingTask is assigned + @SuppressWarnings("unused") + Future p = this.processingTask; + } boolean noAnnotations = this.compiler.annotationProcessorManager == null; - while (this.processingThread != null) { + while (this.processingTask != null) { this.unitToProcess = null; int index = -1; - boolean cleanup = noAnnotations || this.compiler.shouldCleanup(this.unitIndex); + boolean cleanup = noAnnotations || this.compiler.shouldCleanup(unitIndex); try { synchronized (this) { - if (this.processingThread == null) return; + if (this.processingTask == null) return; - this.unitToProcess = this.compiler.getUnitToProcess(this.unitIndex); + this.unitToProcess = this.compiler.getUnitToProcess(unitIndex); if (this.unitToProcess == null) { - this.processingThread = null; + this.processingTask = null; return; } - index = this.unitIndex++; + index = unitIndex++; if (this.unitToProcess.compilationResult.hasBeenAccepted) continue; } @@ -159,7 +175,7 @@ public void run() { addNextUnit(this.unitToProcess); } catch (Error | RuntimeException e) { synchronized (this) { - this.processingThread = null; + this.processingTask = null; this.caughtException = e; } return; @@ -169,17 +185,19 @@ public void run() { public void shutdown() { try { - Thread t = null; + Future t = null; synchronized (this) { - if (this.processingThread != null) { - t = this.processingThread; - this.processingThread = null; + t = this.processingTask; + if (t != null) { + // stop processing on error: + this.processingTask = null; notifyAll(); } } - if (t != null) - t.join(250); // do not wait forever - } catch (InterruptedException ignored) { + if (t != null) { + t.get(250, TimeUnit.MILLISECONDS); // do not wait forever + } + } catch (InterruptedException | ExecutionException | TimeoutException ignored) { // ignore } } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ReadManager.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ReadManager.java index 42ab9dee49..6fc0ff79e8 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ReadManager.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ReadManager.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2013 IBM Corporation and others. + * Copyright (c) 2008, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -14,171 +14,131 @@ package org.eclipse.jdt.internal.compiler; +import java.util.ArrayDeque; +import java.util.Map; +import java.util.Queue; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; import org.eclipse.jdt.internal.compiler.env.ICompilationUnit; -public class ReadManager implements Runnable { - ICompilationUnit[] units; - int nextFileToRead; - ICompilationUnit[] filesRead; - char[][] contentsRead; - int readyToReadPosition; - int nextAvailablePosition; - Thread[] readingThreads; - char[] readInProcessMarker = new char[0]; - int sleepingThreadCount; - private Throwable caughtException; +/** Reads a list of ICompilationUnit before actually needed (ahead) **/ +public class ReadManager { + private static final int CACHE_SIZE = 15; // do not waste memory by keeping too many files in memory + /** + * Not more threads then cache size and leave 2 threads for compiler + writer. Executor should process in fifo order + * (first in first out). + */ + private static int THREAD_COUNT = Math.max(0, Math.min(CACHE_SIZE, Runtime.getRuntime().availableProcessors() - 2)); + private static final ExecutorService executor = THREAD_COUNT <= 0 ? null + : Executors.newFixedThreadPool(THREAD_COUNT, r -> { + Thread t = new Thread(r, "Compiler Source File Reader"); //$NON-NLS-1$ + t.setDaemon(true); + return t; + }); - static final int START_CUSHION = 5; - public static final int THRESHOLD = 10; - static final int CACHE_SIZE = 15; // do not waste memory by keeping too many files in memory + private final Queue unitsToRead; + private final Map> cache = new ConcurrentHashMap<>(); -public ReadManager(ICompilationUnit[] files, int length) { - // start the background threads to read the file's contents - int threadCount = Runtime.getRuntime().availableProcessors() + 1; - if (threadCount < 2) { - threadCount = 0; - } else if (threadCount > CACHE_SIZE) { - threadCount = CACHE_SIZE; - } - - if (threadCount > 0) { - synchronized (this) { - this.units = new ICompilationUnit[length]; - System.arraycopy(files, 0, this.units, 0, length); - this.nextFileToRead = START_CUSHION; // skip some files to reduce the number of times we have to wait - this.filesRead = new ICompilationUnit[CACHE_SIZE]; - this.contentsRead = new char[CACHE_SIZE][]; - this.readyToReadPosition = 0; - this.nextAvailablePosition = 0; - this.sleepingThreadCount = 0; - this.readingThreads = new Thread[threadCount]; - for (int i = threadCount; --i >= 0;) { - this.readingThreads[i] = new Thread(this, "Compiler Source File Reader"); //$NON-NLS-1$ - this.readingThreads[i].setDaemon(true); - this.readingThreads[i].start(); - } + public ReadManager(ICompilationUnit[] files, int length) { + this.unitsToRead = new ArrayDeque<>(length); + if (executor == null) { + return; } - } -} - -public char[] getContents(ICompilationUnit unit) throws Error { - Thread[] rThreads = this.readingThreads; - if (rThreads == null || this.units.length == 0) { - if (this.caughtException != null) { - // rethrow the caught exception from the readingThreads in the main compiler thread - if (this.caughtException instanceof Error) - throw (Error) this.caughtException; - throw (RuntimeException) this.caughtException; + for (int l = 0; l < length; l++) { + ICompilationUnit unit = files[l]; + this.unitsToRead.offer(unit); + } + while (queueNextReadAhead()) { + // queued 1 more } - return unit.getContents(); } - boolean yield = this.sleepingThreadCount == rThreads.length; - char[] result = null; - synchronized (this) { - if (unit == this.filesRead[this.readyToReadPosition]) { - result = this.contentsRead[this.readyToReadPosition]; - while (result == this.readInProcessMarker || result == null) { - // let the readingThread know we're waiting - //System.out.print('|'); - this.contentsRead[this.readyToReadPosition] = null; - try { - wait(250); - } catch (InterruptedException ignore) { // ignore - } - if (this.caughtException != null) { - // rethrow the caught exception from the readingThreads in the main compiler thread - if (this.caughtException instanceof Error) - throw (Error) this.caughtException; - throw (RuntimeException) this.caughtException; - } - result = this.contentsRead[this.readyToReadPosition]; + /** meant to called in the order of the initial supplied files **/ + public char[] getContents(ICompilationUnit unit) throws Error { + if (executor == null) { + return getWithoutExecutor(unit); + } + Future future; + synchronized (this) { // atomic remove from unitsToRead or cache + future = this.cache.remove(unit); + if (future == null) { + // unit was not already scheduled + // and does not need to be scheduled anymore + this.unitsToRead.remove(unit); } - // free spot for next file - this.filesRead[this.readyToReadPosition] = null; - this.contentsRead[this.readyToReadPosition] = null; - if (++this.readyToReadPosition >= this.contentsRead.length) - this.readyToReadPosition = 0; - if (this.sleepingThreadCount > 0) { - //System.out.print('+'); - //System.out.print(this.nextFileToRead); - notify(); + } + if (future == null) { + // should not happen. + return getWithoutFuture(unit); + } + // now: future != null + queueNextReadAhead(); + try { + // unit was already scheduled + // in most cases future is already completed + // Otherwise, when read ahead is slower then compiler, + // wait for completion to avoid extra work of reading files multiple times: + return getWithFuture(future); + } catch (InterruptedException ignored) { + return getWhileInterrupted(unit); + } catch (ExecutionException e) { + // rethrow the caught exception from the reading threads in the main compiler thread + if (e.getCause() instanceof Error err) { + throw err; } - } else { - // must make sure we're reading ahead of the unit - int unitIndex = 0; - for (int l = this.units.length; unitIndex < l; unitIndex++) - if (this.units[unitIndex] == unit) break; - if (unitIndex == this.units.length) { - // attempting to read a unit that was not included in the initial files - should not happen - this.units = new ICompilationUnit[0]; // stop looking for more - } else if (unitIndex >= this.nextFileToRead) { - // start over - //System.out.println(unitIndex + " vs " + this.nextFileToRead); - this.nextFileToRead = unitIndex + START_CUSHION; - this.readyToReadPosition = 0; - this.nextAvailablePosition = 0; - this.filesRead = new ICompilationUnit[CACHE_SIZE]; - this.contentsRead = new char[CACHE_SIZE][]; - notifyAll(); + if (e.getCause() instanceof RuntimeException ex) { + throw ex; } + throw new RuntimeException(e); } } - if (yield) - Thread.yield(); // ensure other threads get a chance - if (result != null) - return result; - //System.out.print('-'); - return unit.getContents(); -} -@Override -public void run() { - try { - while (this.readingThreads != null && this.nextFileToRead < this.units.length) { - ICompilationUnit unit = null; - int position = -1; - synchronized (this) { - if (this.readingThreads == null) return; + // distinct methods "getW*" with same content to make it possible to observe with method sampler which case took how long: + private char[] getWithFuture(Future future) throws InterruptedException, ExecutionException { + // should happen in most cases + return future.get(); + } + + private char[] getWithoutExecutor(ICompilationUnit unit) { + // THREAD_COUNT==0 => no read ahead + return unit.getContents(); + } + + private char[] getWithoutFuture(ICompilationUnit unit) { + // should not happen + return unit.getContents(); + } - while (this.filesRead[this.nextAvailablePosition] != null) { - this.sleepingThreadCount++; - try { - wait(250); // wait until a spot in contents is available - } catch (InterruptedException e) { // ignore - } - this.sleepingThreadCount--; - if (this.readingThreads == null) return; - } + private char[] getWhileInterrupted(ICompilationUnit unit) { + // should not happen + return unit.getContents(); + } - if (this.nextFileToRead >= this.units.length) return; - unit = this.units[this.nextFileToRead++]; - position = this.nextAvailablePosition; - if (++this.nextAvailablePosition >= this.contentsRead.length) - this.nextAvailablePosition = 0; - this.filesRead[position] = unit; - this.contentsRead[position] = this.readInProcessMarker; // mark the spot so we know its being read - } - char[] result = unit.getContents(); - synchronized (this) { - if (this.filesRead[position] == unit) { - if (this.contentsRead[position] == null) // wake up main thread which is waiting for this file - notifyAll(); - this.contentsRead[position] = result; - } - } + private boolean queueNextReadAhead() { + if (this.cache.size() >= CACHE_SIZE) { + return false; } - } catch (Error | RuntimeException e) { - synchronized (this) { - this.caughtException = e; - shutdown(); + synchronized (this) { // atomic move from unitsToRead to cache + ICompilationUnit nextUnit = this.unitsToRead.poll(); + if (nextUnit == null) { + return false; + } + Future future = executor.submit(() -> readAhead(nextUnit)); + this.cache.put(nextUnit, future); + return true; } - return; } -} -public synchronized void shutdown() { - this.readingThreads = null; // mark the read manager as shutting down so that the reading threads stop - notifyAll(); -} + private char[] readAhead(ICompilationUnit unit) { + queueNextReadAhead(); + return unit.getContents(); + } + + public void shutdown() { + this.unitsToRead.clear(); + this.cache.clear(); + } } \ No newline at end of file diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/AllocationExpression.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/AllocationExpression.java index e2b7864695..f5d31c0d5b 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/AllocationExpression.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/AllocationExpression.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2021 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -505,7 +505,7 @@ public TypeBinding resolveType(BlockScope scope) { scope.problemReporter().invalidConstructor(this, this.binding); return this.resolvedType; } - if ((this.binding.tagBits & TagBits.HasMissingType) != 0) { + if ((this.binding.tagBits & TagBits.HasMissingType) != 0 && isMissingTypeRelevant()) { scope.problemReporter().missingTypeInConstructor(this, this.binding); } if (isMethodUseDeprecated(this.binding, scope, true, this)) { @@ -539,6 +539,20 @@ public TypeBinding resolveType(BlockScope scope) { return this.resolvedType; } +protected boolean isMissingTypeRelevant() { + if (this.binding != null && this.binding.isVarargs()) { + if (this.arguments.length < this.binding.parameters.length) { + // are all but the irrelevant varargs type present? + for (int i = 0; i < this.arguments.length; i++) { + if ((this.binding.parameters[i].tagBits & TagBits.HasMissingType) != 0) + return true; // this one *is* relevant - actually this case is already detected during findConstructorBinding() + } + return false; + } + } + return true; +} + protected void checkPreConstructorContext(BlockScope scope) { if (this.inPreConstructorContext && this.type != null && this.type.resolvedType instanceof ReferenceBinding currentType diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Annotation.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Annotation.java index b757d8af00..b7168a036b 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Annotation.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Annotation.java @@ -54,7 +54,6 @@ /** * Annotation */ -@SuppressWarnings({"rawtypes", "unchecked"}) public abstract class Annotation extends Expression { Annotation persistibleAnnotation = this; // Emit this into class file, unless this is a repeating annotation, in which case package this into the designated container. @@ -67,12 +66,12 @@ public static int[] getLocations( final Annotation annotation) { class LocationCollector extends ASTVisitor { - Stack typePathEntries; + Stack typePathEntries; Annotation searchedAnnotation; boolean continueSearch = true; public LocationCollector(Annotation currentAnnotation) { - this.typePathEntries = new Stack(); + this.typePathEntries = new Stack<>(); this.searchedAnnotation = currentAnnotation; } @@ -214,8 +213,7 @@ public String toString() { .append("search location for ") //$NON-NLS-1$ .append(this.searchedAnnotation) .append("\ncurrent type_path entries : "); //$NON-NLS-1$ - for (Object entry : this.typePathEntries) { - int[] typePathEntry = (int[]) entry; + for (int[] typePathEntry : this.typePathEntries) { buffer .append('(') .append(typePathEntry[0]) @@ -236,7 +234,7 @@ public String toString() { int[] result = new int[size*2]; int offset=0; for (int i = 0; i < size; i++) { - int[] pathElement = (int[])collector.typePathEntries.get(i); + int[] pathElement = collector.typePathEntries.get(i); result[offset++] = pathElement[0]; result[offset++] = pathElement[1]; } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.java index 02e2a96188..a607cc5102 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/ConditionalExpression.java @@ -317,6 +317,12 @@ public void generateCode( // End of if statement endifLabel.place(); } + if (this.valueIfFalse.resolvedType == TypeBinding.NULL) { + if (!this.resolvedType.isBaseType()) { + codeStream.operandStack.pop(TypeBinding.NULL); + codeStream.operandStack.push(this.resolvedType); + } + } } // May loose some local variable initializations : affecting the local variable attributes if (this.mergedInitStateIndex != -1) { diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable.java index 80e4ba23f6..aadcde5a57 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable.java @@ -556,11 +556,15 @@ static boolean isFluentMethod(MethodBinding binding) { if (binding.isStatic()) return false; ReferenceBinding declaringClass = binding.declaringClass; - if (declaringClass.equals(binding.returnType)) { - for (char[][] compoundName : TypeConstants.FLUENT_RESOURCE_CLASSES) { - if (CharOperation.equals(compoundName, declaringClass.compoundName)) - return true; + while (declaringClass != null) { + if (declaringClass.equals(binding.returnType)) { + for (char[][] compoundName : TypeConstants.FLUENT_RESOURCE_CLASSES) { + if (CharOperation.equals(compoundName, declaringClass.compoundName)) + return true; + } + return false; } + declaringClass = declaringClass.superclass(); } return false; } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/MessageSend.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/MessageSend.java index 9bc7180ee5..ce2c97d35a 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/MessageSend.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/MessageSend.java @@ -995,7 +995,7 @@ public TypeBinding resolveType(BlockScope scope) { this.binding = scope.environment().updatePolymorphicMethodReturnType((PolymorphicMethodBinding) this.binding, TypeBinding.VOID); } } - if ((this.binding.tagBits & TagBits.HasMissingType) != 0) { + if ((this.binding.tagBits & TagBits.HasMissingType) != 0 && isMissingTypeRelevant()) { scope.problemReporter().missingTypeInMethod(this, this.binding); } if (!this.binding.isStatic()) { @@ -1112,6 +1112,25 @@ protected boolean isUnnecessaryReceiverCast(BlockScope scope, TypeBinding uncast || MethodVerifier.doesMethodOverride(otherMethod, this.binding, scope.environment()); } +protected boolean isMissingTypeRelevant() { + if ((this.bits & ASTNode.InsideExpressionStatement) != 0) { + if (this.binding.collectMissingTypes(null, false) == null) + return false; // only irrelevant return type is missing + } + if ((this.binding.returnType.tagBits & TagBits.HasMissingType) == 0 + && this.binding.isVarargs()) { + if (this.arguments.length < this.binding.parameters.length) { + // are all but the irrelevant varargs type present? + for (int i = 0; i < this.arguments.length; i++) { + if ((this.binding.parameters[i].tagBits & TagBits.HasMissingType) != 0) + return true; // this one *is* relevant - actually this case is already detected during findMethodBinding() + } + return false; + } + } + return true; +} + protected TypeBinding handleNullnessCodePatterns(BlockScope scope, TypeBinding returnType) { // j.u.s.Stream.filter() may modify nullness of stream elements: if (this.binding.isWellknownMethod(TypeConstants.JAVA_UTIL_STREAM__STREAM, TypeConstants.FILTER) diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/QualifiedAllocationExpression.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/QualifiedAllocationExpression.java index 2f6aeee152..0fdd647b78 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/QualifiedAllocationExpression.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/QualifiedAllocationExpression.java @@ -586,7 +586,7 @@ private TypeBinding resolveTypeForQualifiedAllocationExpression(BlockScope scope scope.problemReporter().invalidConstructor(this, constructorBinding); return this.resolvedType; } - if ((constructorBinding.tagBits & TagBits.HasMissingType) != 0) { + if ((constructorBinding.tagBits & TagBits.HasMissingType) != 0 && isMissingTypeRelevant()) { scope.problemReporter().missingTypeInConstructor(this, constructorBinding); } if (this.enclosingInstance != null) { diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/TryStatement.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/TryStatement.java index 73efad504a..d47d75cc72 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/TryStatement.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/TryStatement.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2023 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -204,9 +204,10 @@ public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, Fl int catchCount; this.catchExits = new boolean[catchCount = this.catchBlocks.length]; this.catchExitInitStateIndexes = new int[catchCount]; + FlowInfo incoming = tryInfo.copy(); for (int i = 0; i < catchCount; i++) { // keep track of the inits that could potentially have led to this exception handler (for final assignments diagnosis) - FlowInfo catchInfo = prepareCatchInfo(flowInfo, handlingContext, tryInfo, i); + FlowInfo catchInfo = prepareCatchInfo(flowInfo, handlingContext, incoming, i); flowContext.conditionalLevel++; catchInfo = this.catchBlocks[i].analyseCode( @@ -332,9 +333,10 @@ public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, Fl int catchCount; this.catchExits = new boolean[catchCount = this.catchBlocks.length]; this.catchExitInitStateIndexes = new int[catchCount]; + FlowInfo incoming = tryInfo.copy(); for (int i = 0; i < catchCount; i++) { // keep track of the inits that could potentially have led to this exception handler (for final assignments diagnosis) - FlowInfo catchInfo = prepareCatchInfo(flowInfo, handlingContext, tryInfo, i); + FlowInfo catchInfo = prepareCatchInfo(flowInfo, handlingContext, incoming, i); insideSubContext.conditionalLevel = 1; catchInfo = this.catchBlocks[i].analyseCode( @@ -499,10 +501,8 @@ private int finallyMode() { return NO_FINALLY; } else if (isSubRoutineEscaping()) { return FINALLY_DOES_NOT_COMPLETE; - } else if (this.scope.compilerOptions().inlineJsrBytecode) { - return FINALLY_INLINE; } else { - return FINALLY_SUBROUTINE; + return FINALLY_INLINE; } } /** @@ -1188,13 +1188,6 @@ public void resolve(BlockScope upperScope) { // provision for returning and forcing the finally block to run MethodScope methodScope = this.scope.methodScope(); - // the type does not matter as long as it is not a base type - if (!upperScope.compilerOptions().inlineJsrBytecode) { - this.returnAddressVariable = - new LocalVariableBinding(TryStatement.SECRET_RETURN_ADDRESS_NAME, upperScope.getJavaLangObject(), ClassFileConstants.AccDefault, false); - finallyScope.addLocalVariable(this.returnAddressVariable); - this.returnAddressVariable.setConstant(Constant.NotAConstant); // not inlinable - } this.subRoutineStartLabel = new BranchLabel(); this.anyExceptionVariable = diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/batch/Main.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/batch/Main.java index fd283a9e18..75f0e578b7 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/batch/Main.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/batch/Main.java @@ -1072,18 +1072,6 @@ public void logVersion(final boolean printToOut) { } } - /** - * Print the usage of wrong JDK - */ - public void logWrongJDK() { - if ((this.tagBits & Logger.XML) != 0) { - HashMap parameters = new HashMap<>(); - parameters.put(Logger.MESSAGE, this.main.bind("configure.requiresJDK1.2orAbove")); //$NON-NLS-1$ - printTag(Logger.ERROR, parameters, true, true); - } - this.printlnErr(this.main.bind("configure.requiresJDK1.2orAbove")); //$NON-NLS-1$ - } - private void logXmlExtraProblem(CategorizedProblem problem, int globalErrorCount, int localErrorCount) { final int sourceStart = problem.getSourceStart(); final int sourceEnd = problem.getSourceEnd(); @@ -1696,59 +1684,7 @@ public String bind(String id, String[] arguments) { } return MessageFormat.format(message, (Object[]) arguments); } -/** - * Return true if and only if the running VM supports the given minimal version. - * - *

This only checks the major version, since the minor version is always 0 (at least for the useful cases).

- *

The given minimalSupportedVersion is one of the constants:

- *
    - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK1_1
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK1_2
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK1_3
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK1_4
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK1_5
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK1_6
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK1_7
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK1_8
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK9
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK10
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK11
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK12
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK13
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK14
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK15
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK16
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK17
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK18
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK19
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK20
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK21
  • - *
  • org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants.JDK22
  • - *
- * @param minimalSupportedVersion the given minimal version - * @return true if and only if the running VM supports the given minimal version, false otherwise - */ -private boolean checkVMVersion(long minimalSupportedVersion) { - // the format of this property is supposed to be xx.x where x are digits. - String classFileVersion = System.getProperty("java.class.version"); //$NON-NLS-1$ - if (classFileVersion == null) { - // by default we don't support a class file version we cannot recognize - return false; - } - int index = classFileVersion.indexOf('.'); - if (index == -1) { - // by default we don't support a class file version we cannot recognize - return false; - } - int majorVersion; - try { - majorVersion = Integer.parseInt(classFileVersion.substring(0, index)); - } catch (NumberFormatException e) { - // by default we don't support a class file version we cannot recognize - return false; - } - return ClassFileConstants.getComplianceLevelForJavaVersion(majorVersion) >=minimalSupportedVersion; -} + /* * Low-level API performing the actual compilation */ @@ -2318,10 +2254,8 @@ public void configure(String[] argv) { continue; } if (currentArg.equals("-inlineJSR")) { //$NON-NLS-1$ + // ignore, it is enabled by default from 1.5 on mode = DEFAULT; - this.options.put( - CompilerOptions.OPTION_InlineJsr, - CompilerOptions.ENABLED); continue; } if (currentArg.equals("-parameters")) { //$NON-NLS-1$ @@ -2654,22 +2588,11 @@ public void configure(String[] argv) { this.bind("configure.unsupportedWithRelease", "-target"));//$NON-NLS-1$ //$NON-NLS-2$ } this.didSpecifyTarget = true; - if (currentArg.equals("1.1")) { //$NON-NLS-1$ - this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_1); - } else if (currentArg.equals("1.2")) { //$NON-NLS-1$ - this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_2); - } else if (currentArg.equals("jsr14")) { //$NON-NLS-1$ - this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_JSR14); - } else if (currentArg.equals("cldc1.1")) { //$NON-NLS-1$ - this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_CLDC1_1); - this.options.put(CompilerOptions.OPTION_InlineJsr, CompilerOptions.ENABLED); + String targetVersion = optionStringToVersion(currentArg); + if (targetVersion != null) { + this.options.put(CompilerOptions.OPTION_TargetPlatform, targetVersion); } else { - String version = optionStringToVersion(currentArg); - if (version != null) { - this.options.put(CompilerOptions.OPTION_TargetPlatform, version); - } else { - throw new IllegalArgumentException(this.bind("configure.targetJDK", currentArg)); //$NON-NLS-1$ - } + throw new IllegalArgumentException(this.bind("configure.targetJDK", currentArg)); //$NON-NLS-1$ } mode = DEFAULT; continue; @@ -3155,23 +3078,10 @@ public void configure(String[] argv) { this.pendingErrors = null; } } -/** Translates any supported standard version starting at 1.3 up-to latest into the corresponding constant from CompilerOptions */ +/** Translates any supported standard version starting at {@link CompilerOptions#getFirstSupportedJavaVersion()} + * up-to latest into the corresponding constant from CompilerOptions */ private String optionStringToVersion(String currentArg) { switch (currentArg) { - case "1.3": return CompilerOptions.VERSION_1_3; //$NON-NLS-1$ - case "1.4": return CompilerOptions.VERSION_1_4; //$NON-NLS-1$ - case "1.5": //$NON-NLS-1$ - case "5": //$NON-NLS-1$ - case "5.0": //$NON-NLS-1$ - return CompilerOptions.VERSION_1_5; - case "1.6": //$NON-NLS-1$ - case "6": //$NON-NLS-1$ - case "6.0": //$NON-NLS-1$ - return CompilerOptions.VERSION_1_6; - case "1.7": //$NON-NLS-1$ - case "7": //$NON-NLS-1$ - case "7.0": //$NON-NLS-1$ - return CompilerOptions.VERSION_1_7; case "1.8": //$NON-NLS-1$ case "8": //$NON-NLS-1$ case "8.0": //$NON-NLS-1$ @@ -4005,7 +3915,7 @@ private void handleErrorOrWarningToken(String token, boolean isEnabling, int sev setSeverity(CompilerOptions.OPTION_ReportMissingJavadocComments, severity, isEnabling); return; } else if (token.equals("assertIdentifier")) { //$NON-NLS-1$ - setSeverity(CompilerOptions.OPTION_ReportAssertIdentifier, severity, isEnabling); + // error by default, no other values accepted return; } else if (token.equals("allDeadCode")) { //$NON-NLS-1$ setSeverity(CompilerOptions.OPTION_ReportDeadCode, severity, isEnabling); @@ -4102,7 +4012,7 @@ private void handleErrorOrWarningToken(String token, boolean isEnabling, int sev setSeverity(CompilerOptions.OPTION_ReportUndocumentedEmptyBlock, severity, isEnabling); return; } else if (token.equals("enumIdentifier")) { //$NON-NLS-1$ - setSeverity(CompilerOptions.OPTION_ReportEnumIdentifier, severity, isEnabling); + // error by default, no other values accepted return; } else if (token.equals("exports")) { //$NON-NLS-1$ setSeverity(CompilerOptions.OPTION_ReportAPILeak, severity, isEnabling); @@ -4830,20 +4740,12 @@ public void performCompilation() { String setting = System.getProperty("jdt.compiler.useSingleThread"); //$NON-NLS-1$ this.batchCompiler.useSingleThread = setting != null && setting.equals("true"); //$NON-NLS-1$ - if (this.compilerOptions.complianceLevel >= ClassFileConstants.JDK1_6 - && this.compilerOptions.processAnnotations) { - if (checkVMVersion(ClassFileConstants.JDK1_6)) { - initializeAnnotationProcessorManager(); - if (this.classNames != null) { - this.batchCompiler.setBinaryTypes(processClassNames(this.batchCompiler.lookupEnvironment)); - } - } else { - // report a warning - this.logger.logIncorrectVMVersionForAnnotationProcessing(); - } - if (checkVMVersion(ClassFileConstants.JDK9)) { - initRootModules(this.batchCompiler.lookupEnvironment, environment); + if (this.compilerOptions.processAnnotations) { + initializeAnnotationProcessorManager(); + if (this.classNames != null) { + this.batchCompiler.setBinaryTypes(processClassNames(this.batchCompiler.lookupEnvironment)); } + initRootModules(this.batchCompiler.lookupEnvironment, environment); } // set the non-externally configurable options. @@ -5430,76 +5332,15 @@ protected void validateOptions(boolean didSpecifyCompliance) { throw new IllegalArgumentException( this.bind("configure.unsupportedWithRelease", version));//$NON-NLS-1$ } - if (CompilerOptions.VERSION_1_3.equals(version)) { - if (!this.didSpecifySource) this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_3); - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_1); - } else if (CompilerOptions.VERSION_1_4.equals(version)) { - if (this.didSpecifySource) { - Object source = this.options.get(CompilerOptions.OPTION_Source); - if (CompilerOptions.VERSION_1_3.equals(source)) { - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_2); - } else if (CompilerOptions.VERSION_1_4.equals(source)) { - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4); - } - } else { - this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_3); - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_2); - } - } else if (CompilerOptions.VERSION_1_5.equals(version)) { - if (this.didSpecifySource) { - Object source = this.options.get(CompilerOptions.OPTION_Source); - if (CompilerOptions.VERSION_1_3.equals(source) - || CompilerOptions.VERSION_1_4.equals(source)) { - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4); - } else if (CompilerOptions.VERSION_1_5.equals(source)) { - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_5); - } - } else { - this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5); - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_5); - } - } else if (CompilerOptions.VERSION_1_6.equals(version)) { - if (this.didSpecifySource) { - Object source = this.options.get(CompilerOptions.OPTION_Source); - if (CompilerOptions.VERSION_1_3.equals(source) - || CompilerOptions.VERSION_1_4.equals(source)) { - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4); - } else if (CompilerOptions.VERSION_1_5.equals(source) - || CompilerOptions.VERSION_1_6.equals(source)) { - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_6); - } - } else { - this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_6); - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_6); - } - } else if (CompilerOptions.VERSION_1_7.equals(version)) { - if (this.didSpecifySource) { - Object source = this.options.get(CompilerOptions.OPTION_Source); - if (CompilerOptions.VERSION_1_3.equals(source) - || CompilerOptions.VERSION_1_4.equals(source)) { - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4); - } else if (CompilerOptions.VERSION_1_5.equals(source) - || CompilerOptions.VERSION_1_6.equals(source)) { - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_6); - } else if (CompilerOptions.VERSION_1_7.equals(source)) { - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_7); - } - } else { - this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_7); - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_7); - } - } else if (CompilerOptions.VERSION_1_8.equals(version)) { + if(CompilerOptions.UNSUPPORTED_VERSIONS.contains(version)) { + throw new IllegalArgumentException(this.bind("configure.unsupportedComplianceVersion", //$NON-NLS-1$ + this.options.get(CompilerOptions.OPTION_Compliance), CompilerOptions.getFirstSupportedJavaVersion())); + } + + if (CompilerOptions.VERSION_1_8.equals(version)) { if (this.didSpecifySource) { Object source = this.options.get(CompilerOptions.OPTION_Source); - if (CompilerOptions.VERSION_1_3.equals(source) - || CompilerOptions.VERSION_1_4.equals(source)) { - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4); - } else if (CompilerOptions.VERSION_1_5.equals(source) - || CompilerOptions.VERSION_1_6.equals(source)) { - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_6); - } else if (CompilerOptions.VERSION_1_7.equals(source)) { - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_7); - } else if (CompilerOptions.VERSION_1_8.equals(source)) { + if (CompilerOptions.VERSION_1_8.equals(source)) { if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_8); } } else { @@ -5509,15 +5350,7 @@ protected void validateOptions(boolean didSpecifyCompliance) { } else if (CompilerOptions.VERSION_9.equals(version)) { if (this.didSpecifySource) { Object source = this.options.get(CompilerOptions.OPTION_Source); - if (CompilerOptions.VERSION_1_3.equals(source) - || CompilerOptions.VERSION_1_4.equals(source)) { - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4); - } else if (CompilerOptions.VERSION_1_5.equals(source) - || CompilerOptions.VERSION_1_6.equals(source)) { - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_6); - } else if (CompilerOptions.VERSION_1_7.equals(source)) { - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_7); - } else if (CompilerOptions.VERSION_1_8.equals(source)) { + if (CompilerOptions.VERSION_1_8.equals(source)) { if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_8); } else if (CompilerOptions.VERSION_9.equals(source)) { if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_9); @@ -5529,15 +5362,7 @@ protected void validateOptions(boolean didSpecifyCompliance) { } else if (CompilerOptions.VERSION_10.equals(version)) { if (this.didSpecifySource) { Object source = this.options.get(CompilerOptions.OPTION_Source); - if (CompilerOptions.VERSION_1_3.equals(source) - || CompilerOptions.VERSION_1_4.equals(source)) { - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4); - } else if (CompilerOptions.VERSION_1_5.equals(source) - || CompilerOptions.VERSION_1_6.equals(source)) { - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_6); - } else if (CompilerOptions.VERSION_1_7.equals(source)) { - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_7); - } else if (CompilerOptions.VERSION_1_8.equals(source)) { + if (CompilerOptions.VERSION_1_8.equals(source)) { if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_8); } else if (CompilerOptions.VERSION_9.equals(source)) { if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_9); @@ -5552,16 +5377,10 @@ protected void validateOptions(boolean didSpecifyCompliance) { if (!this.didSpecifyTarget) { if (this.didSpecifySource) { String source = this.options.get(CompilerOptions.OPTION_Source); - if (CompilerOptions.VERSION_1_3.equals(source) - || CompilerOptions.VERSION_1_4.equals(source)) { - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4); - } else if (CompilerOptions.VERSION_1_5.equals(source) - || CompilerOptions.VERSION_1_6.equals(source)) { - this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_6); - } else { - // 1.3 is the lowest version that can be specified as -source + { + // 1.8 is the lowest version that can be specified as -source // The following check will ensure '0' is ignored. - if (CompilerOptions.versionToJdkLevel(source) >= ClassFileConstants.JDK1_7) + if (CompilerOptions.versionToJdkLevel(source) >= ClassFileConstants.JDK1_8) this.options.put(CompilerOptions.OPTION_TargetPlatform, source); } } else { @@ -5575,20 +5394,12 @@ protected void validateOptions(boolean didSpecifyCompliance) { } else if (this.didSpecifySource) { String version = this.options.get(CompilerOptions.OPTION_Source); - // default is source 1.3 target 1.2 and compliance 1.4 - if (CompilerOptions.VERSION_1_4.equals(version)) { - if (!didSpecifyCompliance) this.options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_4); - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4); - } else if (CompilerOptions.VERSION_1_5.equals(version)) { - if (!didSpecifyCompliance) this.options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5); - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_5); - } else if (CompilerOptions.VERSION_1_6.equals(version)) { - if (!didSpecifyCompliance) this.options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_6); - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_6); - } else if (CompilerOptions.VERSION_1_7.equals(version)) { - if (!didSpecifyCompliance) this.options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_7); - if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_7); - } else if (CompilerOptions.VERSION_1_8.equals(version)) { + if(CompilerOptions.UNSUPPORTED_VERSIONS.contains(version)) { + throw new IllegalArgumentException(this.bind("configure.unsupportedSourceVersion", //$NON-NLS-1$ + this.options.get(CompilerOptions.OPTION_Source), CompilerOptions.getFirstSupportedJavaVersion())); + } + // default is source 1.8 target 1.8 and compliance 1.8 + if (CompilerOptions.VERSION_1_8.equals(version)) { if (!didSpecifyCompliance) this.options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_8); if (!this.didSpecifyTarget) this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_8); } else if (CompilerOptions.VERSION_9.equals(version)) { @@ -5622,22 +5433,6 @@ protected void validateOptions(boolean didSpecifyCompliance) { && this.complianceLevel < ClassFileConstants.JDK1_8) { // compliance must be 1.8 if source is 1.8 throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForSource", this.options.get(CompilerOptions.OPTION_Compliance), CompilerOptions.VERSION_1_8)); //$NON-NLS-1$ - } else if (sourceVersion.equals(CompilerOptions.VERSION_1_7) - && this.complianceLevel < ClassFileConstants.JDK1_7) { - // compliance must be 1.7 if source is 1.7 - throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForSource", this.options.get(CompilerOptions.OPTION_Compliance), CompilerOptions.VERSION_1_7)); //$NON-NLS-1$ - } else if (sourceVersion.equals(CompilerOptions.VERSION_1_6) - && this.complianceLevel < ClassFileConstants.JDK1_6) { - // compliance must be 1.6 if source is 1.6 - throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForSource", this.options.get(CompilerOptions.OPTION_Compliance), CompilerOptions.VERSION_1_6)); //$NON-NLS-1$ - } else if (sourceVersion.equals(CompilerOptions.VERSION_1_5) - && this.complianceLevel < ClassFileConstants.JDK1_5) { - // compliance must be 1.5 if source is 1.5 - throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForSource", this.options.get(CompilerOptions.OPTION_Compliance), CompilerOptions.VERSION_1_5)); //$NON-NLS-1$ - } else if (sourceVersion.equals(CompilerOptions.VERSION_1_4) - && this.complianceLevel < ClassFileConstants.JDK1_4) { - // compliance must be 1.4 if source is 1.4 - throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForSource", this.options.get(CompilerOptions.OPTION_Compliance), CompilerOptions.VERSION_1_4)); //$NON-NLS-1$ } else { long ver = CompilerOptions.versionToJdkLevel(sourceVersion); if(this.complianceLevel < ver) @@ -5650,45 +5445,15 @@ protected void validateOptions(boolean didSpecifyCompliance) { // check and set compliance/source/target compatibilities if (this.didSpecifyTarget) { final String targetVersion = this.options.get(CompilerOptions.OPTION_TargetPlatform); - // tolerate jsr14 target - if (CompilerOptions.VERSION_JSR14.equals(targetVersion)) { - // expecting source >= 1.5 - if (CompilerOptions.versionToJdkLevel(sourceVersion) < ClassFileConstants.JDK1_5) { - throw new IllegalArgumentException(this.bind("configure.incompatibleTargetForGenericSource", targetVersion, sourceVersion)); //$NON-NLS-1$ - } - } else if (CompilerOptions.VERSION_CLDC1_1.equals(targetVersion)) { - if (this.didSpecifySource && CompilerOptions.versionToJdkLevel(sourceVersion) >= ClassFileConstants.JDK1_4) { - throw new IllegalArgumentException(this.bind("configure.incompatibleSourceForCldcTarget", targetVersion, sourceVersion)); //$NON-NLS-1$ - } - if (this.complianceLevel >= ClassFileConstants.JDK1_5) { - throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForCldcTarget", targetVersion, sourceVersion)); //$NON-NLS-1$ - } + if(CompilerOptions.UNSUPPORTED_VERSIONS.contains(targetVersion)) { + throw new IllegalArgumentException(this.bind("configure.unsupportedTargetVersion", //$NON-NLS-1$ + this.options.get(CompilerOptions.OPTION_TargetPlatform), CompilerOptions.getFirstSupportedJavaVersion())); } else { // target must be 1.8 if source is 1.8 if (CompilerOptions.versionToJdkLevel(sourceVersion) >= ClassFileConstants.JDK1_8 && CompilerOptions.versionToJdkLevel(targetVersion) < ClassFileConstants.JDK1_8){ throw new IllegalArgumentException(this.bind("configure.incompatibleTargetForSource", targetVersion, CompilerOptions.VERSION_1_8)); //$NON-NLS-1$ } - // target must be 1.7 if source is 1.7 - if (CompilerOptions.versionToJdkLevel(sourceVersion) >= ClassFileConstants.JDK1_7 - && CompilerOptions.versionToJdkLevel(targetVersion) < ClassFileConstants.JDK1_7){ - throw new IllegalArgumentException(this.bind("configure.incompatibleTargetForSource", targetVersion, CompilerOptions.VERSION_1_7)); //$NON-NLS-1$ - } - // target must be 1.6 if source is 1.6 - if (CompilerOptions.versionToJdkLevel(sourceVersion) >= ClassFileConstants.JDK1_6 - && CompilerOptions.versionToJdkLevel(targetVersion) < ClassFileConstants.JDK1_6){ - throw new IllegalArgumentException(this.bind("configure.incompatibleTargetForSource", targetVersion, CompilerOptions.VERSION_1_6)); //$NON-NLS-1$ - } - // target must be 1.5 if source is 1.5 - if (CompilerOptions.versionToJdkLevel(sourceVersion) >= ClassFileConstants.JDK1_5 - && CompilerOptions.versionToJdkLevel(targetVersion) < ClassFileConstants.JDK1_5){ - throw new IllegalArgumentException(this.bind("configure.incompatibleTargetForSource", targetVersion, CompilerOptions.VERSION_1_5)); //$NON-NLS-1$ - } - // target must be 1.4 if source is 1.4 - if (CompilerOptions.versionToJdkLevel(sourceVersion) >= ClassFileConstants.JDK1_4 - && CompilerOptions.versionToJdkLevel(targetVersion) < ClassFileConstants.JDK1_4){ - throw new IllegalArgumentException(this.bind("configure.incompatibleTargetForSource", targetVersion, CompilerOptions.VERSION_1_4)); //$NON-NLS-1$ - } // target cannot be greater than compliance level if (this.complianceLevel < CompilerOptions.versionToJdkLevel(targetVersion)){ throw new IllegalArgumentException(this.bind("configure.incompatibleComplianceForTarget", this.options.get(CompilerOptions.OPTION_Compliance), targetVersion)); //$NON-NLS-1$ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/batch/messages.properties b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/batch/messages.properties index f393dce99d..afe696b245 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/batch/messages.properties +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/batch/messages.properties @@ -61,7 +61,6 @@ compile.severalClassFilesGenerated = [{0} .class files generated] compile.failOnWarning = error: warnings found and -failOnWarning specified ### configure -configure.requiresJDK1.2orAbove = Need to use a JVM >= 1.2 configure.duplicateLog = duplicate log specification: {0} configure.duplicateRepeat = duplicate repeat specification: {0} configure.duplicateMaxProblems = duplicate max problems specification: {0} @@ -71,7 +70,10 @@ configure.duplicateTarget = duplicate target compliance setting specification: { configure.unsupportedReleaseOption = option --release is supported only when run with JDK 9 or above configure.unsupportedWithRelease = option {0} is not supported when --release is used configure.unsupportedReleaseVersion = release version {0} is not supported -configure.source = source level should be in ''1.1''...''1.8'',''9''...''22'' (or ''5.0''..''22.0''): {0} +configure.unsupportedComplianceVersion = compliance option {0} is no longer supported. Use {1} or later. +configure.unsupportedSourceVersion = source option {0} is no longer supported. Use {1} or later. +configure.unsupportedTargetVersion = target option {0} is no longer supported. Use {1} or later. +configure.source = source level should be in ''1.8'',''9''...''22'' (or ''8.0''..''22.0''): {0} configure.invalidSystem = invalid location for system libraries: {0} configure.unsupportedOption = option {0} not supported at compliance level 9 and above configure.duplicateOutputPath = duplicate output path specification: {0} @@ -92,9 +94,8 @@ configure.invalidDebugOption = invalid debug option: {0} configure.invalidWarningConfiguration = invalid warning configuration: ''{0}'' configure.invalidWarning = invalid warning token: ''{0}''. Ignoring warning and compiling configure.invalidWarningOption = invalid warning option: ''{0}''. Must specify a warning token -configure.targetJDK = target level should be in ''1.1''...''1.8'',''9''...''22'' (or ''5.0''..''22.0'') or cldc1.1: {0} +configure.targetJDK = target level should be in ''1.8'',''9''...''22'' (or ''8.0''..''22.0''): {0} configure.incompatibleTargetForSource = Target level ''{0}'' is incompatible with source level ''{1}''. A target level ''{1}'' or better is required -configure.incompatibleTargetForGenericSource = Target level ''{0}'' is incompatible with source level ''{1}''. A source level ''1.5'' or better is required configure.incompatibleComplianceForSource = Compliance level ''{0}'' is incompatible with source level ''{1}''. A compliance level ''{1}'' or better is required configure.incompatibleComplianceForTarget = Compliance level ''{0}'' is incompatible with target level ''{1}''. A compliance level ''{1}'' or better is required configure.repetition = repetition must be a positive integer: {0} @@ -138,9 +139,7 @@ configure.invalidClassName = invalid class name: {0} configure.invalidModuleName = invalid module name: {0} configure.packageConflict = The package {0} is accessible from more than one module: {1}, {2} configure.unavailableAPT = Unable to load annotation processing manager {0} from classpath. -configure.incorrectVMVersionforAPT = Annotation processing got disabled, since it requires a 1.6 compliant JVM -configure.incompatibleSourceForCldcTarget=Target level ''{0}'' is incompatible with source level ''{1}''. A source level ''1.3'' or lower is required -configure.incompatibleComplianceForCldcTarget=Target level ''{0}'' is incompatible with compliance level ''{1}''. A compliance level ''1.4''or lower is required +configure.incorrectVMVersionforAPT = Annotation processing got disabled because of unsupported class version configure.invalidClasspathSection = invalid Class-Path header in manifest of jar file: {0} configure.multipleClasspathSections = multiple Class-Path headers in manifest of jar file: {0} configure.missingwarningspropertiesfile=properties file {0} does not exist @@ -243,16 +242,11 @@ misc.usage = {1} {2}\n\ \ resolved to be root modules\n\ \ --limit-modules (,)*\n\ \ specify the observable module names\n\ -\ --patch-modules =\n\ +\ --patch-module =\n\ \ specify source locations for patching the given module\n\ \ --release compile for a specific VM version\n\ \ \n\ \ Compliance options:\n\ -\ -1.3 use 1.3 compliance (-source 1.3 -target 1.1)\n\ -\ -1.4 + use 1.4 compliance (-source 1.3 -target 1.2)\n\ -\ -1.5 -5 -5.0 use 1.5 compliance (-source 1.5 -target 1.5)\n\ -\ -1.6 -6 -6.0 use 1.6 compliance (-source 1.6 -target 1.6)\n\ -\ -1.7 -7 -7.0 use 1.7 compliance (-source 1.7 -target 1.7)\n\ \ -1.8 -8 -8.0 use 1.8 compliance (-source 1.8 -target 1.8)\n\ \ -1.9 -9 -9.0 use 1.9 compliance (-source 1.9 -target 1.9)\n\ \ -10 -10.0 use 10 compliance (-source 10 -target 10)\n\ @@ -268,12 +262,10 @@ misc.usage = {1} {2}\n\ \ -20 -20.0 use 20 compliance (-source 20 -target 20)\n\ \ -21 -21.0 use 21 compliance (-source 21 -target 21)\n\ \ -22 -22.0 use 22 compliance (-source 22 -target 22)\n\ -\ -source set source level: 1.3 to 1.9, 10 to 22\n\ -\ (or 6, 6.0, etc)\n\ -\ -target set classfile target: 1.3 to 1.9, 10 to 22\n\ -\ (or 6, 6.0, etc)\n\ -\ cldc1.1 can also be used to generate the StackMap\n\ -\ attribute\n\ +\ -source set source level: 1.8, 1.9, 10 to 22\n\ +\ (or 8, 8.0, etc)\n\ +\ -target set classfile target: 1.8, 1.9, 10 to 22\n\ +\ (or 8, 8.0, etc)\n\ \ --enable-preview enable support for preview features of the\n\ \ latest Java release\n\ \ \n\ @@ -316,7 +308,6 @@ misc.usage = {1} {2}\n\ \ -preserveAllLocals preserve unused local vars for debug purpose\n\ \ \n\ \ Annotation processing options:\n\ -\ These options are meaningful only in a 1.6 environment.\n\ \ -Akey[=value] options that are passed to annotation processors\n\ \ -processorpath \n\ \ specify locations where to find annotation processors.\n\ @@ -353,7 +344,6 @@ misc.usage = {1} {2}\n\ \ -noExit do not call System.exit(n) at end of compilation (n==0\n\ \ if no error)\n\ \ -repeat repeat compilation process times for perf analysis\n\ -\ -inlineJSR inline JSR bytecode (implicit if target >= 1.5)\n\ \ -enableJavadoc consider references in javadoc\n\ \ -parameters generate method parameters attribute (for target >= 1.8)\n\ \ -genericsignature generate generic signature for lambda expressions\n\ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java index 2bbd60bba5..ac859df6bc 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/impl/CompilerOptions.java @@ -126,6 +126,7 @@ public class CompilerOptions { public static final String OPTION_TaskTags = "org.eclipse.jdt.core.compiler.taskTags"; //$NON-NLS-1$ public static final String OPTION_TaskPriorities = "org.eclipse.jdt.core.compiler.taskPriorities"; //$NON-NLS-1$ public static final String OPTION_TaskCaseSensitive = "org.eclipse.jdt.core.compiler.taskCaseSensitive"; //$NON-NLS-1$ + @Deprecated(forRemoval = true) public static final String OPTION_InlineJsr = "org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode"; //$NON-NLS-1$ public static final String OPTION_ShareCommonFinallyBlocks = "org.eclipse.jdt.core.compiler.codegen.shareCommonFinallyBlocks"; //$NON-NLS-1$ public static final String OPTION_ReportNullReference = "org.eclipse.jdt.core.compiler.problem.nullReference"; //$NON-NLS-1$ @@ -516,6 +517,7 @@ public class CompilerOptions { public int reportMissingJavadocCommentsVisibility; /** Specify if need to flag missing javadoc comment for overriding method */ public boolean reportMissingJavadocCommentsOverriding; + @Deprecated /** Indicate whether the JSR bytecode should be inlined to avoid its presence in classfile */ public boolean inlineJsrBytecode; /** Indicate whether common escaping finally blocks should be shared */ @@ -1029,7 +1031,6 @@ public static long versionToJdkLevel(String versionID, boolean supportUnreleased public static String[] warningOptionNames() { String[] result = { OPTION_ReportAnnotationSuperInterface, - OPTION_ReportAssertIdentifier, OPTION_ReportAutoboxing, OPTION_ReportComparingIdentical, OPTION_ReportDeadCode, @@ -1039,7 +1040,6 @@ public static String[] warningOptionNames() { OPTION_ReportDeprecationWhenOverridingDeprecatedMethod, OPTION_ReportDiscouragedReference, OPTION_ReportEmptyStatement, - OPTION_ReportEnumIdentifier, OPTION_ReportFallthroughCase, OPTION_ReportFieldHiding, OPTION_ReportFinallyBlockNotCompletingNormally, @@ -1389,8 +1389,8 @@ public Map getMap() { optionsMap.put(OPTION_ReportTypeParameterHiding, getSeverityString(TypeHiding)); optionsMap.put(OPTION_ReportPossibleAccidentalBooleanAssignment, getSeverityString(AccidentalBooleanAssign)); optionsMap.put(OPTION_ReportEmptyStatement, getSeverityString(EmptyStatement)); - optionsMap.put(OPTION_ReportAssertIdentifier, getSeverityString(AssertUsedAsAnIdentifier)); - optionsMap.put(OPTION_ReportEnumIdentifier, getSeverityString(EnumUsedAsAnIdentifier)); + optionsMap.put(OPTION_ReportAssertIdentifier, ERROR); + optionsMap.put(OPTION_ReportEnumIdentifier, ERROR); optionsMap.put(OPTION_ReportUndocumentedEmptyBlock, getSeverityString(UndocumentedEmptyBlock)); optionsMap.put(OPTION_ReportUnnecessaryTypeCheck, getSeverityString(UnnecessaryTypeCheck)); optionsMap.put(OPTION_ReportUnnecessaryElse, getSeverityString(UnnecessaryElse)); @@ -1447,7 +1447,6 @@ public Map getMap() { optionsMap.put(OPTION_ReportUnusedParameterIncludeDocCommentReference, this.reportUnusedParameterIncludeDocCommentReference ? ENABLED : DISABLED); optionsMap.put(OPTION_ReportSpecialParameterHidingField, this.reportSpecialParameterHidingField ? ENABLED : DISABLED); optionsMap.put(OPTION_MaxProblemPerUnit, String.valueOf(this.maxProblemsPerUnit)); - optionsMap.put(OPTION_InlineJsr, this.inlineJsrBytecode ? ENABLED : DISABLED); optionsMap.put(OPTION_ShareCommonFinallyBlocks, this.shareCommonFinallyBlocks ? ENABLED : DISABLED); optionsMap.put(OPTION_ReportNullReference, getSeverityString(NullReference)); optionsMap.put(OPTION_ReportPotentialNullReference, getSeverityString(PotentialNullReference)); @@ -1596,9 +1595,12 @@ protected void resetDefaults() { // by default only lines and source attributes are generated. this.produceDebugAttributes = ClassFileConstants.ATTR_SOURCE | ClassFileConstants.ATTR_LINES; - this.complianceLevel = this.originalComplianceLevel = ClassFileConstants.JDK1_4; // by default be compliant with 1.4 - this.sourceLevel = this.originalSourceLevel = ClassFileConstants.JDK1_3; //1.3 source behavior by default - this.targetJDK = ClassFileConstants.JDK1_2; // default generates for JVM1.2 + + // by default be compliant with first supported version + final long firstSupportedJdkLevel = getFirstSupportedJdkLevel(); + this.complianceLevel = this.originalComplianceLevel = firstSupportedJdkLevel; + this.sourceLevel = this.originalSourceLevel = firstSupportedJdkLevel; + this.targetJDK = firstSupportedJdkLevel; this.defaultEncoding = null; // will use the platform default encoding @@ -1659,7 +1661,7 @@ protected void resetDefaults() { this.reportMissingJavadocCommentsOverriding = false; // JSR bytecode inlining and sharing - this.inlineJsrBytecode = false; + this.inlineJsrBytecode = true; this.shareCommonFinallyBlocks = false; // javadoc comment support @@ -1808,7 +1810,7 @@ public void set(Map optionsMap) { } this.targetJDK = level; } - if (this.targetJDK >= ClassFileConstants.JDK1_5) this.inlineJsrBytecode = true; // forced from 1.5 mode on + this.inlineJsrBytecode = true; // forced from 1.5 mode on } if ((optionValue = optionsMap.get(OPTION_Encoding)) != null) { this.defaultEncoding = null; @@ -1896,15 +1898,6 @@ public void set(Map optionsMap) { this.isTaskCaseSensitive = false; } } - if ((optionValue = optionsMap.get(OPTION_InlineJsr)) != null) { - if (this.targetJDK < ClassFileConstants.JDK1_5) { // only optional if target < 1.5 (inlining on from 1.5 on) - if (ENABLED.equals(optionValue)) { - this.inlineJsrBytecode = true; - } else if (DISABLED.equals(optionValue)) { - this.inlineJsrBytecode = false; - } - } - } if ((optionValue = optionsMap.get(OPTION_ShareCommonFinallyBlocks)) != null) { if (ENABLED.equals(optionValue)) { this.shareCommonFinallyBlocks = true; @@ -1980,8 +1973,8 @@ public void set(Map optionsMap) { if ((optionValue = optionsMap.get(OPTION_ReportPossibleAccidentalBooleanAssignment)) != null) updateSeverity(AccidentalBooleanAssign, optionValue); if ((optionValue = optionsMap.get(OPTION_ReportEmptyStatement)) != null) updateSeverity(EmptyStatement, optionValue); if ((optionValue = optionsMap.get(OPTION_ReportNonExternalizedStringLiteral)) != null) updateSeverity(NonExternalizedString, optionValue); - if ((optionValue = optionsMap.get(OPTION_ReportAssertIdentifier)) != null) updateSeverity(AssertUsedAsAnIdentifier, optionValue); - if ((optionValue = optionsMap.get(OPTION_ReportEnumIdentifier)) != null) updateSeverity(EnumUsedAsAnIdentifier, optionValue); + if ((optionValue = optionsMap.get(OPTION_ReportAssertIdentifier)) != null) updateSeverity(AssertUsedAsAnIdentifier, ERROR); + if ((optionValue = optionsMap.get(OPTION_ReportEnumIdentifier)) != null) updateSeverity(EnumUsedAsAnIdentifier, ERROR); if ((optionValue = optionsMap.get(OPTION_ReportNonStaticAccessToStatic)) != null) updateSeverity(NonStaticAccessToStatic, optionValue); if ((optionValue = optionsMap.get(OPTION_ReportIndirectStaticAccess)) != null) updateSeverity(IndirectStaticAccess, optionValue); if ((optionValue = optionsMap.get(OPTION_ReportIncompatibleNonInheritedInterfaceMethod)) != null) updateSeverity(IncompatibleNonInheritedInterfaceMethod, optionValue); @@ -2408,7 +2401,6 @@ public String toString() { buf.append("\n\t- report unused parameter when overriding concrete method : ").append(this.reportUnusedParameterWhenOverridingConcrete ? ENABLED : DISABLED); //$NON-NLS-1$ buf.append("\n\t- report unused parameter include doc comment reference : ").append(this.reportUnusedParameterIncludeDocCommentReference ? ENABLED : DISABLED); //$NON-NLS-1$ buf.append("\n\t- report constructor/setter parameter hiding existing field : ").append(this.reportSpecialParameterHidingField ? ENABLED : DISABLED); //$NON-NLS-1$ - buf.append("\n\t- inline JSR bytecode : ").append(this.inlineJsrBytecode ? ENABLED : DISABLED); //$NON-NLS-1$ buf.append("\n\t- share common finally blocks : ").append(this.shareCommonFinallyBlocks ? ENABLED : DISABLED); //$NON-NLS-1$ buf.append("\n\t- report unavoidable generic type problems : ").append(this.reportUnavoidableGenericTypeProblems ? ENABLED : DISABLED); //$NON-NLS-1$ buf.append("\n\t- unsafe type operation: ").append(getSeverityString(UncheckedTypeOperation)); //$NON-NLS-1$ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding.java index f10bcb230f..98b77f70d2 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding.java @@ -1987,33 +1987,39 @@ MethodBinding resolveTypesFor(MethodBinding method) { if ((method.modifiers & ExtraCompilerModifiers.AccUnresolved) == 0) return method; + boolean tolerateSave = this.environment.mayTolerateMissingType; + this.environment.mayTolerateMissingType |= this.environment.globalOptions.complianceLevel >= ClassFileConstants.JDK1_8; // tolerance only implemented for 1.8+ + try { - if (!method.isConstructor()) { - TypeBinding resolvedType = resolveType(method.returnType, this.environment, true /* raw conversion */); - method.returnType = resolvedType; - if ((resolvedType.tagBits & TagBits.HasMissingType) != 0) { - method.tagBits |= TagBits.HasMissingType; + if (!method.isConstructor()) { + TypeBinding resolvedType = resolveType(method.returnType, this.environment, true /* raw conversion */); + method.returnType = resolvedType; + if ((resolvedType.tagBits & TagBits.HasMissingType) != 0) { + method.tagBits |= TagBits.HasMissingType; + } } - } - for (int i = method.parameters.length; --i >= 0;) { - TypeBinding resolvedType = resolveType(method.parameters[i], this.environment, true /* raw conversion */); - method.parameters[i] = resolvedType; - if ((resolvedType.tagBits & TagBits.HasMissingType) != 0) { - method.tagBits |= TagBits.HasMissingType; + for (int i = method.parameters.length; --i >= 0;) { + TypeBinding resolvedType = resolveType(method.parameters[i], this.environment, true /* raw conversion */); + method.parameters[i] = resolvedType; + if ((resolvedType.tagBits & TagBits.HasMissingType) != 0) { + method.tagBits |= TagBits.HasMissingType; + } } - } - for (int i = method.thrownExceptions.length; --i >= 0;) { - ReferenceBinding resolvedType = (ReferenceBinding) resolveType(method.thrownExceptions[i], this.environment, true /* raw conversion */); - method.thrownExceptions[i] = resolvedType; - if ((resolvedType.tagBits & TagBits.HasMissingType) != 0) { - method.tagBits |= TagBits.HasMissingType; + for (int i = method.thrownExceptions.length; --i >= 0;) { + ReferenceBinding resolvedType = (ReferenceBinding) resolveType(method.thrownExceptions[i], this.environment, true /* raw conversion */); + method.thrownExceptions[i] = resolvedType; + if ((resolvedType.tagBits & TagBits.HasMissingType) != 0) { + method.tagBits |= TagBits.HasMissingType; + } } + for (int i = method.typeVariables.length; --i >= 0;) { + method.typeVariables[i].resolve(); + } + method.modifiers &= ~ExtraCompilerModifiers.AccUnresolved; + return method; + } finally { + this.environment.mayTolerateMissingType = tolerateSave; } - for (int i = method.typeVariables.length; --i >= 0;) { - method.typeVariables[i].resolve(); - } - method.modifiers &= ~ExtraCompilerModifiers.AccUnresolved; - return method; } @Override AnnotationBinding[] retrieveAnnotations(Binding binding) { diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding.java index 9dea474978..c7723579ac 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/CaptureBinding.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2021 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -63,13 +63,10 @@ public CaptureBinding(WildcardBinding wildcard, ReferenceBinding sourceType, int this.environment.typeSystem.cacheDerivedType(this, unannotated, this); // propagate from wildcard to capture - use super version, because our own method propagates type annotations in the opposite direction: super.setTypeAnnotations(wildcard.getTypeAnnotations(), wildcard.environment.globalOptions.isAnnotationBasedNullAnalysisEnabled); - if (wildcard.hasNullTypeAnnotations()) - this.tagBits |= TagBits.HasNullTypeAnnotation; + this.tagBits |= wildcard.tagBits & (TagBits.HasNullTypeAnnotation|TagBits.HasMissingType); } else { computeId(this.environment); - if(wildcard.hasNullTypeAnnotations()) { - this.tagBits |= (wildcard.tagBits & TagBits.AnnotationNullMASK) | TagBits.HasNullTypeAnnotation; - } + this.tagBits |= wildcard.tagBits & (TagBits.AnnotationNullMASK|TagBits.HasNullTypeAnnotation|TagBits.HasMissingType); } } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/CompilationUnitScope.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/CompilationUnitScope.java index 1a26017c51..48c17e69a6 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/CompilationUnitScope.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/CompilationUnitScope.java @@ -1179,11 +1179,13 @@ private int checkAndRecordImportBinding( final char[] name = importReference.getSimpleName(); if (importBinding instanceof ReferenceBinding || conflictingType != null) { ReferenceBinding referenceBinding = conflictingType == null ? (ReferenceBinding) importBinding : conflictingType; - ReferenceBinding typeToCheck = referenceBinding.problemId() == ProblemReasons.Ambiguous - ? ((ProblemReferenceBinding) referenceBinding).closestMatch - : referenceBinding; - if (importReference.isTypeUseDeprecated(typeToCheck, this)) - problemReporter().deprecatedType(typeToCheck, importReference); + if (compilerOptions().complianceLevel <= ClassFileConstants.JDK1_8) { // not any more since JEP 211 / JDK 9 + ReferenceBinding typeToCheck = referenceBinding.problemId() == ProblemReasons.Ambiguous + ? ((ProblemReferenceBinding) referenceBinding).closestMatch + : referenceBinding; + if (importReference.isTypeUseDeprecated(typeToCheck, this)) + problemReporter().deprecatedType(typeToCheck, importReference); + } ReferenceBinding existingType = typesBySimpleNames.get(name); if (existingType != null) { diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ConstraintExceptionFormula.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ConstraintExceptionFormula.java index 37cb04ee36..d7d0c3e327 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ConstraintExceptionFormula.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ConstraintExceptionFormula.java @@ -44,6 +44,10 @@ public ConstraintExceptionFormula(FunctionalExpression left, TypeBinding type) { @Override public Object reduce(InferenceContext18 inferenceContext) { + if ((this.right.tagBits & TagBits.HasMissingType) != 0) { + inferenceContext.hasIgnoredMissingType = true; + return TRUE; + } // JLS 18.2.5 Scope scope = inferenceContext.scope; if (!this.right.isFunctionalInterface(scope)) diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ConstraintExpressionFormula.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ConstraintExpressionFormula.java index 29094d54ba..2bce82c25e 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ConstraintExpressionFormula.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ConstraintExpressionFormula.java @@ -59,6 +59,10 @@ class ConstraintExpressionFormula extends ConstraintFormula { @Override public Object reduce(InferenceContext18 inferenceContext) throws InferenceFailureException { + if ((this.right.tagBits & TagBits.HasMissingType) != 0) { + inferenceContext.hasIgnoredMissingType = true; + return TRUE; + } if (this.relation == POTENTIALLY_COMPATIBLE) { /* 15.12.2.1: ... The definition of potential applicability goes beyond a basic arity check to also take into account the presence and "shape" of functional interface diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ConstraintTypeFormula.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ConstraintTypeFormula.java index 3149d02f0d..7b7346deac 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ConstraintTypeFormula.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ConstraintTypeFormula.java @@ -63,6 +63,10 @@ private ConstraintTypeFormula(TypeBinding exprType, TypeBinding right, int relat // return: ReductionResult or ConstraintFormula[] @Override public Object reduce(InferenceContext18 inferenceContext) { + if ((this.left.tagBits & TagBits.HasMissingType) != 0 || (this.right.tagBits & TagBits.HasMissingType) != 0) { + inferenceContext.hasIgnoredMissingType = true; + return TRUE; + } switch (this.relation) { case COMPATIBLE: // 18.2.2: diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18.java index 8eef8e7250..96595c5f56 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/InferenceContext18.java @@ -180,6 +180,8 @@ public class InferenceContext18 { // the following two flags control to what degree we continue with incomplete information: private boolean isInexactVarargsInference = false; boolean prematureOverloadResolution = false; + // during reduction we ignore missing types but record that fact here: + boolean hasIgnoredMissingType; public static boolean isSameSite(InvocationSite site1, InvocationSite site2) { if (site1 == site2) @@ -754,6 +756,7 @@ private boolean addConstraintsToC_OneExpr(Expression expri, Set bindings = new ArrayList<>(); for (char[] mod : declaringModules) { ModuleBinding declaringModule = this.root.getModule(mod); if (declaringModule != null) - packageBinding = SplitPackageBinding.combine(declaringModule.getTopLevelPackage(constantPoolName[0]), packageBinding, this.module); + bindings.add(declaringModule.getTopLevelPackage(constantPoolName[0])); } + if (!bindings.isEmpty()) + packageBinding = SplitPackageBinding.combineAll(bindings, this.module); } } else { packageBinding = this.module.getTopLevelPackage(constantPoolName[0]); @@ -798,14 +801,17 @@ private PackageBinding computePackageFrom(char[][] constantPoolName, boolean isM if (this.useModuleSystem) { if (this.module.isUnnamed()) { char[][] currentCompoundName = CharOperation.arrayConcat(parent.compoundName, constantPoolName[i]); - char[][] declaringModules = ((IModuleAwareNameEnvironment) this.nameEnvironment).getModulesDeclaringPackage( + char[][] declaringModules = ((IModuleAwareNameEnvironment) this.nameEnvironment).getUniqueModulesDeclaringPackage( currentCompoundName, ModuleBinding.ANY); + List bindings = new ArrayList<>(); if (declaringModules != null) { for (char[] mod : declaringModules) { ModuleBinding declaringModule = this.root.getModule(mod); if (declaringModule != null) - packageBinding = SplitPackageBinding.combine(declaringModule.getVisiblePackage(currentCompoundName), packageBinding, this.module); + bindings.add(declaringModule.getVisiblePackage(currentCompoundName)); } + if (!bindings.isEmpty()) + packageBinding = SplitPackageBinding.combineAll(bindings, this.module); } } else { packageBinding = this.module.getVisiblePackage(parent, constantPoolName[i]); @@ -2424,7 +2430,7 @@ public Binding getInaccessibleBinding(char[][] compoundName, ModuleBinding clien int length = compoundName.length; for (int j=length; j>0; j--) { char[][] candidateName = CharOperation.subarray(compoundName, 0, j); - char[][] moduleNames = moduleEnv.getModulesDeclaringPackage(candidateName, ModuleBinding.ANY); + char[][] moduleNames = moduleEnv.getUniqueModulesDeclaringPackage(candidateName, ModuleBinding.ANY); if (moduleNames != null) { // in some module a package named candidateName exists, verify observability & inaccessibility: PackageBinding inaccessiblePackage = null; diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java index fa74db4f09..be5c7ac183 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java @@ -413,9 +413,11 @@ public final boolean canBeSeenBy(TypeBinding receiverType, InvocationSite invoca return false; } -public List collectMissingTypes(List missingTypes) { +public List collectMissingTypes(List missingTypes, boolean considerReturnType) { if ((this.tagBits & TagBits.HasMissingType) != 0) { - missingTypes = this.returnType.collectMissingTypes(missingTypes); + if (considerReturnType) { + missingTypes = this.returnType.collectMissingTypes(missingTypes); + } for (TypeBinding parameter : this.parameters) { missingTypes = parameter.collectMissingTypes(missingTypes); } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ModuleBinding.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ModuleBinding.java index c2565c9448..cb33ebcdec 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ModuleBinding.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ModuleBinding.java @@ -14,6 +14,7 @@ *******************************************************************************/ package org.eclipse.jdt.internal.compiler.lookup; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; @@ -595,13 +596,17 @@ PackageBinding getVisiblePackage(PackageBinding parent, char[] name) { } } else { // visible but foreign (when current is unnamed or auto): + List bindings = new ArrayList<>(); for (char[] declaringModuleName : declaringModuleNames) { ModuleBinding declaringModule = this.environment.root.getModule(declaringModuleName); if (declaringModule != null) { PlainPackageBinding declaredPackage = declaringModule.getDeclaredPackage(fullFlatName); - binding = SplitPackageBinding.combine(declaredPackage, binding, this); + if (declaredPackage != null) + bindings.add(declaredPackage); } } + if (!bindings.isEmpty()) + binding = SplitPackageBinding.combineAll(bindings, this); } } } @@ -664,15 +669,18 @@ public PackageBinding getVisiblePackage(char[][] qualifiedPackageName) { } PackageBinding combineWithPackagesFromOtherRelevantModules(PackageBinding currentBinding, char[][] compoundName, char[][] declaringModuleNames) { - for (ModuleBinding moduleBinding : otherRelevantModules(declaringModuleNames)) { - PlainPackageBinding nextBinding = moduleBinding.getDeclaredPackage(CharOperation.concatWith(compoundName, '.')); - currentBinding = SplitPackageBinding.combine(nextBinding, currentBinding, this); - } - return currentBinding; + char[] packageName = CharOperation.concatWith(compoundName, '.'); + List bindings = otherRelevantModules(declaringModuleNames).stream() + .map(m -> m.getDeclaredPackage(packageName)) + .collect(Collectors.toList()); + if (bindings.isEmpty()) + return currentBinding; + bindings.add(currentBinding); + return SplitPackageBinding.combineAll(bindings, this); } List otherRelevantModules(char[][] declaringModuleNames) { - if (isUnnamed() && declaringModuleNames != null) { + if ((isUnnamed() || isAutomatic()) && declaringModuleNames != null) { // unnamed module reads all named modules, // so all modules declaring the given package are relevant: return Arrays.stream(declaringModuleNames) diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding.java index 6f4940b978..83f5fe5f45 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ParameterizedGenericMethodBinding.java @@ -135,7 +135,7 @@ public static MethodBinding computeCompatibleMethod(MethodBinding originalMethod ParameterizedGenericMethodBinding substitute = inferFromArgumentTypes(scope, originalMethod, arguments, parameters, inferenceContext); if (substitute != null && substitute.returnType.isCompatibleWith(expectedType)) { // Do not use the new solution if it results in incompatibilities in parameter types - if ((scope.parameterCompatibilityLevel(substitute, arguments, false)) > Scope.NOT_COMPATIBLE) { + if ((scope.parameterCompatibilityLevel(substitute, arguments, false)) > Scope.NOT_COMPATIBLE) { // don't worry about COMPATIBLE_IGNORING_MISSING_TYPE in 1.7 context methodSubstitute = substitute; } else { inferenceContext = oldContext; @@ -307,6 +307,9 @@ public static MethodBinding computeCompatibleMethod18(MethodBinding originalMeth if (invocationSite instanceof Invocation && allArgumentsAreProper && (expectedType == null || expectedType.isProperType(true))) infCtx18.forwardResults(result, (Invocation) invocationSite, methodSubstitute, expectedType); try { + if (infCtx18.hasIgnoredMissingType) { + return new ProblemMethodBinding(originalMethod, originalMethod.selector, parameters, ProblemReasons.MissingTypeInSignature); + } if (hasReturnProblem) { // illegally working from the provisional result? MethodBinding problemMethod = infCtx18.getReturnProblemMethodIfNeeded(expectedType, methodSubstitute); if (problemMethod instanceof ProblemMethodBinding) { diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding.java index 0e39293258..b4576ac288 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ParameterizedMethodBinding.java @@ -66,7 +66,7 @@ public ParameterizedMethodBinding(final ParameterizedTypeBinding parameterizedDe for (int i = 0; i < length; i++) { // copy original type variable to relocate TypeVariableBinding originalVariable = originalVariables[i]; substitutedVariables[i] = new TypeVariableBinding(originalVariable.sourceName, this, originalVariable.rank, parameterizedDeclaringClass.environment); - substitutedVariables[i].tagBits |= (originalVariable.tagBits & (TagBits.AnnotationNullMASK|TagBits.HasNullTypeAnnotation)); + substitutedVariables[i].tagBits |= (originalVariable.tagBits & (TagBits.AnnotationNullMASK|TagBits.HasNullTypeAnnotation|TagBits.HasMissingType)); } this.typeVariables = substitutedVariables; @@ -209,7 +209,7 @@ public ParameterizedMethodBinding(final ReferenceBinding declaringClass, MethodB this, originalVariable.rank, environment); - substitutedVariables[i].tagBits |= (originalVariable.tagBits & (TagBits.AnnotationNullMASK|TagBits.HasNullTypeAnnotation)); + substitutedVariables[i].tagBits |= (originalVariable.tagBits & (TagBits.AnnotationNullMASK|TagBits.HasNullTypeAnnotation|TagBits.HasMissingType)); } this.typeVariables = substitutedVariables; diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/PlainPackageBinding.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/PlainPackageBinding.java index 894a710bf8..b9ce646a5b 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/PlainPackageBinding.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/PlainPackageBinding.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2019 GK Software SE, and others. + * Copyright (c) 2019, 2024 GK Software SE, and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -44,4 +44,10 @@ public PlainPackageBinding getIncarnation(ModuleBinding moduleBinding) { return this; return null; } + + @Override + PackageBinding addPackage(PackageBinding element, ModuleBinding module) { + assert element instanceof PlainPackageBinding : "PlainPackageBinding cannot be parent of split " + element; //$NON-NLS-1$ + return super.addPackage(element, module); + } } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ProblemReasons.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ProblemReasons.java index 5c550bf624..fff08aa31c 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ProblemReasons.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ProblemReasons.java @@ -52,4 +52,5 @@ public interface ProblemReasons { final int InterfaceMethodInvocationNotBelow18 = 29; final int NotAccessible = 30; // JLS 6.6.1 - module aspects final int ErrorAlreadyReported = 31; + final int MissingTypeInSignature = 32; } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/Scope.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/Scope.java index 95f56ffc98..5c23f08901 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/Scope.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/Scope.java @@ -109,6 +109,7 @@ public char[] readableName() { public final static int COMPATIBLE = 0; public final static int AUTOBOX_COMPATIBLE = 1; public final static int VARARGS_COMPATIBLE = 2; + public final static int COMPATIBLE_IGNORING_MISSING_TYPE = -2; /* Type Compatibilities */ public static final int EQUAL_OR_MORE_SPECIFIC = -1; @@ -871,13 +872,16 @@ protected final MethodBinding computeCompatibleMethod(MethodBinding method, Type } - if ((parameterCompatibilityLevel(method, arguments, tiebreakingVarargsMethods)) > NOT_COMPATIBLE) { + int level = parameterCompatibilityLevel(method, arguments, tiebreakingVarargsMethods); + if (level > NOT_COMPATIBLE) { if (method.hasPolymorphicSignature(this)) { // generate polymorphic method and set polymorphic tagbits as well method.tagBits |= TagBits.AnnotationPolymorphicSignature; return this.environment().createPolymorphicMethod(method, arguments, this); } return method; + } else if (level == COMPATIBLE_IGNORING_MISSING_TYPE) { + return new ProblemMethodBinding(method, method.selector, method.parameters, ProblemReasons.MissingTypeInSignature); } // if method is generic and type arguments have been supplied, only then answer a problem // of ParameterizedMethodTypeMismatch, else a non-generic method was invoked using type arguments @@ -978,7 +982,7 @@ protected boolean connectTypeVariables(TypeParameter[] typeParameters, boolean c } else { typeVariable.setSuperInterfaces(new ReferenceBinding[] {superRefType}); } - typeVariable.tagBits |= superType.tagBits & TagBits.ContainsNestedTypeReferences; + typeVariable.tagBits |= superType.tagBits & (TagBits.ContainsNestedTypeReferences | TagBits.HasMissingType); typeVariable.setFirstBound(superRefType); // first bound used to compute erasure } } @@ -993,7 +997,7 @@ protected boolean connectTypeVariables(TypeParameter[] typeParameters, boolean c typeVariable.tagBits |= TagBits.HierarchyHasProblems; continue nextBound; } else { - typeVariable.tagBits |= superType.tagBits & TagBits.ContainsNestedTypeReferences; + typeVariable.tagBits |= superType.tagBits & (TagBits.ContainsNestedTypeReferences | TagBits.HasMissingType); boolean didAlreadyComplain = !typeRef.resolvedType.isValidBinding(); if (isFirstBoundTypeVariable && j == 0) { problemReporter().noAdditionalBoundAfterTypeVariable(typeRef); @@ -1764,6 +1768,8 @@ public MethodBinding findMethod0(ReferenceBinding receiverType, char[] selector, if (candidatesCount == 0) candidates = new MethodBinding[foundSize]; candidates[candidatesCount++] = compatibleMethod; + } else if (compatibleMethod.problemId() == ProblemReasons.MissingTypeInSignature) { + return compatibleMethod; // use this method for error message to give a hint about the missing type } else if (problemMethod == null) { problemMethod = compatibleMethod; } @@ -2495,6 +2501,8 @@ public MethodBinding getConstructor0(ReferenceBinding receiverType, TypeBinding[ if (compatibleMethod != null) { if (compatibleMethod.isValidBinding()) compatible[compatibleIndex++] = compatibleMethod; + else if (compatibleMethod.problemId() == ProblemReasons.MissingTypeInSignature) + return compatibleMethod; // use this method for error message to give a hint about the missing type else if (problemMethod == null) problemMethod = compatibleMethod; } @@ -4667,6 +4675,10 @@ protected final MethodBinding mostSpecificMethodBinding(MethodBinding[] visible, int compatibleCount = 0; for (int i = 0; i < visibleSize; i++) if ((compatibilityLevels[i] = parameterCompatibilityLevel(visible[i], argumentTypes, invocationSite)) != NOT_COMPATIBLE) { + if (compatibilityLevels[i] == COMPATIBLE_IGNORING_MISSING_TYPE) { + // cannot conclusively select any candidate, use the method with missing types in the error message + return new ProblemMethodBinding(visible[i], visible[i].selector, visible[i].parameters, ProblemReasons.Ambiguous); + } if (i != compatibleCount) { visible[compatibleCount] = visible[i]; compatibilityLevels[compatibleCount] = compatibilityLevels[i]; @@ -5163,13 +5175,17 @@ public int parameterCompatibilityLevel(MethodBinding method, TypeBinding[] argum TypeBinding param = ((ArrayBinding) parameters[lastIndex]).elementsType(); for (int i = lastIndex; i < argLength; i++) { TypeBinding arg = (tiebreakingVarargsMethods && (i == (argLength - 1))) ? ((ArrayBinding)arguments[i]).elementsType() : arguments[i]; - if (TypeBinding.notEquals(param, arg) && parameterCompatibilityLevel(arg, param, env, tiebreakingVarargsMethods, method) == NOT_COMPATIBLE) - return NOT_COMPATIBLE; + if (TypeBinding.notEquals(param, arg)) { + level = parameterCompatibilityLevel(arg, param, env, tiebreakingVarargsMethods, method); + if (level == NOT_COMPATIBLE) + return NOT_COMPATIBLE; + } } } else if (lastIndex != argLength) { // can call foo(int i, X ... x) with foo(1) but NOT foo(); return NOT_COMPATIBLE; } - level = VARARGS_COMPATIBLE; // varargs support needed + if (level != COMPATIBLE_IGNORING_MISSING_TYPE) // preserve any COMPATIBLE_IGNORING_MISSING_TYPE + level = VARARGS_COMPATIBLE; // varargs support needed } } else if (paramLength != argLength) { return NOT_COMPATIBLE; @@ -5180,10 +5196,13 @@ public int parameterCompatibilityLevel(MethodBinding method, TypeBinding[] argum TypeBinding arg = (tiebreakingVarargsMethods && (i == (argLength - 1))) ? ((ArrayBinding)arguments[i]).elementsType() : arguments[i]; if (TypeBinding.notEquals(arg,param)) { int newLevel = parameterCompatibilityLevel(arg, param, env, tiebreakingVarargsMethods, method); - if (newLevel == NOT_COMPATIBLE) + if (newLevel == NOT_COMPATIBLE) { return NOT_COMPATIBLE; - if (newLevel > level) + } else if (newLevel == COMPATIBLE_IGNORING_MISSING_TYPE) { level = newLevel; + } else if (newLevel > level && level != COMPATIBLE_IGNORING_MISSING_TYPE) { + level = newLevel; + } } } return level; @@ -5212,6 +5231,8 @@ private int parameterCompatibilityLevel(TypeBinding arg, TypeBinding param, Look // only called if env.options.sourceLevel >= ClassFileConstants.JDK1_5 if (arg == null || param == null) return NOT_COMPATIBLE; + if ((param.tagBits & TagBits.HasMissingType) != 0) + return COMPATIBLE_IGNORING_MISSING_TYPE; if (arg instanceof PolyTypeBinding && !((PolyTypeBinding) arg).expression.isPertinentToApplicability(param, method)) { if (arg.isPotentiallyCompatibleWith(param, this)) return COMPATIBLE; diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/SplitPackageBinding.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/SplitPackageBinding.java index fd7284e376..ee1dc7a62f 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/SplitPackageBinding.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/SplitPackageBinding.java @@ -13,9 +13,12 @@ *******************************************************************************/ package org.eclipse.jdt.internal.compiler.lookup; +import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedHashSet; +import java.util.List; import java.util.Set; +import java.util.function.Consumer; import org.eclipse.jdt.core.compiler.CharOperation; @@ -23,6 +26,9 @@ public class SplitPackageBinding extends PackageBinding { Set declaringModules; public Set incarnations; + /** TEST ONLY */ + public static Consumer instanceListener; + /** * Combine two potential package bindings, answering either the better of those if the other has a problem, * or combine both into a split package. @@ -51,6 +57,38 @@ public static PackageBinding combine(PackageBinding binding, PackageBinding prev split.add(binding); return split; } + public static PackageBinding combineAll(List bindings, ModuleBinding primaryModule) { + // collect statistics per rank: + int[] numRanked = new int[RANK_VALID+1]; + for (PackageBinding packageBinding : bindings) { + int rank = rank(packageBinding); + numRanked[rank]++; + } + SplitPackageBinding split = null; + for (int rank = RANK_VALID; rank >= 0; rank--) { + int num = numRanked[rank]; + if (num > 0) { + // rank is the best we have, so take all bindings at this rank: + for (PackageBinding packageBinding : bindings) { + if (rank(packageBinding) == rank) { + if (num == 1 || rank != RANK_VALID) { + return packageBinding; // singleton, problem & null don't need SplitPackageBinding + } + // finally collect all relevant: + if (split == null) + split = new SplitPackageBinding(packageBinding, primaryModule); + else + split.add(packageBinding); + } + } + if (split.incarnations.size() == 1) // we don't want singleton SplitPackageBinding + return split.incarnations.iterator().next(); // simply peel the only incarnation + return split; + } + } + return null; + } + private static int RANK_VALID = 3; private static int rank(PackageBinding candidate) { if (candidate == null) return 0; @@ -58,7 +96,7 @@ private static int rank(PackageBinding candidate) { return 1; if (!candidate.isValidBinding()) return 2; - return 3; + return RANK_VALID; } public SplitPackageBinding(PackageBinding initialBinding, ModuleBinding primaryModule) { @@ -66,6 +104,10 @@ public SplitPackageBinding(PackageBinding initialBinding, ModuleBinding primaryM this.declaringModules = new LinkedHashSet<>(); this.incarnations = new LinkedHashSet<>(); add(initialBinding); + // TEST hook: + if (instanceListener != null) { + instanceListener.accept(this); + } } public void add(PackageBinding packageBinding) { if (packageBinding instanceof SplitPackageBinding) { @@ -108,6 +150,7 @@ PackageBinding combineWithSiblings(PackageBinding childPackage, char[] name, Mod ModuleBinding primaryModule = childPackage.enclosingModule; // see if other incarnations contribute to the child package, too: char[] flatName = CharOperation.concatWith(childPackage.compoundName, '.'); + List bindings = new ArrayList<>(); for (PackageBinding incarnation : this.incarnations) { ModuleBinding moduleBinding = incarnation.enclosingModule; if (moduleBinding == module) @@ -115,9 +158,13 @@ PackageBinding combineWithSiblings(PackageBinding childPackage, char[] name, Mod if (childPackage.isDeclaredIn(moduleBinding)) continue; PlainPackageBinding next = moduleBinding.getDeclaredPackage(flatName); - childPackage = combine(next, childPackage, primaryModule); + if (next != null) + bindings.add(next); } - return childPackage; + if (bindings.isEmpty()) + return childPackage; + bindings.add(childPackage); + return combineAll(bindings, primaryModule); } @Override @@ -131,13 +178,14 @@ PackageBinding getPackage0(char[] name) { if (knownPackage != null) return knownPackage; - PackageBinding candidate = null; + List bindings = new ArrayList<>(); for (PackageBinding incarnation : this.incarnations) { PackageBinding package0 = incarnation.getPackage0(name); if (package0 == null) return null; // if any incarnation lacks cached info, a full findPackage will be necessary - candidate = combine(package0, candidate, this.enclosingModule); + bindings.add(package0); } + PackageBinding candidate = combineAll(bindings, this.enclosingModule); if (candidate != null) this.knownPackages.put(name, candidate); @@ -150,15 +198,15 @@ PackageBinding getPackage0Any(char[] name) { if (knownPackage != null) return knownPackage; - PackageBinding candidate = null; + List bindings = new ArrayList<>(); for (PackageBinding incarnation : this.incarnations) { PackageBinding package0 = incarnation.getPackage0(name); if (package0 == null) continue; - candidate = combine(package0, candidate, this.enclosingModule); + bindings.add(package0); } // don't cache the result, maybe incomplete - return candidate; + return combineAll(bindings, this.enclosingModule); } @Override diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding.java index f7ef22e0f7..6ebe5afe16 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/TypeVariableBinding.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2020 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -43,6 +43,7 @@ package org.eclipse.jdt.internal.compiler.lookup; import java.util.Arrays; +import java.util.List; import java.util.Set; import java.util.function.Consumer; @@ -344,6 +345,25 @@ public int boundsCount() { public boolean canBeInstantiated() { return false; } + + @Override + public List collectMissingTypes(List missingTypes) { + if ((this.tagBits & TagBits.HasMissingType) != 0 && !this.inRecursiveFunction) { + this.inRecursiveFunction = true; + try { + if (this.superclass != null) { + missingTypes = this.superclass.collectMissingTypes(missingTypes); + } + for (ReferenceBinding superIfc : this.superInterfaces) { + missingTypes = superIfc.collectMissingTypes(missingTypes); + } + } finally { + this.inRecursiveFunction = false; + } + } + return missingTypes; + } + /** * Collect the substitutes into a map for certain type variables inside the receiver type * e.g. {@code Collection.collectSubstitutes(Collection>, Map)} will populate Map with: {@code T --> List} @@ -711,6 +731,20 @@ public boolean isTypeVariable() { return true; } + @Override + public boolean isSealed() { + if (this.superclass != null && this.superclass.isSealed()) + return true; + + if (this.superInterfaces != null && this.superInterfaces != Binding.NO_SUPERINTERFACES) { + for (int i = 0, length = this.superInterfaces.length; i < length; i++) { + if (this.superInterfaces[i].isSealed()) + return true; + } + } + return false; + } + // /** // * Returns the original type variable for a given variable. // * Only different from receiver for type variables of generic methods of parameterized types @@ -805,7 +839,7 @@ ReferenceBinding resolve() { TypeBinding oldSuperclass = this.superclass, oldFirstInterface = null; if (this.superclass != null) { ReferenceBinding resolveType = (ReferenceBinding) BinaryTypeBinding.resolveType(this.superclass, this.environment, true /* raw conversion */); - this.tagBits |= resolveType.tagBits & TagBits.ContainsNestedTypeReferences; + this.tagBits |= resolveType.tagBits & (TagBits.ContainsNestedTypeReferences | TagBits.HasMissingType); long superNullTagBits = resolveType.tagBits & TagBits.AnnotationNullMASK; if (superNullTagBits != 0L) { if (nullTagBits == 0L) { @@ -824,7 +858,7 @@ ReferenceBinding resolve() { oldFirstInterface = interfaces[0]; for (int i = length; --i >= 0;) { ReferenceBinding resolveType = (ReferenceBinding) BinaryTypeBinding.resolveType(interfaces[i], this.environment, true /* raw conversion */); - this.tagBits |= resolveType.tagBits & TagBits.ContainsNestedTypeReferences; + this.tagBits |= resolveType.tagBits & (TagBits.ContainsNestedTypeReferences | TagBits.HasMissingType); long superNullTagBits = resolveType.tagBits & TagBits.AnnotationNullMASK; if (superNullTagBits != 0L) { if (nullTagBits == 0L) { @@ -1074,8 +1108,8 @@ public TypeBinding setFirstBound(TypeBinding firstBound) { annotatedType.firstBound = firstBound; } } - if (firstBound != null && firstBound.hasNullTypeAnnotations()) - this.tagBits |= TagBits.HasNullTypeAnnotation; + if (firstBound != null) + this.tagBits |= firstBound.tagBits & (TagBits.HasNullTypeAnnotation|TagBits.HasMissingType); return firstBound; } /* An annotated type variable use differs from its declaration exactly in its annotations and in nothing else. diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/AbstractCommentParser.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/AbstractCommentParser.java index 71553f6ea2..2df387dc48 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/AbstractCommentParser.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/AbstractCommentParser.java @@ -1233,7 +1233,7 @@ protected Object parseQualifiedName(boolean reset, boolean allowModule) throws I case TerminalTokens.TokenNamenon_sealed: case TerminalTokens.TokenNamenull: case TerminalTokens.TokenNamepackage: - case TerminalTokens.TokenNamepermits: + case TerminalTokens.TokenNameRestrictedIdentifierpermits: case TerminalTokens.TokenNameprivate: case TerminalTokens.TokenNameprotected: case TerminalTokens.TokenNamepublic: diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Parser.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Parser.java index 86ed1788f6..e4c4f6a8d2 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Parser.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Parser.java @@ -4765,10 +4765,9 @@ protected void consumeInterfaceHeaderName1() { } protected void consumePermittedTypes() { int length = this.astLengthStack[this.astLengthPtr--]; - //permitted types this.astPtr -= length; TypeDeclaration typeDecl = (TypeDeclaration) this.astStack[this.astPtr]; - typeDecl.restrictedIdentifierStart= this.intStack[this.intPtr--]; + typeDecl.restrictedIdentifierStart = this.intStack[this.intPtr--]; System.arraycopy( this.astStack, this.astPtr + 1, @@ -4779,7 +4778,7 @@ protected void consumePermittedTypes() { rejectIllegalTypeAnnotations(typeReference); } typeDecl.bodyStart = typeDecl.permittedTypes[length-1].sourceEnd + 1; - this.listLength = 0; // reset after having read super-interfaces + this.listLength = 0; // reset after having read permitted types. // recovery if (this.currentElement != null) { this.lastCheckPoint = typeDecl.bodyStart; @@ -6723,1726 +6722,1726 @@ protected void consumeZeroTypeAnnotations() { // This method is part of an automatic generation : do NOT edit-modify protected void consumeRule(int act) { switch ( act ) { - case 42 : if (DEBUG) { System.out.println("Type ::= PrimitiveType"); } //$NON-NLS-1$ + case 43 : if (DEBUG) { System.out.println("Type ::= PrimitiveType"); } //$NON-NLS-1$ consumePrimitiveType(); break; - case 56 : if (DEBUG) { System.out.println("ReferenceType ::= ClassOrInterfaceType"); } //$NON-NLS-1$ + case 57 : if (DEBUG) { System.out.println("ReferenceType ::= ClassOrInterfaceType"); } //$NON-NLS-1$ consumeReferenceType(); break; - case 60 : if (DEBUG) { System.out.println("ClassOrInterface ::= Name"); } //$NON-NLS-1$ + case 61 : if (DEBUG) { System.out.println("ClassOrInterface ::= Name"); } //$NON-NLS-1$ consumeClassOrInterfaceName(); break; - case 61 : if (DEBUG) { System.out.println("ClassOrInterface ::= GenericType DOT Name"); } //$NON-NLS-1$ + case 62 : if (DEBUG) { System.out.println("ClassOrInterface ::= GenericType DOT Name"); } //$NON-NLS-1$ consumeClassOrInterface(); break; - case 62 : if (DEBUG) { System.out.println("GenericType ::= ClassOrInterface TypeArguments"); } //$NON-NLS-1$ + case 63 : if (DEBUG) { System.out.println("GenericType ::= ClassOrInterface TypeArguments"); } //$NON-NLS-1$ consumeGenericType(); break; - case 63 : if (DEBUG) { System.out.println("GenericType ::= ClassOrInterface LESS GREATER"); } //$NON-NLS-1$ + case 64 : if (DEBUG) { System.out.println("GenericType ::= ClassOrInterface LESS GREATER"); } //$NON-NLS-1$ consumeGenericTypeWithDiamond(); break; - case 64 : if (DEBUG) { System.out.println("ArrayTypeWithTypeArgumentsName ::= GenericType DOT Name"); } //$NON-NLS-1$ + case 65 : if (DEBUG) { System.out.println("ArrayTypeWithTypeArgumentsName ::= GenericType DOT Name"); } //$NON-NLS-1$ consumeArrayTypeWithTypeArgumentsName(); break; - case 65 : if (DEBUG) { System.out.println("ArrayType ::= PrimitiveType Dims"); } //$NON-NLS-1$ + case 66 : if (DEBUG) { System.out.println("ArrayType ::= PrimitiveType Dims"); } //$NON-NLS-1$ consumePrimitiveArrayType(); break; - case 66 : if (DEBUG) { System.out.println("ArrayType ::= Name Dims"); } //$NON-NLS-1$ + case 67 : if (DEBUG) { System.out.println("ArrayType ::= Name Dims"); } //$NON-NLS-1$ consumeNameArrayType(); break; - case 67 : if (DEBUG) { System.out.println("ArrayType ::= ArrayTypeWithTypeArgumentsName Dims"); } //$NON-NLS-1$ + case 68 : if (DEBUG) { System.out.println("ArrayType ::= ArrayTypeWithTypeArgumentsName Dims"); } //$NON-NLS-1$ consumeGenericTypeNameArrayType(); break; - case 68 : if (DEBUG) { System.out.println("ArrayType ::= GenericType Dims"); } //$NON-NLS-1$ + case 69 : if (DEBUG) { System.out.println("ArrayType ::= GenericType Dims"); } //$NON-NLS-1$ consumeGenericTypeArrayType(); break; - case 70 : if (DEBUG) { System.out.println("Name ::= SimpleName"); } //$NON-NLS-1$ + case 71 : if (DEBUG) { System.out.println("Name ::= SimpleName"); } //$NON-NLS-1$ consumeZeroTypeAnnotations(); break; - case 75 : if (DEBUG) { System.out.println("UnannotatableName ::= UnannotatableName DOT SimpleName"); } //$NON-NLS-1$ + case 76 : if (DEBUG) { System.out.println("UnannotatableName ::= UnannotatableName DOT SimpleName"); } //$NON-NLS-1$ consumeUnannotatableQualifiedName(); break; - case 76 : if (DEBUG) { System.out.println("QualifiedName ::= Name DOT SimpleName"); } //$NON-NLS-1$ + case 77 : if (DEBUG) { System.out.println("QualifiedName ::= Name DOT SimpleName"); } //$NON-NLS-1$ consumeQualifiedName(false); break; - case 77 : if (DEBUG) { System.out.println("QualifiedName ::= Name DOT TypeAnnotations SimpleName"); } //$NON-NLS-1$ + case 78 : if (DEBUG) { System.out.println("QualifiedName ::= Name DOT TypeAnnotations SimpleName"); } //$NON-NLS-1$ consumeQualifiedName(true); break; - case 78 : if (DEBUG) { System.out.println("TypeAnnotationsopt ::="); } //$NON-NLS-1$ + case 79 : if (DEBUG) { System.out.println("TypeAnnotationsopt ::="); } //$NON-NLS-1$ consumeZeroTypeAnnotations(); break; - case 82 : if (DEBUG) { System.out.println("TypeAnnotations0 ::= TypeAnnotations0 TypeAnnotation"); } //$NON-NLS-1$ + case 83 : if (DEBUG) { System.out.println("TypeAnnotations0 ::= TypeAnnotations0 TypeAnnotation"); } //$NON-NLS-1$ consumeOneMoreTypeAnnotation(); break; - case 83 : if (DEBUG) { System.out.println("TypeAnnotation ::= NormalTypeAnnotation"); } //$NON-NLS-1$ + case 84 : if (DEBUG) { System.out.println("TypeAnnotation ::= NormalTypeAnnotation"); } //$NON-NLS-1$ consumeTypeAnnotation(); break; - case 84 : if (DEBUG) { System.out.println("TypeAnnotation ::= MarkerTypeAnnotation"); } //$NON-NLS-1$ + case 85 : if (DEBUG) { System.out.println("TypeAnnotation ::= MarkerTypeAnnotation"); } //$NON-NLS-1$ consumeTypeAnnotation(); break; - case 85 : if (DEBUG) { System.out.println("TypeAnnotation ::= SingleMemberTypeAnnotation"); } //$NON-NLS-1$ + case 86 : if (DEBUG) { System.out.println("TypeAnnotation ::= SingleMemberTypeAnnotation"); } //$NON-NLS-1$ consumeTypeAnnotation(); break; - case 86 : if (DEBUG) { System.out.println("TypeAnnotationName ::= AT308 UnannotatableName"); } //$NON-NLS-1$ + case 87 : if (DEBUG) { System.out.println("TypeAnnotationName ::= AT308 UnannotatableName"); } //$NON-NLS-1$ consumeAnnotationName() ; break; - case 87 : if (DEBUG) { System.out.println("NormalTypeAnnotation ::= TypeAnnotationName LPAREN..."); } //$NON-NLS-1$ + case 88 : if (DEBUG) { System.out.println("NormalTypeAnnotation ::= TypeAnnotationName LPAREN..."); } //$NON-NLS-1$ consumeNormalAnnotation(true) ; break; - case 88 : if (DEBUG) { System.out.println("MarkerTypeAnnotation ::= TypeAnnotationName"); } //$NON-NLS-1$ + case 89 : if (DEBUG) { System.out.println("MarkerTypeAnnotation ::= TypeAnnotationName"); } //$NON-NLS-1$ consumeMarkerAnnotation(true) ; break; - case 89 : if (DEBUG) { System.out.println("SingleMemberTypeAnnotation ::= TypeAnnotationName LPAREN"); } //$NON-NLS-1$ + case 90 : if (DEBUG) { System.out.println("SingleMemberTypeAnnotation ::= TypeAnnotationName LPAREN"); } //$NON-NLS-1$ consumeSingleMemberAnnotation(true) ; break; - case 90 : if (DEBUG) { System.out.println("RejectTypeAnnotations ::="); } //$NON-NLS-1$ + case 91 : if (DEBUG) { System.out.println("RejectTypeAnnotations ::="); } //$NON-NLS-1$ consumeNonTypeUseName(); break; - case 91 : if (DEBUG) { System.out.println("PushZeroTypeAnnotations ::="); } //$NON-NLS-1$ + case 92 : if (DEBUG) { System.out.println("PushZeroTypeAnnotations ::="); } //$NON-NLS-1$ consumeZeroTypeAnnotations(); break; - case 92 : if (DEBUG) { System.out.println("VariableDeclaratorIdOrThis ::= this"); } //$NON-NLS-1$ + case 93 : if (DEBUG) { System.out.println("VariableDeclaratorIdOrThis ::= this"); } //$NON-NLS-1$ consumeExplicitThisParameter(false); break; - case 93 : if (DEBUG) { System.out.println("VariableDeclaratorIdOrThis ::= UnannotatableName DOT this"); } //$NON-NLS-1$ + case 94 : if (DEBUG) { System.out.println("VariableDeclaratorIdOrThis ::= UnannotatableName DOT this"); } //$NON-NLS-1$ consumeExplicitThisParameter(true); break; - case 94 : if (DEBUG) { System.out.println("VariableDeclaratorIdOrThis ::= VariableDeclaratorId"); } //$NON-NLS-1$ + case 95 : if (DEBUG) { System.out.println("VariableDeclaratorIdOrThis ::= VariableDeclaratorId"); } //$NON-NLS-1$ consumeVariableDeclaratorIdParameter(); break; - case 95 : if (DEBUG) { System.out.println("CompilationUnit ::= EnterCompilationUnit..."); } //$NON-NLS-1$ + case 96 : if (DEBUG) { System.out.println("CompilationUnit ::= EnterCompilationUnit..."); } //$NON-NLS-1$ consumeCompilationUnit(); break; - case 96 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration"); } //$NON-NLS-1$ + case 97 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration"); } //$NON-NLS-1$ consumeInternalCompilationUnit(); break; - case 97 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration..."); } //$NON-NLS-1$ + case 98 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration..."); } //$NON-NLS-1$ consumeInternalCompilationUnit(); break; - case 98 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration..."); } //$NON-NLS-1$ + case 99 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration..."); } //$NON-NLS-1$ consumeInternalCompilationUnitWithTypes(); break; - case 99 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration..."); } //$NON-NLS-1$ + case 100 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= PackageDeclaration..."); } //$NON-NLS-1$ consumeInternalCompilationUnitWithTypes(); break; - case 100 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= ImportDeclarations..."); } //$NON-NLS-1$ + case 101 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= ImportDeclarations..."); } //$NON-NLS-1$ consumeInternalCompilationUnit(); break; - case 101 : if (DEBUG) { System.out.println("InternalCompilationUnit ::="); } //$NON-NLS-1$ + case 102 : if (DEBUG) { System.out.println("InternalCompilationUnit ::="); } //$NON-NLS-1$ consumeEmptyInternalCompilationUnit(); break; - case 102 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= ImportDeclarations..."); } //$NON-NLS-1$ + case 103 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= ImportDeclarations..."); } //$NON-NLS-1$ consumeInternalCompilationUnitWithModuleDeclaration(); break; - case 103 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= ModuleDeclaration"); } //$NON-NLS-1$ + case 104 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= ModuleDeclaration"); } //$NON-NLS-1$ consumeInternalCompilationUnitWithModuleDeclaration(); break; - case 104 : if (DEBUG) { System.out.println("ModuleDeclaration ::= ModuleHeader ModuleBody"); } //$NON-NLS-1$ + case 105 : if (DEBUG) { System.out.println("ModuleDeclaration ::= ModuleHeader ModuleBody"); } //$NON-NLS-1$ consumeModuleDeclaration(); break; - case 105 : if (DEBUG) { System.out.println("InternalCompilationUnit ::=..."); } //$NON-NLS-1$ + case 106 : if (DEBUG) { System.out.println("InternalCompilationUnit ::=..."); } //$NON-NLS-1$ consumeInternalCompilationUnitWithPotentialImplicitlyDeclaredClass(); break; - case 106 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= ImportDeclarations..."); } //$NON-NLS-1$ + case 107 : if (DEBUG) { System.out.println("InternalCompilationUnit ::= ImportDeclarations..."); } //$NON-NLS-1$ consumeInternalCompilationUnitWithPotentialImplicitlyDeclaredClass(); break; - case 107 : if (DEBUG) { System.out.println("ModuleHeader ::= Modifiersopt ModuleModifieropt module"); } //$NON-NLS-1$ + case 108 : if (DEBUG) { System.out.println("ModuleHeader ::= Modifiersopt ModuleModifieropt module"); } //$NON-NLS-1$ consumeModuleHeader(); break; - case 109 : if (DEBUG) { System.out.println("ModuleModifieropt ::= ModuleModifier"); } //$NON-NLS-1$ + case 110 : if (DEBUG) { System.out.println("ModuleModifieropt ::= ModuleModifier"); } //$NON-NLS-1$ consumeModuleModifiers(); break; - case 112 : if (DEBUG) { System.out.println("ModuleStatementsOpt ::="); } //$NON-NLS-1$ + case 113 : if (DEBUG) { System.out.println("ModuleStatementsOpt ::="); } //$NON-NLS-1$ consumeEmptyModuleStatementsOpt(); break; - case 115 : if (DEBUG) { System.out.println("ModuleStatements ::= ModuleStatements ModuleStatement"); } //$NON-NLS-1$ + case 116 : if (DEBUG) { System.out.println("ModuleStatements ::= ModuleStatements ModuleStatement"); } //$NON-NLS-1$ consumeModuleStatements(); break; - case 121 : if (DEBUG) { System.out.println("RequiresStatement ::= SingleRequiresModuleName SEMICOLON"); } //$NON-NLS-1$ + case 122 : if (DEBUG) { System.out.println("RequiresStatement ::= SingleRequiresModuleName SEMICOLON"); } //$NON-NLS-1$ consumeRequiresStatement(); break; - case 122 : if (DEBUG) { System.out.println("SingleRequiresModuleName ::= requires..."); } //$NON-NLS-1$ + case 123 : if (DEBUG) { System.out.println("SingleRequiresModuleName ::= requires..."); } //$NON-NLS-1$ consumeSingleRequiresModuleName(); break; - case 123 : if (DEBUG) { System.out.println("RequiresModifiersopt ::= RequiresModifiers"); } //$NON-NLS-1$ + case 124 : if (DEBUG) { System.out.println("RequiresModifiersopt ::= RequiresModifiers"); } //$NON-NLS-1$ consumeModifiers(); break; - case 124 : if (DEBUG) { System.out.println("RequiresModifiersopt ::="); } //$NON-NLS-1$ + case 125 : if (DEBUG) { System.out.println("RequiresModifiersopt ::="); } //$NON-NLS-1$ consumeDefaultModifiers(); break; - case 126 : if (DEBUG) { System.out.println("RequiresModifiers ::= RequiresModifiers RequiresModifier"); } //$NON-NLS-1$ + case 127 : if (DEBUG) { System.out.println("RequiresModifiers ::= RequiresModifiers RequiresModifier"); } //$NON-NLS-1$ consumeModifiers2(); break; - case 129 : if (DEBUG) { System.out.println("ExportsStatement ::= ExportsHeader TargetModuleListopt"); } //$NON-NLS-1$ + case 130 : if (DEBUG) { System.out.println("ExportsStatement ::= ExportsHeader TargetModuleListopt"); } //$NON-NLS-1$ consumeExportsStatement(); break; - case 130 : if (DEBUG) { System.out.println("ExportsHeader ::= exports SinglePkgName"); } //$NON-NLS-1$ + case 131 : if (DEBUG) { System.out.println("ExportsHeader ::= exports SinglePkgName"); } //$NON-NLS-1$ consumeExportsHeader(); break; - case 132 : if (DEBUG) { System.out.println("TargetModuleListopt ::= to TargetModuleNameList"); } //$NON-NLS-1$ + case 133 : if (DEBUG) { System.out.println("TargetModuleListopt ::= to TargetModuleNameList"); } //$NON-NLS-1$ consumeTargetModuleList(); break; - case 133 : if (DEBUG) { System.out.println("TargetModuleName ::= UnannotatableName"); } //$NON-NLS-1$ + case 134 : if (DEBUG) { System.out.println("TargetModuleName ::= UnannotatableName"); } //$NON-NLS-1$ consumeSingleTargetModuleName(); break; - case 135 : if (DEBUG) { System.out.println("TargetModuleNameList ::= TargetModuleNameList COMMA..."); } //$NON-NLS-1$ + case 136 : if (DEBUG) { System.out.println("TargetModuleNameList ::= TargetModuleNameList COMMA..."); } //$NON-NLS-1$ consumeTargetModuleNameList(); break; - case 136 : if (DEBUG) { System.out.println("SinglePkgName ::= UnannotatableName"); } //$NON-NLS-1$ + case 137 : if (DEBUG) { System.out.println("SinglePkgName ::= UnannotatableName"); } //$NON-NLS-1$ consumeSinglePkgName(); break; - case 137 : if (DEBUG) { System.out.println("OpensStatement ::= OpensHeader TargetModuleListopt..."); } //$NON-NLS-1$ + case 138 : if (DEBUG) { System.out.println("OpensStatement ::= OpensHeader TargetModuleListopt..."); } //$NON-NLS-1$ consumeOpensStatement(); break; - case 138 : if (DEBUG) { System.out.println("OpensHeader ::= opens SinglePkgName"); } //$NON-NLS-1$ + case 139 : if (DEBUG) { System.out.println("OpensHeader ::= opens SinglePkgName"); } //$NON-NLS-1$ consumeOpensHeader(); break; - case 139 : if (DEBUG) { System.out.println("UsesStatement ::= UsesHeader SEMICOLON"); } //$NON-NLS-1$ + case 140 : if (DEBUG) { System.out.println("UsesStatement ::= UsesHeader SEMICOLON"); } //$NON-NLS-1$ consumeUsesStatement(); break; - case 140 : if (DEBUG) { System.out.println("UsesHeader ::= uses Name"); } //$NON-NLS-1$ + case 141 : if (DEBUG) { System.out.println("UsesHeader ::= uses Name"); } //$NON-NLS-1$ consumeUsesHeader(); break; - case 141 : if (DEBUG) { System.out.println("ProvidesStatement ::= ProvidesInterface WithClause..."); } //$NON-NLS-1$ + case 142 : if (DEBUG) { System.out.println("ProvidesStatement ::= ProvidesInterface WithClause..."); } //$NON-NLS-1$ consumeProvidesStatement(); break; - case 142 : if (DEBUG) { System.out.println("ProvidesInterface ::= provides Name"); } //$NON-NLS-1$ + case 143 : if (DEBUG) { System.out.println("ProvidesInterface ::= provides Name"); } //$NON-NLS-1$ consumeProvidesInterface(); break; - case 143 : if (DEBUG) { System.out.println("ServiceImplName ::= Name"); } //$NON-NLS-1$ + case 144 : if (DEBUG) { System.out.println("ServiceImplName ::= Name"); } //$NON-NLS-1$ consumeSingleServiceImplName(); break; - case 145 : if (DEBUG) { System.out.println("ServiceImplNameList ::= ServiceImplNameList COMMA..."); } //$NON-NLS-1$ + case 146 : if (DEBUG) { System.out.println("ServiceImplNameList ::= ServiceImplNameList COMMA..."); } //$NON-NLS-1$ consumeServiceImplNameList(); break; - case 146 : if (DEBUG) { System.out.println("WithClause ::= with ServiceImplNameList"); } //$NON-NLS-1$ + case 147 : if (DEBUG) { System.out.println("WithClause ::= with ServiceImplNameList"); } //$NON-NLS-1$ consumeWithClause(); break; - case 147 : if (DEBUG) { System.out.println("ReduceImports ::="); } //$NON-NLS-1$ + case 148 : if (DEBUG) { System.out.println("ReduceImports ::="); } //$NON-NLS-1$ consumeReduceImports(); break; - case 148 : if (DEBUG) { System.out.println("EnterCompilationUnit ::="); } //$NON-NLS-1$ + case 149 : if (DEBUG) { System.out.println("EnterCompilationUnit ::="); } //$NON-NLS-1$ consumeEnterCompilationUnit(); break; - case 171 : if (DEBUG) { System.out.println("CatchHeader ::= catch LPAREN CatchFormalParameter RPAREN"); } //$NON-NLS-1$ + case 172 : if (DEBUG) { System.out.println("CatchHeader ::= catch LPAREN CatchFormalParameter RPAREN"); } //$NON-NLS-1$ consumeCatchHeader(); break; - case 173 : if (DEBUG) { System.out.println("ImportDeclarations ::= ImportDeclarations..."); } //$NON-NLS-1$ + case 174 : if (DEBUG) { System.out.println("ImportDeclarations ::= ImportDeclarations..."); } //$NON-NLS-1$ consumeImportDeclarations(); break; - case 175 : if (DEBUG) { System.out.println("TypeDeclarations ::= TypeDeclarations TypeDeclaration"); } //$NON-NLS-1$ + case 176 : if (DEBUG) { System.out.println("TypeDeclarations ::= TypeDeclarations TypeDeclaration"); } //$NON-NLS-1$ consumeTypeDeclarations(); break; - case 176 : if (DEBUG) { System.out.println("PackageDeclaration ::= PackageDeclarationName SEMICOLON"); } //$NON-NLS-1$ + case 177 : if (DEBUG) { System.out.println("PackageDeclaration ::= PackageDeclarationName SEMICOLON"); } //$NON-NLS-1$ consumePackageDeclaration(); break; - case 177 : if (DEBUG) { System.out.println("PackageDeclarationName ::= Modifiers package..."); } //$NON-NLS-1$ + case 178 : if (DEBUG) { System.out.println("PackageDeclarationName ::= Modifiers package..."); } //$NON-NLS-1$ consumePackageDeclarationNameWithModifiers(); break; - case 178 : if (DEBUG) { System.out.println("PackageDeclarationName ::= PackageComment package Name"); } //$NON-NLS-1$ + case 179 : if (DEBUG) { System.out.println("PackageDeclarationName ::= PackageComment package Name"); } //$NON-NLS-1$ consumePackageDeclarationName(); break; - case 179 : if (DEBUG) { System.out.println("PackageComment ::="); } //$NON-NLS-1$ + case 180 : if (DEBUG) { System.out.println("PackageComment ::="); } //$NON-NLS-1$ consumePackageComment(); break; - case 184 : if (DEBUG) { System.out.println("SingleTypeImportDeclaration ::=..."); } //$NON-NLS-1$ + case 185 : if (DEBUG) { System.out.println("SingleTypeImportDeclaration ::=..."); } //$NON-NLS-1$ consumeImportDeclaration(); break; - case 185 : if (DEBUG) { System.out.println("SingleTypeImportDeclarationName ::= import Name..."); } //$NON-NLS-1$ + case 186 : if (DEBUG) { System.out.println("SingleTypeImportDeclarationName ::= import Name..."); } //$NON-NLS-1$ consumeSingleTypeImportDeclarationName(); break; - case 186 : if (DEBUG) { System.out.println("TypeImportOnDemandDeclaration ::=..."); } //$NON-NLS-1$ + case 187 : if (DEBUG) { System.out.println("TypeImportOnDemandDeclaration ::=..."); } //$NON-NLS-1$ consumeImportDeclaration(); break; - case 187 : if (DEBUG) { System.out.println("TypeImportOnDemandDeclarationName ::= import Name DOT..."); } //$NON-NLS-1$ + case 188 : if (DEBUG) { System.out.println("TypeImportOnDemandDeclarationName ::= import Name DOT..."); } //$NON-NLS-1$ consumeTypeImportOnDemandDeclarationName(); break; - case 190 : if (DEBUG) { System.out.println("TypeDeclaration ::= SEMICOLON"); } //$NON-NLS-1$ + case 191 : if (DEBUG) { System.out.println("TypeDeclaration ::= SEMICOLON"); } //$NON-NLS-1$ consumeEmptyTypeDeclaration(); break; - case 195 : if (DEBUG) { System.out.println("Modifiers ::= Modifiers Modifier"); } //$NON-NLS-1$ + case 196 : if (DEBUG) { System.out.println("Modifiers ::= Modifiers Modifier"); } //$NON-NLS-1$ consumeModifiers2(); break; - case 209 : if (DEBUG) { System.out.println("Modifier ::= Annotation"); } //$NON-NLS-1$ + case 210 : if (DEBUG) { System.out.println("Modifier ::= Annotation"); } //$NON-NLS-1$ consumeAnnotationAsModifier(); break; - case 210 : if (DEBUG) { System.out.println("ClassDeclaration ::= ClassHeader ClassBody"); } //$NON-NLS-1$ + case 211 : if (DEBUG) { System.out.println("ClassDeclaration ::= ClassHeader ClassBody"); } //$NON-NLS-1$ consumeClassDeclaration(); break; - case 211 : if (DEBUG) { System.out.println("ClassHeader ::= ClassHeaderName ClassHeaderExtendsopt..."); } //$NON-NLS-1$ + case 212 : if (DEBUG) { System.out.println("ClassHeader ::= ClassHeaderName ClassHeaderExtendsopt..."); } //$NON-NLS-1$ consumeClassHeader(); break; - case 212 : if (DEBUG) { System.out.println("ClassHeaderName ::= ClassHeaderName1 TypeParameters"); } //$NON-NLS-1$ + case 213 : if (DEBUG) { System.out.println("ClassHeaderName ::= ClassHeaderName1 TypeParameters"); } //$NON-NLS-1$ consumeTypeHeaderNameWithTypeParameters(); break; - case 214 : if (DEBUG) { System.out.println("ClassHeaderName1 ::= Modifiersopt class Identifier"); } //$NON-NLS-1$ + case 215 : if (DEBUG) { System.out.println("ClassHeaderName1 ::= Modifiersopt class Identifier"); } //$NON-NLS-1$ consumeClassHeaderName1(); break; - case 215 : if (DEBUG) { System.out.println("ClassHeaderExtends ::= extends ClassType"); } //$NON-NLS-1$ + case 216 : if (DEBUG) { System.out.println("ClassHeaderExtends ::= extends ClassType"); } //$NON-NLS-1$ consumeClassHeaderExtends(); break; - case 216 : if (DEBUG) { System.out.println("ClassHeaderImplements ::= implements InterfaceTypeList"); } //$NON-NLS-1$ + case 217 : if (DEBUG) { System.out.println("ClassHeaderImplements ::= implements InterfaceTypeList"); } //$NON-NLS-1$ consumeClassHeaderImplements(); break; - case 218 : if (DEBUG) { System.out.println("InterfaceTypeList ::= InterfaceTypeList COMMA..."); } //$NON-NLS-1$ + case 219 : if (DEBUG) { System.out.println("InterfaceTypeList ::= InterfaceTypeList COMMA..."); } //$NON-NLS-1$ consumeInterfaceTypeList(); break; - case 219 : if (DEBUG) { System.out.println("InterfaceType ::= ClassOrInterfaceType"); } //$NON-NLS-1$ + case 220 : if (DEBUG) { System.out.println("InterfaceType ::= ClassOrInterfaceType"); } //$NON-NLS-1$ consumeInterfaceType(); break; - case 222 : if (DEBUG) { System.out.println("ClassBodyDeclarations ::= ClassBodyDeclarations..."); } //$NON-NLS-1$ + case 223 : if (DEBUG) { System.out.println("ClassBodyDeclarations ::= ClassBodyDeclarations..."); } //$NON-NLS-1$ consumeClassBodyDeclarations(); break; - case 227 : if (DEBUG) { System.out.println("ImplicitlyDeclaredClassBodyDeclarations ::=..."); } //$NON-NLS-1$ + case 228 : if (DEBUG) { System.out.println("ImplicitlyDeclaredClassBodyDeclarations ::=..."); } //$NON-NLS-1$ consumeImplicitlyDeclaredClassBodyDeclarations(); break; - case 228 : if (DEBUG) { System.out.println("ClassBodyDeclaration ::= Diet NestedMethod..."); } //$NON-NLS-1$ + case 229 : if (DEBUG) { System.out.println("ClassBodyDeclaration ::= Diet NestedMethod..."); } //$NON-NLS-1$ consumeClassBodyDeclaration(); break; - case 229 : if (DEBUG) { System.out.println("Diet ::="); } //$NON-NLS-1$ + case 230 : if (DEBUG) { System.out.println("Diet ::="); } //$NON-NLS-1$ consumeDiet(); break; - case 230 : if (DEBUG) { System.out.println("Initializer ::= Diet NestedMethod CreateInitializer..."); } //$NON-NLS-1$ + case 231 : if (DEBUG) { System.out.println("Initializer ::= Diet NestedMethod CreateInitializer..."); } //$NON-NLS-1$ consumeClassBodyDeclaration(); break; - case 231 : if (DEBUG) { System.out.println("CreateInitializer ::="); } //$NON-NLS-1$ + case 232 : if (DEBUG) { System.out.println("CreateInitializer ::="); } //$NON-NLS-1$ consumeCreateInitializer(); break; - case 239 : if (DEBUG) { System.out.println("ClassMemberDeclaration ::= SEMICOLON"); } //$NON-NLS-1$ + case 240 : if (DEBUG) { System.out.println("ClassMemberDeclaration ::= SEMICOLON"); } //$NON-NLS-1$ consumeEmptyTypeDeclaration(); break; - case 242 : if (DEBUG) { System.out.println("FieldDeclaration ::= Modifiersopt Type..."); } //$NON-NLS-1$ + case 243 : if (DEBUG) { System.out.println("FieldDeclaration ::= Modifiersopt Type..."); } //$NON-NLS-1$ consumeFieldDeclaration(); break; - case 244 : if (DEBUG) { System.out.println("VariableDeclarators ::= VariableDeclarators COMMA..."); } //$NON-NLS-1$ + case 245 : if (DEBUG) { System.out.println("VariableDeclarators ::= VariableDeclarators COMMA..."); } //$NON-NLS-1$ consumeVariableDeclarators(); break; - case 247 : if (DEBUG) { System.out.println("EnterVariable ::="); } //$NON-NLS-1$ + case 248 : if (DEBUG) { System.out.println("EnterVariable ::="); } //$NON-NLS-1$ consumeEnterVariable(); break; - case 248 : if (DEBUG) { System.out.println("ExitVariableWithInitialization ::="); } //$NON-NLS-1$ + case 249 : if (DEBUG) { System.out.println("ExitVariableWithInitialization ::="); } //$NON-NLS-1$ consumeExitVariableWithInitialization(); break; - case 249 : if (DEBUG) { System.out.println("ExitVariableWithoutInitialization ::="); } //$NON-NLS-1$ + case 250 : if (DEBUG) { System.out.println("ExitVariableWithoutInitialization ::="); } //$NON-NLS-1$ consumeExitVariableWithoutInitialization(); break; - case 250 : if (DEBUG) { System.out.println("ForceNoDiet ::="); } //$NON-NLS-1$ + case 251 : if (DEBUG) { System.out.println("ForceNoDiet ::="); } //$NON-NLS-1$ consumeForceNoDiet(); break; - case 251 : if (DEBUG) { System.out.println("RestoreDiet ::="); } //$NON-NLS-1$ + case 252 : if (DEBUG) { System.out.println("RestoreDiet ::="); } //$NON-NLS-1$ consumeRestoreDiet(); break; - case 253 : if (DEBUG) { System.out.println("VariableDeclaratorId ::= UNDERSCORE"); } //$NON-NLS-1$ + case 254 : if (DEBUG) { System.out.println("VariableDeclaratorId ::= UNDERSCORE"); } //$NON-NLS-1$ consumeUnnamedVariable(); break; - case 257 : if (DEBUG) { System.out.println("MethodDeclaration ::= MethodHeader MethodBody"); } //$NON-NLS-1$ + case 258 : 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; - case 258 : if (DEBUG) { System.out.println("MethodDeclaration ::= DefaultMethodHeader MethodBody"); } //$NON-NLS-1$ + case 259 : 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; - case 259 : if (DEBUG) { System.out.println("AbstractMethodDeclaration ::= MethodHeader SEMICOLON"); } //$NON-NLS-1$ + case 260 : if (DEBUG) { System.out.println("AbstractMethodDeclaration ::= MethodHeader SEMICOLON"); } //$NON-NLS-1$ // set to false to consume a method without body consumeMethodDeclaration(false, false); break; - case 260 : if (DEBUG) { System.out.println("MethodHeader ::= MethodHeaderName FormalParameterListopt"); } //$NON-NLS-1$ + case 261 : if (DEBUG) { System.out.println("MethodHeader ::= MethodHeaderName FormalParameterListopt"); } //$NON-NLS-1$ consumeMethodHeader(); break; - case 261 : if (DEBUG) { System.out.println("DefaultMethodHeader ::= DefaultMethodHeaderName..."); } //$NON-NLS-1$ + case 262 : if (DEBUG) { System.out.println("DefaultMethodHeader ::= DefaultMethodHeaderName..."); } //$NON-NLS-1$ consumeMethodHeader(); break; - case 262 : if (DEBUG) { System.out.println("MethodHeaderName ::= Modifiersopt TypeParameters Type..."); } //$NON-NLS-1$ + case 263 : if (DEBUG) { System.out.println("MethodHeaderName ::= Modifiersopt TypeParameters Type..."); } //$NON-NLS-1$ consumeMethodHeaderNameWithTypeParameters(false); break; - case 263 : if (DEBUG) { System.out.println("MethodHeaderName ::= Modifiersopt Type Identifier LPAREN"); } //$NON-NLS-1$ + case 264 : if (DEBUG) { System.out.println("MethodHeaderName ::= Modifiersopt Type Identifier LPAREN"); } //$NON-NLS-1$ consumeMethodHeaderName(false); break; - case 264 : if (DEBUG) { System.out.println("DefaultMethodHeaderName ::= ModifiersWithDefault..."); } //$NON-NLS-1$ + case 265 : if (DEBUG) { System.out.println("DefaultMethodHeaderName ::= ModifiersWithDefault..."); } //$NON-NLS-1$ consumeMethodHeaderNameWithTypeParameters(false); break; - case 265 : if (DEBUG) { System.out.println("DefaultMethodHeaderName ::= ModifiersWithDefault Type..."); } //$NON-NLS-1$ + case 266 : if (DEBUG) { System.out.println("DefaultMethodHeaderName ::= ModifiersWithDefault Type..."); } //$NON-NLS-1$ consumeMethodHeaderName(false); break; - case 266 : if (DEBUG) { System.out.println("ModifiersWithDefault ::= Modifiersopt default..."); } //$NON-NLS-1$ + case 267 : if (DEBUG) { System.out.println("ModifiersWithDefault ::= Modifiersopt default..."); } //$NON-NLS-1$ consumePushCombineModifiers(); break; - case 267 : if (DEBUG) { System.out.println("MethodHeaderRightParen ::= RPAREN"); } //$NON-NLS-1$ + case 268 : if (DEBUG) { System.out.println("MethodHeaderRightParen ::= RPAREN"); } //$NON-NLS-1$ consumeMethodHeaderRightParen(); break; - case 268 : if (DEBUG) { System.out.println("MethodHeaderExtendedDims ::= Dimsopt"); } //$NON-NLS-1$ + case 269 : if (DEBUG) { System.out.println("MethodHeaderExtendedDims ::= Dimsopt"); } //$NON-NLS-1$ consumeMethodHeaderExtendedDims(); break; - case 269 : if (DEBUG) { System.out.println("MethodHeaderThrowsClause ::= throws ClassTypeList"); } //$NON-NLS-1$ + case 270 : if (DEBUG) { System.out.println("MethodHeaderThrowsClause ::= throws ClassTypeList"); } //$NON-NLS-1$ consumeMethodHeaderThrowsClause(); break; - case 270 : if (DEBUG) { System.out.println("ConstructorHeader ::= ConstructorHeaderName..."); } //$NON-NLS-1$ + case 271 : if (DEBUG) { System.out.println("ConstructorHeader ::= ConstructorHeaderName..."); } //$NON-NLS-1$ consumeConstructorHeader(); break; - case 271 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt TypeParameters..."); } //$NON-NLS-1$ + case 272 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt TypeParameters..."); } //$NON-NLS-1$ consumeConstructorHeaderNameWithTypeParameters(); break; - case 272 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt Identifier LPAREN"); } //$NON-NLS-1$ + case 273 : if (DEBUG) { System.out.println("ConstructorHeaderName ::= Modifiersopt Identifier LPAREN"); } //$NON-NLS-1$ consumeConstructorHeaderName(); break; - case 274 : if (DEBUG) { System.out.println("FormalParameterList ::= FormalParameterList COMMA..."); } //$NON-NLS-1$ + case 275 : if (DEBUG) { System.out.println("FormalParameterList ::= FormalParameterList COMMA..."); } //$NON-NLS-1$ consumeFormalParameterList(); break; - case 275 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type..."); } //$NON-NLS-1$ + case 276 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type..."); } //$NON-NLS-1$ consumeFormalParameter(false); break; - case 276 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type..."); } //$NON-NLS-1$ + case 277 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type..."); } //$NON-NLS-1$ consumeFormalParameter(true); break; - case 277 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type AT308DOTDOTDOT..."); } //$NON-NLS-1$ + case 278 : if (DEBUG) { System.out.println("FormalParameter ::= Modifiersopt Type AT308DOTDOTDOT..."); } //$NON-NLS-1$ consumeFormalParameter(true); break; - case 278 : if (DEBUG) { System.out.println("CatchFormalParameter ::= Modifiersopt CatchType..."); } //$NON-NLS-1$ + case 279 : if (DEBUG) { System.out.println("CatchFormalParameter ::= Modifiersopt CatchType..."); } //$NON-NLS-1$ consumeCatchFormalParameter(); break; - case 279 : if (DEBUG) { System.out.println("CatchType ::= UnionType"); } //$NON-NLS-1$ + case 280 : if (DEBUG) { System.out.println("CatchType ::= UnionType"); } //$NON-NLS-1$ consumeCatchType(); break; - case 280 : if (DEBUG) { System.out.println("UnionType ::= Type"); } //$NON-NLS-1$ + case 281 : if (DEBUG) { System.out.println("UnionType ::= Type"); } //$NON-NLS-1$ consumeUnionTypeAsClassType(); break; - case 281 : if (DEBUG) { System.out.println("UnionType ::= UnionType OR Type"); } //$NON-NLS-1$ + case 282 : if (DEBUG) { System.out.println("UnionType ::= UnionType OR Type"); } //$NON-NLS-1$ consumeUnionType(); break; - case 283 : if (DEBUG) { System.out.println("ClassTypeList ::= ClassTypeList COMMA ClassTypeElt"); } //$NON-NLS-1$ + case 284 : if (DEBUG) { System.out.println("ClassTypeList ::= ClassTypeList COMMA ClassTypeElt"); } //$NON-NLS-1$ consumeClassTypeList(); break; - case 284 : if (DEBUG) { System.out.println("ClassTypeElt ::= ClassType"); } //$NON-NLS-1$ + case 285 : if (DEBUG) { System.out.println("ClassTypeElt ::= ClassType"); } //$NON-NLS-1$ consumeClassTypeElt(); break; - case 285 : if (DEBUG) { System.out.println("MethodBody ::= NestedMethod LBRACE BlockStatementsopt..."); } //$NON-NLS-1$ + case 286 : if (DEBUG) { System.out.println("MethodBody ::= NestedMethod LBRACE BlockStatementsopt..."); } //$NON-NLS-1$ consumeMethodBody(); break; - case 286 : if (DEBUG) { System.out.println("NestedMethod ::="); } //$NON-NLS-1$ + case 287 : if (DEBUG) { System.out.println("NestedMethod ::="); } //$NON-NLS-1$ consumeNestedMethod(); break; - case 287 : if (DEBUG) { System.out.println("StaticInitializer ::= StaticOnly Block"); } //$NON-NLS-1$ + case 288 : if (DEBUG) { System.out.println("StaticInitializer ::= StaticOnly Block"); } //$NON-NLS-1$ consumeStaticInitializer(); break; - case 288 : if (DEBUG) { System.out.println("StaticOnly ::= static"); } //$NON-NLS-1$ + case 289 : if (DEBUG) { System.out.println("StaticOnly ::= static"); } //$NON-NLS-1$ consumeStaticOnly(); break; - case 289 : if (DEBUG) { System.out.println("ConstructorDeclaration ::= ConstructorHeader MethodBody"); } //$NON-NLS-1$ + case 290 : if (DEBUG) { System.out.println("ConstructorDeclaration ::= ConstructorHeader MethodBody"); } //$NON-NLS-1$ consumeConstructorDeclaration() ; break; - case 290 : if (DEBUG) { System.out.println("ConstructorDeclaration ::= ConstructorHeader SEMICOLON"); } //$NON-NLS-1$ + case 291 : if (DEBUG) { System.out.println("ConstructorDeclaration ::= ConstructorHeader SEMICOLON"); } //$NON-NLS-1$ consumeInvalidConstructorDeclaration() ; break; - case 291 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= this LPAREN..."); } //$NON-NLS-1$ + case 292 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= this LPAREN..."); } //$NON-NLS-1$ consumeExplicitConstructorInvocation(0, THIS_CALL); break; - case 292 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= OnlyTypeArguments this"); } //$NON-NLS-1$ + case 293 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= OnlyTypeArguments this"); } //$NON-NLS-1$ consumeExplicitConstructorInvocationWithTypeArguments(0,THIS_CALL); break; - case 293 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= super LPAREN..."); } //$NON-NLS-1$ + case 294 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= super LPAREN..."); } //$NON-NLS-1$ consumeExplicitConstructorInvocation(0,SUPER_CALL); break; - case 294 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= OnlyTypeArguments..."); } //$NON-NLS-1$ + case 295 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= OnlyTypeArguments..."); } //$NON-NLS-1$ consumeExplicitConstructorInvocationWithTypeArguments(0,SUPER_CALL); break; - case 295 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT super..."); } //$NON-NLS-1$ + case 296 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT super..."); } //$NON-NLS-1$ consumeExplicitConstructorInvocation(1, SUPER_CALL); break; - case 296 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT..."); } //$NON-NLS-1$ + case 297 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT..."); } //$NON-NLS-1$ consumeExplicitConstructorInvocationWithTypeArguments(1, SUPER_CALL); break; - case 297 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT super LPAREN"); } //$NON-NLS-1$ + case 298 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT super LPAREN"); } //$NON-NLS-1$ consumeExplicitConstructorInvocation(2, SUPER_CALL); break; - case 298 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT..."); } //$NON-NLS-1$ + case 299 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT..."); } //$NON-NLS-1$ consumeExplicitConstructorInvocationWithTypeArguments(2, SUPER_CALL); break; - case 299 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT this..."); } //$NON-NLS-1$ + case 300 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT this..."); } //$NON-NLS-1$ consumeExplicitConstructorInvocation(1, THIS_CALL); break; - case 300 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT..."); } //$NON-NLS-1$ + case 301 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Primary DOT..."); } //$NON-NLS-1$ consumeExplicitConstructorInvocationWithTypeArguments(1, THIS_CALL); break; - case 301 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT this LPAREN"); } //$NON-NLS-1$ + case 302 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT this LPAREN"); } //$NON-NLS-1$ consumeExplicitConstructorInvocation(2, THIS_CALL); break; - case 302 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT..."); } //$NON-NLS-1$ + case 303 : if (DEBUG) { System.out.println("ExplicitConstructorInvocation ::= Name DOT..."); } //$NON-NLS-1$ consumeExplicitConstructorInvocationWithTypeArguments(2, THIS_CALL); break; - case 303 : if (DEBUG) { System.out.println("InterfaceDeclaration ::= InterfaceHeader InterfaceBody"); } //$NON-NLS-1$ + case 304 : if (DEBUG) { System.out.println("InterfaceDeclaration ::= InterfaceHeader InterfaceBody"); } //$NON-NLS-1$ consumeInterfaceDeclaration(); break; - case 304 : if (DEBUG) { System.out.println("InterfaceHeader ::= InterfaceHeaderName..."); } //$NON-NLS-1$ + case 305 : if (DEBUG) { System.out.println("InterfaceHeader ::= InterfaceHeaderName..."); } //$NON-NLS-1$ consumeInterfaceHeader(); break; - case 305 : if (DEBUG) { System.out.println("InterfaceHeaderName ::= InterfaceHeaderName1..."); } //$NON-NLS-1$ + case 306 : if (DEBUG) { System.out.println("InterfaceHeaderName ::= InterfaceHeaderName1..."); } //$NON-NLS-1$ consumeTypeHeaderNameWithTypeParameters(); break; - case 307 : if (DEBUG) { System.out.println("InterfaceHeaderName1 ::= Modifiersopt interface..."); } //$NON-NLS-1$ + case 308 : if (DEBUG) { System.out.println("InterfaceHeaderName1 ::= Modifiersopt interface..."); } //$NON-NLS-1$ consumeInterfaceHeaderName1(); break; - case 308 : if (DEBUG) { System.out.println("InterfaceHeaderExtends ::= extends InterfaceTypeList"); } //$NON-NLS-1$ + case 309 : if (DEBUG) { System.out.println("InterfaceHeaderExtends ::= extends InterfaceTypeList"); } //$NON-NLS-1$ consumeInterfaceHeaderExtends(); break; - case 311 : if (DEBUG) { System.out.println("InterfaceMemberDeclarations ::=..."); } //$NON-NLS-1$ + case 312 : if (DEBUG) { System.out.println("InterfaceMemberDeclarations ::=..."); } //$NON-NLS-1$ consumeInterfaceMemberDeclarations(); break; - case 312 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= SEMICOLON"); } //$NON-NLS-1$ + case 313 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= SEMICOLON"); } //$NON-NLS-1$ consumeEmptyTypeDeclaration(); break; - case 314 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= DefaultMethodHeader..."); } //$NON-NLS-1$ + case 315 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= DefaultMethodHeader..."); } //$NON-NLS-1$ consumeInterfaceMethodDeclaration(false); break; - case 315 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= MethodHeader MethodBody"); } //$NON-NLS-1$ + case 316 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= MethodHeader MethodBody"); } //$NON-NLS-1$ consumeInterfaceMethodDeclaration(false); break; - case 316 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= DefaultMethodHeader..."); } //$NON-NLS-1$ + case 317 : if (DEBUG) { System.out.println("InterfaceMemberDeclaration ::= DefaultMethodHeader..."); } //$NON-NLS-1$ consumeInterfaceMethodDeclaration(true); break; - case 317 : if (DEBUG) { System.out.println("InvalidConstructorDeclaration ::= ConstructorHeader..."); } //$NON-NLS-1$ + case 318 : if (DEBUG) { System.out.println("InvalidConstructorDeclaration ::= ConstructorHeader..."); } //$NON-NLS-1$ consumeInvalidConstructorDeclaration(true); break; - case 318 : if (DEBUG) { System.out.println("InvalidConstructorDeclaration ::= ConstructorHeader..."); } //$NON-NLS-1$ + case 319 : if (DEBUG) { System.out.println("InvalidConstructorDeclaration ::= ConstructorHeader..."); } //$NON-NLS-1$ consumeInvalidConstructorDeclaration(false); break; - case 329 : if (DEBUG) { System.out.println("RecordDeclaration ::= RecordHeaderPart RecordBody"); } //$NON-NLS-1$ + case 330 : if (DEBUG) { System.out.println("RecordDeclaration ::= RecordHeaderPart RecordBody"); } //$NON-NLS-1$ consumeRecordDeclaration(); break; - case 330 : if (DEBUG) { System.out.println("RecordHeaderPart ::= RecordHeaderName RecordHeader..."); } //$NON-NLS-1$ + case 331 : if (DEBUG) { System.out.println("RecordHeaderPart ::= RecordHeaderName RecordHeader..."); } //$NON-NLS-1$ consumeRecordHeaderPart(); break; - case 331 : if (DEBUG) { System.out.println("RecordHeaderName ::= RecordHeaderName1 TypeParameters"); } //$NON-NLS-1$ + case 332 : if (DEBUG) { System.out.println("RecordHeaderName ::= RecordHeaderName1 TypeParameters"); } //$NON-NLS-1$ consumeRecordHeaderNameWithTypeParameters(); break; - case 333 : if (DEBUG) { System.out.println("RecordHeaderName1 ::= Modifiersopt..."); } //$NON-NLS-1$ + case 334 : if (DEBUG) { System.out.println("RecordHeaderName1 ::= Modifiersopt..."); } //$NON-NLS-1$ consumeRecordHeaderName1(); break; - case 334 : if (DEBUG) { System.out.println("RecordComponentHeaderRightParen ::= RPAREN"); } //$NON-NLS-1$ + case 335 : if (DEBUG) { System.out.println("RecordComponentHeaderRightParen ::= RPAREN"); } //$NON-NLS-1$ consumeRecordComponentHeaderRightParen(); break; - case 335 : if (DEBUG) { System.out.println("RecordHeader ::= LPAREN RecordComponentsopt..."); } //$NON-NLS-1$ + case 336 : if (DEBUG) { System.out.println("RecordHeader ::= LPAREN RecordComponentsopt..."); } //$NON-NLS-1$ consumeRecordHeader(); break; - case 336 : if (DEBUG) { System.out.println("RecordComponentsopt ::="); } //$NON-NLS-1$ + case 337 : if (DEBUG) { System.out.println("RecordComponentsopt ::="); } //$NON-NLS-1$ consumeRecordComponentsopt(); break; - case 339 : if (DEBUG) { System.out.println("RecordComponents ::= RecordComponents COMMA..."); } //$NON-NLS-1$ + case 340 : if (DEBUG) { System.out.println("RecordComponents ::= RecordComponents COMMA..."); } //$NON-NLS-1$ consumeRecordComponents(); break; - case 341 : if (DEBUG) { System.out.println("RecordComponent ::= Modifiersopt Type..."); } //$NON-NLS-1$ + case 342 : if (DEBUG) { System.out.println("RecordComponent ::= Modifiersopt Type..."); } //$NON-NLS-1$ consumeRecordComponent(false); break; - case 342 : if (DEBUG) { System.out.println("VariableArityRecordComponent ::= Modifiersopt Type..."); } //$NON-NLS-1$ + case 343 : if (DEBUG) { System.out.println("VariableArityRecordComponent ::= Modifiersopt Type..."); } //$NON-NLS-1$ consumeRecordComponent(true); break; - case 343 : if (DEBUG) { System.out.println("VariableArityRecordComponent ::= Modifiersopt Type..."); } //$NON-NLS-1$ + case 344 : if (DEBUG) { System.out.println("VariableArityRecordComponent ::= Modifiersopt Type..."); } //$NON-NLS-1$ consumeRecordComponent(true); break; - case 344 : if (DEBUG) { System.out.println("RecordBody ::= LBRACE RecordBodyDeclarationopt RBRACE"); } //$NON-NLS-1$ + case 345 : if (DEBUG) { System.out.println("RecordBody ::= LBRACE RecordBodyDeclarationopt RBRACE"); } //$NON-NLS-1$ consumeRecordBody(); break; - case 345 : if (DEBUG) { System.out.println("RecordBodyDeclarationopt ::="); } //$NON-NLS-1$ + case 346 : if (DEBUG) { System.out.println("RecordBodyDeclarationopt ::="); } //$NON-NLS-1$ consumeEmptyRecordBodyDeclaration(); break; - case 348 : if (DEBUG) { System.out.println("RecordBodyDeclarations ::= RecordBodyDeclarations..."); } //$NON-NLS-1$ + case 349 : if (DEBUG) { System.out.println("RecordBodyDeclarations ::= RecordBodyDeclarations..."); } //$NON-NLS-1$ consumeRecordBodyDeclarations(); break; - case 349 : if (DEBUG) { System.out.println("RecordBodyDeclaration ::= ClassBodyDeclaration"); } //$NON-NLS-1$ + case 350 : if (DEBUG) { System.out.println("RecordBodyDeclaration ::= ClassBodyDeclaration"); } //$NON-NLS-1$ consumeRecordBodyDeclaration(); break; - case 350 : if (DEBUG) { System.out.println("RecordBodyDeclaration ::= CompactConstructorDeclaration"); } //$NON-NLS-1$ + case 351 : if (DEBUG) { System.out.println("RecordBodyDeclaration ::= CompactConstructorDeclaration"); } //$NON-NLS-1$ consumeRecordBodyDeclaration(); break; - case 351 : if (DEBUG) { System.out.println("CompactConstructorDeclaration ::=..."); } //$NON-NLS-1$ + case 352 : if (DEBUG) { System.out.println("CompactConstructorDeclaration ::=..."); } //$NON-NLS-1$ consumeCompactConstructorDeclaration(); break; - case 352 : if (DEBUG) { System.out.println("CompactConstructorHeader ::=..."); } //$NON-NLS-1$ + case 353 : if (DEBUG) { System.out.println("CompactConstructorHeader ::=..."); } //$NON-NLS-1$ consumeCompactConstructorHeader(); break; - case 353 : if (DEBUG) { System.out.println("CompactConstructorHeaderName ::= Modifiersopt Identifier"); } //$NON-NLS-1$ + case 354 : if (DEBUG) { System.out.println("CompactConstructorHeaderName ::= Modifiersopt Identifier"); } //$NON-NLS-1$ consumeCompactConstructorHeaderName(); break; - case 354 : if (DEBUG) { System.out.println("CompactConstructorHeaderName ::= Modifiersopt..."); } //$NON-NLS-1$ + case 355 : if (DEBUG) { System.out.println("CompactConstructorHeaderName ::= Modifiersopt..."); } //$NON-NLS-1$ consumeCompactConstructorHeaderNameWithTypeParameters(); break; - case 356 : if (DEBUG) { System.out.println("InstanceofExpression ::= InstanceofExpression..."); } //$NON-NLS-1$ + case 357 : if (DEBUG) { System.out.println("InstanceofExpression ::= InstanceofExpression..."); } //$NON-NLS-1$ consumeInstanceOfExpression(); break; - case 359 : if (DEBUG) { System.out.println("InstanceofClassic ::= instanceof Modifiersopt Type"); } //$NON-NLS-1$ + case 360 : if (DEBUG) { System.out.println("InstanceofClassic ::= instanceof Modifiersopt Type"); } //$NON-NLS-1$ consumeInstanceOfClassic(); break; - case 360 : if (DEBUG) { System.out.println("InstanceofPattern ::= instanceof Pattern"); } //$NON-NLS-1$ + case 361 : if (DEBUG) { System.out.println("InstanceofPattern ::= instanceof Pattern"); } //$NON-NLS-1$ consumeInstanceofPattern(); break; - case 363 : if (DEBUG) { System.out.println("TypePattern ::= Modifiersopt Type Identifier"); } //$NON-NLS-1$ + case 364 : if (DEBUG) { System.out.println("TypePattern ::= Modifiersopt Type Identifier"); } //$NON-NLS-1$ consumeTypePattern(); break; - case 364 : if (DEBUG) { System.out.println("TypePattern ::= Modifiersopt Type UNDERSCORE"); } //$NON-NLS-1$ + case 365 : if (DEBUG) { System.out.println("TypePattern ::= Modifiersopt Type UNDERSCORE"); } //$NON-NLS-1$ consumeTypePattern(); break; - case 365 : if (DEBUG) { System.out.println("RecordPattern ::= Modifiersopt ReferenceType PushLPAREN"); } //$NON-NLS-1$ + case 366 : if (DEBUG) { System.out.println("RecordPattern ::= Modifiersopt ReferenceType PushLPAREN"); } //$NON-NLS-1$ consumeRecordPattern(); break; - case 366 : if (DEBUG) { System.out.println("ComponentPatternListopt ::="); } //$NON-NLS-1$ + case 367 : if (DEBUG) { System.out.println("ComponentPatternListopt ::="); } //$NON-NLS-1$ consumePatternListopt(); break; - case 369 : if (DEBUG) { System.out.println("ComponentPatternList ::= ComponentPatternList COMMA..."); } //$NON-NLS-1$ + case 370 : if (DEBUG) { System.out.println("ComponentPatternList ::= ComponentPatternList COMMA..."); } //$NON-NLS-1$ consumePatternList(); break; - case 377 : if (DEBUG) { System.out.println("StringTemplateExpression ::= Name DOT TemplateArgument"); } //$NON-NLS-1$ + case 378 : if (DEBUG) { System.out.println("StringTemplateExpression ::= Name DOT TemplateArgument"); } //$NON-NLS-1$ consumeTemplateExpressionWithName(); break; - case 378 : if (DEBUG) { System.out.println("StringTemplateExpression ::= Primary DOT..."); } //$NON-NLS-1$ + case 379 : if (DEBUG) { System.out.println("StringTemplateExpression ::= Primary DOT..."); } //$NON-NLS-1$ consumeTemplateExpressionWithPrimary(); break; - case 379 : if (DEBUG) { System.out.println("UnnamedPattern ::= UNDERSCORE"); } //$NON-NLS-1$ + case 380 : if (DEBUG) { System.out.println("UnnamedPattern ::= UNDERSCORE"); } //$NON-NLS-1$ consumeUnnamedPattern(); break; - case 381 : if (DEBUG) { System.out.println("PushLeftBrace ::="); } //$NON-NLS-1$ + case 382 : if (DEBUG) { System.out.println("PushLeftBrace ::="); } //$NON-NLS-1$ consumePushLeftBrace(); break; - case 382 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace ,opt RBRACE"); } //$NON-NLS-1$ + case 383 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace ,opt RBRACE"); } //$NON-NLS-1$ consumeEmptyArrayInitializer(); break; - case 383 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace..."); } //$NON-NLS-1$ + case 384 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace..."); } //$NON-NLS-1$ consumeArrayInitializer(); break; - case 384 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace..."); } //$NON-NLS-1$ + case 385 : if (DEBUG) { System.out.println("ArrayInitializer ::= LBRACE PushLeftBrace..."); } //$NON-NLS-1$ consumeArrayInitializer(); break; - case 386 : if (DEBUG) { System.out.println("VariableInitializers ::= VariableInitializers COMMA..."); } //$NON-NLS-1$ + case 387 : if (DEBUG) { System.out.println("VariableInitializers ::= VariableInitializers COMMA..."); } //$NON-NLS-1$ consumeVariableInitializers(); break; - case 387 : if (DEBUG) { System.out.println("Block ::= OpenBlock LBRACE BlockStatementsopt RBRACE"); } //$NON-NLS-1$ + case 388 : if (DEBUG) { System.out.println("Block ::= OpenBlock LBRACE BlockStatementsopt RBRACE"); } //$NON-NLS-1$ consumeBlock(); break; - case 388 : if (DEBUG) { System.out.println("OpenBlock ::="); } //$NON-NLS-1$ + case 389 : if (DEBUG) { System.out.println("OpenBlock ::="); } //$NON-NLS-1$ consumeOpenBlock() ; break; - case 389 : if (DEBUG) { System.out.println("BlockStatements ::= BlockStatement"); } //$NON-NLS-1$ + case 390 : if (DEBUG) { System.out.println("BlockStatements ::= BlockStatement"); } //$NON-NLS-1$ consumeBlockStatement() ; break; - case 390 : if (DEBUG) { System.out.println("BlockStatements ::= BlockStatements BlockStatement"); } //$NON-NLS-1$ + case 391 : if (DEBUG) { System.out.println("BlockStatements ::= BlockStatements BlockStatement"); } //$NON-NLS-1$ consumeBlockStatements() ; break; - case 398 : if (DEBUG) { System.out.println("BlockStatement ::= InterfaceDeclaration"); } //$NON-NLS-1$ + case 399 : if (DEBUG) { System.out.println("BlockStatement ::= InterfaceDeclaration"); } //$NON-NLS-1$ consumeInvalidInterfaceDeclaration(); break; - case 399 : if (DEBUG) { System.out.println("BlockStatement ::= AnnotationTypeDeclaration"); } //$NON-NLS-1$ + case 400 : if (DEBUG) { System.out.println("BlockStatement ::= AnnotationTypeDeclaration"); } //$NON-NLS-1$ consumeInvalidAnnotationTypeDeclaration(); break; - case 400 : if (DEBUG) { System.out.println("BlockStatement ::= EnumDeclaration"); } //$NON-NLS-1$ + case 401 : if (DEBUG) { System.out.println("BlockStatement ::= EnumDeclaration"); } //$NON-NLS-1$ consumeInvalidEnumDeclaration(); break; - case 401 : if (DEBUG) { System.out.println("LocalVariableDeclarationStatement ::=..."); } //$NON-NLS-1$ + case 402 : if (DEBUG) { System.out.println("LocalVariableDeclarationStatement ::=..."); } //$NON-NLS-1$ consumeLocalVariableDeclarationStatement(); break; - case 402 : if (DEBUG) { System.out.println("LocalVariableDeclaration ::= Type PushModifiers..."); } //$NON-NLS-1$ + case 403 : if (DEBUG) { System.out.println("LocalVariableDeclaration ::= Type PushModifiers..."); } //$NON-NLS-1$ consumeLocalVariableDeclaration(); break; - case 403 : if (DEBUG) { System.out.println("LocalVariableDeclaration ::= Modifiers Type..."); } //$NON-NLS-1$ + case 404 : if (DEBUG) { System.out.println("LocalVariableDeclaration ::= Modifiers Type..."); } //$NON-NLS-1$ consumeLocalVariableDeclaration(); break; - case 404 : if (DEBUG) { System.out.println("PushModifiers ::="); } //$NON-NLS-1$ + case 405 : if (DEBUG) { System.out.println("PushModifiers ::="); } //$NON-NLS-1$ consumePushModifiers(); break; - case 405 : if (DEBUG) { System.out.println("PushModifiersForHeader ::="); } //$NON-NLS-1$ + case 406 : if (DEBUG) { System.out.println("PushModifiersForHeader ::="); } //$NON-NLS-1$ consumePushModifiersForHeader(); break; - case 406 : if (DEBUG) { System.out.println("PushRealModifiers ::="); } //$NON-NLS-1$ + case 407 : if (DEBUG) { System.out.println("PushRealModifiers ::="); } //$NON-NLS-1$ consumePushRealModifiers(); break; - case 434 : if (DEBUG) { System.out.println("EmptyStatement ::= SEMICOLON"); } //$NON-NLS-1$ + case 435 : if (DEBUG) { System.out.println("EmptyStatement ::= SEMICOLON"); } //$NON-NLS-1$ consumeEmptyStatement(); break; - case 435 : if (DEBUG) { System.out.println("LabeledStatement ::= Label COLON Statement"); } //$NON-NLS-1$ + case 436 : if (DEBUG) { System.out.println("LabeledStatement ::= Label COLON Statement"); } //$NON-NLS-1$ consumeStatementLabel() ; break; - case 436 : if (DEBUG) { System.out.println("LabeledStatementNoShortIf ::= Label COLON..."); } //$NON-NLS-1$ + case 437 : if (DEBUG) { System.out.println("LabeledStatementNoShortIf ::= Label COLON..."); } //$NON-NLS-1$ consumeStatementLabel() ; break; - case 437 : if (DEBUG) { System.out.println("Label ::= Identifier"); } //$NON-NLS-1$ + case 438 : if (DEBUG) { System.out.println("Label ::= Identifier"); } //$NON-NLS-1$ consumeLabel() ; break; - case 438 : if (DEBUG) { System.out.println("ExpressionStatement ::= StatementExpression SEMICOLON"); } //$NON-NLS-1$ + case 439 : if (DEBUG) { System.out.println("ExpressionStatement ::= StatementExpression SEMICOLON"); } //$NON-NLS-1$ consumeExpressionStatement(); break; - case 447 : if (DEBUG) { System.out.println("PostExpressionInSwitchStatement ::="); } //$NON-NLS-1$ + case 448 : if (DEBUG) { System.out.println("PostExpressionInSwitchStatement ::="); } //$NON-NLS-1$ consumePostExpressionInSwitch(true); break; - case 448 : if (DEBUG) { System.out.println("PostExpressionInSwitchExpression ::="); } //$NON-NLS-1$ + case 449 : if (DEBUG) { System.out.println("PostExpressionInSwitchExpression ::="); } //$NON-NLS-1$ consumePostExpressionInSwitch(false); break; - case 449 : if (DEBUG) { System.out.println("PostExpressionInIf ::="); } //$NON-NLS-1$ + case 450 : if (DEBUG) { System.out.println("PostExpressionInIf ::="); } //$NON-NLS-1$ consumePostExpressionInIf(); break; - case 450 : if (DEBUG) { System.out.println("PostExpressionInWhile ::="); } //$NON-NLS-1$ + case 451 : if (DEBUG) { System.out.println("PostExpressionInWhile ::="); } //$NON-NLS-1$ consumePostExpressionInWhile(); break; - case 451 : if (DEBUG) { System.out.println("IfThenStatement ::= if LPAREN Expression RPAREN..."); } //$NON-NLS-1$ + case 452 : if (DEBUG) { System.out.println("IfThenStatement ::= if LPAREN Expression RPAREN..."); } //$NON-NLS-1$ consumeStatementIfNoElse(); break; - case 452 : if (DEBUG) { System.out.println("IfThenElseStatement ::= if LPAREN Expression RPAREN..."); } //$NON-NLS-1$ + case 453 : if (DEBUG) { System.out.println("IfThenElseStatement ::= if LPAREN Expression RPAREN..."); } //$NON-NLS-1$ consumeStatementIfWithElse(); break; - case 453 : if (DEBUG) { System.out.println("IfThenElseStatementNoShortIf ::= if LPAREN Expression..."); } //$NON-NLS-1$ + case 454 : if (DEBUG) { System.out.println("IfThenElseStatementNoShortIf ::= if LPAREN Expression..."); } //$NON-NLS-1$ consumeStatementIfWithElse(); break; - case 454 : if (DEBUG) { System.out.println("SwitchStatement ::= switch LPAREN Expression RPAREN..."); } //$NON-NLS-1$ + case 455 : if (DEBUG) { System.out.println("SwitchStatement ::= switch LPAREN Expression RPAREN..."); } //$NON-NLS-1$ consumeStatementSwitch() ; break; - case 455 : if (DEBUG) { System.out.println("SwitchBlock ::= LBRACE RBRACE"); } //$NON-NLS-1$ + case 456 : if (DEBUG) { System.out.println("SwitchBlock ::= LBRACE RBRACE"); } //$NON-NLS-1$ consumeEmptySwitchBlock() ; break; - case 458 : if (DEBUG) { System.out.println("SwitchBlock ::= LBRACE SwitchBlockStatements..."); } //$NON-NLS-1$ + case 459 : if (DEBUG) { System.out.println("SwitchBlock ::= LBRACE SwitchBlockStatements..."); } //$NON-NLS-1$ consumeSwitchBlock() ; break; - case 460 : if (DEBUG) { System.out.println("SwitchBlockStatements ::= SwitchBlockStatements..."); } //$NON-NLS-1$ + case 461 : if (DEBUG) { System.out.println("SwitchBlockStatements ::= SwitchBlockStatements..."); } //$NON-NLS-1$ consumeSwitchBlockStatements() ; break; - case 462 : if (DEBUG) { System.out.println("SwitchBlockStatement ::= SwitchLabels BlockStatements"); } //$NON-NLS-1$ + case 463 : if (DEBUG) { System.out.println("SwitchBlockStatement ::= SwitchLabels BlockStatements"); } //$NON-NLS-1$ consumeSwitchBlockStatement() ; break; - case 464 : if (DEBUG) { System.out.println("SwitchLabels ::= SwitchLabels SwitchLabel"); } //$NON-NLS-1$ + case 465 : if (DEBUG) { System.out.println("SwitchLabels ::= SwitchLabels SwitchLabel"); } //$NON-NLS-1$ consumeSwitchLabels() ; break; - case 465 : if (DEBUG) { System.out.println("SwitchLabel ::= SwitchLabelCaseLhs COLON"); } //$NON-NLS-1$ + case 466 : if (DEBUG) { System.out.println("SwitchLabel ::= SwitchLabelCaseLhs COLON"); } //$NON-NLS-1$ consumeCaseLabel(); break; - case 466 : if (DEBUG) { System.out.println("SwitchLabel ::= default COLON"); } //$NON-NLS-1$ + case 467 : if (DEBUG) { System.out.println("SwitchLabel ::= default COLON"); } //$NON-NLS-1$ consumeDefaultLabel(); break; - case 469 : if (DEBUG) { System.out.println("SwitchExpression ::= switch LPAREN Expression RPAREN..."); } //$NON-NLS-1$ + case 470 : if (DEBUG) { System.out.println("SwitchExpression ::= switch LPAREN Expression RPAREN..."); } //$NON-NLS-1$ consumeSwitchExpression() ; break; - case 472 : if (DEBUG) { System.out.println("SwitchLabeledRule ::= SwitchLabeledThrowStatement"); } //$NON-NLS-1$ + case 473 : if (DEBUG) { System.out.println("SwitchLabeledRule ::= SwitchLabeledThrowStatement"); } //$NON-NLS-1$ consumeSwitchLabeledRule(); break; - case 473 : if (DEBUG) { System.out.println("SwitchLabeledExpression ::= SwitchLabelExpr Expression"); } //$NON-NLS-1$ + case 474 : if (DEBUG) { System.out.println("SwitchLabeledExpression ::= SwitchLabelExpr Expression"); } //$NON-NLS-1$ consumeSwitchLabeledExpression(); break; - case 474 : if (DEBUG) { System.out.println("SwitchLabeledBlock ::= SwitchLabelExpr Block"); } //$NON-NLS-1$ + case 475 : if (DEBUG) { System.out.println("SwitchLabeledBlock ::= SwitchLabelExpr Block"); } //$NON-NLS-1$ consumeSwitchLabeledBlock(); break; - case 475 : if (DEBUG) { System.out.println("SwitchLabeledThrowStatement ::= SwitchLabelExpr..."); } //$NON-NLS-1$ + case 476 : if (DEBUG) { System.out.println("SwitchLabeledThrowStatement ::= SwitchLabelExpr..."); } //$NON-NLS-1$ consumeSwitchLabeledThrowStatement(); break; - case 476 : if (DEBUG) { System.out.println("SwitchLabelExpr ::= default ARROW"); } //$NON-NLS-1$ + case 477 : if (DEBUG) { System.out.println("SwitchLabelExpr ::= default ARROW"); } //$NON-NLS-1$ consumeDefaultLabelExpr(); break; - case 477 : if (DEBUG) { System.out.println("SwitchLabelExpr ::= SwitchLabelCaseLhs BeginCaseExpr..."); } //$NON-NLS-1$ + case 478 : if (DEBUG) { System.out.println("SwitchLabelExpr ::= SwitchLabelCaseLhs BeginCaseExpr..."); } //$NON-NLS-1$ consumeCaseLabelExpr(); break; - case 478 : if (DEBUG) { System.out.println("SwitchLabelCaseLhs ::= case CaseLabelElements"); } //$NON-NLS-1$ + case 479 : if (DEBUG) { System.out.println("SwitchLabelCaseLhs ::= case CaseLabelElements"); } //$NON-NLS-1$ consumeSwitchLabelCaseLhs(); break; - case 480 : if (DEBUG) { System.out.println("CaseLabelElements ::= CaseLabelElements COMMA..."); } //$NON-NLS-1$ + case 481 : if (DEBUG) { System.out.println("CaseLabelElements ::= CaseLabelElements COMMA..."); } //$NON-NLS-1$ consumeCaseLabelElements(); break; - case 481 : if (DEBUG) { System.out.println("CaseLabelElement ::= ConstantExpression"); } //$NON-NLS-1$ + case 482 : if (DEBUG) { System.out.println("CaseLabelElement ::= ConstantExpression"); } //$NON-NLS-1$ consumeCaseLabelElement(CaseLabelKind.CASE_EXPRESSION); break; - case 482 : if (DEBUG) { System.out.println("CaseLabelElement ::= default"); } //$NON-NLS-1$ + case 483 : if (DEBUG) { System.out.println("CaseLabelElement ::= default"); } //$NON-NLS-1$ consumeCaseLabelElement(CaseLabelKind.CASE_DEFAULT); break; - case 483 : if (DEBUG) { System.out.println("CaseLabelElement ::= CaseLabelElementPattern"); } //$NON-NLS-1$ + case 484 : if (DEBUG) { System.out.println("CaseLabelElement ::= CaseLabelElementPattern"); } //$NON-NLS-1$ consumeCaseLabelElement(CaseLabelKind.CASE_PATTERN); break; - case 484 : if (DEBUG) { System.out.println("CaseLabelElement ::= CaseLabelElementPattern Guard"); } //$NON-NLS-1$ + case 485 : if (DEBUG) { System.out.println("CaseLabelElement ::= CaseLabelElementPattern Guard"); } //$NON-NLS-1$ consumeCaseLabelElement(CaseLabelKind.CASE_PATTERN); break; - case 486 : if (DEBUG) { System.out.println("Guard ::= RestrictedIdentifierWhen Expression"); } //$NON-NLS-1$ + case 487 : if (DEBUG) { System.out.println("Guard ::= RestrictedIdentifierWhen Expression"); } //$NON-NLS-1$ consumeGuard(); break; - case 487 : if (DEBUG) { System.out.println("YieldStatement ::= RestrictedIdentifierYield Expression"); } //$NON-NLS-1$ + case 488 : if (DEBUG) { System.out.println("YieldStatement ::= RestrictedIdentifierYield Expression"); } //$NON-NLS-1$ consumeStatementYield() ; break; - case 488 : if (DEBUG) { System.out.println("WhileStatement ::= while LPAREN Expression RPAREN..."); } //$NON-NLS-1$ + case 489 : if (DEBUG) { System.out.println("WhileStatement ::= while LPAREN Expression RPAREN..."); } //$NON-NLS-1$ consumeStatementWhile() ; break; - case 489 : if (DEBUG) { System.out.println("WhileStatementNoShortIf ::= while LPAREN Expression..."); } //$NON-NLS-1$ + case 490 : if (DEBUG) { System.out.println("WhileStatementNoShortIf ::= while LPAREN Expression..."); } //$NON-NLS-1$ consumeStatementWhile() ; break; - case 490 : if (DEBUG) { System.out.println("DoStatement ::= do Statement while LPAREN Expression..."); } //$NON-NLS-1$ + case 491 : if (DEBUG) { System.out.println("DoStatement ::= do Statement while LPAREN Expression..."); } //$NON-NLS-1$ consumeStatementDo() ; break; - case 491 : if (DEBUG) { System.out.println("ForStatement ::= for LPAREN ForInitopt SEMICOLON..."); } //$NON-NLS-1$ + case 492 : if (DEBUG) { System.out.println("ForStatement ::= for LPAREN ForInitopt SEMICOLON..."); } //$NON-NLS-1$ consumeStatementFor() ; break; - case 492 : if (DEBUG) { System.out.println("ForStatementNoShortIf ::= for LPAREN ForInitopt..."); } //$NON-NLS-1$ + case 493 : if (DEBUG) { System.out.println("ForStatementNoShortIf ::= for LPAREN ForInitopt..."); } //$NON-NLS-1$ consumeStatementFor() ; break; - case 493 : if (DEBUG) { System.out.println("ForInit ::= StatementExpressionList"); } //$NON-NLS-1$ + case 494 : if (DEBUG) { System.out.println("ForInit ::= StatementExpressionList"); } //$NON-NLS-1$ consumeForInit() ; break; - case 497 : if (DEBUG) { System.out.println("StatementExpressionList ::= StatementExpressionList..."); } //$NON-NLS-1$ + case 498 : if (DEBUG) { System.out.println("StatementExpressionList ::= StatementExpressionList..."); } //$NON-NLS-1$ consumeStatementExpressionList() ; break; - case 498 : if (DEBUG) { System.out.println("AssertStatement ::= assert Expression SEMICOLON"); } //$NON-NLS-1$ + case 499 : if (DEBUG) { System.out.println("AssertStatement ::= assert Expression SEMICOLON"); } //$NON-NLS-1$ consumeSimpleAssertStatement() ; break; - case 499 : if (DEBUG) { System.out.println("AssertStatement ::= assert Expression COLON Expression"); } //$NON-NLS-1$ + case 500 : if (DEBUG) { System.out.println("AssertStatement ::= assert Expression COLON Expression"); } //$NON-NLS-1$ consumeAssertStatement() ; break; - case 500 : if (DEBUG) { System.out.println("BreakStatement ::= break SEMICOLON"); } //$NON-NLS-1$ + case 501 : if (DEBUG) { System.out.println("BreakStatement ::= break SEMICOLON"); } //$NON-NLS-1$ consumeStatementBreak() ; break; - case 501 : if (DEBUG) { System.out.println("BreakStatement ::= break Identifier SEMICOLON"); } //$NON-NLS-1$ + case 502 : if (DEBUG) { System.out.println("BreakStatement ::= break Identifier SEMICOLON"); } //$NON-NLS-1$ consumeStatementBreakWithLabel() ; break; - case 502 : if (DEBUG) { System.out.println("ContinueStatement ::= continue SEMICOLON"); } //$NON-NLS-1$ + case 503 : if (DEBUG) { System.out.println("ContinueStatement ::= continue SEMICOLON"); } //$NON-NLS-1$ consumeStatementContinue() ; break; - case 503 : if (DEBUG) { System.out.println("ContinueStatement ::= continue Identifier SEMICOLON"); } //$NON-NLS-1$ + case 504 : if (DEBUG) { System.out.println("ContinueStatement ::= continue Identifier SEMICOLON"); } //$NON-NLS-1$ consumeStatementContinueWithLabel() ; break; - case 504 : if (DEBUG) { System.out.println("ReturnStatement ::= return Expressionopt SEMICOLON"); } //$NON-NLS-1$ + case 505 : if (DEBUG) { System.out.println("ReturnStatement ::= return Expressionopt SEMICOLON"); } //$NON-NLS-1$ consumeStatementReturn() ; break; - case 505 : if (DEBUG) { System.out.println("ThrowStatement ::= throw Expression SEMICOLON"); } //$NON-NLS-1$ + case 506 : if (DEBUG) { System.out.println("ThrowStatement ::= throw Expression SEMICOLON"); } //$NON-NLS-1$ consumeStatementThrow(); break; - case 506 : if (DEBUG) { System.out.println("ThrowExpression ::= throw Expression"); } //$NON-NLS-1$ + case 507 : if (DEBUG) { System.out.println("ThrowExpression ::= throw Expression"); } //$NON-NLS-1$ consumeThrowExpression() ; break; - case 507 : if (DEBUG) { System.out.println("SynchronizedStatement ::= OnlySynchronized LPAREN..."); } //$NON-NLS-1$ + case 508 : if (DEBUG) { System.out.println("SynchronizedStatement ::= OnlySynchronized LPAREN..."); } //$NON-NLS-1$ consumeStatementSynchronized(); break; - case 508 : if (DEBUG) { System.out.println("OnlySynchronized ::= synchronized"); } //$NON-NLS-1$ + case 509 : if (DEBUG) { System.out.println("OnlySynchronized ::= synchronized"); } //$NON-NLS-1$ consumeOnlySynchronized(); break; - case 509 : if (DEBUG) { System.out.println("TryStatement ::= try TryBlock Catches"); } //$NON-NLS-1$ + case 510 : if (DEBUG) { System.out.println("TryStatement ::= try TryBlock Catches"); } //$NON-NLS-1$ consumeStatementTry(false, false); break; - case 510 : if (DEBUG) { System.out.println("TryStatement ::= try TryBlock Catchesopt Finally"); } //$NON-NLS-1$ + case 511 : if (DEBUG) { System.out.println("TryStatement ::= try TryBlock Catchesopt Finally"); } //$NON-NLS-1$ consumeStatementTry(true, false); break; - case 511 : if (DEBUG) { System.out.println("TryStatementWithResources ::= try ResourceSpecification"); } //$NON-NLS-1$ + case 512 : if (DEBUG) { System.out.println("TryStatementWithResources ::= try ResourceSpecification"); } //$NON-NLS-1$ consumeStatementTry(false, true); break; - case 512 : if (DEBUG) { System.out.println("TryStatementWithResources ::= try ResourceSpecification"); } //$NON-NLS-1$ + case 513 : if (DEBUG) { System.out.println("TryStatementWithResources ::= try ResourceSpecification"); } //$NON-NLS-1$ consumeStatementTry(true, true); break; - case 513 : if (DEBUG) { System.out.println("ResourceSpecification ::= LPAREN Resources ;opt RPAREN"); } //$NON-NLS-1$ + case 514 : if (DEBUG) { System.out.println("ResourceSpecification ::= LPAREN Resources ;opt RPAREN"); } //$NON-NLS-1$ consumeResourceSpecification(); break; - case 514 : if (DEBUG) { System.out.println(";opt ::="); } //$NON-NLS-1$ + case 515 : if (DEBUG) { System.out.println(";opt ::="); } //$NON-NLS-1$ consumeResourceOptionalTrailingSemiColon(false); break; - case 515 : if (DEBUG) { System.out.println(";opt ::= SEMICOLON"); } //$NON-NLS-1$ + case 516 : if (DEBUG) { System.out.println(";opt ::= SEMICOLON"); } //$NON-NLS-1$ consumeResourceOptionalTrailingSemiColon(true); break; - case 516 : if (DEBUG) { System.out.println("Resources ::= Resource"); } //$NON-NLS-1$ + case 517 : if (DEBUG) { System.out.println("Resources ::= Resource"); } //$NON-NLS-1$ consumeSingleResource(); break; - case 517 : if (DEBUG) { System.out.println("Resources ::= Resources TrailingSemiColon Resource"); } //$NON-NLS-1$ + case 518 : if (DEBUG) { System.out.println("Resources ::= Resources TrailingSemiColon Resource"); } //$NON-NLS-1$ consumeMultipleResources(); break; - case 518 : if (DEBUG) { System.out.println("TrailingSemiColon ::= SEMICOLON"); } //$NON-NLS-1$ + case 519 : if (DEBUG) { System.out.println("TrailingSemiColon ::= SEMICOLON"); } //$NON-NLS-1$ consumeResourceOptionalTrailingSemiColon(true); break; - case 519 : if (DEBUG) { System.out.println("Resource ::= Type PushModifiers VariableDeclaratorId..."); } //$NON-NLS-1$ + case 520 : if (DEBUG) { System.out.println("Resource ::= Type PushModifiers VariableDeclaratorId..."); } //$NON-NLS-1$ consumeResourceAsLocalVariableDeclaration(); break; - case 520 : if (DEBUG) { System.out.println("Resource ::= Modifiers Type PushRealModifiers..."); } //$NON-NLS-1$ + case 521 : if (DEBUG) { System.out.println("Resource ::= Modifiers Type PushRealModifiers..."); } //$NON-NLS-1$ consumeResourceAsLocalVariableDeclaration(); break; - case 521 : if (DEBUG) { System.out.println("Resource ::= Name"); } //$NON-NLS-1$ + case 522 : if (DEBUG) { System.out.println("Resource ::= Name"); } //$NON-NLS-1$ consumeResourceAsLocalVariable(); break; - case 522 : if (DEBUG) { System.out.println("Resource ::= this"); } //$NON-NLS-1$ + case 523 : if (DEBUG) { System.out.println("Resource ::= this"); } //$NON-NLS-1$ consumeResourceAsThis(); break; - case 523 : if (DEBUG) { System.out.println("Resource ::= FieldAccess"); } //$NON-NLS-1$ + case 524 : if (DEBUG) { System.out.println("Resource ::= FieldAccess"); } //$NON-NLS-1$ consumeResourceAsFieldAccess(); break; - case 525 : if (DEBUG) { System.out.println("ExitTryBlock ::="); } //$NON-NLS-1$ + case 526 : if (DEBUG) { System.out.println("ExitTryBlock ::="); } //$NON-NLS-1$ consumeExitTryBlock(); break; - case 527 : if (DEBUG) { System.out.println("Catches ::= Catches CatchClause"); } //$NON-NLS-1$ + case 528 : if (DEBUG) { System.out.println("Catches ::= Catches CatchClause"); } //$NON-NLS-1$ consumeCatches(); break; - case 528 : if (DEBUG) { System.out.println("CatchClause ::= catch LPAREN CatchFormalParameter RPAREN"); } //$NON-NLS-1$ + case 529 : if (DEBUG) { System.out.println("CatchClause ::= catch LPAREN CatchFormalParameter RPAREN"); } //$NON-NLS-1$ consumeStatementCatch() ; break; - case 530 : if (DEBUG) { System.out.println("PushLPAREN ::= LPAREN"); } //$NON-NLS-1$ + case 531 : if (DEBUG) { System.out.println("PushLPAREN ::= LPAREN"); } //$NON-NLS-1$ consumeLeftParen(); break; - case 531 : if (DEBUG) { System.out.println("PushRPAREN ::= RPAREN"); } //$NON-NLS-1$ + case 532 : if (DEBUG) { System.out.println("PushRPAREN ::= RPAREN"); } //$NON-NLS-1$ consumeRightParen(); break; - case 536 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= this"); } //$NON-NLS-1$ + case 537 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= this"); } //$NON-NLS-1$ consumePrimaryNoNewArrayThis(); break; - case 537 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PushLPAREN Expression_NotName..."); } //$NON-NLS-1$ + case 538 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PushLPAREN Expression_NotName..."); } //$NON-NLS-1$ consumePrimaryNoNewArray(); break; - case 538 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PushLPAREN Name PushRPAREN"); } //$NON-NLS-1$ + case 539 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PushLPAREN Name PushRPAREN"); } //$NON-NLS-1$ consumePrimaryNoNewArrayWithName(); break; - case 541 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT this"); } //$NON-NLS-1$ + case 542 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT this"); } //$NON-NLS-1$ consumePrimaryNoNewArrayNameThis(); break; - case 542 : if (DEBUG) { System.out.println("QualifiedSuperReceiver ::= Name DOT super"); } //$NON-NLS-1$ + case 543 : if (DEBUG) { System.out.println("QualifiedSuperReceiver ::= Name DOT super"); } //$NON-NLS-1$ consumeQualifiedSuperReceiver(); break; - case 543 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT class"); } //$NON-NLS-1$ + case 544 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name DOT class"); } //$NON-NLS-1$ consumePrimaryNoNewArrayName(); break; - case 544 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name Dims DOT class"); } //$NON-NLS-1$ + case 545 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= Name Dims DOT class"); } //$NON-NLS-1$ consumePrimaryNoNewArrayArrayType(); break; - case 545 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PrimitiveType Dims DOT class"); } //$NON-NLS-1$ + case 546 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PrimitiveType Dims DOT class"); } //$NON-NLS-1$ consumePrimaryNoNewArrayPrimitiveArrayType(); break; - case 546 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PrimitiveType DOT class"); } //$NON-NLS-1$ + case 547 : if (DEBUG) { System.out.println("PrimaryNoNewArray ::= PrimitiveType DOT class"); } //$NON-NLS-1$ consumePrimaryNoNewArrayPrimitiveType(); break; - case 552 : if (DEBUG) { System.out.println("ReferenceExpressionTypeArgumentsAndTrunk0 ::=..."); } //$NON-NLS-1$ + case 553 : if (DEBUG) { System.out.println("ReferenceExpressionTypeArgumentsAndTrunk0 ::=..."); } //$NON-NLS-1$ consumeReferenceExpressionTypeArgumentsAndTrunk(false); break; - case 553 : if (DEBUG) { System.out.println("ReferenceExpressionTypeArgumentsAndTrunk0 ::=..."); } //$NON-NLS-1$ + case 554 : if (DEBUG) { System.out.println("ReferenceExpressionTypeArgumentsAndTrunk0 ::=..."); } //$NON-NLS-1$ consumeReferenceExpressionTypeArgumentsAndTrunk(true); break; - case 554 : if (DEBUG) { System.out.println("ReferenceExpression ::= PrimitiveType Dims COLON_COLON"); } //$NON-NLS-1$ + case 555 : if (DEBUG) { System.out.println("ReferenceExpression ::= PrimitiveType Dims COLON_COLON"); } //$NON-NLS-1$ consumeReferenceExpressionTypeForm(true); break; - case 555 : if (DEBUG) { System.out.println("ReferenceExpression ::= Name Dimsopt COLON_COLON..."); } //$NON-NLS-1$ + case 556 : if (DEBUG) { System.out.println("ReferenceExpression ::= Name Dimsopt COLON_COLON..."); } //$NON-NLS-1$ consumeReferenceExpressionTypeForm(false); break; - case 556 : if (DEBUG) { System.out.println("ReferenceExpression ::= Name BeginTypeArguments..."); } //$NON-NLS-1$ + case 557 : if (DEBUG) { System.out.println("ReferenceExpression ::= Name BeginTypeArguments..."); } //$NON-NLS-1$ consumeReferenceExpressionGenericTypeForm(); break; - case 557 : if (DEBUG) { System.out.println("ReferenceExpression ::= Primary COLON_COLON..."); } //$NON-NLS-1$ + case 558 : if (DEBUG) { System.out.println("ReferenceExpression ::= Primary COLON_COLON..."); } //$NON-NLS-1$ consumeReferenceExpressionPrimaryForm(); break; - case 558 : if (DEBUG) { System.out.println("ReferenceExpression ::= QualifiedSuperReceiver..."); } //$NON-NLS-1$ + case 559 : if (DEBUG) { System.out.println("ReferenceExpression ::= QualifiedSuperReceiver..."); } //$NON-NLS-1$ consumeReferenceExpressionPrimaryForm(); break; - case 559 : if (DEBUG) { System.out.println("ReferenceExpression ::= super COLON_COLON..."); } //$NON-NLS-1$ + case 560 : if (DEBUG) { System.out.println("ReferenceExpression ::= super COLON_COLON..."); } //$NON-NLS-1$ consumeReferenceExpressionSuperForm(); break; - case 560 : if (DEBUG) { System.out.println("NonWildTypeArgumentsopt ::="); } //$NON-NLS-1$ + case 561 : if (DEBUG) { System.out.println("NonWildTypeArgumentsopt ::="); } //$NON-NLS-1$ consumeEmptyTypeArguments(); break; - case 562 : if (DEBUG) { System.out.println("IdentifierOrNew ::= Identifier"); } //$NON-NLS-1$ + case 563 : if (DEBUG) { System.out.println("IdentifierOrNew ::= Identifier"); } //$NON-NLS-1$ consumeIdentifierOrNew(false); break; - case 563 : if (DEBUG) { System.out.println("IdentifierOrNew ::= new"); } //$NON-NLS-1$ + case 564 : if (DEBUG) { System.out.println("IdentifierOrNew ::= new"); } //$NON-NLS-1$ consumeIdentifierOrNew(true); break; - case 564 : if (DEBUG) { System.out.println("LambdaExpression ::= LambdaParameters ARROW LambdaBody"); } //$NON-NLS-1$ + case 565 : if (DEBUG) { System.out.println("LambdaExpression ::= LambdaParameters ARROW LambdaBody"); } //$NON-NLS-1$ consumeLambdaExpression(); break; - case 565 : if (DEBUG) { System.out.println("NestedLambda ::="); } //$NON-NLS-1$ + case 566 : if (DEBUG) { System.out.println("NestedLambda ::="); } //$NON-NLS-1$ consumeNestedLambda(); break; - case 566 : if (DEBUG) { System.out.println("LambdaParameters ::= UNDERSCORE NestedLambda"); } //$NON-NLS-1$ + case 567 : if (DEBUG) { System.out.println("LambdaParameters ::= UNDERSCORE NestedLambda"); } //$NON-NLS-1$ consumeTypeElidedLambdaParameter(false); break; - case 567 : if (DEBUG) { System.out.println("LambdaParameters ::= Identifier NestedLambda"); } //$NON-NLS-1$ + case 568 : if (DEBUG) { System.out.println("LambdaParameters ::= Identifier NestedLambda"); } //$NON-NLS-1$ consumeTypeElidedLambdaParameter(false); break; - case 573 : if (DEBUG) { System.out.println("TypeElidedFormalParameterList ::=..."); } //$NON-NLS-1$ + case 574 : if (DEBUG) { System.out.println("TypeElidedFormalParameterList ::=..."); } //$NON-NLS-1$ consumeFormalParameterList(); break; - case 574 : if (DEBUG) { System.out.println("TypeElidedFormalParameter ::= Modifiersopt Identifier"); } //$NON-NLS-1$ + case 575 : if (DEBUG) { System.out.println("TypeElidedFormalParameter ::= Modifiersopt Identifier"); } //$NON-NLS-1$ consumeTypeElidedLambdaParameter(true); break; - case 575 : if (DEBUG) { System.out.println("TypeElidedFormalParameter ::= UNDERSCORE"); } //$NON-NLS-1$ + case 576 : if (DEBUG) { System.out.println("TypeElidedFormalParameter ::= UNDERSCORE"); } //$NON-NLS-1$ consumeBracketedTypeElidedUnderscoreLambdaParameter(); break; - case 578 : if (DEBUG) { System.out.println("ElidedLeftBraceAndReturn ::="); } //$NON-NLS-1$ + case 579 : if (DEBUG) { System.out.println("ElidedLeftBraceAndReturn ::="); } //$NON-NLS-1$ consumeElidedLeftBraceAndReturn(); break; - case 579 : if (DEBUG) { System.out.println("AllocationHeader ::= new ClassType LPAREN..."); } //$NON-NLS-1$ + case 580 : if (DEBUG) { System.out.println("AllocationHeader ::= new ClassType LPAREN..."); } //$NON-NLS-1$ consumeAllocationHeader(); break; - case 580 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= new..."); } //$NON-NLS-1$ + case 581 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= new..."); } //$NON-NLS-1$ consumeClassInstanceCreationExpressionWithTypeArguments(); break; - case 581 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= new ClassType..."); } //$NON-NLS-1$ + case 582 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= new ClassType..."); } //$NON-NLS-1$ consumeClassInstanceCreationExpression(); break; - case 582 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= Primary DOT new..."); } //$NON-NLS-1$ + case 583 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= Primary DOT new..."); } //$NON-NLS-1$ consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ; break; - case 583 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= Primary DOT new..."); } //$NON-NLS-1$ + case 584 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::= Primary DOT new..."); } //$NON-NLS-1$ consumeClassInstanceCreationExpressionQualified() ; break; - case 584 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::=..."); } //$NON-NLS-1$ + case 585 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::=..."); } //$NON-NLS-1$ consumeClassInstanceCreationExpressionQualified() ; break; - case 585 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::=..."); } //$NON-NLS-1$ + case 586 : if (DEBUG) { System.out.println("ClassInstanceCreationExpression ::=..."); } //$NON-NLS-1$ consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ; break; - case 586 : if (DEBUG) { System.out.println("EnterInstanceCreationArgumentList ::="); } //$NON-NLS-1$ + case 587 : if (DEBUG) { System.out.println("EnterInstanceCreationArgumentList ::="); } //$NON-NLS-1$ consumeEnterInstanceCreationArgumentList(); break; - case 587 : if (DEBUG) { System.out.println("ClassInstanceCreationExpressionName ::= Name DOT new"); } //$NON-NLS-1$ + case 588 : if (DEBUG) { System.out.println("ClassInstanceCreationExpressionName ::= Name DOT new"); } //$NON-NLS-1$ consumeClassInstanceCreationExpressionName() ; break; - case 588 : if (DEBUG) { System.out.println("UnqualifiedClassBodyopt ::="); } //$NON-NLS-1$ + case 589 : if (DEBUG) { System.out.println("UnqualifiedClassBodyopt ::="); } //$NON-NLS-1$ consumeClassBodyopt(); break; - case 590 : if (DEBUG) { System.out.println("UnqualifiedEnterAnonymousClassBody ::="); } //$NON-NLS-1$ + case 591 : if (DEBUG) { System.out.println("UnqualifiedEnterAnonymousClassBody ::="); } //$NON-NLS-1$ consumeEnterAnonymousClassBody(false); break; - case 591 : if (DEBUG) { System.out.println("QualifiedClassBodyopt ::="); } //$NON-NLS-1$ + case 592 : if (DEBUG) { System.out.println("QualifiedClassBodyopt ::="); } //$NON-NLS-1$ consumeClassBodyopt(); break; - case 593 : if (DEBUG) { System.out.println("QualifiedEnterAnonymousClassBody ::="); } //$NON-NLS-1$ + case 594 : if (DEBUG) { System.out.println("QualifiedEnterAnonymousClassBody ::="); } //$NON-NLS-1$ consumeEnterAnonymousClassBody(true); break; - case 595 : if (DEBUG) { System.out.println("ArgumentList ::= ArgumentList COMMA Expression"); } //$NON-NLS-1$ + case 596 : if (DEBUG) { System.out.println("ArgumentList ::= ArgumentList COMMA Expression"); } //$NON-NLS-1$ consumeArgumentList(); break; - case 596 : if (DEBUG) { System.out.println("ArrayCreationHeader ::= new PrimitiveType..."); } //$NON-NLS-1$ + case 597 : if (DEBUG) { System.out.println("ArrayCreationHeader ::= new PrimitiveType..."); } //$NON-NLS-1$ consumeArrayCreationHeader(); break; - case 597 : if (DEBUG) { System.out.println("ArrayCreationHeader ::= new ClassOrInterfaceType..."); } //$NON-NLS-1$ + case 598 : if (DEBUG) { System.out.println("ArrayCreationHeader ::= new ClassOrInterfaceType..."); } //$NON-NLS-1$ consumeArrayCreationHeader(); break; - case 598 : if (DEBUG) { System.out.println("ArrayCreationWithoutArrayInitializer ::= new..."); } //$NON-NLS-1$ + case 599 : if (DEBUG) { System.out.println("ArrayCreationWithoutArrayInitializer ::= new..."); } //$NON-NLS-1$ consumeArrayCreationExpressionWithoutInitializer(); break; - case 599 : if (DEBUG) { System.out.println("ArrayCreationWithArrayInitializer ::= new PrimitiveType"); } //$NON-NLS-1$ + case 600 : if (DEBUG) { System.out.println("ArrayCreationWithArrayInitializer ::= new PrimitiveType"); } //$NON-NLS-1$ consumeArrayCreationExpressionWithInitializer(); break; - case 600 : if (DEBUG) { System.out.println("ArrayCreationWithoutArrayInitializer ::= new..."); } //$NON-NLS-1$ + case 601 : if (DEBUG) { System.out.println("ArrayCreationWithoutArrayInitializer ::= new..."); } //$NON-NLS-1$ consumeArrayCreationExpressionWithoutInitializer(); break; - case 601 : if (DEBUG) { System.out.println("ArrayCreationWithArrayInitializer ::= new..."); } //$NON-NLS-1$ + case 602 : if (DEBUG) { System.out.println("ArrayCreationWithArrayInitializer ::= new..."); } //$NON-NLS-1$ consumeArrayCreationExpressionWithInitializer(); break; - case 603 : if (DEBUG) { System.out.println("DimWithOrWithOutExprs ::= DimWithOrWithOutExprs..."); } //$NON-NLS-1$ + case 604 : if (DEBUG) { System.out.println("DimWithOrWithOutExprs ::= DimWithOrWithOutExprs..."); } //$NON-NLS-1$ consumeDimWithOrWithOutExprs(); break; - case 605 : if (DEBUG) { System.out.println("DimWithOrWithOutExpr ::= TypeAnnotationsopt LBRACKET..."); } //$NON-NLS-1$ + case 606 : if (DEBUG) { System.out.println("DimWithOrWithOutExpr ::= TypeAnnotationsopt LBRACKET..."); } //$NON-NLS-1$ consumeDimWithOrWithOutExpr(); break; - case 606 : if (DEBUG) { System.out.println("Dims ::= DimsLoop"); } //$NON-NLS-1$ + case 607 : if (DEBUG) { System.out.println("Dims ::= DimsLoop"); } //$NON-NLS-1$ consumeDims(); break; - case 609 : if (DEBUG) { System.out.println("OneDimLoop ::= LBRACKET RBRACKET"); } //$NON-NLS-1$ + case 610 : if (DEBUG) { System.out.println("OneDimLoop ::= LBRACKET RBRACKET"); } //$NON-NLS-1$ consumeOneDimLoop(false); break; - case 610 : if (DEBUG) { System.out.println("OneDimLoop ::= TypeAnnotations LBRACKET RBRACKET"); } //$NON-NLS-1$ + case 611 : if (DEBUG) { System.out.println("OneDimLoop ::= TypeAnnotations LBRACKET RBRACKET"); } //$NON-NLS-1$ consumeOneDimLoop(true); break; - case 611 : if (DEBUG) { System.out.println("FieldAccess ::= Primary DOT Identifier"); } //$NON-NLS-1$ + case 612 : if (DEBUG) { System.out.println("FieldAccess ::= Primary DOT Identifier"); } //$NON-NLS-1$ consumeFieldAccess(false); break; - case 612 : if (DEBUG) { System.out.println("FieldAccess ::= super DOT Identifier"); } //$NON-NLS-1$ + case 613 : if (DEBUG) { System.out.println("FieldAccess ::= super DOT Identifier"); } //$NON-NLS-1$ consumeFieldAccess(true); break; - case 613 : if (DEBUG) { System.out.println("FieldAccess ::= QualifiedSuperReceiver DOT Identifier"); } //$NON-NLS-1$ + case 614 : if (DEBUG) { System.out.println("FieldAccess ::= QualifiedSuperReceiver DOT Identifier"); } //$NON-NLS-1$ consumeFieldAccess(false); break; - case 614 : if (DEBUG) { System.out.println("MethodInvocation ::= Name LPAREN ArgumentListopt RPAREN"); } //$NON-NLS-1$ + case 615 : if (DEBUG) { System.out.println("MethodInvocation ::= Name LPAREN ArgumentListopt RPAREN"); } //$NON-NLS-1$ consumeMethodInvocationName(); break; - case 615 : if (DEBUG) { System.out.println("MethodInvocation ::= Name DOT OnlyTypeArguments..."); } //$NON-NLS-1$ + case 616 : if (DEBUG) { System.out.println("MethodInvocation ::= Name DOT OnlyTypeArguments..."); } //$NON-NLS-1$ consumeMethodInvocationNameWithTypeArguments(); break; - case 616 : if (DEBUG) { System.out.println("MethodInvocation ::= Primary DOT OnlyTypeArguments..."); } //$NON-NLS-1$ + case 617 : if (DEBUG) { System.out.println("MethodInvocation ::= Primary DOT OnlyTypeArguments..."); } //$NON-NLS-1$ consumeMethodInvocationPrimaryWithTypeArguments(); break; - case 617 : if (DEBUG) { System.out.println("MethodInvocation ::= Primary DOT Identifier LPAREN..."); } //$NON-NLS-1$ + case 618 : if (DEBUG) { System.out.println("MethodInvocation ::= Primary DOT Identifier LPAREN..."); } //$NON-NLS-1$ consumeMethodInvocationPrimary(); break; - case 618 : if (DEBUG) { System.out.println("MethodInvocation ::= QualifiedSuperReceiver DOT..."); } //$NON-NLS-1$ + case 619 : if (DEBUG) { System.out.println("MethodInvocation ::= QualifiedSuperReceiver DOT..."); } //$NON-NLS-1$ consumeMethodInvocationPrimary(); break; - case 619 : if (DEBUG) { System.out.println("MethodInvocation ::= QualifiedSuperReceiver DOT..."); } //$NON-NLS-1$ + case 620 : if (DEBUG) { System.out.println("MethodInvocation ::= QualifiedSuperReceiver DOT..."); } //$NON-NLS-1$ consumeMethodInvocationPrimaryWithTypeArguments(); break; - case 620 : if (DEBUG) { System.out.println("MethodInvocation ::= super DOT OnlyTypeArguments..."); } //$NON-NLS-1$ + case 621 : if (DEBUG) { System.out.println("MethodInvocation ::= super DOT OnlyTypeArguments..."); } //$NON-NLS-1$ consumeMethodInvocationSuperWithTypeArguments(); break; - case 621 : if (DEBUG) { System.out.println("MethodInvocation ::= super DOT Identifier LPAREN..."); } //$NON-NLS-1$ + case 622 : if (DEBUG) { System.out.println("MethodInvocation ::= super DOT Identifier LPAREN..."); } //$NON-NLS-1$ consumeMethodInvocationSuper(); break; - case 622 : if (DEBUG) { System.out.println("ArrayAccess ::= Name LBRACKET Expression RBRACKET"); } //$NON-NLS-1$ + case 623 : if (DEBUG) { System.out.println("ArrayAccess ::= Name LBRACKET Expression RBRACKET"); } //$NON-NLS-1$ consumeArrayAccess(true); break; - case 623 : if (DEBUG) { System.out.println("ArrayAccess ::= PrimaryNoNewArray LBRACKET Expression..."); } //$NON-NLS-1$ + case 624 : if (DEBUG) { System.out.println("ArrayAccess ::= PrimaryNoNewArray LBRACKET Expression..."); } //$NON-NLS-1$ consumeArrayAccess(false); break; - case 624 : if (DEBUG) { System.out.println("ArrayAccess ::= ArrayCreationWithArrayInitializer..."); } //$NON-NLS-1$ + case 625 : if (DEBUG) { System.out.println("ArrayAccess ::= ArrayCreationWithArrayInitializer..."); } //$NON-NLS-1$ consumeArrayAccess(false); break; - case 626 : if (DEBUG) { System.out.println("PostfixExpression ::= Name"); } //$NON-NLS-1$ + case 627 : if (DEBUG) { System.out.println("PostfixExpression ::= Name"); } //$NON-NLS-1$ consumePostfixExpression(); break; - case 629 : if (DEBUG) { System.out.println("PostIncrementExpression ::= PostfixExpression PLUS_PLUS"); } //$NON-NLS-1$ + case 630 : if (DEBUG) { System.out.println("PostIncrementExpression ::= PostfixExpression PLUS_PLUS"); } //$NON-NLS-1$ consumeUnaryExpression(OperatorIds.PLUS,true); break; - case 630 : if (DEBUG) { System.out.println("PostDecrementExpression ::= PostfixExpression..."); } //$NON-NLS-1$ + case 631 : if (DEBUG) { System.out.println("PostDecrementExpression ::= PostfixExpression..."); } //$NON-NLS-1$ consumeUnaryExpression(OperatorIds.MINUS,true); break; - case 631 : if (DEBUG) { System.out.println("PushPosition ::="); } //$NON-NLS-1$ + case 632 : if (DEBUG) { System.out.println("PushPosition ::="); } //$NON-NLS-1$ consumePushPosition(); break; - case 634 : if (DEBUG) { System.out.println("UnaryExpression ::= PLUS PushPosition UnaryExpression"); } //$NON-NLS-1$ + case 635 : if (DEBUG) { System.out.println("UnaryExpression ::= PLUS PushPosition UnaryExpression"); } //$NON-NLS-1$ consumeUnaryExpression(OperatorIds.PLUS); break; - case 635 : if (DEBUG) { System.out.println("UnaryExpression ::= MINUS PushPosition UnaryExpression"); } //$NON-NLS-1$ + case 636 : if (DEBUG) { System.out.println("UnaryExpression ::= MINUS PushPosition UnaryExpression"); } //$NON-NLS-1$ consumeUnaryExpression(OperatorIds.MINUS); break; - case 637 : if (DEBUG) { System.out.println("PreIncrementExpression ::= PLUS_PLUS PushPosition..."); } //$NON-NLS-1$ + case 638 : if (DEBUG) { System.out.println("PreIncrementExpression ::= PLUS_PLUS PushPosition..."); } //$NON-NLS-1$ consumeUnaryExpression(OperatorIds.PLUS,false); break; - case 638 : if (DEBUG) { System.out.println("PreDecrementExpression ::= MINUS_MINUS PushPosition..."); } //$NON-NLS-1$ + case 639 : if (DEBUG) { System.out.println("PreDecrementExpression ::= MINUS_MINUS PushPosition..."); } //$NON-NLS-1$ consumeUnaryExpression(OperatorIds.MINUS,false); break; - case 640 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus ::= TWIDDLE PushPosition..."); } //$NON-NLS-1$ + case 641 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus ::= TWIDDLE PushPosition..."); } //$NON-NLS-1$ consumeUnaryExpression(OperatorIds.TWIDDLE); break; - case 641 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus ::= NOT PushPosition..."); } //$NON-NLS-1$ + case 642 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus ::= NOT PushPosition..."); } //$NON-NLS-1$ consumeUnaryExpression(OperatorIds.NOT); break; - case 643 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN PrimitiveType Dimsopt..."); } //$NON-NLS-1$ + case 644 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN PrimitiveType Dimsopt..."); } //$NON-NLS-1$ consumeCastExpressionWithPrimitiveType(); break; - case 644 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name..."); } //$NON-NLS-1$ + case 645 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name..."); } //$NON-NLS-1$ consumeCastExpressionWithGenericsArray(); break; - case 645 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name..."); } //$NON-NLS-1$ + case 646 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name..."); } //$NON-NLS-1$ consumeCastExpressionWithQualifiedGenericsArray(); break; - case 646 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name PushRPAREN..."); } //$NON-NLS-1$ + case 647 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name PushRPAREN..."); } //$NON-NLS-1$ consumeCastExpressionLL1(); break; - case 647 : if (DEBUG) { System.out.println("CastExpression ::= BeginIntersectionCast PushLPAREN..."); } //$NON-NLS-1$ + case 648 : if (DEBUG) { System.out.println("CastExpression ::= BeginIntersectionCast PushLPAREN..."); } //$NON-NLS-1$ consumeCastExpressionLL1WithBounds(); break; - case 648 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name Dims..."); } //$NON-NLS-1$ + case 649 : if (DEBUG) { System.out.println("CastExpression ::= PushLPAREN Name Dims..."); } //$NON-NLS-1$ consumeCastExpressionWithNameArray(); break; - case 649 : if (DEBUG) { System.out.println("AdditionalBoundsListOpt ::="); } //$NON-NLS-1$ + case 650 : if (DEBUG) { System.out.println("AdditionalBoundsListOpt ::="); } //$NON-NLS-1$ consumeZeroAdditionalBounds(); break; - case 653 : if (DEBUG) { System.out.println("OnlyTypeArgumentsForCastExpression ::= OnlyTypeArguments"); } //$NON-NLS-1$ + case 654 : if (DEBUG) { System.out.println("OnlyTypeArgumentsForCastExpression ::= OnlyTypeArguments"); } //$NON-NLS-1$ consumeOnlyTypeArgumentsForCastExpression(); break; - case 654 : if (DEBUG) { System.out.println("InsideCastExpression ::="); } //$NON-NLS-1$ + case 655 : if (DEBUG) { System.out.println("InsideCastExpression ::="); } //$NON-NLS-1$ consumeInsideCastExpression(); break; - case 655 : if (DEBUG) { System.out.println("InsideCastExpressionLL1 ::="); } //$NON-NLS-1$ + case 656 : if (DEBUG) { System.out.println("InsideCastExpressionLL1 ::="); } //$NON-NLS-1$ consumeInsideCastExpressionLL1(); break; - case 656 : if (DEBUG) { System.out.println("InsideCastExpressionLL1WithBounds ::="); } //$NON-NLS-1$ + case 657 : if (DEBUG) { System.out.println("InsideCastExpressionLL1WithBounds ::="); } //$NON-NLS-1$ consumeInsideCastExpressionLL1WithBounds (); break; - case 657 : if (DEBUG) { System.out.println("InsideCastExpressionWithQualifiedGenerics ::="); } //$NON-NLS-1$ + case 658 : if (DEBUG) { System.out.println("InsideCastExpressionWithQualifiedGenerics ::="); } //$NON-NLS-1$ consumeInsideCastExpressionWithQualifiedGenerics(); break; - case 659 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); } //$NON-NLS-1$ + case 660 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.MULTIPLY); break; - case 660 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); } //$NON-NLS-1$ + case 661 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.DIVIDE); break; - case 661 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); } //$NON-NLS-1$ + case 662 : if (DEBUG) { System.out.println("MultiplicativeExpression ::= MultiplicativeExpression..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.REMAINDER); break; - case 663 : if (DEBUG) { System.out.println("AdditiveExpression ::= AdditiveExpression PLUS..."); } //$NON-NLS-1$ + case 664 : if (DEBUG) { System.out.println("AdditiveExpression ::= AdditiveExpression PLUS..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.PLUS); break; - case 664 : if (DEBUG) { System.out.println("AdditiveExpression ::= AdditiveExpression MINUS..."); } //$NON-NLS-1$ + case 665 : if (DEBUG) { System.out.println("AdditiveExpression ::= AdditiveExpression MINUS..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.MINUS); break; - case 666 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression LEFT_SHIFT..."); } //$NON-NLS-1$ + case 667 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression LEFT_SHIFT..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.LEFT_SHIFT); break; - case 667 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression RIGHT_SHIFT..."); } //$NON-NLS-1$ + case 668 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression RIGHT_SHIFT..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.RIGHT_SHIFT); break; - case 668 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression UNSIGNED_RIGHT_SHIFT"); } //$NON-NLS-1$ + case 669 : if (DEBUG) { System.out.println("ShiftExpression ::= ShiftExpression UNSIGNED_RIGHT_SHIFT"); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT); break; - case 670 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression LESS..."); } //$NON-NLS-1$ + case 671 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression LESS..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.LESS); break; - case 671 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression GREATER..."); } //$NON-NLS-1$ + case 672 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression GREATER..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.GREATER); break; - case 672 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression LESS_EQUAL"); } //$NON-NLS-1$ + case 673 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression LESS_EQUAL"); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.LESS_EQUAL); break; - case 673 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression..."); } //$NON-NLS-1$ + case 674 : if (DEBUG) { System.out.println("RelationalExpression ::= RelationalExpression..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.GREATER_EQUAL); break; - case 675 : if (DEBUG) { System.out.println("EqualityExpression ::= EqualityExpression EQUAL_EQUAL..."); } //$NON-NLS-1$ + case 676 : if (DEBUG) { System.out.println("EqualityExpression ::= EqualityExpression EQUAL_EQUAL..."); } //$NON-NLS-1$ consumeEqualityExpression(OperatorIds.EQUAL_EQUAL); break; - case 676 : if (DEBUG) { System.out.println("EqualityExpression ::= EqualityExpression NOT_EQUAL..."); } //$NON-NLS-1$ + case 677 : if (DEBUG) { System.out.println("EqualityExpression ::= EqualityExpression NOT_EQUAL..."); } //$NON-NLS-1$ consumeEqualityExpression(OperatorIds.NOT_EQUAL); break; - case 678 : if (DEBUG) { System.out.println("AndExpression ::= AndExpression AND EqualityExpression"); } //$NON-NLS-1$ + case 679 : if (DEBUG) { System.out.println("AndExpression ::= AndExpression AND EqualityExpression"); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.AND); break; - case 680 : if (DEBUG) { System.out.println("ExclusiveOrExpression ::= ExclusiveOrExpression XOR..."); } //$NON-NLS-1$ + case 681 : if (DEBUG) { System.out.println("ExclusiveOrExpression ::= ExclusiveOrExpression XOR..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.XOR); break; - case 682 : if (DEBUG) { System.out.println("InclusiveOrExpression ::= InclusiveOrExpression OR..."); } //$NON-NLS-1$ + case 683 : if (DEBUG) { System.out.println("InclusiveOrExpression ::= InclusiveOrExpression OR..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.OR); break; - case 684 : if (DEBUG) { System.out.println("ConditionalAndExpression ::= ConditionalAndExpression..."); } //$NON-NLS-1$ + case 685 : if (DEBUG) { System.out.println("ConditionalAndExpression ::= ConditionalAndExpression..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.AND_AND); break; - case 686 : if (DEBUG) { System.out.println("ConditionalOrExpression ::= ConditionalOrExpression..."); } //$NON-NLS-1$ + case 687 : if (DEBUG) { System.out.println("ConditionalOrExpression ::= ConditionalOrExpression..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.OR_OR); break; - case 688 : if (DEBUG) { System.out.println("ConditionalExpression ::= ConditionalOrExpression..."); } //$NON-NLS-1$ + case 689 : if (DEBUG) { System.out.println("ConditionalExpression ::= ConditionalOrExpression..."); } //$NON-NLS-1$ consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ; break; - case 691 : if (DEBUG) { System.out.println("Assignment ::= PostfixExpression AssignmentOperator..."); } //$NON-NLS-1$ + case 692 : if (DEBUG) { System.out.println("Assignment ::= PostfixExpression AssignmentOperator..."); } //$NON-NLS-1$ consumeAssignment(); break; - case 693 : if (DEBUG) { System.out.println("Assignment ::= InvalidArrayInitializerAssignement"); } //$NON-NLS-1$ + case 694 : if (DEBUG) { System.out.println("Assignment ::= InvalidArrayInitializerAssignement"); } //$NON-NLS-1$ ignoreExpressionAssignment(); break; - case 694 : if (DEBUG) { System.out.println("AssignmentOperator ::= EQUAL"); } //$NON-NLS-1$ + case 695 : if (DEBUG) { System.out.println("AssignmentOperator ::= EQUAL"); } //$NON-NLS-1$ consumeAssignmentOperator(EQUAL); break; - case 695 : if (DEBUG) { System.out.println("AssignmentOperator ::= MULTIPLY_EQUAL"); } //$NON-NLS-1$ + case 696 : if (DEBUG) { System.out.println("AssignmentOperator ::= MULTIPLY_EQUAL"); } //$NON-NLS-1$ consumeAssignmentOperator(MULTIPLY); break; - case 696 : if (DEBUG) { System.out.println("AssignmentOperator ::= DIVIDE_EQUAL"); } //$NON-NLS-1$ + case 697 : if (DEBUG) { System.out.println("AssignmentOperator ::= DIVIDE_EQUAL"); } //$NON-NLS-1$ consumeAssignmentOperator(DIVIDE); break; - case 697 : if (DEBUG) { System.out.println("AssignmentOperator ::= REMAINDER_EQUAL"); } //$NON-NLS-1$ + case 698 : if (DEBUG) { System.out.println("AssignmentOperator ::= REMAINDER_EQUAL"); } //$NON-NLS-1$ consumeAssignmentOperator(REMAINDER); break; - case 698 : if (DEBUG) { System.out.println("AssignmentOperator ::= PLUS_EQUAL"); } //$NON-NLS-1$ + case 699 : if (DEBUG) { System.out.println("AssignmentOperator ::= PLUS_EQUAL"); } //$NON-NLS-1$ consumeAssignmentOperator(PLUS); break; - case 699 : if (DEBUG) { System.out.println("AssignmentOperator ::= MINUS_EQUAL"); } //$NON-NLS-1$ + case 700 : if (DEBUG) { System.out.println("AssignmentOperator ::= MINUS_EQUAL"); } //$NON-NLS-1$ consumeAssignmentOperator(MINUS); break; - case 700 : if (DEBUG) { System.out.println("AssignmentOperator ::= LEFT_SHIFT_EQUAL"); } //$NON-NLS-1$ + case 701 : if (DEBUG) { System.out.println("AssignmentOperator ::= LEFT_SHIFT_EQUAL"); } //$NON-NLS-1$ consumeAssignmentOperator(LEFT_SHIFT); break; - case 701 : if (DEBUG) { System.out.println("AssignmentOperator ::= RIGHT_SHIFT_EQUAL"); } //$NON-NLS-1$ + case 702 : if (DEBUG) { System.out.println("AssignmentOperator ::= RIGHT_SHIFT_EQUAL"); } //$NON-NLS-1$ consumeAssignmentOperator(RIGHT_SHIFT); break; - case 702 : if (DEBUG) { System.out.println("AssignmentOperator ::= UNSIGNED_RIGHT_SHIFT_EQUAL"); } //$NON-NLS-1$ + case 703 : if (DEBUG) { System.out.println("AssignmentOperator ::= UNSIGNED_RIGHT_SHIFT_EQUAL"); } //$NON-NLS-1$ consumeAssignmentOperator(UNSIGNED_RIGHT_SHIFT); break; - case 703 : if (DEBUG) { System.out.println("AssignmentOperator ::= AND_EQUAL"); } //$NON-NLS-1$ + case 704 : if (DEBUG) { System.out.println("AssignmentOperator ::= AND_EQUAL"); } //$NON-NLS-1$ consumeAssignmentOperator(AND); break; - case 704 : if (DEBUG) { System.out.println("AssignmentOperator ::= XOR_EQUAL"); } //$NON-NLS-1$ + case 705 : if (DEBUG) { System.out.println("AssignmentOperator ::= XOR_EQUAL"); } //$NON-NLS-1$ consumeAssignmentOperator(XOR); break; - case 705 : if (DEBUG) { System.out.println("AssignmentOperator ::= OR_EQUAL"); } //$NON-NLS-1$ + case 706 : if (DEBUG) { System.out.println("AssignmentOperator ::= OR_EQUAL"); } //$NON-NLS-1$ consumeAssignmentOperator(OR); break; - case 706 : if (DEBUG) { System.out.println("Expression ::= AssignmentExpression"); } //$NON-NLS-1$ + case 707 : if (DEBUG) { System.out.println("Expression ::= AssignmentExpression"); } //$NON-NLS-1$ consumeExpression(); break; - case 709 : if (DEBUG) { System.out.println("Expressionopt ::="); } //$NON-NLS-1$ + case 710 : if (DEBUG) { System.out.println("Expressionopt ::="); } //$NON-NLS-1$ consumeEmptyExpression(); break; - case 714 : if (DEBUG) { System.out.println("ClassBodyDeclarationsopt ::="); } //$NON-NLS-1$ + case 715 : if (DEBUG) { System.out.println("ClassBodyDeclarationsopt ::="); } //$NON-NLS-1$ consumeEmptyClassBodyDeclarationsopt(); break; - case 715 : if (DEBUG) { System.out.println("ClassBodyDeclarationsopt ::= NestedType..."); } //$NON-NLS-1$ + case 716 : if (DEBUG) { System.out.println("ClassBodyDeclarationsopt ::= NestedType..."); } //$NON-NLS-1$ consumeClassBodyDeclarationsopt(); break; - case 716 : if (DEBUG) { System.out.println("Modifiersopt ::="); } //$NON-NLS-1$ + case 717 : if (DEBUG) { System.out.println("Modifiersopt ::="); } //$NON-NLS-1$ consumeDefaultModifiers(); break; - case 717 : if (DEBUG) { System.out.println("Modifiersopt ::= Modifiers"); } //$NON-NLS-1$ + case 718 : if (DEBUG) { System.out.println("Modifiersopt ::= Modifiers"); } //$NON-NLS-1$ consumeModifiers(); break; - case 718 : if (DEBUG) { System.out.println("BlockStatementsopt ::="); } //$NON-NLS-1$ + case 719 : if (DEBUG) { System.out.println("BlockStatementsopt ::="); } //$NON-NLS-1$ consumeEmptyBlockStatementsopt(); break; - case 720 : if (DEBUG) { System.out.println("Dimsopt ::="); } //$NON-NLS-1$ + case 721 : if (DEBUG) { System.out.println("Dimsopt ::="); } //$NON-NLS-1$ consumeEmptyDimsopt(); break; - case 722 : if (DEBUG) { System.out.println("ArgumentListopt ::="); } //$NON-NLS-1$ + case 723 : if (DEBUG) { System.out.println("ArgumentListopt ::="); } //$NON-NLS-1$ consumeEmptyArgumentListopt(); break; - case 726 : if (DEBUG) { System.out.println("FormalParameterListopt ::="); } //$NON-NLS-1$ + case 727 : if (DEBUG) { System.out.println("FormalParameterListopt ::="); } //$NON-NLS-1$ consumeFormalParameterListopt(); break; - case 731 : if (DEBUG) { System.out.println("PermittedTypesopt ::= permits ClassTypeList"); } //$NON-NLS-1$ + case 733 : if (DEBUG) { System.out.println("PermittedTypesopt ::= RestrictedIdentifierpermits..."); } //$NON-NLS-1$ consumePermittedTypes(); break; - case 732 : if (DEBUG) { System.out.println("InterfaceMemberDeclarationsopt ::="); } //$NON-NLS-1$ + case 734 : if (DEBUG) { System.out.println("InterfaceMemberDeclarationsopt ::="); } //$NON-NLS-1$ consumeEmptyInterfaceMemberDeclarationsopt(); break; - case 733 : if (DEBUG) { System.out.println("InterfaceMemberDeclarationsopt ::= NestedType..."); } //$NON-NLS-1$ + case 735 : if (DEBUG) { System.out.println("InterfaceMemberDeclarationsopt ::= NestedType..."); } //$NON-NLS-1$ consumeInterfaceMemberDeclarationsopt(); break; - case 734 : if (DEBUG) { System.out.println("NestedType ::="); } //$NON-NLS-1$ + case 736 : if (DEBUG) { System.out.println("NestedType ::="); } //$NON-NLS-1$ consumeNestedType(); break; - case 735 : if (DEBUG) { System.out.println("ForInitopt ::="); } //$NON-NLS-1$ + case 737 : if (DEBUG) { System.out.println("ForInitopt ::="); } //$NON-NLS-1$ consumeEmptyForInitopt(); break; - case 737 : if (DEBUG) { System.out.println("ForUpdateopt ::="); } //$NON-NLS-1$ + case 739 : if (DEBUG) { System.out.println("ForUpdateopt ::="); } //$NON-NLS-1$ consumeEmptyForUpdateopt(); break; - case 741 : if (DEBUG) { System.out.println("Catchesopt ::="); } //$NON-NLS-1$ + case 743 : if (DEBUG) { System.out.println("Catchesopt ::="); } //$NON-NLS-1$ consumeEmptyCatchesopt(); break; - case 743 : if (DEBUG) { System.out.println("EnumDeclaration ::= EnumHeader EnumBody"); } //$NON-NLS-1$ + case 745 : if (DEBUG) { System.out.println("EnumDeclaration ::= EnumHeader EnumBody"); } //$NON-NLS-1$ consumeEnumDeclaration(); break; - case 744 : if (DEBUG) { System.out.println("EnumHeader ::= EnumHeaderName ClassHeaderImplementsopt"); } //$NON-NLS-1$ + case 746 : if (DEBUG) { System.out.println("EnumHeader ::= EnumHeaderName ClassHeaderImplementsopt"); } //$NON-NLS-1$ consumeEnumHeader(); break; - case 745 : if (DEBUG) { System.out.println("EnumHeaderName ::= Modifiersopt enum Identifier"); } //$NON-NLS-1$ + case 747 : if (DEBUG) { System.out.println("EnumHeaderName ::= Modifiersopt enum Identifier"); } //$NON-NLS-1$ consumeEnumHeaderName(); break; - case 746 : if (DEBUG) { System.out.println("EnumHeaderName ::= Modifiersopt enum Identifier..."); } //$NON-NLS-1$ + case 748 : if (DEBUG) { System.out.println("EnumHeaderName ::= Modifiersopt enum Identifier..."); } //$NON-NLS-1$ consumeEnumHeaderNameWithTypeParameters(); break; - case 747 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumBodyDeclarationsopt RBRACE"); } //$NON-NLS-1$ + case 749 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumBodyDeclarationsopt RBRACE"); } //$NON-NLS-1$ consumeEnumBodyNoConstants(); break; - case 748 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE COMMA EnumBodyDeclarationsopt..."); } //$NON-NLS-1$ + case 750 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE COMMA EnumBodyDeclarationsopt..."); } //$NON-NLS-1$ consumeEnumBodyNoConstants(); break; - case 749 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumConstants COMMA..."); } //$NON-NLS-1$ + case 751 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumConstants COMMA..."); } //$NON-NLS-1$ consumeEnumBodyWithConstants(); break; - case 750 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumConstants..."); } //$NON-NLS-1$ + case 752 : if (DEBUG) { System.out.println("EnumBody ::= LBRACE EnumConstants..."); } //$NON-NLS-1$ consumeEnumBodyWithConstants(); break; - case 752 : if (DEBUG) { System.out.println("EnumConstants ::= EnumConstants COMMA EnumConstant"); } //$NON-NLS-1$ + case 754 : if (DEBUG) { System.out.println("EnumConstants ::= EnumConstants COMMA EnumConstant"); } //$NON-NLS-1$ consumeEnumConstants(); break; - case 753 : if (DEBUG) { System.out.println("EnumConstantHeaderName ::= Modifiersopt Identifier"); } //$NON-NLS-1$ + case 755 : if (DEBUG) { System.out.println("EnumConstantHeaderName ::= Modifiersopt Identifier"); } //$NON-NLS-1$ consumeEnumConstantHeaderName(); break; - case 754 : if (DEBUG) { System.out.println("EnumConstantHeader ::= EnumConstantHeaderName..."); } //$NON-NLS-1$ + case 756 : if (DEBUG) { System.out.println("EnumConstantHeader ::= EnumConstantHeaderName..."); } //$NON-NLS-1$ consumeEnumConstantHeader(); break; - case 755 : if (DEBUG) { System.out.println("EnumConstant ::= EnumConstantHeader ForceNoDiet..."); } //$NON-NLS-1$ + case 757 : if (DEBUG) { System.out.println("EnumConstant ::= EnumConstantHeader ForceNoDiet..."); } //$NON-NLS-1$ consumeEnumConstantWithClassBody(); break; - case 756 : if (DEBUG) { System.out.println("EnumConstant ::= EnumConstantHeader"); } //$NON-NLS-1$ + case 758 : if (DEBUG) { System.out.println("EnumConstant ::= EnumConstantHeader"); } //$NON-NLS-1$ consumeEnumConstantNoClassBody(); break; - case 757 : if (DEBUG) { System.out.println("Arguments ::= LPAREN ArgumentListopt RPAREN"); } //$NON-NLS-1$ + case 759 : if (DEBUG) { System.out.println("Arguments ::= LPAREN ArgumentListopt RPAREN"); } //$NON-NLS-1$ consumeArguments(); break; - case 758 : if (DEBUG) { System.out.println("Argumentsopt ::="); } //$NON-NLS-1$ + case 760 : if (DEBUG) { System.out.println("Argumentsopt ::="); } //$NON-NLS-1$ consumeEmptyArguments(); break; - case 760 : if (DEBUG) { System.out.println("EnumDeclarations ::= SEMICOLON ClassBodyDeclarationsopt"); } //$NON-NLS-1$ + case 762 : if (DEBUG) { System.out.println("EnumDeclarations ::= SEMICOLON ClassBodyDeclarationsopt"); } //$NON-NLS-1$ consumeEnumDeclarations(); break; - case 761 : if (DEBUG) { System.out.println("EnumBodyDeclarationsopt ::="); } //$NON-NLS-1$ + case 763 : if (DEBUG) { System.out.println("EnumBodyDeclarationsopt ::="); } //$NON-NLS-1$ consumeEmptyEnumDeclarations(); break; - case 763 : if (DEBUG) { System.out.println("EnhancedForStatement ::= EnhancedForStatementHeader..."); } //$NON-NLS-1$ + case 765 : if (DEBUG) { System.out.println("EnhancedForStatement ::= EnhancedForStatementHeader..."); } //$NON-NLS-1$ consumeEnhancedForStatement(); break; - case 764 : if (DEBUG) { System.out.println("EnhancedForStatementNoShortIf ::=..."); } //$NON-NLS-1$ + case 766 : if (DEBUG) { System.out.println("EnhancedForStatementNoShortIf ::=..."); } //$NON-NLS-1$ consumeEnhancedForStatement(); break; - case 765 : if (DEBUG) { System.out.println("EnhancedForStatementHeaderInit ::= for LPAREN Type..."); } //$NON-NLS-1$ + case 767 : if (DEBUG) { System.out.println("EnhancedForStatementHeaderInit ::= for LPAREN Type..."); } //$NON-NLS-1$ consumeEnhancedForStatementHeaderInit(false); break; - case 766 : if (DEBUG) { System.out.println("EnhancedForStatementHeaderInit ::= for LPAREN Modifiers"); } //$NON-NLS-1$ + case 768 : if (DEBUG) { System.out.println("EnhancedForStatementHeaderInit ::= for LPAREN Modifiers"); } //$NON-NLS-1$ consumeEnhancedForStatementHeaderInit(true); break; - case 767 : if (DEBUG) { System.out.println("EnhancedForStatementHeader ::=..."); } //$NON-NLS-1$ + case 769 : if (DEBUG) { System.out.println("EnhancedForStatementHeader ::=..."); } //$NON-NLS-1$ consumeEnhancedForStatementHeader(); break; - case 768 : if (DEBUG) { System.out.println("SingleStaticImportDeclaration ::=..."); } //$NON-NLS-1$ + case 770 : if (DEBUG) { System.out.println("SingleStaticImportDeclaration ::=..."); } //$NON-NLS-1$ consumeImportDeclaration(); break; - case 769 : if (DEBUG) { System.out.println("SingleStaticImportDeclarationName ::= import static Name"); } //$NON-NLS-1$ + case 771 : if (DEBUG) { System.out.println("SingleStaticImportDeclarationName ::= import static Name"); } //$NON-NLS-1$ consumeSingleStaticImportDeclarationName(); break; - case 770 : if (DEBUG) { System.out.println("StaticImportOnDemandDeclaration ::=..."); } //$NON-NLS-1$ + case 772 : if (DEBUG) { System.out.println("StaticImportOnDemandDeclaration ::=..."); } //$NON-NLS-1$ consumeImportDeclaration(); break; - case 771 : if (DEBUG) { System.out.println("StaticImportOnDemandDeclarationName ::= import static..."); } //$NON-NLS-1$ + case 773 : if (DEBUG) { System.out.println("StaticImportOnDemandDeclarationName ::= import static..."); } //$NON-NLS-1$ consumeStaticImportOnDemandDeclarationName(); break; - case 772 : if (DEBUG) { System.out.println("TypeArguments ::= LESS TypeArgumentList1"); } //$NON-NLS-1$ + case 774 : if (DEBUG) { System.out.println("TypeArguments ::= LESS TypeArgumentList1"); } //$NON-NLS-1$ consumeTypeArguments(); break; - case 773 : if (DEBUG) { System.out.println("OnlyTypeArguments ::= LESS TypeArgumentList1"); } //$NON-NLS-1$ + case 775 : if (DEBUG) { System.out.println("OnlyTypeArguments ::= LESS TypeArgumentList1"); } //$NON-NLS-1$ consumeOnlyTypeArguments(); break; - case 775 : if (DEBUG) { System.out.println("TypeArgumentList1 ::= TypeArgumentList COMMA..."); } //$NON-NLS-1$ + case 777 : if (DEBUG) { System.out.println("TypeArgumentList1 ::= TypeArgumentList COMMA..."); } //$NON-NLS-1$ consumeTypeArgumentList1(); break; - case 777 : if (DEBUG) { System.out.println("TypeArgumentList ::= TypeArgumentList COMMA TypeArgument"); } //$NON-NLS-1$ + case 779 : if (DEBUG) { System.out.println("TypeArgumentList ::= TypeArgumentList COMMA TypeArgument"); } //$NON-NLS-1$ consumeTypeArgumentList(); break; - case 778 : if (DEBUG) { System.out.println("TypeArgument ::= ReferenceType"); } //$NON-NLS-1$ + case 780 : if (DEBUG) { System.out.println("TypeArgument ::= ReferenceType"); } //$NON-NLS-1$ consumeTypeArgument(); break; - case 782 : if (DEBUG) { System.out.println("ReferenceType1 ::= ReferenceType GREATER"); } //$NON-NLS-1$ + case 784 : if (DEBUG) { System.out.println("ReferenceType1 ::= ReferenceType GREATER"); } //$NON-NLS-1$ consumeReferenceType1(); break; - case 783 : if (DEBUG) { System.out.println("ReferenceType1 ::= ClassOrInterface LESS..."); } //$NON-NLS-1$ + case 785 : if (DEBUG) { System.out.println("ReferenceType1 ::= ClassOrInterface LESS..."); } //$NON-NLS-1$ consumeTypeArgumentReferenceType1(); break; - case 785 : if (DEBUG) { System.out.println("TypeArgumentList2 ::= TypeArgumentList COMMA..."); } //$NON-NLS-1$ + case 787 : if (DEBUG) { System.out.println("TypeArgumentList2 ::= TypeArgumentList COMMA..."); } //$NON-NLS-1$ consumeTypeArgumentList2(); break; - case 788 : if (DEBUG) { System.out.println("ReferenceType2 ::= ReferenceType RIGHT_SHIFT"); } //$NON-NLS-1$ + case 790 : if (DEBUG) { System.out.println("ReferenceType2 ::= ReferenceType RIGHT_SHIFT"); } //$NON-NLS-1$ consumeReferenceType2(); break; - case 789 : if (DEBUG) { System.out.println("ReferenceType2 ::= ClassOrInterface LESS..."); } //$NON-NLS-1$ + case 791 : if (DEBUG) { System.out.println("ReferenceType2 ::= ClassOrInterface LESS..."); } //$NON-NLS-1$ consumeTypeArgumentReferenceType2(); break; - case 791 : if (DEBUG) { System.out.println("TypeArgumentList3 ::= TypeArgumentList COMMA..."); } //$NON-NLS-1$ + case 793 : if (DEBUG) { System.out.println("TypeArgumentList3 ::= TypeArgumentList COMMA..."); } //$NON-NLS-1$ consumeTypeArgumentList3(); break; - case 794 : if (DEBUG) { System.out.println("ReferenceType3 ::= ReferenceType UNSIGNED_RIGHT_SHIFT"); } //$NON-NLS-1$ + case 796 : if (DEBUG) { System.out.println("ReferenceType3 ::= ReferenceType UNSIGNED_RIGHT_SHIFT"); } //$NON-NLS-1$ consumeReferenceType3(); break; - case 795 : if (DEBUG) { System.out.println("Wildcard ::= TypeAnnotationsopt QUESTION"); } //$NON-NLS-1$ + case 797 : if (DEBUG) { System.out.println("Wildcard ::= TypeAnnotationsopt QUESTION"); } //$NON-NLS-1$ consumeWildcard(); break; - case 796 : if (DEBUG) { System.out.println("Wildcard ::= TypeAnnotationsopt QUESTION WildcardBounds"); } //$NON-NLS-1$ + case 798 : if (DEBUG) { System.out.println("Wildcard ::= TypeAnnotationsopt QUESTION WildcardBounds"); } //$NON-NLS-1$ consumeWildcardWithBounds(); break; - case 797 : if (DEBUG) { System.out.println("WildcardBounds ::= extends ReferenceType"); } //$NON-NLS-1$ + case 799 : if (DEBUG) { System.out.println("WildcardBounds ::= extends ReferenceType"); } //$NON-NLS-1$ consumeWildcardBoundsExtends(); break; - case 798 : if (DEBUG) { System.out.println("WildcardBounds ::= super ReferenceType"); } //$NON-NLS-1$ + case 800 : if (DEBUG) { System.out.println("WildcardBounds ::= super ReferenceType"); } //$NON-NLS-1$ consumeWildcardBoundsSuper(); break; - case 799 : if (DEBUG) { System.out.println("Wildcard1 ::= TypeAnnotationsopt QUESTION GREATER"); } //$NON-NLS-1$ + case 801 : if (DEBUG) { System.out.println("Wildcard1 ::= TypeAnnotationsopt QUESTION GREATER"); } //$NON-NLS-1$ consumeWildcard1(); break; - case 800 : if (DEBUG) { System.out.println("Wildcard1 ::= TypeAnnotationsopt QUESTION..."); } //$NON-NLS-1$ + case 802 : if (DEBUG) { System.out.println("Wildcard1 ::= TypeAnnotationsopt QUESTION..."); } //$NON-NLS-1$ consumeWildcard1WithBounds(); break; - case 801 : if (DEBUG) { System.out.println("WildcardBounds1 ::= extends ReferenceType1"); } //$NON-NLS-1$ + case 803 : if (DEBUG) { System.out.println("WildcardBounds1 ::= extends ReferenceType1"); } //$NON-NLS-1$ consumeWildcardBounds1Extends(); break; - case 802 : if (DEBUG) { System.out.println("WildcardBounds1 ::= super ReferenceType1"); } //$NON-NLS-1$ + case 804 : if (DEBUG) { System.out.println("WildcardBounds1 ::= super ReferenceType1"); } //$NON-NLS-1$ consumeWildcardBounds1Super(); break; - case 803 : if (DEBUG) { System.out.println("Wildcard2 ::= TypeAnnotationsopt QUESTION RIGHT_SHIFT"); } //$NON-NLS-1$ + case 805 : if (DEBUG) { System.out.println("Wildcard2 ::= TypeAnnotationsopt QUESTION RIGHT_SHIFT"); } //$NON-NLS-1$ consumeWildcard2(); break; - case 804 : if (DEBUG) { System.out.println("Wildcard2 ::= TypeAnnotationsopt QUESTION..."); } //$NON-NLS-1$ + case 806 : if (DEBUG) { System.out.println("Wildcard2 ::= TypeAnnotationsopt QUESTION..."); } //$NON-NLS-1$ consumeWildcard2WithBounds(); break; - case 805 : if (DEBUG) { System.out.println("WildcardBounds2 ::= extends ReferenceType2"); } //$NON-NLS-1$ + case 807 : if (DEBUG) { System.out.println("WildcardBounds2 ::= extends ReferenceType2"); } //$NON-NLS-1$ consumeWildcardBounds2Extends(); break; - case 806 : if (DEBUG) { System.out.println("WildcardBounds2 ::= super ReferenceType2"); } //$NON-NLS-1$ + case 808 : if (DEBUG) { System.out.println("WildcardBounds2 ::= super ReferenceType2"); } //$NON-NLS-1$ consumeWildcardBounds2Super(); break; - case 807 : if (DEBUG) { System.out.println("Wildcard3 ::= TypeAnnotationsopt QUESTION..."); } //$NON-NLS-1$ + case 809 : if (DEBUG) { System.out.println("Wildcard3 ::= TypeAnnotationsopt QUESTION..."); } //$NON-NLS-1$ consumeWildcard3(); break; - case 808 : if (DEBUG) { System.out.println("Wildcard3 ::= TypeAnnotationsopt QUESTION..."); } //$NON-NLS-1$ + case 810 : if (DEBUG) { System.out.println("Wildcard3 ::= TypeAnnotationsopt QUESTION..."); } //$NON-NLS-1$ consumeWildcard3WithBounds(); break; - case 809 : if (DEBUG) { System.out.println("WildcardBounds3 ::= extends ReferenceType3"); } //$NON-NLS-1$ + case 811 : if (DEBUG) { System.out.println("WildcardBounds3 ::= extends ReferenceType3"); } //$NON-NLS-1$ consumeWildcardBounds3Extends(); break; - case 810 : if (DEBUG) { System.out.println("WildcardBounds3 ::= super ReferenceType3"); } //$NON-NLS-1$ + case 812 : if (DEBUG) { System.out.println("WildcardBounds3 ::= super ReferenceType3"); } //$NON-NLS-1$ consumeWildcardBounds3Super(); break; - case 811 : if (DEBUG) { System.out.println("TypeParameterHeader ::= TypeAnnotationsopt Identifier"); } //$NON-NLS-1$ + case 813 : if (DEBUG) { System.out.println("TypeParameterHeader ::= TypeAnnotationsopt Identifier"); } //$NON-NLS-1$ consumeTypeParameterHeader(); break; - case 812 : if (DEBUG) { System.out.println("TypeParameters ::= LESS TypeParameterList1"); } //$NON-NLS-1$ + case 814 : if (DEBUG) { System.out.println("TypeParameters ::= LESS TypeParameterList1"); } //$NON-NLS-1$ consumeTypeParameters(); break; - case 814 : if (DEBUG) { System.out.println("TypeParameterList ::= TypeParameterList COMMA..."); } //$NON-NLS-1$ + case 816 : if (DEBUG) { System.out.println("TypeParameterList ::= TypeParameterList COMMA..."); } //$NON-NLS-1$ consumeTypeParameterList(); break; - case 816 : if (DEBUG) { System.out.println("TypeParameter ::= TypeParameterHeader extends..."); } //$NON-NLS-1$ + case 818 : if (DEBUG) { System.out.println("TypeParameter ::= TypeParameterHeader extends..."); } //$NON-NLS-1$ consumeTypeParameterWithExtends(); break; - case 817 : if (DEBUG) { System.out.println("TypeParameter ::= TypeParameterHeader extends..."); } //$NON-NLS-1$ + case 819 : if (DEBUG) { System.out.println("TypeParameter ::= TypeParameterHeader extends..."); } //$NON-NLS-1$ consumeTypeParameterWithExtendsAndBounds(); break; - case 819 : if (DEBUG) { System.out.println("AdditionalBoundList ::= AdditionalBoundList..."); } //$NON-NLS-1$ + case 821 : if (DEBUG) { System.out.println("AdditionalBoundList ::= AdditionalBoundList..."); } //$NON-NLS-1$ consumeAdditionalBoundList(); break; - case 820 : if (DEBUG) { System.out.println("AdditionalBound ::= AND ReferenceType"); } //$NON-NLS-1$ + case 822 : if (DEBUG) { System.out.println("AdditionalBound ::= AND ReferenceType"); } //$NON-NLS-1$ consumeAdditionalBound(); break; - case 822 : if (DEBUG) { System.out.println("TypeParameterList1 ::= TypeParameterList COMMA..."); } //$NON-NLS-1$ + case 824 : if (DEBUG) { System.out.println("TypeParameterList1 ::= TypeParameterList COMMA..."); } //$NON-NLS-1$ consumeTypeParameterList1(); break; - case 823 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader GREATER"); } //$NON-NLS-1$ + case 825 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader GREATER"); } //$NON-NLS-1$ consumeTypeParameter1(); break; - case 824 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader extends..."); } //$NON-NLS-1$ + case 826 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader extends..."); } //$NON-NLS-1$ consumeTypeParameter1WithExtends(); break; - case 825 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader extends..."); } //$NON-NLS-1$ + case 827 : if (DEBUG) { System.out.println("TypeParameter1 ::= TypeParameterHeader extends..."); } //$NON-NLS-1$ consumeTypeParameter1WithExtendsAndBounds(); break; - case 827 : if (DEBUG) { System.out.println("AdditionalBoundList1 ::= AdditionalBoundList..."); } //$NON-NLS-1$ + case 829 : if (DEBUG) { System.out.println("AdditionalBoundList1 ::= AdditionalBoundList..."); } //$NON-NLS-1$ consumeAdditionalBoundList1(); break; - case 828 : if (DEBUG) { System.out.println("AdditionalBound1 ::= AND ReferenceType1"); } //$NON-NLS-1$ + case 830 : if (DEBUG) { System.out.println("AdditionalBound1 ::= AND ReferenceType1"); } //$NON-NLS-1$ consumeAdditionalBound1(); break; - case 834 : if (DEBUG) { System.out.println("UnaryExpression_NotName ::= PLUS PushPosition..."); } //$NON-NLS-1$ + case 836 : if (DEBUG) { System.out.println("UnaryExpression_NotName ::= PLUS PushPosition..."); } //$NON-NLS-1$ consumeUnaryExpression(OperatorIds.PLUS); break; - case 835 : if (DEBUG) { System.out.println("UnaryExpression_NotName ::= MINUS PushPosition..."); } //$NON-NLS-1$ + case 837 : if (DEBUG) { System.out.println("UnaryExpression_NotName ::= MINUS PushPosition..."); } //$NON-NLS-1$ consumeUnaryExpression(OperatorIds.MINUS); break; - case 838 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus_NotName ::= TWIDDLE..."); } //$NON-NLS-1$ + case 840 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus_NotName ::= TWIDDLE..."); } //$NON-NLS-1$ consumeUnaryExpression(OperatorIds.TWIDDLE); break; - case 839 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus_NotName ::= NOT PushPosition"); } //$NON-NLS-1$ + case 841 : if (DEBUG) { System.out.println("UnaryExpressionNotPlusMinus_NotName ::= NOT PushPosition"); } //$NON-NLS-1$ consumeUnaryExpression(OperatorIds.NOT); break; - case 842 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); } //$NON-NLS-1$ + case 844 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.MULTIPLY); break; - case 843 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= Name MULTIPLY..."); } //$NON-NLS-1$ + case 845 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= Name MULTIPLY..."); } //$NON-NLS-1$ consumeBinaryExpressionWithName(OperatorIds.MULTIPLY); break; - case 844 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); } //$NON-NLS-1$ + case 846 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.DIVIDE); break; - case 845 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= Name DIVIDE..."); } //$NON-NLS-1$ + case 847 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= Name DIVIDE..."); } //$NON-NLS-1$ consumeBinaryExpressionWithName(OperatorIds.DIVIDE); break; - case 846 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); } //$NON-NLS-1$ + case 848 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::=..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.REMAINDER); break; - case 847 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= Name REMAINDER..."); } //$NON-NLS-1$ + case 849 : if (DEBUG) { System.out.println("MultiplicativeExpression_NotName ::= Name REMAINDER..."); } //$NON-NLS-1$ consumeBinaryExpressionWithName(OperatorIds.REMAINDER); break; - case 849 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::=..."); } //$NON-NLS-1$ + case 851 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::=..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.PLUS); break; - case 850 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::= Name PLUS..."); } //$NON-NLS-1$ + case 852 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::= Name PLUS..."); } //$NON-NLS-1$ consumeBinaryExpressionWithName(OperatorIds.PLUS); break; - case 851 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::=..."); } //$NON-NLS-1$ + case 853 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::=..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.MINUS); break; - case 852 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::= Name MINUS..."); } //$NON-NLS-1$ + case 854 : if (DEBUG) { System.out.println("AdditiveExpression_NotName ::= Name MINUS..."); } //$NON-NLS-1$ consumeBinaryExpressionWithName(OperatorIds.MINUS); break; - case 854 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); } //$NON-NLS-1$ + case 856 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.LEFT_SHIFT); break; - case 855 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= Name LEFT_SHIFT..."); } //$NON-NLS-1$ + case 857 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= Name LEFT_SHIFT..."); } //$NON-NLS-1$ consumeBinaryExpressionWithName(OperatorIds.LEFT_SHIFT); break; - case 856 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); } //$NON-NLS-1$ + case 858 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.RIGHT_SHIFT); break; - case 857 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= Name RIGHT_SHIFT..."); } //$NON-NLS-1$ + case 859 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= Name RIGHT_SHIFT..."); } //$NON-NLS-1$ consumeBinaryExpressionWithName(OperatorIds.RIGHT_SHIFT); break; - case 858 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); } //$NON-NLS-1$ + case 860 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= ShiftExpression_NotName..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT); break; - case 859 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= Name UNSIGNED_RIGHT_SHIFT..."); } //$NON-NLS-1$ + case 861 : if (DEBUG) { System.out.println("ShiftExpression_NotName ::= Name UNSIGNED_RIGHT_SHIFT..."); } //$NON-NLS-1$ consumeBinaryExpressionWithName(OperatorIds.UNSIGNED_RIGHT_SHIFT); break; - case 861 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= ShiftExpression_NotName"); } //$NON-NLS-1$ + case 863 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= ShiftExpression_NotName"); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.LESS); break; - case 862 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name LESS..."); } //$NON-NLS-1$ + case 864 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name LESS..."); } //$NON-NLS-1$ consumeBinaryExpressionWithName(OperatorIds.LESS); break; - case 863 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= ShiftExpression_NotName"); } //$NON-NLS-1$ + case 865 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= ShiftExpression_NotName"); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.GREATER); break; - case 864 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name GREATER..."); } //$NON-NLS-1$ + case 866 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name GREATER..."); } //$NON-NLS-1$ consumeBinaryExpressionWithName(OperatorIds.GREATER); break; - case 865 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); } //$NON-NLS-1$ + case 867 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.LESS_EQUAL); break; - case 866 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name LESS_EQUAL..."); } //$NON-NLS-1$ + case 868 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name LESS_EQUAL..."); } //$NON-NLS-1$ consumeBinaryExpressionWithName(OperatorIds.LESS_EQUAL); break; - case 867 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); } //$NON-NLS-1$ + case 869 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::=..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.GREATER_EQUAL); break; - case 868 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name GREATER_EQUAL..."); } //$NON-NLS-1$ + case 870 : if (DEBUG) { System.out.println("RelationalExpression_NotName ::= Name GREATER_EQUAL..."); } //$NON-NLS-1$ consumeBinaryExpressionWithName(OperatorIds.GREATER_EQUAL); break; - case 870 : if (DEBUG) { System.out.println("InstanceofExpression_NotName ::= Name InstanceofRHS"); } //$NON-NLS-1$ + case 872 : if (DEBUG) { System.out.println("InstanceofExpression_NotName ::= Name InstanceofRHS"); } //$NON-NLS-1$ consumeInstanceOfExpressionWithName(); break; - case 871 : if (DEBUG) { System.out.println("InstanceofExpression_NotName ::=..."); } //$NON-NLS-1$ + case 873 : if (DEBUG) { System.out.println("InstanceofExpression_NotName ::=..."); } //$NON-NLS-1$ consumeInstanceOfExpression(); break; - case 873 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::=..."); } //$NON-NLS-1$ + case 875 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::=..."); } //$NON-NLS-1$ consumeEqualityExpression(OperatorIds.EQUAL_EQUAL); break; - case 874 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::= Name EQUAL_EQUAL..."); } //$NON-NLS-1$ + case 876 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::= Name EQUAL_EQUAL..."); } //$NON-NLS-1$ consumeEqualityExpressionWithName(OperatorIds.EQUAL_EQUAL); break; - case 875 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::=..."); } //$NON-NLS-1$ + case 877 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::=..."); } //$NON-NLS-1$ consumeEqualityExpression(OperatorIds.NOT_EQUAL); break; - case 876 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::= Name NOT_EQUAL..."); } //$NON-NLS-1$ + case 878 : if (DEBUG) { System.out.println("EqualityExpression_NotName ::= Name NOT_EQUAL..."); } //$NON-NLS-1$ consumeEqualityExpressionWithName(OperatorIds.NOT_EQUAL); break; - case 878 : if (DEBUG) { System.out.println("AndExpression_NotName ::= AndExpression_NotName AND..."); } //$NON-NLS-1$ + case 880 : if (DEBUG) { System.out.println("AndExpression_NotName ::= AndExpression_NotName AND..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.AND); break; - case 879 : if (DEBUG) { System.out.println("AndExpression_NotName ::= Name AND EqualityExpression"); } //$NON-NLS-1$ + case 881 : if (DEBUG) { System.out.println("AndExpression_NotName ::= Name AND EqualityExpression"); } //$NON-NLS-1$ consumeBinaryExpressionWithName(OperatorIds.AND); break; - case 881 : if (DEBUG) { System.out.println("ExclusiveOrExpression_NotName ::=..."); } //$NON-NLS-1$ + case 883 : if (DEBUG) { System.out.println("ExclusiveOrExpression_NotName ::=..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.XOR); break; - case 882 : if (DEBUG) { System.out.println("ExclusiveOrExpression_NotName ::= Name XOR AndExpression"); } //$NON-NLS-1$ + case 884 : if (DEBUG) { System.out.println("ExclusiveOrExpression_NotName ::= Name XOR AndExpression"); } //$NON-NLS-1$ consumeBinaryExpressionWithName(OperatorIds.XOR); break; - case 884 : if (DEBUG) { System.out.println("InclusiveOrExpression_NotName ::=..."); } //$NON-NLS-1$ + case 886 : if (DEBUG) { System.out.println("InclusiveOrExpression_NotName ::=..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.OR); break; - case 885 : if (DEBUG) { System.out.println("InclusiveOrExpression_NotName ::= Name OR..."); } //$NON-NLS-1$ + case 887 : if (DEBUG) { System.out.println("InclusiveOrExpression_NotName ::= Name OR..."); } //$NON-NLS-1$ consumeBinaryExpressionWithName(OperatorIds.OR); break; - case 887 : if (DEBUG) { System.out.println("ConditionalAndExpression_NotName ::=..."); } //$NON-NLS-1$ + case 889 : if (DEBUG) { System.out.println("ConditionalAndExpression_NotName ::=..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.AND_AND); break; - case 888 : if (DEBUG) { System.out.println("ConditionalAndExpression_NotName ::= Name AND_AND..."); } //$NON-NLS-1$ + case 890 : if (DEBUG) { System.out.println("ConditionalAndExpression_NotName ::= Name AND_AND..."); } //$NON-NLS-1$ consumeBinaryExpressionWithName(OperatorIds.AND_AND); break; - case 890 : if (DEBUG) { System.out.println("ConditionalOrExpression_NotName ::=..."); } //$NON-NLS-1$ + case 892 : if (DEBUG) { System.out.println("ConditionalOrExpression_NotName ::=..."); } //$NON-NLS-1$ consumeBinaryExpression(OperatorIds.OR_OR); break; - case 891 : if (DEBUG) { System.out.println("ConditionalOrExpression_NotName ::= Name OR_OR..."); } //$NON-NLS-1$ + case 893 : if (DEBUG) { System.out.println("ConditionalOrExpression_NotName ::= Name OR_OR..."); } //$NON-NLS-1$ consumeBinaryExpressionWithName(OperatorIds.OR_OR); break; - case 893 : if (DEBUG) { System.out.println("ConditionalExpression_NotName ::=..."); } //$NON-NLS-1$ + case 895 : if (DEBUG) { System.out.println("ConditionalExpression_NotName ::=..."); } //$NON-NLS-1$ consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ; break; - case 894 : if (DEBUG) { System.out.println("ConditionalExpression_NotName ::= Name QUESTION..."); } //$NON-NLS-1$ + case 896 : if (DEBUG) { System.out.println("ConditionalExpression_NotName ::= Name QUESTION..."); } //$NON-NLS-1$ consumeConditionalExpressionWithName(OperatorIds.QUESTIONCOLON) ; break; - case 898 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= Modifiers AT..."); } //$NON-NLS-1$ + case 900 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= Modifiers AT..."); } //$NON-NLS-1$ consumeAnnotationTypeDeclarationHeaderName() ; break; - case 899 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= Modifiers AT..."); } //$NON-NLS-1$ + case 901 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= Modifiers AT..."); } //$NON-NLS-1$ consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters() ; break; - case 900 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= AT..."); } //$NON-NLS-1$ + case 902 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= AT..."); } //$NON-NLS-1$ consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters() ; break; - case 901 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= AT..."); } //$NON-NLS-1$ + case 903 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeaderName ::= AT..."); } //$NON-NLS-1$ consumeAnnotationTypeDeclarationHeaderName() ; break; - case 902 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeader ::=..."); } //$NON-NLS-1$ + case 904 : if (DEBUG) { System.out.println("AnnotationTypeDeclarationHeader ::=..."); } //$NON-NLS-1$ consumeAnnotationTypeDeclarationHeader() ; break; - case 903 : if (DEBUG) { System.out.println("AnnotationTypeDeclaration ::=..."); } //$NON-NLS-1$ + case 905 : if (DEBUG) { System.out.println("AnnotationTypeDeclaration ::=..."); } //$NON-NLS-1$ consumeAnnotationTypeDeclaration() ; break; - case 905 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarationsopt ::="); } //$NON-NLS-1$ + case 907 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarationsopt ::="); } //$NON-NLS-1$ consumeEmptyAnnotationTypeMemberDeclarationsopt() ; break; - case 906 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarationsopt ::= NestedType..."); } //$NON-NLS-1$ + case 908 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarationsopt ::= NestedType..."); } //$NON-NLS-1$ consumeAnnotationTypeMemberDeclarationsopt() ; break; - case 908 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarations ::=..."); } //$NON-NLS-1$ + case 910 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclarations ::=..."); } //$NON-NLS-1$ consumeAnnotationTypeMemberDeclarations() ; break; - case 909 : if (DEBUG) { System.out.println("AnnotationMethodHeaderName ::= Modifiersopt..."); } //$NON-NLS-1$ + case 911 : if (DEBUG) { System.out.println("AnnotationMethodHeaderName ::= Modifiersopt..."); } //$NON-NLS-1$ consumeMethodHeaderNameWithTypeParameters(true); break; - case 910 : if (DEBUG) { System.out.println("AnnotationMethodHeaderName ::= Modifiersopt Type..."); } //$NON-NLS-1$ + case 912 : if (DEBUG) { System.out.println("AnnotationMethodHeaderName ::= Modifiersopt Type..."); } //$NON-NLS-1$ consumeMethodHeaderName(true); break; - case 911 : if (DEBUG) { System.out.println("AnnotationMethodHeaderDefaultValueopt ::="); } //$NON-NLS-1$ + case 913 : if (DEBUG) { System.out.println("AnnotationMethodHeaderDefaultValueopt ::="); } //$NON-NLS-1$ consumeEmptyMethodHeaderDefaultValue() ; break; - case 912 : if (DEBUG) { System.out.println("AnnotationMethodHeaderDefaultValueopt ::= DefaultValue"); } //$NON-NLS-1$ + case 914 : if (DEBUG) { System.out.println("AnnotationMethodHeaderDefaultValueopt ::= DefaultValue"); } //$NON-NLS-1$ consumeMethodHeaderDefaultValue(); break; - case 913 : if (DEBUG) { System.out.println("AnnotationMethodHeader ::= AnnotationMethodHeaderName..."); } //$NON-NLS-1$ + case 915 : if (DEBUG) { System.out.println("AnnotationMethodHeader ::= AnnotationMethodHeaderName..."); } //$NON-NLS-1$ consumeMethodHeader(); break; - case 914 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclaration ::=..."); } //$NON-NLS-1$ + case 916 : if (DEBUG) { System.out.println("AnnotationTypeMemberDeclaration ::=..."); } //$NON-NLS-1$ consumeAnnotationTypeMemberDeclaration() ; break; - case 922 : if (DEBUG) { System.out.println("AnnotationName ::= AT UnannotatableName"); } //$NON-NLS-1$ + case 924 : if (DEBUG) { System.out.println("AnnotationName ::= AT UnannotatableName"); } //$NON-NLS-1$ consumeAnnotationName() ; break; - case 923 : if (DEBUG) { System.out.println("NormalAnnotation ::= AnnotationName LPAREN..."); } //$NON-NLS-1$ + case 925 : if (DEBUG) { System.out.println("NormalAnnotation ::= AnnotationName LPAREN..."); } //$NON-NLS-1$ consumeNormalAnnotation(false) ; break; - case 924 : if (DEBUG) { System.out.println("MemberValuePairsopt ::="); } //$NON-NLS-1$ + case 926 : if (DEBUG) { System.out.println("MemberValuePairsopt ::="); } //$NON-NLS-1$ consumeEmptyMemberValuePairsopt() ; break; - case 927 : if (DEBUG) { System.out.println("MemberValuePairs ::= MemberValuePairs COMMA..."); } //$NON-NLS-1$ + case 929 : if (DEBUG) { System.out.println("MemberValuePairs ::= MemberValuePairs COMMA..."); } //$NON-NLS-1$ consumeMemberValuePairs() ; break; - case 928 : if (DEBUG) { System.out.println("MemberValuePair ::= SimpleName EQUAL EnterMemberValue..."); } //$NON-NLS-1$ + case 930 : if (DEBUG) { System.out.println("MemberValuePair ::= SimpleName EQUAL EnterMemberValue..."); } //$NON-NLS-1$ consumeMemberValuePair() ; break; - case 929 : if (DEBUG) { System.out.println("EnterMemberValue ::="); } //$NON-NLS-1$ + case 931 : if (DEBUG) { System.out.println("EnterMemberValue ::="); } //$NON-NLS-1$ consumeEnterMemberValue() ; break; - case 930 : if (DEBUG) { System.out.println("ExitMemberValue ::="); } //$NON-NLS-1$ + case 932 : if (DEBUG) { System.out.println("ExitMemberValue ::="); } //$NON-NLS-1$ consumeExitMemberValue() ; break; - case 932 : if (DEBUG) { System.out.println("MemberValue ::= Name"); } //$NON-NLS-1$ + case 934 : if (DEBUG) { System.out.println("MemberValue ::= Name"); } //$NON-NLS-1$ consumeMemberValueAsName() ; break; - case 935 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$ + case 937 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$ consumeMemberValueArrayInitializer() ; break; - case 936 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$ + case 938 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$ consumeMemberValueArrayInitializer() ; break; - case 937 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$ + case 939 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$ consumeEmptyMemberValueArrayInitializer() ; break; - case 938 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$ + case 940 : if (DEBUG) { System.out.println("MemberValueArrayInitializer ::=..."); } //$NON-NLS-1$ consumeEmptyMemberValueArrayInitializer() ; break; - case 939 : if (DEBUG) { System.out.println("EnterMemberValueArrayInitializer ::="); } //$NON-NLS-1$ + case 941 : if (DEBUG) { System.out.println("EnterMemberValueArrayInitializer ::="); } //$NON-NLS-1$ consumeEnterMemberValueArrayInitializer() ; break; - case 941 : if (DEBUG) { System.out.println("MemberValues ::= MemberValues COMMA MemberValue"); } //$NON-NLS-1$ + case 943 : if (DEBUG) { System.out.println("MemberValues ::= MemberValues COMMA MemberValue"); } //$NON-NLS-1$ consumeMemberValues() ; break; - case 942 : if (DEBUG) { System.out.println("MarkerAnnotation ::= AnnotationName"); } //$NON-NLS-1$ + case 944 : if (DEBUG) { System.out.println("MarkerAnnotation ::= AnnotationName"); } //$NON-NLS-1$ consumeMarkerAnnotation(false) ; break; - case 943 : if (DEBUG) { System.out.println("SingleMemberAnnotationMemberValue ::= MemberValue"); } //$NON-NLS-1$ + case 945 : if (DEBUG) { System.out.println("SingleMemberAnnotationMemberValue ::= MemberValue"); } //$NON-NLS-1$ consumeSingleMemberAnnotationMemberValue() ; break; - case 944 : if (DEBUG) { System.out.println("SingleMemberAnnotation ::= AnnotationName LPAREN..."); } //$NON-NLS-1$ + case 946 : if (DEBUG) { System.out.println("SingleMemberAnnotation ::= AnnotationName LPAREN..."); } //$NON-NLS-1$ consumeSingleMemberAnnotation(false) ; break; - case 945 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= Modifiersopt TypeParameters"); } //$NON-NLS-1$ + case 947 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= Modifiersopt TypeParameters"); } //$NON-NLS-1$ consumeRecoveryMethodHeaderNameWithTypeParameters(); break; - case 946 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= Modifiersopt Type..."); } //$NON-NLS-1$ + case 948 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= Modifiersopt Type..."); } //$NON-NLS-1$ consumeRecoveryMethodHeaderName(); break; - case 947 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= ModifiersWithDefault..."); } //$NON-NLS-1$ + case 949 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= ModifiersWithDefault..."); } //$NON-NLS-1$ consumeRecoveryMethodHeaderNameWithTypeParameters(); break; - case 948 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= ModifiersWithDefault Type"); } //$NON-NLS-1$ + case 950 : if (DEBUG) { System.out.println("RecoveryMethodHeaderName ::= ModifiersWithDefault Type"); } //$NON-NLS-1$ consumeRecoveryMethodHeaderName(); break; - case 949 : if (DEBUG) { System.out.println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); } //$NON-NLS-1$ + case 951 : if (DEBUG) { System.out.println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); } //$NON-NLS-1$ consumeMethodHeader(); break; - case 950 : if (DEBUG) { System.out.println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); } //$NON-NLS-1$ + case 952 : if (DEBUG) { System.out.println("RecoveryMethodHeader ::= RecoveryMethodHeaderName..."); } //$NON-NLS-1$ consumeMethodHeader(); break; } @@ -10020,7 +10019,7 @@ protected void consumeToken(int type) { case TokenNametry : pushOnIntStack(this.scanner.startPosition); break; - case TokenNamepermits: + case TokenNameRestrictedIdentifierpermits: problemReporter().validateJavaFeatureSupport(JavaFeature.SEALED_CLASSES, this.scanner.startPosition,this.scanner.currentPosition - 1); pushOnIntStack(this.scanner.startPosition); break; diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.java index c8ad0a5ea4..a8f39fa91f 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/ParserBasicInformation.java @@ -22,20 +22,20 @@ public interface ParserBasicInformation { ERROR_SYMBOL = 140, MAX_NAME_LENGTH = 41, - NUM_STATES = 1257, + NUM_STATES = 1260, NT_OFFSET = 140, SCOPE_UBOUND = 321, SCOPE_SIZE = 322, - LA_STATE_OFFSET = 18382, + LA_STATE_OFFSET = 18429, MAX_LA = 1, - NUM_RULES = 950, + NUM_RULES = 952, NUM_TERMINALS = 140, - NUM_NON_TERMINALS = 436, - NUM_SYMBOLS = 576, - START_STATE = 1355, - EOFT_SYMBOL = 39, - EOLT_SYMBOL = 39, - ACCEPT_ACTION = 18381, - ERROR_ACTION = 18382; + NUM_NON_TERMINALS = 437, + NUM_SYMBOLS = 577, + START_STATE = 1152, + EOFT_SYMBOL = 38, + EOLT_SYMBOL = 38, + ACCEPT_ACTION = 18428, + ERROR_ACTION = 18429; } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/RecoveredType.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/RecoveredType.java index 53b71040f8..47eaa52204 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/RecoveredType.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/RecoveredType.java @@ -802,7 +802,7 @@ public RecoveredElement updateOnOpeningBrace(int braceStart, int braceEnd){ case -1 : case TokenNameextends : case TokenNameimplements : - case TokenNamepermits: + case TokenNameRestrictedIdentifierpermits: case TokenNameGREATER : case TokenNameRIGHT_SHIFT : case TokenNameUNSIGNED_RIGHT_SHIFT : diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Scanner.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Scanner.java index 01ca57558b..b7890367c0 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Scanner.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Scanner.java @@ -17,11 +17,7 @@ import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.function.Predicate; - import org.eclipse.jdt.core.compiler.CharOperation; import org.eclipse.jdt.core.compiler.InvalidInputException; import org.eclipse.jdt.internal.compiler.CompilationResult; @@ -210,9 +206,6 @@ enum ScanContext { // text block support - 13 protected int textBlockOffset = -1; - //Java 15 - first _ keyword appears - Map _Keywords = null; - private final CharDeduplication deduplication = CharDeduplication.getThreadLocalInstance(); public Scanner() { @@ -3438,10 +3431,28 @@ else if ((data[index] == 'o') case 3 : if ((data[++index] == 'e') && (data[++index] == 'w')) return TokenNamenew; - else { - int token = checkFor_KeyWord(index - 1, length, data); - return token != TokenNameNotAToken ? token : TokenNameIdentifier; - } + else if (data == this.source && (data.length >= index + 10) // "non-sealed".length(); not handling unicode as of now in non-sealed + && (data[index] == 'o') + && (data[++index] == 'n') + && (data[++index] == '-') + && (data[++index] == 's') + && (data[++index] == 'e') + && (data[++index] == 'a') + && (data[++index] == 'l') + && (data[++index] == 'e') + && (data[++index] == 'd') + && !ScannerHelper.isJavaIdentifierPart(data[++index])) { + this.currentPosition += 7; + int t = disambiguatesRestrictedIdentifierWithLookAhead(TokenNamenon_sealed); + if (t == TokenNamenon_sealed) { + return TokenNamenon_sealed; + } else { + this.currentPosition -= 7; + return TokenNameIdentifier; + } + + } else + return TokenNameIdentifier; case 4 : if ((data[++index] == 'u') && (data[++index] == 'l') && (data[++index] == 'l')) return TokenNamenull; @@ -3514,9 +3525,9 @@ else if ((data[index] == 'o') && (data[++index] == 'i') && (data[++index] == 't') && (data[++index] == 's')) { - return disambiguatedToken(TokenNamepermits, this); + return disambiguatesRestrictedIdentifierWithLookAhead(TokenNameRestrictedIdentifierpermits); } else - return TokenNameIdentifier; + return TokenNameIdentifier; } case 8 : if (areRestrictedModuleKeywordsActive() @@ -3616,7 +3627,7 @@ else if ((data[index] == 'c') && (data[++index] == 'l') && (data[++index] == 'e') && (data[++index] == 'd')) { - return disambiguatedRestrictedIdentifiersealed(TokenNameRestrictedIdentifiersealed); + return disambiguatesRestrictedIdentifierWithLookAhead(TokenNameRestrictedIdentifiersealed); } else return TokenNameIdentifier; case 8 : @@ -3799,25 +3810,6 @@ else if ((data[++index] == 'h') } } - -private int checkFor_KeyWord(int index, int length, char[] data) { - if (this._Keywords == null) { - this._Keywords = new HashMap<>(0); - if (JavaFeature.RECORDS.isSupported(this.complianceLevel, this.previewEnabled)) { - this._Keywords.put("non-sealed", TerminalTokens.TokenNamenon_sealed); //$NON-NLS-1$ - } - } - for (String key : this._Keywords.keySet()) { - if (CharOperation.prefixEquals(key.toCharArray(), data, true /* isCaseSensitive */, index)) { - this.currentPosition = this.currentPosition - length + key.length(); - if (this.currentPosition < this.eofPosition) - this.currentCharacter = data[this.currentPosition]; - return this._Keywords.get(key); - } - } - return TokenNameNotAToken; -} - public int scanNumber(boolean dotPrefix) throws InvalidInputException { //when entering this method the currentCharacter is the first @@ -4285,7 +4277,7 @@ public String toStringAction(int act) { return "null"; //$NON-NLS-1$ case TokenNamepackage : return "package"; //$NON-NLS-1$ - case TokenNamepermits: + case TokenNameRestrictedIdentifierpermits: return "permits"; //$NON-NLS-1$ case TokenNameprivate : return "private"; //$NON-NLS-1$ @@ -4527,7 +4519,6 @@ public static boolean isKeyword(int token) { case TerminalTokens.TokenNameinstanceof: case TerminalTokens.TokenNamelong: case TerminalTokens.TokenNamenew: - case TerminalTokens.TokenNamenon_sealed: case TerminalTokens.TokenNamenull: case TerminalTokens.TokenNamenative: case TerminalTokens.TokenNamepublic: @@ -4554,8 +4545,9 @@ public static boolean isKeyword(int token) { case TerminalTokens.TokenNameRestrictedIdentifierYield: case TerminalTokens.TokenNameRestrictedIdentifierrecord: case TerminalTokens.TokenNameRestrictedIdentifiersealed: - case TerminalTokens.TokenNamepermits: + case TerminalTokens.TokenNameRestrictedIdentifierpermits: case TerminalTokens.TokenNameRestrictedIdentifierWhen: + case TerminalTokens.TokenNamenon_sealed: // making explicit - not a (restricted) keyword but restricted identifier. //$FALL-THROUGH$ default: @@ -4623,7 +4615,8 @@ private static class Goal { static int BlockStatementoptRule = 0; static int YieldStatementRule = 0; static int SwitchLabelCaseLhsRule = 0; - static int[] RestrictedIdentifierSealedRule; + static int[] ModifiersoptRules; + static int PermittedTypesRule; static int[] PatternRules; static Goal LambdaParameterListGoal; @@ -4633,16 +4626,18 @@ private static class Goal { static Goal BlockStatementoptGoal; static Goal YieldStatementGoal; static Goal SwitchLabelCaseLhsGoal; - static Goal RestrictedIdentifierSealedGoal; + static Goal SealedModifierGoal; + static Goal PermittedTypesGoal; static Goal PatternGoal; - static int[] RestrictedIdentifierSealedFollow = { TokenNameclass, TokenNameinterface, + static int[] SealedModifierFollow = { TokenNameclass, TokenNameinterface, TokenNameenum, TokenNameRestrictedIdentifierrecord };// Note: enum/record allowed as error flagging rules. + static int[] PermittedTypesFollow = { TokenNameLBRACE }; static int[] PatternCaseLabelFollow = {TokenNameCOLON, TokenNameARROW, TokenNameCOMMA, TokenNameBeginCaseExpr, TokenNameRestrictedIdentifierWhen}; static { - List ridSealed = new ArrayList<>(2); + List modifiersOptStates = new ArrayList<>(2); List patternStates = new ArrayList<>(); for (int i = 1; i <= ParserBasicInformation.NUM_RULES; i++) { // 0 == $acc // TODO: Change to switch @@ -4665,7 +4660,10 @@ private static class Goal { YieldStatementRule = i; else if ("Modifiersopt".equals(Parser.name[Parser.non_terminal_index[Parser.lhs[i]]])) //$NON-NLS-1$ - ridSealed.add(i); + modifiersOptStates.add(i); + else + if ("PermittedTypes".equals(Parser.name[Parser.non_terminal_index[Parser.lhs[i]]])) //$NON-NLS-1$ + PermittedTypesRule = i; else if ("SwitchLabelCaseLhs".equals(Parser.name[Parser.non_terminal_index[Parser.lhs[i]]])) //$NON-NLS-1$ SwitchLabelCaseLhsRule = i; @@ -4676,13 +4674,10 @@ private static class Goal { if ("Pattern".equals(Parser.name[Parser.non_terminal_index[Parser.lhs[i]]])) //$NON-NLS-1$ patternStates.add(i); else - if ("ParenthesizedPattern".equals(Parser.name[Parser.non_terminal_index[Parser.lhs[i]]])) //$NON-NLS-1$ - patternStates.add(i); - else if ("RecordPattern".equals(Parser.name[Parser.non_terminal_index[Parser.lhs[i]]])) //$NON-NLS-1$ patternStates.add(i); } - RestrictedIdentifierSealedRule = ridSealed.stream().mapToInt(Integer :: intValue).toArray(); // overkill but future-proof + ModifiersoptRules = modifiersOptStates.stream().mapToInt(Integer :: intValue).toArray(); // overkill but future-proof PatternRules = patternStates.stream().mapToInt(Integer :: intValue).toArray(); LambdaParameterListGoal = new Goal(TokenNameARROW, new int[] { TokenNameARROW }, LambdaParameterListRule); @@ -4692,7 +4687,8 @@ private static class Goal { BlockStatementoptGoal = new Goal(TokenNameLBRACE, new int [0], BlockStatementoptRule); YieldStatementGoal = new Goal(TokenNameARROW, new int [0], YieldStatementRule); SwitchLabelCaseLhsGoal = new Goal(TokenNameARROW, new int [0], SwitchLabelCaseLhsRule); - RestrictedIdentifierSealedGoal = new Goal(TokenNameRestrictedIdentifiersealed, RestrictedIdentifierSealedFollow, RestrictedIdentifierSealedRule); + SealedModifierGoal = new Goal(TokenNameRestrictedIdentifiersealed, SealedModifierFollow, ModifiersoptRules); + PermittedTypesGoal = new Goal(TokenNameRestrictedIdentifierpermits, PermittedTypesFollow, PermittedTypesRule); PatternGoal = new Goal(TokenNameBeginCaseElement, PatternCaseLabelFollow, PatternRules); } @@ -4952,7 +4948,7 @@ protected final boolean maybeAtReferenceExpression() { // Did the '<' we saw jus case TokenNamesuper: // ? super Context case TokenNameAND: // T extends Object & Comparable case TokenNameimplements: // class A implements I - case TokenNamepermits: // class A permits I + case TokenNameRestrictedIdentifierpermits: // class A permits I case TokenNamethrows: // throws Y case TokenNameAT: // @Deprecated void foo() {} case TokenNameinstanceof: // if (o instanceof List[]) @@ -4978,7 +4974,7 @@ private final boolean maybeAtEllipsisAnnotationsStart() { // Did the '@' we saw case TokenNameextends: case TokenNamesuper: case TokenNameimplements: - case TokenNamepermits: + case TokenNameRestrictedIdentifierpermits: case TokenNameDOT: case TokenNameLBRACE: case TokenNameinstanceof: @@ -5040,17 +5036,6 @@ private boolean mayBeAtAnYieldStatement() { return false; } } -private boolean mayBeAtASealedRestricedIdentifier(int restrictedIdentifier) { - if (isInModuleDeclaration()) - return false; - switch (restrictedIdentifier) { - case TokenNameRestrictedIdentifiersealed: - break; - case TokenNamepermits: - break; - } - return true; -} int disambiguatedRestrictedIdentifierrecord(int restrictedIdentifierToken) { // and here's the kludge if (restrictedIdentifierToken != TokenNameRestrictedIdentifierrecord) @@ -5182,13 +5167,6 @@ private boolean disambiguateYieldWithLookAhead() { } return false; // IIE event; } -int disambiguatedRestrictedIdentifiersealed(int restrictedIdentifierToken) { - if (!JavaFeature.RECORDS.isSupported(this.complianceLevel, this.previewEnabled)) - return TokenNameIdentifier; - - return disambiguatesRestrictedIdentifierWithLookAhead(this::mayBeAtASealedRestricedIdentifier, - restrictedIdentifierToken, Goal.RestrictedIdentifierSealedGoal); -} int disambiguatedRestrictedIdentifierWhen(int restrictedIdentifierToken) { // and here's the kludge if (restrictedIdentifierToken != TokenNameRestrictedIdentifierWhen) @@ -5243,14 +5221,34 @@ int disambiguatedRestrictedKeyword(int restrictedKeywordToken) { } return token; } -int disambiguatesRestrictedIdentifierWithLookAhead(Predicate checkPrecondition, int restrictedIdentifierToken, Goal goal) { - if (checkPrecondition.test(restrictedIdentifierToken)) { - VanguardParser vp = getNewVanguardParser(); - VanguardScanner vs = (VanguardScanner) vp.scanner; - vs.resetTo(this.currentPosition, this.eofPosition - 1); - if (vp.parse(goal) == VanguardParser.SUCCESS) - return restrictedIdentifierToken; +// TODO: Centralize all non-module contextual keyword recognition here. ATM, we handle sealed type related tokens. +int disambiguatesRestrictedIdentifierWithLookAhead(int restrictedIdentifierToken) { + if (isInModuleDeclaration()) + return TokenNameIdentifier; + + Goal goal; + switch (restrictedIdentifierToken) { + case TokenNameRestrictedIdentifiersealed: + case TokenNamenon_sealed: + if (this.sourceLevel < ClassFileConstants.JDK17) + return TokenNameIdentifier; + goal = Goal.SealedModifierGoal; + break; + case TokenNameRestrictedIdentifierpermits: + if (this.sourceLevel < ClassFileConstants.JDK17) + return TokenNameIdentifier; + goal = Goal.PermittedTypesGoal; + break; + default: + throw new UnsupportedOperationException("Unhandled contextual keyword"); //$NON-NLS-1$ } + + VanguardParser vp = getNewVanguardParser(); + VanguardScanner vs = (VanguardScanner) vp.scanner; + vs.resetTo(this.currentPosition, this.eofPosition - 1); + if (vp.parse(goal) == VanguardParser.SUCCESS) + return restrictedIdentifierToken; + return TokenNameIdentifier; } @@ -5267,12 +5265,6 @@ private VanguardParser getNewVanguardParser(char[] src) { return vp; } int disambiguatedToken(int token, Scanner scanner) { - if (token == TokenNamepermits) { - if (scanner.sourceLevel < ClassFileConstants.JDK17) - return TokenNameIdentifier; - return scanner.activeParser == null || !scanner.activeParser.automatonWillShift(TokenNamepermits) ? - TokenNameIdentifier : TokenNamepermits; - } final VanguardParser parser = getVanguardParser(); parser.scanner.caseStartPosition = this.caseStartPosition; if (token == TokenNameARROW && mayBeAtCaseLabelExpr() && scanner.caseStartPosition < scanner.startPosition) { diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java index 873c26e3c6..8ad60c546b 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java @@ -41,7 +41,7 @@ public interface TerminalTokens { static boolean isRestrictedKeyword(int tokenType) { return switch (tokenType) { case TokenNameRestrictedIdentifierYield, TokenNameRestrictedIdentifierrecord,TokenNameRestrictedIdentifierWhen, - TokenNameRestrictedIdentifiersealed, TokenNamepermits -> true; + TokenNameRestrictedIdentifiersealed, TokenNameRestrictedIdentifierpermits -> true; default -> false; }; } @@ -65,7 +65,7 @@ static int getRestrictedKeyword(String text) { case "record" -> TokenNameRestrictedIdentifierrecord; //$NON-NLS-1$ case "when" -> TokenNameRestrictedIdentifierWhen; //$NON-NLS-1$ case "sealed" -> TokenNameRestrictedIdentifiersealed; //$NON-NLS-1$ - case "permits" -> TokenNamepermits; //$NON-NLS-1$ + case "permits" -> TokenNameRestrictedIdentifierpermits; //$NON-NLS-1$ default -> TokenNameNotAToken; }; } @@ -96,7 +96,7 @@ static int getRestrictedKeyword(String text) { TokenNamefor = 86, TokenNamegoto = 139, TokenNameif = 87, - TokenNameimplements = 134, + TokenNameimplements = 135, TokenNameimport = 112, TokenNameinstanceof = 16, TokenNameint = 113, @@ -107,13 +107,12 @@ static int getRestrictedKeyword(String text) { TokenNamenon_sealed = 47, TokenNamenull = 57, TokenNamepackage = 91, - TokenNamepermits = 135, TokenNameprivate = 48, TokenNameprotected = 49, TokenNamepublic = 50, TokenNamereturn = 88, TokenNameshort = 115, - TokenNamestatic = 38, + TokenNamestatic = 39, TokenNamestrictfp = 51, TokenNamesuper = 36, TokenNameswitch = 65, @@ -206,9 +205,10 @@ static int getRestrictedKeyword(String text) { TokenNameRestrictedIdentifierYield = 81, TokenNameRestrictedIdentifierrecord = 76, TokenNameRestrictedIdentifiersealed = 43, - TokenNameBeginCaseElement = 132, - TokenNameRestrictedIdentifierWhen = 133, + TokenNameRestrictedIdentifierpermits = 132, + TokenNameBeginCaseElement = 133, + TokenNameRestrictedIdentifierWhen = 134, TokenNameUNDERSCORE = 34, - TokenNameEOF = 39, + TokenNameEOF = 38, TokenNameERROR = 140; } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser1.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser1.rsc index 488e5c49da..e0520a21e6 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser1.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser1.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser12.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser12.rsc index dcf2b956bd..16ba8b1ec0 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser12.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser12.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser13.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser13.rsc index ab94afa65d..fec07da768 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser13.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser13.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser14.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser14.rsc index 29be4c19d8..66a5fc9329 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser14.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser14.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser15.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser15.rsc index ba06fabfd5..4d558e975f 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser15.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser15.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser16.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser16.rsc index cf8793484e..03024b8184 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser16.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser16.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser17.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser17.rsc index b40ed9f6e7..1a38c6777b 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser17.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser17.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser18.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser18.rsc index f87356dff8..654483f000 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser18.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser18.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser2.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser2.rsc index 501e8ea6c5..5b78521516 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser2.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser2.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser20.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser20.rsc index ddeaf7ba4f..f652854a56 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser20.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser20.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser21.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser21.rsc index 9ea8f63a37..0f81c43b68 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser21.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser21.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser22.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser22.rsc index 9363097375..64c2e4f8f2 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser22.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser22.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser24.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser24.rsc index 1ed4446783..5897198c95 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser24.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser24.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser3.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser3.rsc index 1d20469b86..f6ce29f91c 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser3.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser3.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser4.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser4.rsc index 43f347c76c..dd0fd2c966 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser4.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser4.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser5.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser5.rsc index e8471dc994..b6499b694c 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser5.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser5.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser6.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser6.rsc index 7e6d464e5e..b12275a7b1 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser6.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser6.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser7.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser7.rsc index 8d410cb4a2..b8fd6abcf7 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser7.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser7.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser8.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser8.rsc index 94f3142dc6..a4e5feec4c 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser8.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser8.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser9.rsc b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser9.rsc index 290ebcc6f4..eef061fe43 100644 Binary files a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser9.rsc and b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/parser9.rsc differ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/readableNames.props b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/readableNames.props index 6f22bbbaec..d560d0b0da 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/readableNames.props +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/readableNames.props @@ -250,7 +250,8 @@ PackageDeclarationName=PackageDeclarationName ParenthesizedCastNameAndBounds=ParenthesizedCastNameAndBounds ParenthesizedLambdaParameterList=ParenthesizedLambdaParameterList Pattern=Pattern -PermittedTypesopt=PermittedTypes +PermittedTypes=PermittedTypes +PermittedTypesopt=PermittedTypesopt PostDecrementExpression=PostDecrementExpression PostIncrementExpression=PostIncrementExpression PostfixExpression=Expression diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java index 8bcb357407..8f94e52492 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java @@ -915,6 +915,16 @@ public void abortDueToPreviewEnablingNotAllowed(String sourceLevel, String expec 0, 0); } +public void abortDueToNotSupportedJavaVersion(String notSupportedVersion, String firstSupportedVersion) { + String[] args = new String[] {notSupportedVersion, firstSupportedVersion}; + this.handle( + IProblem.JavaVersionNotSupported, + args, + args, + ProblemSeverities.Error | ProblemSeverities.Abort | ProblemSeverities.Fatal, + 0, + 0); +} public void abstractMethodCannotBeOverridden(SourceTypeBinding type, MethodBinding concreteMethod) { this.handle( @@ -1359,7 +1369,6 @@ public void operandStackSizeInappropriate(ASTNode location) { ProblemSeverities.Warning, location.sourceStart, location.sourceEnd); - throw new AssertionError("Anomalous/Inconsistent operand stack!"); //$NON-NLS-1$ } public void bytecodeExceeds64KLimit(LambdaExpression location) { bytecodeExceeds64KLimit(location.binding, location.sourceStart, location.diagnosticsSourceEnd()); @@ -4206,6 +4215,10 @@ public void invalidConstructor(Statement statement, MethodBinding targetConstruc problemConstructor = (ProblemMethodBinding) targetConstructor; contradictoryNullAnnotationsInferred(problemConstructor.closestMatch, statement); return; + case ProblemReasons.MissingTypeInSignature: + problemConstructor = (ProblemMethodBinding) targetConstructor; + missingTypeInConstructor(statement, problemConstructor.closestMatch); + return; case ProblemReasons.NoError : // 0 default : needImplementation(statement); // want to fail to see why we were here... @@ -4835,6 +4848,10 @@ public void invalidMethod(MessageSend messageSend, MethodBinding method, Scope s problemMethod = (ProblemMethodBinding) method; contradictoryNullAnnotationsInferred(problemMethod.closestMatch, messageSend); return; + case ProblemReasons.MissingTypeInSignature: + problemMethod = (ProblemMethodBinding) method; + missingTypeInMethod(messageSend, problemMethod.closestMatch); + return; case ProblemReasons.NoError : // 0 default : needImplementation(messageSend); // want to fail to see why we were here... @@ -5271,7 +5288,7 @@ private boolean isRestrictedIdentifier(int token) { case TerminalTokens.TokenNameRestrictedIdentifierYield: case TerminalTokens.TokenNameRestrictedIdentifierrecord: case TerminalTokens.TokenNameRestrictedIdentifiersealed: - case TerminalTokens.TokenNamepermits: + case TerminalTokens.TokenNameRestrictedIdentifierpermits: case TerminalTokens.TokenNameRestrictedIdentifierWhen: return true; default: return false; @@ -5334,7 +5351,7 @@ private boolean isKeyword(int token) { case TerminalTokens.TokenNameRestrictedIdentifierYield: case TerminalTokens.TokenNameRestrictedIdentifierrecord: case TerminalTokens.TokenNameRestrictedIdentifiersealed: - case TerminalTokens.TokenNamepermits: + case TerminalTokens.TokenNameRestrictedIdentifierpermits: case TerminalTokens.TokenNameRestrictedIdentifierWhen: // making explicit - not a (restricted) keyword but restricted identifier. //$FALL-THROUGH$ @@ -7009,7 +7026,7 @@ public void missingSynchronizedOnInheritedMethod(MethodBinding currentMethod, Me currentMethod.sourceEnd()); } public void missingTypeInConstructor(ASTNode location, MethodBinding constructor) { - List missingTypes = constructor.collectMissingTypes(null); + List missingTypes = constructor.collectMissingTypes(null, true); if (missingTypes == null) { System.err.println("The constructor " + constructor + " is wrongly tagged as containing missing types"); //$NON-NLS-1$ //$NON-NLS-2$ return; @@ -7042,7 +7059,7 @@ public void missingTypeInConstructor(ASTNode location, MethodBinding constructor public void missingTypeInLambda(LambdaExpression lambda, MethodBinding method) { int nameSourceStart = lambda.sourceStart(); int nameSourceEnd = lambda.diagnosticsSourceEnd(); - List missingTypes = method.collectMissingTypes(null); + List missingTypes = method.collectMissingTypes(null, true); if (missingTypes == null) { System.err.println("The lambda expression " + method + " is wrongly tagged as containing missing types"); //$NON-NLS-1$ //$NON-NLS-2$ return; @@ -7069,7 +7086,7 @@ public void missingTypeInMethod(ASTNode astNode, MethodBinding method) { nameSourceStart = astNode.sourceStart; nameSourceEnd = astNode.sourceEnd; } - List missingTypes = method.collectMissingTypes(null); + List missingTypes = method.collectMissingTypes(null, true); if (missingTypes == null) { System.err.println("The method " + method + " is wrongly tagged as containing missing types"); //$NON-NLS-1$ //$NON-NLS-2$ return; diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/messages.properties b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/messages.properties index 11ec07df00..2d7c5b4160 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/messages.properties +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/messages.properties @@ -905,6 +905,7 @@ 1106 = Preview features enabled at an invalid source release level {0}, preview can be enabled only at source level {1} 1107 = The Java feature ''{0}'' is only available with source level {1} and above 1108 = You are using an API that is part of a preview feature and may be removed in future +1109 = Compiling for Java version ''{0}'' is no longer supported. Minimal supported version is ''{1}'' # more programming problems: 1200 = Unlikely argument type {0} for {1} on a {2} 1201 = Unlikely argument type for equals(): {0} seems to be unrelated to {2} diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/tool/EclipseCompiler.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/tool/EclipseCompiler.java index aeeede4718..c6c4c40f32 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/tool/EclipseCompiler.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/tool/EclipseCompiler.java @@ -248,4 +248,9 @@ public int run(InputStream in, OutputStream out, OutputStream err, String... arg null/* progress */).compile(arguments); return succeed ? 0 : -1; } + + @Override + public String name() { + return "ecj"; //$NON-NLS-1$ + } } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/tool/EclipseFileManager.java b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/tool/EclipseFileManager.java index f5f8f43989..765dbb9825 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/tool/EclipseFileManager.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/tool/EclipseFileManager.java @@ -811,6 +811,7 @@ public boolean handleOption(String current, Iterator remaining) { } case "-extdirs": //$NON-NLS-1$ if (this.isOnJvm9) { + // XXX this should check -target == 8, not the running JVM version! throw new IllegalArgumentException(); } if (remaining.hasNext()) { diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/AbstractMethodTests.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/AbstractMethodTests.java index 2610aa75d8..8b9ae5ba9c 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/AbstractMethodTests.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/AbstractMethodTests.java @@ -25,7 +25,6 @@ import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IRegion; @@ -37,6 +36,7 @@ import org.eclipse.jdt.core.tests.util.Util; import org.eclipse.jdt.core.util.IClassFileReader; import org.eclipse.jdt.core.util.IMethodInfo; +import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; @SuppressWarnings({"rawtypes", "unchecked"}) public class AbstractMethodTests extends BuilderTests { @@ -163,7 +163,7 @@ public void test002() throws JavaModelException { //---------------------------- IPath project1Path = env.addProject("Project1"); //$NON-NLS-1$ env.addExternalJars(project1Path, Util.getJavaClassLibs()); - env.getJavaProject(project1Path).setOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, JavaCore.VERSION_1_1); // need default abstract method + env.getJavaProject(project1Path).setOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, CompilerOptions.getFirstSupportedJavaVersion()); // need default abstract method // remove old package fragment root so that names don't collide env.removePackageFragmentRoot(project1Path, ""); //$NON-NLS-1$ @@ -241,7 +241,7 @@ public void test002() throws JavaModelException { /** * Check behavior in 1.1 target mode (generated default abstract method) */ - public void test003() throws JavaModelException { + public void test003() throws Exception { //---------------------------- // Step 1 //---------------------------- @@ -250,7 +250,7 @@ public void test003() throws JavaModelException { //---------------------------- IPath project1Path = env.addProject("Project1"); //$NON-NLS-1$ env.addExternalJars(project1Path, Util.getJavaClassLibs()); - env.getJavaProject(project1Path).setOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, JavaCore.VERSION_1_1); // need default abstract method + env.getJavaProject(project1Path).setOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, CompilerOptions.getFirstSupportedJavaVersion()); // need default abstract method // remove old package fragment root so that names don't collide env.removePackageFragmentRoot(project1Path, ""); //$NON-NLS-1$ @@ -292,8 +292,6 @@ public void test003() throws JavaModelException { try { stream = classFile.getContents(); classFileReader = ToolFactory.createDefaultClassFileReader(stream, IClassFileReader.ALL); - } catch (CoreException e) { - e.printStackTrace(); } finally { if (stream != null) { try { @@ -313,8 +311,7 @@ public void test003() throws JavaModelException { break loop; } } - assertNotNull("No method found", found); - assertTrue("Not a synthetic method", found.isSynthetic()); + assertNull("Should not find a 'foo' method", found); } private String getResourceOuput(IResource[] resources) { diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/AnnotationDependencyTests.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/AnnotationDependencyTests.java index 00d77894b7..83fb8ea450 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/AnnotationDependencyTests.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/AnnotationDependencyTests.java @@ -31,6 +31,7 @@ import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.compiler.CategorizedProblem; import org.eclipse.jdt.core.tests.util.Util; +import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; import org.osgi.framework.Bundle; /** @@ -52,7 +53,7 @@ public static Test suite() { public void setUp() throws Exception { super.setUp(); - this.projectPath = env.addProject("Project", "1.5"); //$NON-NLS-1$ + this.projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ env.addExternalJars(this.projectPath, Util.getJavaClassLibs()); // remove old package fragment root so that names don't collide diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BasicBuildTests.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BasicBuildTests.java index 4763658af8..031337dc67 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BasicBuildTests.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BasicBuildTests.java @@ -58,6 +58,7 @@ import org.eclipse.jdt.core.tests.util.Util; import org.eclipse.jdt.internal.compiler.Compiler; import org.eclipse.jdt.internal.compiler.CompilerConfiguration; +import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; import org.eclipse.jdt.internal.core.JavaModelManager; import org.eclipse.jdt.internal.core.builder.AbstractImageBuilder; import org.osgi.framework.Bundle; @@ -646,7 +647,7 @@ public void testbBug386901() throws JavaModelException { } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=425420 public void testBug425420() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); //$NON-NLS-1$ + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ // don't env.addExternalJars(projectPath, Util.getJavaClassLibs()); // remove old package fragment root so that names don't collide diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/Bug549457Test.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/Bug549457Test.java index b54e0531d3..2f3b1c1e7a 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/Bug549457Test.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/Bug549457Test.java @@ -49,7 +49,7 @@ public static Test suite() { protected void setUp() throws Exception { super.setUp(); - this.project = env.addProject("Bug549457Test"); + this.project = env.addProject("Bug549457Test", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(this.project, Util.getJavaClassLibs()); env.removePackageFragmentRoot(this.project, ""); @@ -78,17 +78,23 @@ public void testBug549457() throws Exception { IFolder srcPackageFolder = env.getWorkspace().getRoot().getFolder(this.srcPackage); assertTrue("package in source must exist", srcPackageFolder.exists()); - env.addClass(this.src, "p", "X", "package p;\n public interface X { default void foo() { /* cause an error with Java 7 */ } }"); + env.addClass(this.src, "p", "A", "package p;\n sealed class A permits B {}; final class B extends A {}"); fullBuild(this.project); - // For this test, the default is not Java 8. If this changes, we can expect no problems here. The test cares only that the source was compiled. - expectCompileProblem(this.project, "Default methods are allowed only at source level 1.8 or above"); + // For this test, the default is not Java 17. If this changes, we can expect no problems here. The test cares only that the source was compiled. + String firstSupportedJavaVersion = CompilerOptions.getFirstSupportedJavaVersion(); + String expectedProblemMessage = "'permits' is not a valid type name; it is a restricted identifier and not allowed as a type identifier in Java " + + firstSupportedJavaVersion + "," + + " Syntax error on token \"permits\", extends expected," + + " Syntax error on token \"sealed\", invalid Modifiers"; + expectCompileProblem(this.project, expectedProblemMessage); IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot(); IProject testProject = workspaceRoot.getProject("Bug549457Test"); IJavaProject javaProject = JavaCore.create(testProject); - javaProject.setOption(CompilerOptions.OPTION_Compliance, "1.8"); - javaProject.setOption(CompilerOptions.OPTION_Source, "1.8"); + javaProject.setOption(CompilerOptions.OPTION_Compliance, CompilerOptions.getLatestVersion()); + javaProject.setOption(CompilerOptions.OPTION_Source, CompilerOptions.getLatestVersion()); + javaProject.setOption(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.getLatestVersion()); testProject.refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor()); waitForAutoBuild(); fullBuild(this.project); @@ -96,15 +102,16 @@ public void testBug549457() throws Exception { String jdtCorePreferencesFile = JavaProject.DEFAULT_PREFERENCES_DIRNAME + IPath.SEPARATOR + JavaProject.JAVA_CORE_PREFS_FILE; IFile settingsFile = testProject.getFile(jdtCorePreferencesFile); - assertTrue("expected \"" + jdtCorePreferencesFile + "\" to exist after setting compiler compliance to Java 1.7", settingsFile.exists()); + assertTrue("expected \"" + jdtCorePreferencesFile + "\" to exist after setting compiler compliance to Java " + firstSupportedJavaVersion, settingsFile.exists()); String newContents = String.join( - CompilerOptions.OPTION_Compliance + "=1.7", - CompilerOptions.OPTION_Source + "=1.7"); + CompilerOptions.OPTION_Compliance + "=" + firstSupportedJavaVersion + "\n", + CompilerOptions.OPTION_Source + "=" + firstSupportedJavaVersion + "\n", + CompilerOptions.OPTION_TargetPlatform + "=" + firstSupportedJavaVersion + "\n"); settingsFile.setContents(newContents.getBytes(), IResource.FORCE, new NullProgressMonitor()); waitForAutoBuild(); - expectCompileProblem(this.project, "Default methods are allowed only at source level 1.8 or above"); + expectCompileProblem(this.project, expectedProblemMessage); } private void waitForAutoBuild() throws InterruptedException { diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuilderTests.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuilderTests.java index eceb87cca6..4bd8a4c557 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuilderTests.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuilderTests.java @@ -35,6 +35,7 @@ import org.eclipse.jdt.core.tests.util.TestVerifier; import org.eclipse.jdt.core.tests.util.Util; import org.eclipse.jdt.internal.compiler.Compiler; +import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; import junit.framework.Test; import junit.framework.TestSuite; @@ -546,17 +547,13 @@ private static Class[] getAllTestClasses() { Bug561287Test.class, Bug562420Test.class, LeakTestsBefore9.class, + Java50Tests.class, + PackageInfoTest.class, + ParticipantBuildTests.class, + AnnotationDependencyTests.class, + Bug544921Test.class }; List> list = new ArrayList<>(Arrays.asList(classes)); - if (matchesCompliance(F_1_5)) { - list.add(Java50Tests.class); - list.add(PackageInfoTest.class); - list.add(ParticipantBuildTests.class); - list.add(AnnotationDependencyTests.class); - } - if (matchesCompliance(F_1_8)) { - list.add(Bug544921Test.class); - } if (matchesCompliance(F_9)) { list.add(LeakTestsAfter9.class); list.add(Bug549646Test.class); @@ -628,7 +625,7 @@ public static Test suite() { static IPath addEmptyInternalJar(IPath projectPath, String jarName) throws IOException, JavaModelException { IProject project = env.getProject(projectPath); String jarFile = project.getLocation().append(jarName).toOSString(); - Util.createEmptyJar(jarFile, JavaCore.VERSION_1_4); + Util.createEmptyJar(jarFile, CompilerOptions.getFirstSupportedJavaVersion()); IPath jarPath = null; try (FileInputStream fis = new FileInputStream(jarFile)) { int length = fis.available(); @@ -650,7 +647,7 @@ protected static void expectCompileProblem(IPath project, String expectedProblem List expectedProblemMessages = Arrays.asList(expectedProblemMessage); assertEquals("expected compile problem not observed", - expectedProblemMessages, actualProblemMessages); + expectedProblemMessages.toString(), actualProblemMessages.toString()); } protected static void expectNoCompileProblems(IPath project) { @@ -664,6 +661,6 @@ protected static void expectNoCompileProblems(IPath project) { List expectedProblemMessages = Collections.EMPTY_LIST; assertEquals("expected no compile problems", - expectedProblemMessages, actualProblemMessages); + expectedProblemMessages.toString(), actualProblemMessages.toString()); } } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuilderTests11.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuilderTests11.java index a72ba5afa0..3586462d05 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuilderTests11.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuilderTests11.java @@ -40,16 +40,6 @@ public void testBuildWithRelease_1_8() throws JavaModelException, Exception { runTest(compliance); } - public void testBuildWithRelease_1_7() throws JavaModelException, Exception { - String compliance = "1.7"; - runTest(compliance); - } - - public void testBuildWithRelease_1_6() throws JavaModelException, Exception { - String compliance = "1.6"; - runTest(compliance); - } - // TODO: this test fails in 4.25 M1, probably also before. // Cannot find the class file for java.lang.Object public void XtestBuilderWithRelease_9() throws JavaModelException, Exception { diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuildpathTests.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuildpathTests.java index e5192c4782..69fcced568 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuildpathTests.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/BuildpathTests.java @@ -34,7 +34,6 @@ import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.compiler.CategorizedProblem; -import org.eclipse.jdt.core.tests.util.AbstractCompilerTest; import org.eclipse.jdt.core.tests.util.Util; import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; import org.eclipse.jdt.internal.core.JavaModel; @@ -368,7 +367,7 @@ public void testChangeZIPArchive1() throws Exception { "}" }, externalLib, - "1.4"); + CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.addExternalJars(projectPath, new String[] {externalLib}); @@ -396,7 +395,7 @@ public void testChangeZIPArchive1() throws Exception { "}" }, externalLib, - "1.4"); + CompilerOptions.getFirstSupportedJavaVersion()); IJavaProject p = env.getJavaProject(projectPath); p.getJavaModel().refreshExternalArchives(new IJavaElement[] {p}, null); @@ -429,7 +428,7 @@ public void testChangeZIPArchive2() throws Exception { "}" }, internalLib, - "1.4"); + CompilerOptions.getFirstSupportedJavaVersion()); env.getProject(projectPath).refreshLocal(IResource.DEPTH_INFINITE, null); env.addEntry(projectPath, JavaCore.newLibraryEntry(new Path("/Project/internalLib.abc"), null, null)); @@ -461,7 +460,7 @@ public void testChangeZIPArchive2() throws Exception { "}" }, internalLib, - "1.4"); + CompilerOptions.getFirstSupportedJavaVersion()); env.getProject(projectPath).refreshLocal(IResource.DEPTH_INFINITE, null); @@ -995,11 +994,7 @@ public void testMissingOptionalProject() throws JavaModelException { // https://bugs.eclipse.org/bugs/show_bug.cgi?id=160132 public void test0100() throws JavaModelException { - if (!AbstractCompilerTest.isJRELevel(AbstractCompilerTest.F_1_5)) { - // expected to run only in 1.5 mode on top of a jre 1.5 or above - return; - } - IPath projectPath = env.addProject("P", "1.5"); + IPath projectPath = env.addProject("P", CompilerOptions.getFirstSupportedJavaVersion()); IPath defaultPackagePath = env.addPackage(projectPath, ""); env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.addClass(defaultPackagePath, "X", diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/DependencyTests.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/DependencyTests.java index 8c5354ee83..1afd8bec1f 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/DependencyTests.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/DependencyTests.java @@ -20,11 +20,14 @@ import org.eclipse.core.runtime.IPath; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.compiler.CategorizedProblem; -import org.eclipse.jdt.core.tests.util.AbstractCompilerTest; import org.eclipse.jdt.core.tests.util.Util; +import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; @SuppressWarnings({"rawtypes", "unchecked"}) public class DependencyTests extends BuilderTests { + static { +// TESTS_NAMES = new String[] {"testMissingClassFile"}; + } public DependencyTests(String name) { super(name); } @@ -857,7 +860,7 @@ public void testMethodVisibility() throws JavaModelException { } public void testMissingClassFile() throws JavaModelException { - IPath project1Path = env.addProject("Project1"); //$NON-NLS-1$ + IPath project1Path = env.addProject("Project1", "1.8"); // tolerance of missing types not fully implemented below 1.8 env.addExternalJars(project1Path, Util.getJavaClassLibs()); // remove old package fragment root so that names don't collide @@ -871,7 +874,7 @@ public void testMissingClassFile() throws JavaModelException { "public class MissingClass {}" //$NON-NLS-1$ ); - IPath project2Path = env.addProject("Project2"); //$NON-NLS-1$ + IPath project2Path = env.addProject("Project2", "1.8"); // tolerance of missing types not fully implemented below 1.8 env.addExternalJars(project2Path, Util.getJavaClassLibs()); env.addRequiredProject(project2Path, project1Path); @@ -890,7 +893,7 @@ public void testMissingClassFile() throws JavaModelException { "}\n" //$NON-NLS-1$ ); - IPath project3Path = env.addProject("Project3"); //$NON-NLS-1$ + IPath project3Path = env.addProject("Project3", "1.8"); // tolerance of missing types not fully implemented below 1.8 env.addExternalJars(project3Path, Util.getJavaClassLibs()); env.addRequiredProject(project3Path, project2Path); // missing required Project1 so MissingClass cannot be found @@ -906,19 +909,20 @@ public void testMissingClassFile() throws JavaModelException { "import p2.A;\n" + "public class B {\n"+ //$NON-NLS-1$ " public static void main(String[] args) {\n" + //$NON-NLS-1$ - " new A().foo(new String());\n" + //$NON-NLS-1$ + " new A().foo(new B());\n" + // applicability test would like to see MissingClass + " new A().foo(new String());\n" + // exact match to fully resolved method " }\n" + //$NON-NLS-1$ "}\n" //$NON-NLS-1$ ); fullBuild(); - expectingOnlyProblemsFor(new IPath[] {project3Path, bPath}); - expectingSpecificProblemFor(project3Path, new Problem("Project3", "The project was not built since its build path is incomplete. Cannot find the class file for p1.MissingClass. Fix the build path then try building this project", project3Path, -1, -1, CategorizedProblem.CAT_BUILDPATH, IMarker.SEVERITY_ERROR)); //$NON-NLS-1$ //$NON-NLS-2$ - expectingSpecificProblemFor(bPath, new Problem("B", "The type p1.MissingClass cannot be resolved. It is indirectly referenced from required type p2.A", bPath, 86, 111, CategorizedProblem.CAT_BUILDPATH, IMarker.SEVERITY_ERROR)); //$NON-NLS-1$ //$NON-NLS-2$ + expectingOnlyProblemsFor(new IPath[] {bPath}); + expectingSpecificProblemFor(bPath, new Problem("B", "The method foo(MissingClass) from the type A refers to the missing type MissingClass", bPath, 94, 97, CategorizedProblem.CAT_MEMBER, IMarker.SEVERITY_ERROR)); //$NON-NLS-1$ //$NON-NLS-2$ env.addClass(root2, "p2", "A", //$NON-NLS-1$ //$NON-NLS-2$ "package p2;\n"+ //$NON-NLS-1$ "public class A {\n"+ //$NON-NLS-1$ + " public void foo(Object data) {}\n"+ //$NON-NLS-1$ " public void foo(String data) {}\n"+ //$NON-NLS-1$ "}\n" //$NON-NLS-1$ ); @@ -1145,9 +1149,7 @@ public void testTypeVisibility2() throws JavaModelException { } public void testTypeVariable() throws JavaModelException { - if ((AbstractCompilerTest.getPossibleComplianceLevels() & AbstractCompilerTest.F_1_5) == 0) return; - - IPath projectPath = env.addProject("Project", "1.5"); //$NON-NLS-1$ + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ env.addExternalJars(projectPath, Util.getJavaClassLibs()); // remove old package fragment root so that names don't collide diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/GetResourcesTests.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/GetResourcesTests.java index 9ddf18f728..4d96d4921c 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/GetResourcesTests.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/GetResourcesTests.java @@ -385,176 +385,8 @@ public void test005() throws JavaModelException { "/Project/bin/a/Anon$6.class\n" + "/Project/bin/a/Anon$7.class\n" + "/Project/bin/a/Anon$8.class\n" + - "/Project/bin/a/Anon$9.class\n" + - "/Project/bin/a/Anon$10.class\n" + - "/Project/bin/a/Anon$11.class\n" + - "/Project/bin/a/Anon$12.class\n" + - "/Project/bin/a/Anon$13.class\n" + - "/Project/bin/a/Anon$14.class\n" + - "/Project/bin/a/Anon$15.class\n" + - "/Project/bin/a/Anon$16.class\n" + - "/Project/bin/a/Anon$Anon2.class\n"; - assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput); - env.removeProject(projectPath); - } - - //https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584 - public void test006() throws JavaModelException { - IPath projectPath = null; - try { - projectPath = env.addProject("Project", "1.5"); //$NON-NLS-1$ - } catch (RuntimeException e) { - // no 1.5 VM or above is available - return; - } - env.addExternalJars(projectPath, Util.getJavaClassLibs()); - fullBuild(projectPath); - - // remove old package fragment root so that names don't collide - env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ - - IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ - env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$ - - env.addClass(root, "a", "Anon", //$NON-NLS-1$ //$NON-NLS-2$ - "package a;\n" + - "\n" + - "public class Anon {\n" + - "\n" + - " Anon() {\n" + - " Object o1 = new Object() {\n" + - " public String toString() {\n" + - " return \"1\"; // a/Anon$3 in 1.5, a/Anon$11 in 1.4\n" + - " }\n" + - " };\n" + - " Object o2 = new Object() {\n" + - " public String toString() {\n" + - " return \"2\"; // a/Anon$4 in 1.5, a/Anon$12 in 1.4\n" + - " }\n" + - " };\n" + - " }\n" + - "\n" + - " void hello() {\n" + - " Object o3 = new Object() {\n" + - " public String toString() {\n" + - " return \"3\"; // a/Anon$5 in 1.5, a/Anon$13 in 1.4\n" + - " }\n" + - " };\n" + - " Object o4 = new Object() {\n" + - " public String toString() {\n" + - " return \"4\"; // a/Anon$6 in 1.5, a/Anon$14 in 1.4\n" + - " }\n" + - " };\n" + - " }\n" + - "\n" + - " static void hello2() {\n" + - " Object o5 = new Object() {\n" + - " public String toString() {\n" + - " return \"5\"; // a/Anon$7 in 1.5, a/Anon$15 in 1.4\n" + - " }\n" + - " };\n" + - " Object o6 = new Object() {\n" + - " public String toString() {\n" + - " return \"6\"; // a/Anon$8 in 1.5, a/Anon$16 in 1.4\n" + - " }\n" + - " };\n" + - " }\n" + - "\n" + - " static {\n" + - " Object o7 = new Object() {\n" + - " public String toString() {\n" + - " return \"7\"; // a/Anon$1 in 1.5, a/Anon$1 in 1.4\n" + - " }\n" + - " };\n" + - "\n" + - " Object o8 = new Object() {\n" + - " public String toString() {\n" + - " return \"8\"; // a/Anon$2 in 1.5, a/Anon$2 in 1.4\n" + - " }\n" + - " };\n" + - " }\n" + - "\n" + - " static class Anon2 {\n" + - " // it\'s an object init block which has different prio as constructor!\n" + - " {\n" + - " Object o1 = new Object() {\n" + - " public String toString() {\n" + - " return \"1\"; // a/Anon$Anon2$1 in 1.5, a/Anon$3 in 1.4\n" + - " }\n" + - " };\n" + - " Object o2 = new Object() {\n" + - " public String toString() {\n" + - " return \"2\"; // a/Anon$Anon2$2 in 1.5, a/Anon$4 in 1.4\n" + - " }\n" + - " };\n" + - " }\n" + - "\n" + - " void hello() {\n" + - " Object o3 = new Object() {\n" + - " public String toString() {\n" + - " return \"3\"; // a/Anon$Anon2$5 in 1.5, a/Anon$7 in 1.4\n" + - " }\n" + - " };\n" + - " Object o4 = new Object() {\n" + - " public String toString() {\n" + - " return \"4\"; // a/Anon$Anon2$6 in 1.5, a/Anon$8 in 1.4\n" + - " }\n" + - " };\n" + - " }\n" + - "\n" + - " static void hello2() {\n" + - " Object o5 = new Object() {\n" + - " public String toString() {\n" + - " return \"5\"; // a/Anon$Anon2$7 in 1.5, a/Anon$9 in 1.4\n" + - " }\n" + - " };\n" + - " Object o6 = new Object() {\n" + - " public String toString() {\n" + - " return \"6\"; // a/Anon$Anon2$8 in 1.5, a/Anon$10 in 1.4\n" + - " }\n" + - " };\n" + - " }\n" + - "\n" + - " static {\n" + - " Object o7 = new Object() {\n" + - " public String toString() {\n" + - " return \"7\"; // a/Anon$Anon2$3 in 1.5, a/Anon$5 in 1.4\n" + - " }\n" + - " };\n" + - "\n" + - " Object o8 = new Object() {\n" + - " public String toString() {\n" + - " return \"8\"; // a/Anon$Anon2$4 in 1.5, a/Anon$6 in 1.4\n" + - " }\n" + - " };\n" + - " }\n" + - " }\n" + - "}"); - - incrementalBuild(projectPath); - - IJavaProject project = env.getJavaProject(projectPath); - IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute())); - IPackageFragment packageFragment = root2.getPackageFragment("a");//$NON-NLS-1$ - ICompilationUnit compilationUnit = packageFragment.getCompilationUnit("Anon.java");//$NON-NLS-1$ - IRegion region = JavaCore.newRegion(); - region.add(compilationUnit); - IResource[] resources = JavaCore.getGeneratedResources(region, false); - assertEquals("Wrong size", 18, resources.length);//$NON-NLS-1$ - Arrays.sort(resources, COMPARATOR); - String actualOutput = getResourceOuput(resources); - String expectedOutput = - "/Project/bin/a/Anon.class\n" + - "/Project/bin/a/Anon$1.class\n" + - "/Project/bin/a/Anon$2.class\n" + - "/Project/bin/a/Anon$3.class\n" + - "/Project/bin/a/Anon$4.class\n" + - "/Project/bin/a/Anon$5.class\n" + - "/Project/bin/a/Anon$6.class\n" + - "/Project/bin/a/Anon$7.class\n" + - "/Project/bin/a/Anon$8.class\n" + - "/Project/bin/a/Anon$Anon2.class\n" + - "/Project/bin/a/Anon$Anon2$1.class\n" + + "/Project/bin/a/Anon$Anon2.class\n" + + "/Project/bin/a/Anon$Anon2$1.class\n" + "/Project/bin/a/Anon$Anon2$2.class\n" + "/Project/bin/a/Anon$Anon2$3.class\n" + "/Project/bin/a/Anon$Anon2$4.class\n" + diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/IncrementalTests.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/IncrementalTests.java index 6eadea0b05..1e728adad9 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/IncrementalTests.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/IncrementalTests.java @@ -27,6 +27,7 @@ import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.compiler.CategorizedProblem; import org.eclipse.jdt.core.tests.util.Util; +import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; @SuppressWarnings({"rawtypes", "unchecked"}) public class IncrementalTests extends BuilderTests { @@ -607,10 +608,10 @@ public void testMemberTypeFromClassFile() throws JavaModelException { //https://bugs.eclipse.org/bugs/show_bug.cgi?id=372418 public void testMemberTypeOfOtherProject() throws JavaModelException { - IPath projectPath1 = env.addProject("Project1", "1.5"); //$NON-NLS-1$ //$NON-NLS-2$ + IPath projectPath1 = env.addProject("Project1", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ env.addExternalJars(projectPath1, Util.getJavaClassLibs()); - IPath projectPath2 = env.addProject("Project2", "1.5"); //$NON-NLS-1$ //$NON-NLS-2$ + IPath projectPath2 = env.addProject("Project2", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ env.addExternalJars(projectPath2, Util.getJavaClassLibs()); // remove old package fragment root so that names don't collide @@ -668,10 +669,10 @@ public void testMemberTypeOfOtherProject() throws JavaModelException { //https://bugs.eclipse.org/bugs/show_bug.cgi?id=377401 public void test$InTypeName() throws JavaModelException { - IPath projectPath1 = env.addProject("Project1", "1.5"); //$NON-NLS-1$ //$NON-NLS-2$ + IPath projectPath1 = env.addProject("Project1", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ //$NON-NLS-2$ env.addExternalJars(projectPath1, Util.getJavaClassLibs()); - IPath projectPath2 = env.addProject("Project2", "1.5"); //$NON-NLS-1$ //$NON-NLS-2$ + IPath projectPath2 = env.addProject("Project2", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ //$NON-NLS-2$ env.addExternalJars(projectPath2, Util.getJavaClassLibs()); // remove old package fragment root so that names don't collide @@ -1138,9 +1139,9 @@ public void testBug334377() throws JavaModelException { try { options = JavaCore.getOptions(); Hashtable newOptions = JavaCore.getOptions(); - newOptions.put(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_1_5); - newOptions.put(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_1_5); - newOptions.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, JavaCore.VERSION_1_5); + newOptions.put(JavaCore.COMPILER_COMPLIANCE, CompilerOptions.getFirstSupportedJavaVersion()); + newOptions.put(JavaCore.COMPILER_SOURCE, CompilerOptions.getFirstSupportedJavaVersion()); + newOptions.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, CompilerOptions.getFirstSupportedJavaVersion()); JavaCore.setOptions(newOptions); IPath projectPath = env.addProject("Project"); //$NON-NLS-1$ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/Java50Tests.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/Java50Tests.java index ab7de8b929..791b27710c 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/Java50Tests.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/Java50Tests.java @@ -19,6 +19,7 @@ import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.compiler.CategorizedProblem; import org.eclipse.jdt.core.tests.util.Util; +import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; public class Java50Tests extends BuilderTests { @@ -31,7 +32,7 @@ public static Test suite() { } public void testAnnotation() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.setOutputFolder(projectPath, ""); @@ -66,7 +67,7 @@ public void testAnnotation() throws JavaModelException { } public void testHierarchyCycle() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.setOutputFolder(projectPath, ""); @@ -86,7 +87,7 @@ public void testHierarchyCycle() throws JavaModelException { // https://bugs.eclipse.org/bugs/show_bug.cgi?id=214237, dupe of // https://bugs.eclipse.org/bugs/show_bug.cgi?id=205235 public void testHierarchyCycleInstanceof() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.setOutputFolder(projectPath, ""); @@ -112,9 +113,9 @@ public void testHierarchyCycleInstanceof() throws JavaModelException { } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=231293 - public void testMissingRequiredBinaries() throws JavaModelException { + public void _2551_testMissingRequiredBinaries() throws JavaModelException { - IPath p1 = env.addProject("P1", "1.5"); //$NON-NLS-1$ + IPath p1 = env.addProject("P1", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ IPath p2 = env.addProject("P2"); //$NON-NLS-1$ env.addExternalJars(p1, Util.getJavaClassLibs()); @@ -169,7 +170,7 @@ public void testMissingRequiredBinaries() throws JavaModelException { } public void testParameterizedMemberType() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.setOutputFolder(projectPath, ""); @@ -234,7 +235,7 @@ public void testParameterizedMemberType() throws JavaModelException { } public void testParameterizedType1() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.setOutputFolder(projectPath, ""); @@ -275,7 +276,7 @@ public void testParameterizedType1() throws JavaModelException { } public void testParameterizedType2() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.setOutputFolder(projectPath, ""); @@ -316,7 +317,7 @@ public void testParameterizedType2() throws JavaModelException { } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=294057 public void testHierarchyNonCycle() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.setOutputFolder(projectPath, ""); @@ -350,7 +351,7 @@ public void testHierarchyNonCycle() throws JavaModelException { } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=294057 (variation) public void testHierarchyNonCycle2() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.setOutputFolder(projectPath, ""); diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/LeakTestsBefore9.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/LeakTestsBefore9.java index f3a837f3bd..05dca1ac94 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/LeakTestsBefore9.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/LeakTestsBefore9.java @@ -28,7 +28,7 @@ public static Test suite() { } String getCompatibilityLevel() { - return CompilerOptions.VERSION_1_4; + return CompilerOptions.getFirstSupportedJavaVersion(); } @Override diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/MultiProjectTests.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/MultiProjectTests.java index 8babfccaca..ff54e8e7e1 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/MultiProjectTests.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/MultiProjectTests.java @@ -25,6 +25,7 @@ import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.compiler.CategorizedProblem; import org.eclipse.jdt.core.tests.util.Util; +import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; import org.eclipse.test.OrderedTestSuite; import junit.framework.Test; @@ -33,6 +34,10 @@ @SuppressWarnings({"rawtypes", "unchecked"}) public class MultiProjectTests extends BuilderTests { + static { +// TESTS_NAMES = new String[] { "test461074_error_1_8" }; + } + public MultiProjectTests(String name) { super(name); } @@ -1928,20 +1933,20 @@ public void test103_missing_required_binaries() throws JavaModelException { // https://bugs.eclipse.org/bugs/show_bug.cgi?id=460993 public void test104_missing_required_binaries() throws CoreException { - IPath p0 = env.addProject("JRE17", "1.7"); + IPath p0 = env.addProject("JRE17", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(p0, Util.getJavaClassLibs()); env.removePackageFragmentRoot(p0, ""); IPath root0 = env.addPackageFragmentRoot(p0, "src"); env.setOutputFolder(p0, "bin"); - IPath p1 = env.addProject("org.eclipse.jgit", "1.7"); + IPath p1 = env.addProject("org.eclipse.jgit", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(p1, Util.getJavaClassLibs()); env.removePackageFragmentRoot(p1, ""); IPath root1 = env.addPackageFragmentRoot(p1, "src"); env.addRequiredProject(p1, p0); env.setOutputFolder(p1, "bin"); - IPath p2 = env.addProject("org.eclipse.releng.tools", "1.5"); + IPath p2 = env.addProject("org.eclipse.releng.tools", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(p2, Util.getJavaClassLibs()); env.removePackageFragmentRoot(p2, ""); IPath root2 = env.addPackageFragmentRoot(p2, "src"); @@ -2093,7 +2098,7 @@ public void test461074() throws JavaModelException { //---------------------------- // Project2 //---------------------------- - IPath p2 = env.addProject("SampleLib", "1.5"); //$NON-NLS-1$ + IPath p2 = env.addProject("SampleLib", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ env.addExternalJars(p2, Util.getJavaClassLibs()); // remove old package fragment root so that names don't collide env.removePackageFragmentRoot(p2, ""); //$NON-NLS-1$ @@ -2118,7 +2123,7 @@ public void test461074() throws JavaModelException { //---------------------------- // Project3 //---------------------------- - IPath p3 = env.addProject("SampleTest", "1.5"); //$NON-NLS-1$ + IPath p3 = env.addProject("SampleTest", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ env.addExternalJars(p3, Util.getJavaClassLibs()); // remove old package fragment root so that names don't collide env.removePackageFragmentRoot(p3, ""); //$NON-NLS-1$ @@ -2144,7 +2149,7 @@ public void test461074() throws JavaModelException { env.removeProject(p3); } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=461074, "indirectly referenced from required .class files" error for unreachable reference of type in overriding method declaration in a library on classpath -public void test461074_error() throws JavaModelException { +public void _2551_test461074_error() throws JavaModelException { //---------------------------- // Project1 //---------------------------- @@ -2164,7 +2169,7 @@ public void test461074_error() throws JavaModelException { //---------------------------- // Project2 //---------------------------- - IPath p2 = env.addProject("SampleLib", "1.5"); //$NON-NLS-1$ + IPath p2 = env.addProject("SampleLib", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ env.addExternalJars(p2, Util.getJavaClassLibs()); // remove old package fragment root so that names don't collide env.removePackageFragmentRoot(p2, ""); //$NON-NLS-1$ @@ -2189,7 +2194,7 @@ public void test461074_error() throws JavaModelException { //---------------------------- // Project3 //---------------------------- - IPath p3 = env.addProject("SampleTest", "1.5"); //$NON-NLS-1$ + IPath p3 = env.addProject("SampleTest", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ env.addExternalJars(p3, Util.getJavaClassLibs()); // remove old package fragment root so that names don't collide env.removePackageFragmentRoot(p3, ""); //$NON-NLS-1$ @@ -2221,4 +2226,76 @@ public void test461074_error() throws JavaModelException { env.removeProject(p2); env.removeProject(p3); } +//https://bugs.eclipse.org/bugs/show_bug.cgi?id=461074, "indirectly referenced from required .class files" error for unreachable reference of type in overriding method declaration in a library on classpath +public void test461074_error_1_8() throws JavaModelException { + // as of https://github.com/eclipse-jdt/eclipse.jdt.core/pull/2543 and at 1.8+ we tolerate the missing type + //---------------------------- + // Project1 + //---------------------------- + IPath p1 = env.addProject("SampleMissing", "1.8"); //$NON-NLS-1$ + env.addExternalJars(p1, Util.getJavaClassLibs()); + // remove old package fragment root so that names don't collide + env.removePackageFragmentRoot(p1, ""); //$NON-NLS-1$ + IPath root1 = env.addPackageFragmentRoot(p1, "src"); //$NON-NLS-1$ + env.setOutputFolder(p1, "bin"); //$NON-NLS-1$ + + env.addClass(root1, "pack.missing", "MissingType", //$NON-NLS-1$ //$NON-NLS-2$ + "package pack.missing;\n" + + "public class MissingType {\n" + + "}\n" + ); + + //---------------------------- + // Project2 + //---------------------------- + IPath p2 = env.addProject("SampleLib", "1.8"); //$NON-NLS-1$ + env.addExternalJars(p2, Util.getJavaClassLibs()); + // remove old package fragment root so that names don't collide + env.removePackageFragmentRoot(p2, ""); //$NON-NLS-1$ + IPath root2 = env.addPackageFragmentRoot(p2, "src"); //$NON-NLS-1$ + env.setOutputFolder(p2, "bin"); //$NON-NLS-1$ + + env.addClass(root2, "pack.lib", "TopClass", //$NON-NLS-1$ //$NON-NLS-2$ + "package pack.lib;\n" + + "public abstract class TopClass {\n" + + " abstract Object get();\n" + + "}\n" + ); + env.addClass(root2, "pack.lib", "SuperClass", //$NON-NLS-1$ //$NON-NLS-2$ + "package pack.lib;\n" + + "import pack.missing.MissingType;\n" + + "public class SuperClass extends TopClass {\n" + + " @Override\n" + + " MissingType get() { return null; }\n" + + "}\n" + ); + + //---------------------------- + // Project3 + //---------------------------- + IPath p3 = env.addProject("SampleTest", "1.8"); //$NON-NLS-1$ + env.addExternalJars(p3, Util.getJavaClassLibs()); + // remove old package fragment root so that names don't collide + env.removePackageFragmentRoot(p3, ""); //$NON-NLS-1$ + IPath root3 = env.addPackageFragmentRoot(p3, "src"); //$NON-NLS-1$ + env.setOutputFolder(p3, "bin"); //$NON-NLS-1$ + + env.addClass(root3, "pack.test", "Test", //$NON-NLS-1$ //$NON-NLS-2$ + "package pack.test;\n" + + "import pack.lib.SuperClass;\n" + + "public class Test extends SuperClass {/*empty*/}\n" + ); + + // for Project1 + env.addRequiredProject(p2, p1); + env.addRequiredProject(p3, p2); + env.waitForManualRefresh(); + fullBuild(); + env.waitForAutoBuild(); + expectingNoProblemsFor(p3); + env.setBuildOrder(null); + env.removeProject(p1); + env.removeProject(p2); + env.removeProject(p3); +} } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/PackageInfoTest.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/PackageInfoTest.java index 8576b6856a..76af70f3ee 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/PackageInfoTest.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/PackageInfoTest.java @@ -34,6 +34,7 @@ import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.compiler.CategorizedProblem; import org.eclipse.jdt.core.tests.util.Util; +import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; @SuppressWarnings("rawtypes") public class PackageInfoTest extends BuilderTests { @@ -52,7 +53,7 @@ public static Test suite() { return buildTestSuite(PackageInfoTest.class); } public void test001() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); //$NON-NLS-1$ + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ env.addExternalJars(projectPath, Util.getJavaClassLibs()); fullBuild(projectPath); @@ -95,7 +96,7 @@ public void test001() throws JavaModelException { assertSourceEquals("Different messages", expectedOutput, stringWriter.toString()); } public void test002() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); //$NON-NLS-1$ + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ env.addExternalJars(projectPath, Util.getJavaClassLibs()); fullBuild(projectPath); @@ -147,7 +148,7 @@ public void test002() throws JavaModelException { executeClass(projectPath, "testcase.Main", "@testcase.TestAnnotation()@testcase.TestAnnotation()", ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } public void test003() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); //$NON-NLS-1$ + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ env.addExternalJars(projectPath, Util.getJavaClassLibs()); fullBuild(projectPath); @@ -170,7 +171,7 @@ public void test003() throws JavaModelException { // test for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=252555 : NPE // on duplicate package-info public void test004() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); //$NON-NLS-1$ + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ env.addExternalJars(projectPath, Util.getJavaClassLibs()); fullBuild(projectPath); @@ -209,7 +210,7 @@ public void test004() throws JavaModelException { // test for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=258145 : JME // on duplicate package-info public void test258145() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); //$NON-NLS-1$ + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ env.addExternalJars(projectPath, Util.getJavaClassLibs()); fullBuild(projectPath); @@ -251,7 +252,7 @@ public void test258145() throws JavaModelException { // (NPE upon creation/deletion of package-info.java in default package) public void test323785 () throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); fullBuild(projectPath); @@ -273,7 +274,7 @@ public void test323785 () throws JavaModelException { // verify that changes to package info containing secondary types do trigger incremental build. public void test323785a () throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); fullBuild(projectPath); @@ -301,7 +302,7 @@ public void test323785a () throws JavaModelException { // test when the package-info is added with the default annotation, the problem disappears public void testBug372012() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); fullBuild(projectPath); @@ -358,7 +359,7 @@ public void testBug372012() throws JavaModelException { // test when the the default annotations are added to all top level types, the problem stays public void testBug372012a() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); fullBuild(projectPath); @@ -417,7 +418,7 @@ public void testBug372012a() throws JavaModelException { // test when the the default annotations is added to only 1 top level type, the problem stays public void testBug372012b() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); fullBuild(projectPath); @@ -475,7 +476,7 @@ public void testBug372012b() throws JavaModelException { // test when the the default annotation is removed from package-info, the problem comes back public void testBug372012c() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); fullBuild(projectPath); @@ -551,7 +552,7 @@ public void testBug367836() throws JavaModelException { // verify that markers are created on the correct resource public void testBug374063() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); fullBuild(projectPath); @@ -595,7 +596,7 @@ public void testBug374063() throws JavaModelException { } // 382960 public void testBug382960() throws JavaModelException, CoreException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); fullBuild(projectPath); @@ -647,7 +648,7 @@ public void testBug382960() throws JavaModelException, CoreException { // package fragments in all source folders are removed. public void testBug525469() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); fullBuild(projectPath); @@ -710,7 +711,7 @@ public void testBug525469() throws JavaModelException { // [BUG] Syntax error, modifiers are not allowed here on a @deprecated javadoc tag in package-info.java // https://bugs.eclipse.org/bugs/show_bug.cgi?id=569780 public void testIssue803() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ IPath src = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ @@ -736,7 +737,7 @@ public void testIssue803() throws JavaModelException { // [BUG] Syntax error, modifiers are not allowed here on a @deprecated javadoc tag in package-info.java // https://bugs.eclipse.org/bugs/show_bug.cgi?id=569780 public void testIssue803_2() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ IPath src = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ @@ -761,7 +762,7 @@ public void testIssue803_2() throws JavaModelException { // [BUG] Syntax error, modifiers are not allowed here on a @deprecated javadoc tag in package-info.java // https://bugs.eclipse.org/bugs/show_bug.cgi?id=569780 public void testIssue803_3() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ IPath src = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ @@ -784,7 +785,7 @@ public void testIssue803_3() throws JavaModelException { // [BUG] Syntax error, modifiers are not allowed here on a @deprecated javadoc tag in package-info.java // https://bugs.eclipse.org/bugs/show_bug.cgi?id=569780 public void testIssue803_4() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ IPath src = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ @@ -810,7 +811,7 @@ public void testIssue803_4() throws JavaModelException { // [BUG] Syntax error, modifiers are not allowed here on a @deprecated javadoc tag in package-info.java // https://bugs.eclipse.org/bugs/show_bug.cgi?id=569780 public void testIssue803_5() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ IPath src = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/ParticipantBuildTests.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/ParticipantBuildTests.java index 51a21a8b21..bb4e9864a3 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/ParticipantBuildTests.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/ParticipantBuildTests.java @@ -29,6 +29,7 @@ import org.eclipse.jdt.core.tests.builder.participants.TestCompilationParticipant2; import org.eclipse.jdt.core.tests.builder.participants.TestCompilationParticipant3; import org.eclipse.jdt.core.tests.util.Util; +import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; @SuppressWarnings({"rawtypes", "unchecked"}) public class ParticipantBuildTests extends BuilderTests { @@ -154,7 +155,7 @@ public void buildStarting(BuildContext[] files, boolean isBatchBuild) { } public void testDefaultValue() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); //$NON-NLS-1$ //$NON-NLS-2$ + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ @@ -248,7 +249,7 @@ public void processAnnotations(BuildContext[] files) { * (regression test for bug 134345 Problems from CompilationParticipants do not get cleaned up unless there are Java errors) */ public void testParticipantProblems() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.removePackageFragmentRoot(projectPath, ""); IPath root = env.addPackageFragmentRoot(projectPath, "src"); @@ -283,7 +284,7 @@ public void buildStarting(BuildContext[] files, boolean isBatch) { } public void testProcessAnnotationDeclarations() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); //$NON-NLS-1$ //$NON-NLS-2$ + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ @@ -335,7 +336,7 @@ public void processAnnotations(BuildContext[] files) { } public void testProcessAnnotationQualifiedReferences() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); //$NON-NLS-1$ //$NON-NLS-2$ + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ @@ -382,7 +383,7 @@ public void processAnnotations(BuildContext[] files) { * Test that a build participant can inspect the declared annotations by name */ public void testProcessAnnotationHasAnnotation() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); //$NON-NLS-1$ //$NON-NLS-2$ + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ @@ -417,7 +418,7 @@ public void processAnnotations(BuildContext[] files) { } public void testProcessAnnotationReferences() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); //$NON-NLS-1$ //$NON-NLS-2$ + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ @@ -703,7 +704,7 @@ public Optional postProcess(BuildContext file, ByteArrayInputStream byte } public void testResolvedMethod() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); //$NON-NLS-1$ //$NON-NLS-2$ + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$ IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$ @@ -766,7 +767,7 @@ public void processAnnotations(BuildContext[] files) { // https://bugs.eclipse.org/bugs/show_bug.cgi?id=158611 // Checking the GENERATED_BY attribute public void test1001() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.removePackageFragmentRoot(projectPath, ""); IPath root = env.addPackageFragmentRoot(projectPath, "src"); @@ -796,7 +797,7 @@ public void buildStarting(BuildContext[] files, boolean isBatch) { // https://bugs.eclipse.org/bugs/show_bug.cgi?id=158611 // Checking the GENERATED_BY attribute public void test1002() throws JavaModelException { - IPath projectPath = env.addProject("Project", "1.5"); + IPath projectPath = env.addProject("Project", CompilerOptions.getFirstSupportedJavaVersion()); env.addExternalJars(projectPath, Util.getJavaClassLibs()); env.removePackageFragmentRoot(projectPath, ""); IPath root = env.addPackageFragmentRoot(projectPath, "src"); diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/TestingEnvironment.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/TestingEnvironment.java index 840ab5dfb5..b1315d77b9 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/TestingEnvironment.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/TestingEnvironment.java @@ -181,7 +181,7 @@ public void addProject(IProject project){ } public IPath addProject(String projectName){ - return addProject(projectName, "1.4"); + return addProject(projectName, CompilerOptions.getFirstSupportedJavaVersion()); } public IPath addProject(String projectName, String compliance){ @@ -189,19 +189,7 @@ public IPath addProject(String projectName, String compliance){ IProject project = createProject(projectName); int requiredComplianceFlag = 0; String compilerVersion = null; - if ("1.5".equals(compliance)) { - requiredComplianceFlag = AbstractCompilerTest.F_1_5; - compilerVersion = CompilerOptions.VERSION_1_5; - } - else if ("1.6".equals(compliance)) { - requiredComplianceFlag = AbstractCompilerTest.F_1_6; - compilerVersion = CompilerOptions.VERSION_1_6; - } - else if ("1.7".equals(compliance)) { - requiredComplianceFlag = AbstractCompilerTest.F_1_7; - compilerVersion = CompilerOptions.VERSION_1_7; - } - else if ("1.8".equals(compliance)) { + if ("1.8".equals(compliance)) { requiredComplianceFlag = AbstractCompilerTest.F_1_8; compilerVersion = CompilerOptions.VERSION_1_8; } @@ -241,7 +229,7 @@ else if ("12".equals(compliance)) { } else if ("19".equals(compliance)) { requiredComplianceFlag = AbstractCompilerTest.F_19; compilerVersion = CompilerOptions.VERSION_19; - } else if (!"1.4".equals(compliance) && !"1.3".equals(compliance)) { + } else { throw new UnsupportedOperationException("Test framework doesn't support compliance level: " + compliance); } if (requiredComplianceFlag != 0) { diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/forceQualifierUpdate.txt b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/forceQualifierUpdate.txt index c997cd7c6c..f8754e690a 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/forceQualifierUpdate.txt +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/forceQualifierUpdate.txt @@ -1,2 +1,3 @@ # To force a version qualifier update, add the bug here -Bug 534597 - Unanticipated comparator errors in I20180511-2000 \ No newline at end of file +Bug 534597 - Unanticipated comparator errors in I20180511-2000 +https://github.com/eclipse-jdt/eclipse.jdt.core/issues/2652 \ No newline at end of file diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/AnnotationCompletionParserTest.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/AnnotationCompletionParserTest.java index ab78e15829..1caff14a6c 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/AnnotationCompletionParserTest.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/AnnotationCompletionParserTest.java @@ -38,9 +38,9 @@ public static Test suite() { @Override protected Map getCompilerOptions() { Map options = super.getCompilerOptions(); - options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_5); + options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_Source, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.getFirstSupportedJavaVersion()); return options; } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/AnnotationDietRecoveryTest.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/AnnotationDietRecoveryTest.java index 40589f6b45..74684811d4 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/AnnotationDietRecoveryTest.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/AnnotationDietRecoveryTest.java @@ -26,7 +26,6 @@ import org.eclipse.jdt.internal.compiler.SourceElementParser; import org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration; import org.eclipse.jdt.internal.compiler.batch.CompilationUnit; -import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; import org.eclipse.jdt.internal.compiler.env.ICompilationUnit; import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; import org.eclipse.jdt.internal.compiler.parser.Parser; @@ -40,13 +39,12 @@ public class AnnotationDietRecoveryTest extends AbstractCompilerTest { private static final boolean CHECK_ALL_PARSE = true; public static boolean optimizeStringLiterals = false; - public static long sourceLevel = ClassFileConstants.JDK1_3; //$NON-NLS-1$ public AnnotationDietRecoveryTest(String testName){ super(testName); } public static Test suite() { - return buildMinimalComplianceTestSuite(testClass(), F_1_5); + return buildMinimalComplianceTestSuite(testClass(), FIRST_SUPPORTED_JAVA_VERSION); } public static Class testClass() { return AnnotationDietRecoveryTest.class; @@ -57,9 +55,9 @@ public static Class testClass() { @Override protected Map getCompilerOptions() { Map options = super.getCompilerOptions(); - options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_5); + options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_Source, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.getFirstSupportedJavaVersion()); return options; } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/EnumCompletionParserTest.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/EnumCompletionParserTest.java index 8aeb08b1fa..487089a185 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/EnumCompletionParserTest.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/EnumCompletionParserTest.java @@ -34,9 +34,9 @@ public static Test suite() { @Override protected Map getCompilerOptions() { Map options = super.getCompilerOptions(); - options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_5); + options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_Source, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.getFirstSupportedJavaVersion()); return options; } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/EnumDietRecoveryTest.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/EnumDietRecoveryTest.java index 827e1722dd..cb0733ac82 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/EnumDietRecoveryTest.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/EnumDietRecoveryTest.java @@ -24,7 +24,6 @@ import org.eclipse.jdt.internal.compiler.SourceElementParser; import org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration; import org.eclipse.jdt.internal.compiler.batch.CompilationUnit; -import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; import org.eclipse.jdt.internal.compiler.env.ICompilationUnit; import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; import org.eclipse.jdt.internal.compiler.parser.Parser; @@ -34,21 +33,17 @@ @SuppressWarnings({ "unchecked", "rawtypes" }) public class EnumDietRecoveryTest extends AbstractCompilerTest { public static boolean optimizeStringLiterals = false; - public static long sourceLevel = ClassFileConstants.JDK1_3; //$NON-NLS-1$ public EnumDietRecoveryTest(String testName){ super(testName); } -/* - * Toggle compiler in mode -1.5 - */ @Override protected Map getCompilerOptions() { Map options = super.getCompilerOptions(); - options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_5); + options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_Source, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.getFirstSupportedJavaVersion()); return options; } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/GenericDietRecoveryTest.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/GenericDietRecoveryTest.java index 63c5d4c408..b28326a788 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/GenericDietRecoveryTest.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/GenericDietRecoveryTest.java @@ -26,7 +26,6 @@ import org.eclipse.jdt.internal.compiler.SourceElementParser; import org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration; import org.eclipse.jdt.internal.compiler.batch.CompilationUnit; -import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; import org.eclipse.jdt.internal.compiler.env.ICompilationUnit; import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; import org.eclipse.jdt.internal.compiler.parser.Parser; @@ -36,7 +35,6 @@ @SuppressWarnings({ "unchecked", "rawtypes" }) public class GenericDietRecoveryTest extends AbstractCompilerTest { public static boolean optimizeStringLiterals = false; - public static long sourceLevel = ClassFileConstants.JDK1_3; //$NON-NLS-1$ public GenericDietRecoveryTest(String testName){ super(testName); @@ -44,15 +42,13 @@ public GenericDietRecoveryTest(String testName){ static { // TESTS_NAMES = new String[] { "test0025" }; } -/* - * Toggle compiler in mode -1.5 - */ + @Override protected Map getCompilerOptions() { Map options = super.getCompilerOptions(); - options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_5); + options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_Source, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.getFirstSupportedJavaVersion()); return options; } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/GenericsCompletionParserTest.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/GenericsCompletionParserTest.java index 27012b3658..26b6855c59 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/GenericsCompletionParserTest.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/GenericsCompletionParserTest.java @@ -30,9 +30,9 @@ public static Test suite() { @Override protected Map getCompilerOptions() { Map options = super.getCompilerOptions(); - options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_5); + options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_Source, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.getFirstSupportedJavaVersion()); return options; } public void test0001(){ diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/ParserTest1_7.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/ParserTest1_7.java index 2afedae706..fa56093a9c 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/ParserTest1_7.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/ParserTest1_7.java @@ -43,7 +43,7 @@ public static Class testClass() { return ParserTest1_7.class; } public static Test suite() { - return buildMinimalComplianceTestSuite(testClass(), F_1_7); + return buildMinimalComplianceTestSuite(testClass(), FIRST_SUPPORTED_JAVA_VERSION); } public ParserTest1_7(String testName){ super(testName); @@ -236,9 +236,9 @@ public void checkParse( @Override protected Map getCompilerOptions() { Map options = super.getCompilerOptions(); - options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_7); - options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_7); - options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_7); + options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_Source, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.getFirstSupportedJavaVersion()); return options; } public void test0001() { diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/RunCompletionParserTests.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/RunCompletionParserTests.java index 94bc559024..adfe1ba55a 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/RunCompletionParserTests.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/RunCompletionParserTests.java @@ -61,59 +61,6 @@ public static Test suite() { TestSuite all = new TestSuite(TestAll.class.getName()); int possibleComplianceLevels = AbstractCompilerTest.getPossibleComplianceLevels(); - if ((possibleComplianceLevels & AbstractCompilerTest.F_1_3) != 0) { - ArrayList tests_1_3 = (ArrayList)testClasses.clone(); - // 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.JDK1_3, tests_1_3)); - } - if ((possibleComplianceLevels & AbstractCompilerTest.F_1_4) != 0) { - ArrayList tests_1_4 = (ArrayList)testClasses.clone(); - // 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.JDK1_4, tests_1_4)); - } - if ((possibleComplianceLevels & AbstractCompilerTest.F_1_5) != 0) { - ArrayList tests_1_5 = (ArrayList)testClasses.clone(); - tests_1_5.addAll(TEST_CLASSES_1_5); - // 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.JDK1_5, tests_1_5)); - } - if ((possibleComplianceLevels & AbstractCompilerTest.F_1_6) != 0) { - ArrayList tests_1_6 = (ArrayList)testClasses.clone(); - tests_1_6.addAll(TEST_CLASSES_1_5); - // 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.JDK1_6, tests_1_6)); - } - if ((possibleComplianceLevels & AbstractCompilerTest.F_1_7) != 0) { - ArrayList tests_1_7 = (ArrayList)testClasses.clone(); - tests_1_7.addAll(TEST_CLASSES_1_5); - // 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.JDK1_7, tests_1_7)); - } if ((possibleComplianceLevels & AbstractCompilerTest.F_1_8) != 0) { ArrayList tests_1_8 = (ArrayList)testClasses.clone(); tests_1_8.addAll(TEST_CLASSES_1_5); diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceElementParserTest.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceElementParserTest.java index fdbebe9848..ea146e1a7a 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceElementParserTest.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/SourceElementParserTest.java @@ -5346,9 +5346,9 @@ public void _test80() { public void test81() { Map options = getCompilerOptions(); - options.put(JavaCore.COMPILER_SOURCE, JavaCore.VERSION_1_5); - options.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, JavaCore.VERSION_1_5); - options.put(JavaCore.COMPILER_COMPLIANCE, JavaCore.VERSION_1_5); + options.put(JavaCore.COMPILER_SOURCE, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(JavaCore.COMPILER_COMPLIANCE, CompilerOptions.getFirstSupportedJavaVersion()); String s = "import java.util.Collection;\n" + diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/StatementRecoveryTest_1_5.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/StatementRecoveryTest_1_5.java index 333be59167..aa9c14af65 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/StatementRecoveryTest_1_5.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/StatementRecoveryTest_1_5.java @@ -234,9 +234,9 @@ public void checkParse( @Override protected Map getCompilerOptions() { Map options = super.getCompilerOptions(); - options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_5); + options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_Source, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.getFirstSupportedJavaVersion()); return options; } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/TestAll.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/TestAll.java index 2d560be188..c2c471e5c8 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/TestAll.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/parser/TestAll.java @@ -83,35 +83,6 @@ public static TestSuite getTestSuite(boolean addComplianceDiagnoseTest) { TestSuite all = new TestSuite(TestAll.class.getName()); int possibleComplianceLevels = AbstractCompilerTest.getPossibleComplianceLevels(); - if ((possibleComplianceLevels & AbstractCompilerTest.F_1_3) != 0) { - ArrayList tests_1_3 = (ArrayList)testClasses.clone(); - TestCase.resetForgottenFilters(tests_1_3); - all.addTest(AbstractCompilerTest.buildComplianceTestSuite(ClassFileConstants.JDK1_3, tests_1_3)); - } - if ((possibleComplianceLevels & AbstractCompilerTest.F_1_4) != 0) { - ArrayList tests_1_4 = (ArrayList)testClasses.clone(); - TestCase.resetForgottenFilters(tests_1_4); - all.addTest(AbstractCompilerTest.buildComplianceTestSuite(ClassFileConstants.JDK1_4, tests_1_4)); - } - if ((possibleComplianceLevels & AbstractCompilerTest.F_1_5) != 0) { - ArrayList tests_1_5 = (ArrayList)testClasses.clone(); - tests_1_5.addAll(TEST_CLASSES_1_5); - TestCase.resetForgottenFilters(tests_1_5); - all.addTest(AbstractCompilerTest.buildComplianceTestSuite(ClassFileConstants.JDK1_5, tests_1_5)); - } - if ((possibleComplianceLevels & AbstractCompilerTest.F_1_6) != 0) { - ArrayList tests_1_6 = (ArrayList)testClasses.clone(); - tests_1_6.addAll(TEST_CLASSES_1_5); - TestCase.resetForgottenFilters(tests_1_6); - all.addTest(AbstractCompilerTest.buildComplianceTestSuite(ClassFileConstants.JDK1_6, tests_1_6)); - } - if ((possibleComplianceLevels & AbstractCompilerTest.F_1_7) != 0) { - ArrayList tests_1_7 = (ArrayList)testClasses.clone(); - tests_1_7.addAll(TEST_CLASSES_1_5); - tests_1_7.add(ParserTest1_7.class); - TestCase.resetForgottenFilters(tests_1_7); - all.addTest(AbstractCompilerTest.buildComplianceTestSuite(ClassFileConstants.JDK1_7, tests_1_7)); - } if ((possibleComplianceLevels & AbstractCompilerTest.F_1_8) != 0) { ArrayList tests_1_8 = (ArrayList)testClasses.clone(); tests_1_8.addAll(TEST_CLASSES_1_5); diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractBatchCompilerTest.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractBatchCompilerTest.java index 383c50b411..297333c731 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractBatchCompilerTest.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractBatchCompilerTest.java @@ -22,13 +22,13 @@ import java.io.StringReader; import java.util.ArrayList; -import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.compiler.CompilationProgress; import org.eclipse.jdt.core.compiler.batch.BatchCompiler; import org.eclipse.jdt.core.tests.util.Util; import org.eclipse.jdt.internal.compiler.batch.ClasspathLocation; import org.eclipse.jdt.internal.compiler.batch.FileSystem; import org.eclipse.jdt.internal.compiler.batch.Main; +import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; public abstract class AbstractBatchCompilerTest extends AbstractRegressionTest { @@ -160,280 +160,277 @@ protected void setUp() throws Exception { CASCADED_JARS_CREATED = false; // initialization needed for each subclass individually } - protected void createCascadedJars() { - if (!CASCADED_JARS_CREATED) { - File libDir = new File(LIB_DIR); - Util.delete(libDir); // make sure we recycle the libs - libDir.mkdirs(); - try { - Util.createJar( - new String[] { - "p/A.java", - "package p;\n" + - "public class A {\n" + - "}", - }, - new String[] { - "META-INF/MANIFEST.MF", - "Manifest-Version: 1.0\n" + - "Created-By: Eclipse JDT Test Harness\n" + - "Class-Path: lib2.jar\n", - "p/S1.java", - "package p;\n" + - "public class S1 {\n" + - "}", - }, - LIB_DIR + "/lib1.jar", - JavaCore.VERSION_1_4); - Util.createJar( - new String[] { - "p/B.java", - "package p;\n" + - "public class B {\n" + - "}", - "p/R.java", - "package p;\n" + - "public class R {\n" + - " public static final int R2 = 2;\n" + - "}", - }, - new String[] { - "p/S2.java", - "package p;\n" + - "public class S2 {\n" + - "}", - }, - LIB_DIR + "/lib2.jar", - JavaCore.VERSION_1_4); - Util.createJar( - new String[] { - "p/C.java", - "package p;\n" + - "public class C {\n" + - "}", - "p/R.java", - "package p;\n" + - "public class R {\n" + - " public static final int R3 = 3;\n" + - "}", - }, - new String[] { - "META-INF/MANIFEST.MF", - "Manifest-Version: 1.0\n" + - "Created-By: Eclipse JDT Test Harness\n" + - "Class-Path: lib4.jar\n", - }, - LIB_DIR + "/lib3.jar", - JavaCore.VERSION_1_4); - Util.createJar( - new String[] { - "p/D.java", - "package p;\n" + - "public class D {\n" + - "}", - }, - new String[] { - "META-INF/MANIFEST.MF", - "Manifest-Version: 1.0\n" + - "Created-By: Eclipse JDT Test Harness\n" + - "Class-Path: lib1.jar lib3.jar\n", - }, - LIB_DIR + "/lib4.jar", - JavaCore.VERSION_1_4); - Util.createJar( - new String[] { - "p/C.java", - "package p;\n" + - "public class C {\n" + - "}", - "p/R.java", - "package p;\n" + - "public class R {\n" + - " public static final int R3 = 3;\n" + - "}", - }, - new String[] { - "META-INF/MANIFEST.MF", - "Manifest-Version: 1.0\n" + - "Created-By: Eclipse JDT Test Harness\n" + - "Class-Path: s/lib6.jar\n", - }, - LIB_DIR + "/lib5.jar", - JavaCore.VERSION_1_4); - new File(LIB_DIR + "/s").mkdir(); - Util.createJar( - new String[] { - "p/D.java", - "package p;\n" + - "public class D {\n" + - "}", - }, - new String[] { - "META-INF/MANIFEST.MF", - "Manifest-Version: 1.0\n" + - "Created-By: Eclipse JDT Test Harness\n" + - "Class-Path: ../lib7.jar\n", - }, - LIB_DIR + "/s/lib6.jar", - JavaCore.VERSION_1_4); - Util.createJar( - new String[] { - "p/A.java", - "package p;\n" + - "public class A {\n" + - "}", - }, - new String[] { - "META-INF/MANIFEST.MF", - "Manifest-Version: 1.0\n" + - "Created-By: Eclipse JDT Test Harness\n" + - "Class-Path: lib2.jar\n", - }, - LIB_DIR + "/lib7.jar", - JavaCore.VERSION_1_4); - Util.createJar( - new String[] { - "p/F.java", - "package p;\n" + - "public class F {\n" + - "}", - }, - new String[] { - "META-INF/MANIFEST.MF", - "Manifest-Version: 1.0\n" + - "Created-By: Eclipse JDT Test Harness\n" + - "Class-Path: " + LIB_DIR + "/lib3.jar lib1.jar\n", - }, - LIB_DIR + "/lib8.jar", - JavaCore.VERSION_1_4); - Util.createJar( - new String[] { - "p/G.java", - "package p;\n" + - "public class G {\n" + - "}", - }, - new String[] { - "META-INF/MANIFEST.MF", - "Manifest-Version: 1.0\n" + - "Created-By: Eclipse JDT Test Harness\n" + - "Class-Path: lib1.jar\n" + - "Class-Path: lib3.jar\n", - }, - LIB_DIR + "/lib9.jar", - JavaCore.VERSION_1_4); - Util.createJar( - new String[] { - "p/A.java", - "package p;\n" + - "public class A {\n" + - "}", - }, - // spoiled jar: MANIFEST.MF is a directory - new String[] { - "META-INF/MANIFEST.MF/MANIFEST.MF", - "Manifest-Version: 1.0\n" + - "Created-By: Eclipse JDT Test Harness\n" + - "Class-Path: lib2.jar\n", - }, - LIB_DIR + "/lib10.jar", - JavaCore.VERSION_1_4); - Util.createJar( - new String[] { - "p/A.java", - "package p;\n" + - "public class A {\n" + - "}", - }, - new String[] { - "META-INF/MANIFEST.MF", - "Manifest-Version: 1.0\n" + - "Created-By: Eclipse JDT Test Harness\n" + - "Class-Path:\n", - }, - LIB_DIR + "/lib11.jar", - JavaCore.VERSION_1_4); - Util.createJar( - null, - new String[] { - "META-INF/MANIFEST.MF", - "Manifest-Version: 1.0\n" + - "Created-By: Eclipse JDT Test Harness\n" + - "Class-Path:lib1.jar\n", // missing space - }, - LIB_DIR + "/lib12.jar", - JavaCore.VERSION_1_4); - Util.createJar( - null, - new String[] { - "META-INF/MANIFEST.MF", - "Manifest-Version: 1.0\n" + - "Created-By: Eclipse JDT Test Harness\n" + - "Class-Path:lib1.jar lib1.jar\n", // missing space - }, - LIB_DIR + "/lib13.jar", - JavaCore.VERSION_1_4); - Util.createJar( - null, - new String[] { - "META-INF/MANIFEST.MF", - "Manifest-Version: 1.0\n" + - "Created-By: Eclipse JDT Test Harness\n" + - " Class-Path: lib1.jar\n", // extra space at line start - }, - LIB_DIR + "/lib14.jar", - JavaCore.VERSION_1_4); - Util.createJar( - null, - new String[] { - "META-INF/MANIFEST.MF", - "Manifest-Version: 1.0\n" + - "Created-By: Eclipse JDT Test Harness\n" + - "Class-Path: lib1.jar", // missing newline at end - }, - LIB_DIR + "/lib15.jar", - JavaCore.VERSION_1_4); - Util.createJar( - new String[] { - "p/A.java", - "package p;\n" + - "public class A {\n" + - "}", - }, - new String[] { - "META-INF/MANIFEST.MF", - "Manifest-Version: 1.0\n" + - "Created-By: Eclipse JDT Test Harness\n" + - "Class-Path: \n" + - " lib2.jar\n", - "p/S1.java", - "package p;\n" + - "public class S1 {\n" + - "}", - }, - LIB_DIR + "/lib16.jar", - JavaCore.VERSION_1_4); - new File(LIB_DIR + "/dir").mkdir(); - Util.createJar( - new String[] { - "p/A.java", - "package p;\n" + - "public class A {\n" + - "}", - }, - new String[] { - "META-INF/MANIFEST.MF", - "Manifest-Version: 1.0\n" + - "Created-By: Eclipse JDT Test Harness\n" + - "Class-Path: ../lib2.jar\n", - }, - LIB_DIR + "/dir/lib17.jar", - JavaCore.VERSION_1_4); - CASCADED_JARS_CREATED = true; - } catch (IOException e) { - // ignore - } + protected void createCascadedJars() throws IOException { + if (CASCADED_JARS_CREATED) { + return; } + File libDir = new File(LIB_DIR); + Util.delete(libDir); // make sure we recycle the libs + libDir.mkdirs(); + Util.createJar( + new String[] { + "p/A.java", + "package p;\n" + + "public class A {\n" + + "}", + }, + new String[] { + "META-INF/MANIFEST.MF", + "Manifest-Version: 1.0\n" + + "Created-By: Eclipse JDT Test Harness\n" + + "Class-Path: lib2.jar\n", + "p/S1.java", + "package p;\n" + + "public class S1 {\n" + + "}", + }, + LIB_DIR + "/lib1.jar", + CompilerOptions.getFirstSupportedJavaVersion()); + Util.createJar( + new String[] { + "p/B.java", + "package p;\n" + + "public class B {\n" + + "}", + "p/R.java", + "package p;\n" + + "public class R {\n" + + " public static final int R2 = 2;\n" + + "}", + }, + new String[] { + "p/S2.java", + "package p;\n" + + "public class S2 {\n" + + "}", + }, + LIB_DIR + "/lib2.jar", + CompilerOptions.getFirstSupportedJavaVersion()); + Util.createJar( + new String[] { + "p/C.java", + "package p;\n" + + "public class C {\n" + + "}", + "p/R.java", + "package p;\n" + + "public class R {\n" + + " public static final int R3 = 3;\n" + + "}", + }, + new String[] { + "META-INF/MANIFEST.MF", + "Manifest-Version: 1.0\n" + + "Created-By: Eclipse JDT Test Harness\n" + + "Class-Path: lib4.jar\n", + }, + LIB_DIR + "/lib3.jar", + CompilerOptions.getFirstSupportedJavaVersion()); + Util.createJar( + new String[] { + "p/D.java", + "package p;\n" + + "public class D {\n" + + "}", + }, + new String[] { + "META-INF/MANIFEST.MF", + "Manifest-Version: 1.0\n" + + "Created-By: Eclipse JDT Test Harness\n" + + "Class-Path: lib1.jar lib3.jar\n", + }, + LIB_DIR + "/lib4.jar", + CompilerOptions.getFirstSupportedJavaVersion()); + Util.createJar( + new String[] { + "p/C.java", + "package p;\n" + + "public class C {\n" + + "}", + "p/R.java", + "package p;\n" + + "public class R {\n" + + " public static final int R3 = 3;\n" + + "}", + }, + new String[] { + "META-INF/MANIFEST.MF", + "Manifest-Version: 1.0\n" + + "Created-By: Eclipse JDT Test Harness\n" + + "Class-Path: s/lib6.jar\n", + }, + LIB_DIR + "/lib5.jar", + CompilerOptions.getFirstSupportedJavaVersion()); + new File(LIB_DIR + "/s").mkdir(); + Util.createJar( + new String[] { + "p/D.java", + "package p;\n" + + "public class D {\n" + + "}", + }, + new String[] { + "META-INF/MANIFEST.MF", + "Manifest-Version: 1.0\n" + + "Created-By: Eclipse JDT Test Harness\n" + + "Class-Path: ../lib7.jar\n", + }, + LIB_DIR + "/s/lib6.jar", + CompilerOptions.getFirstSupportedJavaVersion()); + Util.createJar( + new String[] { + "p/A.java", + "package p;\n" + + "public class A {\n" + + "}", + }, + new String[] { + "META-INF/MANIFEST.MF", + "Manifest-Version: 1.0\n" + + "Created-By: Eclipse JDT Test Harness\n" + + "Class-Path: lib2.jar\n", + }, + LIB_DIR + "/lib7.jar", + CompilerOptions.getFirstSupportedJavaVersion()); + Util.createJar( + new String[] { + "p/F.java", + "package p;\n" + + "public class F {\n" + + "}", + }, + new String[] { + "META-INF/MANIFEST.MF", + "Manifest-Version: 1.0\n" + + "Created-By: Eclipse JDT Test Harness\n" + + "Class-Path: " + LIB_DIR + "/lib3.jar lib1.jar\n", + }, + LIB_DIR + "/lib8.jar", + CompilerOptions.getFirstSupportedJavaVersion()); + Util.createJar( + new String[] { + "p/G.java", + "package p;\n" + + "public class G {\n" + + "}", + }, + new String[] { + "META-INF/MANIFEST.MF", + "Manifest-Version: 1.0\n" + + "Created-By: Eclipse JDT Test Harness\n" + + "Class-Path: lib1.jar\n" + + "Class-Path: lib3.jar\n", + }, + LIB_DIR + "/lib9.jar", + CompilerOptions.getFirstSupportedJavaVersion()); + Util.createJar( + new String[] { + "p/A.java", + "package p;\n" + + "public class A {\n" + + "}", + }, + // spoiled jar: MANIFEST.MF is a directory + new String[] { + "META-INF/MANIFEST.MF/MANIFEST.MF", + "Manifest-Version: 1.0\n" + + "Created-By: Eclipse JDT Test Harness\n" + + "Class-Path: lib2.jar\n", + }, + LIB_DIR + "/lib10.jar", + CompilerOptions.getFirstSupportedJavaVersion()); + Util.createJar( + new String[] { + "p/A.java", + "package p;\n" + + "public class A {\n" + + "}", + }, + new String[] { + "META-INF/MANIFEST.MF", + "Manifest-Version: 1.0\n" + + "Created-By: Eclipse JDT Test Harness\n" + + "Class-Path:\n", + }, + LIB_DIR + "/lib11.jar", + CompilerOptions.getFirstSupportedJavaVersion()); + Util.createJar( + null, + new String[] { + "META-INF/MANIFEST.MF", + "Manifest-Version: 1.0\n" + + "Created-By: Eclipse JDT Test Harness\n" + + "Class-Path:lib1.jar\n", // missing space + }, + LIB_DIR + "/lib12.jar", + CompilerOptions.getFirstSupportedJavaVersion()); + Util.createJar( + null, + new String[] { + "META-INF/MANIFEST.MF", + "Manifest-Version: 1.0\n" + + "Created-By: Eclipse JDT Test Harness\n" + + "Class-Path:lib1.jar lib1.jar\n", // missing space + }, + LIB_DIR + "/lib13.jar", + CompilerOptions.getFirstSupportedJavaVersion()); + Util.createJar( + null, + new String[] { + "META-INF/MANIFEST.MF", + "Manifest-Version: 1.0\n" + + "Created-By: Eclipse JDT Test Harness\n" + + " Class-Path: lib1.jar\n", // extra space at line start + }, + LIB_DIR + "/lib14.jar", + CompilerOptions.getFirstSupportedJavaVersion()); + Util.createJar( + null, + new String[] { + "META-INF/MANIFEST.MF", + "Manifest-Version: 1.0\n" + + "Created-By: Eclipse JDT Test Harness\n" + + "Class-Path: lib1.jar", // missing newline at end + }, + LIB_DIR + "/lib15.jar", + CompilerOptions.getFirstSupportedJavaVersion()); + Util.createJar( + new String[] { + "p/A.java", + "package p;\n" + + "public class A {\n" + + "}", + }, + new String[] { + "META-INF/MANIFEST.MF", + "Manifest-Version: 1.0\n" + + "Created-By: Eclipse JDT Test Harness\n" + + "Class-Path: \n" + + " lib2.jar\n", + "p/S1.java", + "package p;\n" + + "public class S1 {\n" + + "}", + }, + LIB_DIR + "/lib16.jar", + CompilerOptions.getFirstSupportedJavaVersion()); + new File(LIB_DIR + "/dir").mkdir(); + Util.createJar( + new String[] { + "p/A.java", + "package p;\n" + + "public class A {\n" + + "}", + }, + new String[] { + "META-INF/MANIFEST.MF", + "Manifest-Version: 1.0\n" + + "Created-By: Eclipse JDT Test Harness\n" + + "Class-Path: ../lib2.jar\n", + }, + LIB_DIR + "/dir/lib17.jar", + CompilerOptions.getFirstSupportedJavaVersion()); + CASCADED_JARS_CREATED = true; } protected String getLibraryClassesAsQuotedString() { diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractComparableTest.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractComparableTest.java index 48504c3e61..eeb34632cd 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractComparableTest.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractComparableTest.java @@ -20,11 +20,11 @@ package org.eclipse.jdt.core.tests.compiler.regression; import java.util.Map; -import junit.framework.Test; -import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; +import junit.framework.Test; + @SuppressWarnings({ "unchecked", "rawtypes" }) public class AbstractComparableTest extends AbstractRegressionTest { @@ -97,7 +97,7 @@ public class AbstractComparableTest extends AbstractRegressionTest { "}"; public static Test buildComparableTestSuite(Class evaluationTestClass) { - Test suite = buildMinimalComplianceTestSuite(evaluationTestClass, F_1_5); + Test suite = buildMinimalComplianceTestSuite(evaluationTestClass, FIRST_SUPPORTED_JAVA_VERSION); TESTS_COUNTERS.put(evaluationTestClass.getName(), Integer.valueOf(suite.countTestCases())); return suite; } @@ -145,8 +145,6 @@ protected String intersection(String... types) { types = temp; } } - if (this.complianceLevel >= ClassFileConstants.JDK1_8) - return String.join(" & ", types); - return String.join("&", types); + return String.join(" & ", types); } } diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractRegressionTest.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractRegressionTest.java index 14a4b14a79..2272138b24 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractRegressionTest.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractRegressionTest.java @@ -4018,7 +4018,8 @@ protected void setUp() throws Exception { String version = JavacCompiler.getVersion(cmdLineHeader.toString()); cmdLineHeader.append(" -d "); cmdLineHeader.append(JAVAC_OUTPUT_DIR_NAME.indexOf(" ") != -1 ? "\"" + JAVAC_OUTPUT_DIR_NAME + "\"" : JAVAC_OUTPUT_DIR_NAME); - cmdLineHeader.append(" -source 1.5 -deprecation -Xlint "); // enable recommended warnings + String firstSupportedVersion = CompilerOptions.getFirstSupportedJavaVersion(); + cmdLineHeader.append(" -source " + firstSupportedVersion + " -deprecation -Xlint "); // enable recommended warnings // WORK new javac system does not do that... reconsider // REVIEW consider enabling all warnings instead? Philippe does not see // this as ez to use (too many changes in logs) diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AnnotationTest.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AnnotationTest.java index 466557801e..7470b3d02d 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AnnotationTest.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AnnotationTest.java @@ -7973,8 +7973,8 @@ public void test237() { "----------\n" + "2. ERROR in X.java (at line 6)\n" + " List ls = get();\n" + - " ^^^^^\n" + - "Type mismatch: cannot convert from B to List\n" + + " ^^^\n" + + "The method get() from the type X refers to the missing type ArrayList\n" + "----------\n"); } public void test238() { @@ -9134,9 +9134,9 @@ public void test272() throws Exception { return; } Map options = getCompilerOptions(); - options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4); - options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5); + options.put(CompilerOptions.OPTION_Source, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.getFirstSupportedJavaVersion()); this.runConformTest( new String[] { "X.java", @@ -11015,9 +11015,9 @@ public void test398657() throws Exception { return; } Map options = getCompilerOptions(); - options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4); - options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5); + options.put(CompilerOptions.OPTION_Source, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.getFirstSupportedJavaVersion()); this.runConformTest( new String[] { "p/Annot.java", @@ -11053,9 +11053,9 @@ public void test398657_2() throws Exception { return; } Map options = getCompilerOptions(); - options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4); - options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5); + options.put(CompilerOptions.OPTION_Source, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.getFirstSupportedJavaVersion()); this.runConformTest( new String[] { "p/Y.java", @@ -11200,13 +11200,11 @@ public void test416107b() { } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=427367 public void test427367() throws Exception { - if (this.complianceLevel < ClassFileConstants.JDK1_5) { - return; - } + Map options = getCompilerOptions(); - options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4); - options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5); + options.put(CompilerOptions.OPTION_Source, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.getFirstSupportedJavaVersion()); this.runNegativeTest( new String[] { "X.java", @@ -11264,9 +11262,7 @@ public void test427367() throws Exception { } //https://bugs.eclipse.org/bugs/show_bug.cgi?id=376977 public void test376977() throws Exception { - if (this.complianceLevel < ClassFileConstants.JDK1_5) { - return; - } + this.runNegativeTest( new String[] { "X.java", @@ -11366,9 +11362,7 @@ public void test438437() { } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=434556, Broken class file generated for incorrect annotation usage public void test434556() throws Exception { - if (this.complianceLevel < ClassFileConstants.JDK1_5) { - return; - } + this.runNegativeTest( new String[] { "A.java", @@ -11419,9 +11413,6 @@ public void test434556() throws Exception { } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=433747, [compiler] TYPE Annotation allowed in package-info instead of only PACKAGE public void test433747() throws Exception { - if (this.complianceLevel < ClassFileConstants.JDK1_5) { - return; - } String[] src = new String[] { "p/package-info.java", "@PackageAnnot(\"p123456\")\n" + @@ -11455,13 +11446,10 @@ public void test433747() throws Exception { } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=456960 - Broken classfile generated for incorrect annotation usage - case 2 public void test456960() throws Exception { - if (this.complianceLevel < ClassFileConstants.JDK1_5) { - return; - } Map options = getCompilerOptions(); - options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_5); - options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5); + options.put(CompilerOptions.OPTION_Source, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.getFirstSupportedJavaVersion()); + options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.getFirstSupportedJavaVersion()); this.runNegativeTest( new String[] { "X.java", @@ -12351,9 +12339,7 @@ public void testBug490698_comment16() { } public void testBugVisibility() { - if (this.complianceLevel < ClassFileConstants.JDK1_5) { - return; - } + runConformTest( new String[] { "X.java", diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ArrayTest.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ArrayTest.java index b3b528bdd8..7a4618f351 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ArrayTest.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ArrayTest.java @@ -23,8 +23,6 @@ import org.eclipse.jdt.core.ToolFactory; import org.eclipse.jdt.core.tests.util.Util; import org.eclipse.jdt.core.util.ClassFileBytesDisassembler; -import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; -import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; @SuppressWarnings({ "unchecked", "rawtypes" }) public class ArrayTest extends AbstractRegressionTest { @@ -247,10 +245,6 @@ public void test010() { } //https://bugs.eclipse.org/bugs/show_bug.cgi?id=148807 - variation public void test011() throws Exception { - if (new CompilerOptions(getCompilerOptions()).complianceLevel < ClassFileConstants.JDK1_5) { - // there is a bug on 1.4 VMs which make them fail verification (see 148807) - return; - } this.runConformTest( new String[] { "X.java", @@ -311,10 +305,6 @@ public void test011() throws Exception { } //https://bugs.eclipse.org/bugs/show_bug.cgi?id=148807 - variation public void test012() throws Exception { - if (new CompilerOptions(getCompilerOptions()).complianceLevel < ClassFileConstants.JDK1_5) { - // there is a bug on 1.4 VMs which make them fail verification (see 148807) - return; - } this.runConformTest( new String[] { "X.java", @@ -403,16 +393,10 @@ public void test013() { "argument cannot be resolved to a variable\n" + "----------\n"); } -//https://bugs.eclipse.org/bugs/show_bug.cgi?id=247307 // Check return type of array#clone() public void test014() throws Exception { Map optionsMap = getCompilerOptions(); - CompilerOptions options = new CompilerOptions(optionsMap); - if (options.complianceLevel > ClassFileConstants.JDK1_4) { - // check that #clone() return type is changed ONLY from -source 1.5 only (independant from compliance level) - optionsMap.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_4); - } - this.runNegativeTest( + this.runConformTest( new String[] { "X.java", "public class X {\n" + @@ -421,22 +405,12 @@ public void test014() throws Exception { " }\n" + "}\n", }, - "----------\n" + - "1. ERROR in X.java (at line 3)\n" + - " long[] other = longs.clone();\n" + - " ^^^^^^^^^^^^^\n" + - "Type mismatch: cannot convert from Object to long[]\n" + - "----------\n", - null, - true, + "", optionsMap); } //https://bugs.eclipse.org/bugs/show_bug.cgi?id=247307 - variation //Check return type of array#clone() public void test015() throws Exception { - if ( new CompilerOptions(getCompilerOptions()).sourceLevel < ClassFileConstants.JDK1_5) { - return; - } this.runConformTest( new String[] { "X.java", @@ -469,18 +443,8 @@ public void test016() throws Exception { "\n", ClassFileBytesDisassembler.DETAILED); - String expectedOutput = new CompilerOptions(getCompilerOptions()).sourceLevel <= ClassFileConstants.JDK1_4 - ? " // Method descriptor #15 ([J)V\n" + - " // Stack: 1, Locals: 3\n" + - " void foo(long[] longs) throws java.lang.Exception;\n" + - " 0 aload_1 [longs]\n" + - " 1 invokevirtual java.lang.Object.clone() : java.lang.Object [19]\n" + - " 4 astore_2 [other]\n" + - " 5 return\n" + - " Line numbers:\n" + - " [pc: 0, line: 3]\n" + - " [pc: 5, line: 4]\n" - : " // Method descriptor #15 ([J)V\n" + + String expectedOutput = + " // Method descriptor #15 ([J)V\n" + " // Stack: 1, Locals: 3\n" + " void foo(long[] longs) throws java.lang.Exception;\n" + " 0 aload_1 [longs]\n" + @@ -501,15 +465,9 @@ public void test016() throws Exception { return; } -//https://bugs.eclipse.org/bugs/show_bug.cgi?id=247307 - variation //Check constant pool declaring class of array#clone() public void test017() throws Exception { Map optionsMap = getCompilerOptions(); - CompilerOptions options = new CompilerOptions(optionsMap); - if (options.complianceLevel > ClassFileConstants.JDK1_4) { - // check that #clone() return type is changed ONLY from -source 1.5 only (independant from compliance level) - optionsMap.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_4); - } this.runConformTest( new String[] { "X.java", @@ -538,7 +496,7 @@ public void test017() throws Exception { " // Stack: 1, Locals: 3\n" + " void foo(long[] longs) throws java.lang.Exception;\n" + " 0 aload_1 [longs]\n" + - " 1 invokevirtual java.lang.Object.clone() : java.lang.Object [19]\n" + + " 1 invokevirtual long[].clone() : java.lang.Object [19]\n" + " 4 astore_2 [other]\n" + " 5 return\n" + " Line numbers:\n" + @@ -556,8 +514,6 @@ public void test017() throws Exception { // https://bugs.eclipse.org/331872 - [compiler] NPE in Scope.createArrayType when attempting qualified access from type parameter public void test018() throws Exception { - if (this.complianceLevel < ClassFileConstants.JDK1_5) - return; this.runNegativeTest( new String[] { "X.java", diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssertionTest.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssertionTest.java index d151a04b53..46fcf009f3 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssertionTest.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssertionTest.java @@ -31,7 +31,7 @@ public AssertionTest(String name) { } public static Test suite() { - return buildMinimalComplianceTestSuite(testClass(), F_1_4); + return buildMinimalComplianceTestSuite(testClass(), FIRST_SUPPORTED_JAVA_VERSION); } public static Class testClass() { diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest_1_5.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest_1_5.java index fb8a22161c..6dafc7c59e 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest_1_5.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest_1_5.java @@ -42,7 +42,7 @@ protected Map getCompilerOptions() { // TESTS_RANGE = new int[] { 11, -1 }; } public static Test suite() { - return buildMinimalComplianceTestSuite(testClass(), F_1_5); + return buildMinimalComplianceTestSuite(testClass(), FIRST_SUPPORTED_JAVA_VERSION); } //https://bugs.eclipse.org/bugs/show_bug.cgi?id=277450 public void test1() { diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest_1_7.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest_1_7.java index a49aa3f0d1..d8b1b4bfbe 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest_1_7.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AssignmentTest_1_7.java @@ -42,7 +42,7 @@ protected Map getCompilerOptions() { // TESTS_RANGE = new int[] { 11, -1 }; } public static Test suite() { - return buildMinimalComplianceTestSuite(testClass(), F_1_7); + return buildMinimalComplianceTestSuite(testClass(), FIRST_SUPPORTED_JAVA_VERSION); } /* * no effect assignment bug diff --git a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java index 8ddea9a351..60aba90153 100644 --- a/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java +++ b/jdt-patch/e433/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java @@ -78,12 +78,12 @@ public BatchCompilerTest(String name) { } /** * This test suite only needs to be run on one compliance. - * As it includes some specific 1.5 tests, it must be used with a least a 1.5 VM + * As it includes some specific 1.8 tests, it must be used with a least a 1.8 VM * and not be duplicated in general test suite. * @see TestAll */ public static Test suite() { - return buildMinimalComplianceTestSuite(testClass(), F_1_5); + return buildMinimalComplianceTestSuite(testClass(), FIRST_SUPPORTED_JAVA_VERSION); } public static Class testClass() { return BatchCompilerTest.class; @@ -307,8 +307,8 @@ else if (currentChar == '\n') public void test001() { - String commandLine = "-classpath \"D:/a folder\";d:/jdk1.4/jre/lib/rt.jar -1.4 -preserveAllLocals -g -verbose d:/eclipse/workspaces/development2.0/plugins/Bar/src2/ -d d:/test"; - String expected = " <-classpath> <-1.4> <-preserveAllLocals> <-g> <-verbose> <-d> "; + String commandLine = "-classpath \"D:/a folder\";d:/jdk1.8/jre/lib/rt.jar -1.8 -preserveAllLocals -g -verbose d:/eclipse/workspaces/development2.0/plugins/Bar/src2/ -d d:/test"; + String expected = " <-classpath> <-1.8> <-preserveAllLocals> <-g> <-verbose> <-d> "; String[] args = Main.tokenize(commandLine); StringBuilder buffer = new StringBuilder(30); @@ -421,7 +421,7 @@ public void test007(){ "}" }, "\"" + OUTPUT_DIR + File.separator + "X.java\"" - + " -1.5 -g -preserveAllLocals" + + " -1.8 -g -preserveAllLocals" + " -bootclasspath " + getLibraryClassesAsQuotedString() + " -warn:+deprecation,syntheticAccess,uselessTypeCheck,unsafe,finalBound,unusedLocal" + " -verbose -proceedOnError -referenceInfo -d \"" + OUTPUT_DIR + "\"", @@ -459,7 +459,7 @@ public void test008(){ "}" }, "\"" + OUTPUT_DIR + File.separator + "X.java\"" - + " -1.5 -g -preserveAllLocals" + + " -1.8 -g -preserveAllLocals" + " -bootclasspath " + getLibraryClassesAsQuotedString() + " -warn:+deprecation,syntheticAccess,uselessTypeCheck,unsafe,finalBound,unusedLocal" + " -proceedOnError -referenceInfo -d \"" + OUTPUT_DIR + "\"", @@ -509,7 +509,7 @@ public void test009(){ "}", }, "\"" + OUTPUT_DIR + File.separator + "X.java\"" - + " -1.5 -g -preserveAllLocals" + + " -1.8 -g -preserveAllLocals" + " -cp \"" + OUTPUT_DIR + "[+OK2" + File.pathSeparator + "~Warn" + File.pathSeparator + "-KO]\"" + " -warn:+deprecation,syntheticAccess,uselessTypeCheck,unsafe,finalBound,unusedLocal" @@ -554,7 +554,7 @@ public void test010(){ "}" }, "\"" + OUTPUT_DIR + File.separator + "X.java\"" - + " -1.5 -g -preserveAllLocals" + + " -1.8 -g -preserveAllLocals" + " -verbose -warn:+deprecation,syntheticAccess,uselessTypeCheck,unsafe,finalBound,unusedLocal" + " -proceedOnError -referenceInfo -d \"" + OUTPUT_DIR + "\"", "[parsing ---OUTPUT_DIR_PLACEHOLDER---/X.java - #1/1]\n" + @@ -580,7 +580,7 @@ public void test011_classpath(){ "}", }, "\"" + OUTPUT_DIR + File.separator + "X.java\"" - + " -1.5 -g -preserveAllLocals" + + " -1.8 -g -preserveAllLocals" + " -cp \"" + OUTPUT_DIR + "[+**/OK2;~**/Warn;-KO]" + "\"" + File.pathSeparator + " -proceedOnError -referenceInfo -d \"" + OUTPUT_DIR + "\"", @@ -666,16 +666,11 @@ public void test012(){ " resolved to be root modules\n" + " --limit-modules (,)*\n" + " specify the observable module names\n" + - " --patch-modules =\n" + + " --patch-module =\n" + " specify source locations for patching the given module\n" + " --release compile for a specific VM version\n" + " \n" + " Compliance options:\n" + - " -1.3 use 1.3 compliance (-source 1.3 -target 1.1)\n" + - " -1.4 + use 1.4 compliance (-source 1.3 -target 1.2)\n" + - " -1.5 -5 -5.0 use 1.5 compliance (-source 1.5 -target 1.5)\n" + - " -1.6 -6 -6.0 use 1.6 compliance (-source 1.6 -target 1.6)\n" + - " -1.7 -7 -7.0 use 1.7 compliance (-source 1.7 -target 1.7)\n" + " -1.8 -8 -8.0 use 1.8 compliance (-source 1.8 -target 1.8)\n" + " -1.9 -9 -9.0 use 1.9 compliance (-source 1.9 -target 1.9)\n" + " -10 -10.0 use 10 compliance (-source 10 -target 10)\n" + @@ -684,12 +679,10 @@ public void test012(){ " -13 -13.0 use 13 compliance (-source 13 -target 13)\n" + " -14 -14.0 use 14 compliance (-source 14 -target 14)\n" + getVersionOptions() + - " -source set source level: 1.3 to 1.9, 10 to "+ CompilerOptions.getLatestVersion() +"\n" + - " (or 6, 6.0, etc)\n" + - " -target set classfile target: 1.3 to 1.9, 10 to "+ CompilerOptions.getLatestVersion() +"\n" + - " (or 6, 6.0, etc)\n" + - " cldc1.1 can also be used to generate the StackMap\n" + - " attribute\n" + + " -source set source level: 1.8, 1.9, 10 to "+ CompilerOptions.getLatestVersion() +"\n" + + " (or 8, 8.0, etc)\n" + + " -target set classfile target: 1.8, 1.9, 10 to "+ CompilerOptions.getLatestVersion() +"\n" + + " (or 8, 8.0, etc)\n" + " --enable-preview enable support for preview features of the\n" + " latest Java release\n" + " \n" + @@ -732,7 +725,6 @@ public void test012(){ " -preserveAllLocals preserve unused local vars for debug purpose\n" + " \n" + " Annotation processing options:\n" + - " These options are meaningful only in a 1.6 environment.\n" + " -Akey[=value] options that are passed to annotation processors\n" + " -processorpath \n" + " specify locations where to find annotation processors.\n" + @@ -769,7 +761,6 @@ public void test012(){ " -noExit do not call System.exit(n) at end of compilation (n==0\n" + " if no error)\n" + " -repeat repeat compilation process times for perf analysis\n" + - " -inlineJSR inline JSR bytecode (implicit if target >= 1.5)\n" + " -enableJavadoc consider references in javadoc\n" + " -parameters generate method parameters attribute (for target >= 1.8)\n" + " -genericsignature generate generic signature for lambda expressions\n" + @@ -1001,7 +992,7 @@ public void test013() { " Zork z;\n" + "}", }, "\"" + OUTPUT_DIR + File.separator + "X.java\"" - + " -1.5 -proceedOnError" + + " -1.8 -proceedOnError" + " -log \"" + logFileName + "\" -d \"" + OUTPUT_DIR + "\"", "", "----------\n" + @@ -1019,7 +1010,7 @@ public void test013() { "\n" + " \n" + " \n" + - " \n" + + " \n" + " \n" + " \n" + " \n" + @@ -1039,15 +1030,14 @@ public void test013() { "