Merge remote-tracking branch 'origin/master' into BETA_JAVA16 after M3
Conflicts:
org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/SourceTestCase14.java
Change-Id: I905af9738941d6bb5918daeb7d05300702fa8ec2
diff --git a/org.eclipse.jdt.astview/src/org/eclipse/jdt/astview/views/ASTView.java b/org.eclipse.jdt.astview/src/org/eclipse/jdt/astview/views/ASTView.java
index 5b936f7..3ab8b5c 100644
--- a/org.eclipse.jdt.astview/src/org/eclipse/jdt/astview/views/ASTView.java
+++ b/org.eclipse.jdt.astview/src/org/eclipse/jdt/astview/views/ASTView.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2020 IBM Corporation and others.
+ * Copyright (c) 2000, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -8,6 +8,10 @@
*
* SPDX-License-Identifier: EPL-2.0
*
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ *
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
@@ -114,7 +118,6 @@
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.WorkingCopyOwner;
import org.eclipse.jdt.core.compiler.IProblem;
-import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.ASTNode;
import org.eclipse.jdt.core.dom.ASTParser;
import org.eclipse.jdt.core.dom.ASTRequestor;
@@ -132,70 +135,24 @@
import org.eclipse.jdt.ui.JavaUI;
+import org.eclipse.jdt.internal.ui.util.ASTHelper;
+
public class ASTView extends ViewPart implements IShowInSource, IShowInTargetList {
- static final int JLS_LATEST= AST.JLS15;
-
- private static final int JLS15= AST.JLS15;
-
- /**
- * @deprecated to get rid of deprecation warnings in code
- */
- @Deprecated
- private static final int JLS14= AST.JLS14;
-
- /**
- * @deprecated to get rid of deprecation warnings in code
- */
- @Deprecated
- private static final int JLS13= AST.JLS13;
-
- /**
- * @deprecated to get rid of deprecation warnings in code
- */
- @Deprecated
- private static final int JLS12= AST.JLS12;
-
- /**
- * @deprecated to get rid of deprecation warnings in code
- */
- @Deprecated
- private static final int JLS11= AST.JLS11;
-
- /**
- * @deprecated to get rid of deprecation warnings in code
- */
- @Deprecated
- private static final int JLS10= AST.JLS10;
-
- /**
- * @deprecated to get rid of deprecation warnings in code
- */
- @Deprecated
- private static final int JLS9= AST.JLS9;
-
- /**
- * @deprecated to get rid of deprecation warnings in code
- */
- @Deprecated
- private static final int JLS8= AST.JLS8;
-
- /**
- * @deprecated to get rid of deprecation warnings in code
- */
- @Deprecated
- private static final int JLS4= AST.JLS4;
- /**
- * @deprecated to get rid of deprecation warnings in code
- */
- @Deprecated
- private static final int JLS3= AST.JLS3;
- /**
- * @deprecated to get rid of deprecation warnings in code
- */
- @Deprecated
- private static final int JLS2= AST.JLS2;
+ static final int JLS_LATEST= ASTHelper.JLS_Latest;
+ private static final int JLS16= ASTHelper.JLS16;
+ private static final int JLS15= ASTHelper.JLS15;
+ private static final int JLS14= ASTHelper.JLS14;
+ private static final int JLS13= ASTHelper.JLS13;
+ private static final int JLS12= ASTHelper.JLS12;
+ private static final int JLS11= ASTHelper.JLS11;
+ private static final int JLS10= ASTHelper.JLS10;
+ private static final int JLS9= ASTHelper.JLS9;
+ private static final int JLS8= ASTHelper.JLS8;
+ private static final int JLS4= ASTHelper.JLS4;
+ private static final int JLS3= ASTHelper.JLS3;
+ private static final int JLS2= ASTHelper.JLS2;
private class ASTViewSelectionProvider implements ISelectionProvider {
ListenerList<ISelectionChangedListener> fListeners= new ListenerList<>(ListenerList.IDENTITY);
@@ -554,6 +511,7 @@
case JLS13:
case JLS14:
case JLS15:
+ case JLS16:
fCurrentASTLevel= level;
}
} catch (NumberFormatException e) {
@@ -1175,6 +1133,7 @@
new ASTLevelToggle("AST Level 1&3 (13)", JLS13), //$NON-NLS-1$
new ASTLevelToggle("AST Level 1&4 (14)", JLS14), //$NON-NLS-1$
new ASTLevelToggle("AST Level 1&5 (15)", JLS15), //$NON-NLS-1$
+ new ASTLevelToggle("AST Level 1&6 (16)", JLS16), //$NON-NLS-1$
};
fAddToTrayAction= new Action() {
diff --git a/org.eclipse.jdt.core.manipulation/.settings/.api_filters b/org.eclipse.jdt.core.manipulation/.settings/.api_filters
index 21cf1b8..a0a4c9e 100644
--- a/org.eclipse.jdt.core.manipulation/.settings/.api_filters
+++ b/org.eclipse.jdt.core.manipulation/.settings/.api_filters
@@ -27,53 +27,18 @@
</filter>
</resource>
<resource path="core extension/org/eclipse/jdt/internal/corext/dom/ASTFlattener.java" type="org.eclipse.jdt.internal.corext.dom.ASTFlattener">
- <filter comment="For Java 14 preview features" id="640712815">
+ <filter comment="This is a Java 16 preview feature" id="640712815">
<message_arguments>
- <message_argument value="AbstractTypeDeclaration"/>
+ <message_argument value="PatternInstanceofExpression"/>
<message_argument value="ASTFlattener"/>
- <message_argument value="bodyDeclarations()"/>
+ <message_argument value="getLeftOperand()"/>
</message_arguments>
</filter>
- <filter comment="For Java 14 preview features" id="640712815">
+ <filter comment="This is a Java 16 preview feature" id="640712815">
<message_arguments>
- <message_argument value="AbstractTypeDeclaration"/>
+ <message_argument value="PatternInstanceofExpression"/>
<message_argument value="ASTFlattener"/>
- <message_argument value="getName()"/>
- </message_arguments>
- </filter>
- <filter comment="For Java 14 preview features" id="640712815">
- <message_arguments>
- <message_argument value="BodyDeclaration"/>
- <message_argument value="ASTFlattener"/>
- <message_argument value="getJavadoc()"/>
- </message_arguments>
- </filter>
- <filter comment="For Java 14 preview features" id="640712815">
- <message_arguments>
- <message_argument value="BodyDeclaration"/>
- <message_argument value="ASTFlattener"/>
- <message_argument value="modifiers()"/>
- </message_arguments>
- </filter>
- <filter comment="For Java 14 preview features" id="640712815">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="ASTFlattener"/>
- <message_argument value="recordComponents()"/>
- </message_arguments>
- </filter>
- <filter comment="For Java 14 preview features" id="640712815">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="ASTFlattener"/>
- <message_argument value="superInterfaceTypes()"/>
- </message_arguments>
- </filter>
- <filter comment="For Java 14 preview features" id="640712815">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="ASTFlattener"/>
- <message_argument value="typeParameters()"/>
+ <message_argument value="getRightOperand()"/>
</message_arguments>
</filter>
</resource>
@@ -99,22 +64,6 @@
<message_argument value="isRecord()"/>
</message_arguments>
</filter>
- <filter id="640712815">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="LinkedNodeFinder"/>
- <message_argument value="recordComponents()"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="core extension/org/eclipse/jdt/internal/corext/dom/ModifierRewrite.java" type="org.eclipse.jdt.internal.corext.dom.ModifierRewrite">
- <filter comment="This is a Java 14 preview feature" id="623939596">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="ModifierRewrite"/>
- <message_argument value="MODIFIERS2_PROPERTY"/>
- </message_arguments>
- </filter>
</resource>
<resource path="core extension/org/eclipse/jdt/internal/corext/refactoring/rename/RefactoringAnalyzeUtil.java" type="org.eclipse.jdt.internal.corext.refactoring.rename.RefactoringAnalyzeUtil">
<filter comment="This is a Java15 preview feature" id="640712815">
@@ -124,12 +73,5 @@
<message_argument value="isCompactConstructor()"/>
</message_arguments>
</filter>
- <filter comment="This is a Java15 preview feature" id="640712815">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="RefactoringAnalyzeUtil"/>
- <message_argument value="getMethods()"/>
- </message_arguments>
- </filter>
</resource>
</component>
diff --git a/org.eclipse.jdt.core.manipulation/META-INF/MANIFEST.MF b/org.eclipse.jdt.core.manipulation/META-INF/MANIFEST.MF
index 7031dea..3fdbb2c 100644
--- a/org.eclipse.jdt.core.manipulation/META-INF/MANIFEST.MF
+++ b/org.eclipse.jdt.core.manipulation/META-INF/MANIFEST.MF
@@ -61,5 +61,5 @@
org.eclipse.jdt.internal.ui.text.correction;x-friends:="org.eclipse.jdt.ui,org.eclipse.jdt.debug.ui",
org.eclipse.jdt.internal.ui.text.correction.proposals;x-friends:="org.eclipse.jdt.ui",
org.eclipse.jdt.internal.ui.text.template.contentassist;x-friends:="org.eclipse.jdt.ui",
- org.eclipse.jdt.internal.ui.util;x-friends:="org.eclipse.jdt.ui"
+ org.eclipse.jdt.internal.ui.util;x-friends:="org.eclipse.jdt.ui,org.eclipse.jdt.astview,org.eclipse.jdt.junit.core"
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/core/manipulation/ImportReferencesCollector.java b/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/core/manipulation/ImportReferencesCollector.java
index 521e571..67d8a70 100644
--- a/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/core/manipulation/ImportReferencesCollector.java
+++ b/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/core/manipulation/ImportReferencesCollector.java
@@ -20,7 +20,6 @@
import org.eclipse.jface.text.Region;
import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.ASTNode;
import org.eclipse.jdt.core.dom.AnnotatableType;
import org.eclipse.jdt.core.dom.ClassInstanceCreation;
@@ -246,7 +245,7 @@
@Override
public boolean visit(SimpleType node) {
- if (node.getAST().apiLevel() < AST.JLS10 || !node.isVar()) {
+ if (node.getAST().apiLevel() < ASTHelper.JLS10 || !node.isVar()) {
typeRefFound(node.getName());
}
visitAnnotations(node);
@@ -268,7 +267,7 @@
}
private void visitAnnotations(AnnotatableType node) {
- if (node.getAST().apiLevel() >= AST.JLS8) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS8) {
doVisitChildren(node.annotations());
}
}
@@ -479,13 +478,13 @@
// name not visited
int apiLevel= node.getAST().apiLevel();
- if (apiLevel >= AST.JLS8) {
+ if (apiLevel >= ASTHelper.JLS8) {
doVisitNode(node.getReceiverType());
}
// receiverQualifier not visited:
// Enclosing class names cannot be shadowed by an import (qualification is always redundant).
doVisitChildren(node.parameters());
- if (apiLevel >= AST.JLS8) {
+ if (apiLevel >= ASTHelper.JLS8) {
doVisitChildren(node.extraDimensions());
doVisitChildren(node.thrownExceptionTypes());
} else {
diff --git a/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/core/manipulation/SharedASTProviderCore.java b/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/core/manipulation/SharedASTProviderCore.java
index 2c4039b..092de50 100644
--- a/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/core/manipulation/SharedASTProviderCore.java
+++ b/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/core/manipulation/SharedASTProviderCore.java
@@ -7,6 +7,10 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
+ *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
*
* Contributors:
* IBM Corporation - initial API and implementation
@@ -32,7 +36,7 @@
* <p>Clients can make the following assumptions about the AST:</p>
* <ul>
* <li>the AST has a {@link ITypeRoot} as source: {@link CompilationUnit#getTypeRoot()} is not null.</li>
- * <li>the {@link AST#apiLevel() AST API level} is {@link AST#JLS15 API level 15} or higher</li>
+ * <li>the {@link AST#apiLevel() AST API level} is {@link AST#JLS16 API level 16} or higher</li>
* <li>the AST has bindings resolved ({@link AST#hasResolvedBindings()})</li>
* <li>{@link AST#hasStatementsRecovery() statement} and {@link AST#hasBindingsRecovery() bindings}
* recovery are enabled
diff --git a/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/internal/core/manipulation/StubUtility.java b/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/internal/core/manipulation/StubUtility.java
index 2099d1c..3425ef0 100644
--- a/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/internal/core/manipulation/StubUtility.java
+++ b/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/internal/core/manipulation/StubUtility.java
@@ -69,7 +69,6 @@
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.NamingConventions;
import org.eclipse.jdt.core.Signature;
-import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.ASTNode;
import org.eclipse.jdt.core.dom.ASTParser;
import org.eclipse.jdt.core.dom.AbstractTypeDeclaration;
@@ -108,6 +107,8 @@
import org.eclipse.jdt.internal.corext.dom.Bindings;
import org.eclipse.jdt.internal.corext.dom.IASTSharedValues;
+import org.eclipse.jdt.internal.ui.util.ASTHelper;
+
/**
* Implementations for {@link CodeGeneration} APIs, and other helper methods
* to create source code stubs based on {@link IJavaElement}s.
@@ -765,7 +766,7 @@
@Deprecated
private static String[] getExceptionNames(MethodDeclaration decl) {
String[] exceptionNames;
- if (decl.getAST().apiLevel() >= AST.JLS8) {
+ if (decl.getAST().apiLevel() >= ASTHelper.JLS8) {
List<Type> exceptions= decl.thrownExceptionTypes();
exceptionNames= new String[exceptions.size()];
for (int i= 0; i < exceptionNames.length; i++) {
@@ -793,7 +794,7 @@
@Deprecated
private static ASTNode getReturnType(MethodDeclaration decl) {
// used from API, can't eliminate
- return decl.getAST().apiLevel() == AST.JLS2 ? decl.getReturnType() : decl.getReturnType2();
+ return decl.getAST().apiLevel() == ASTHelper.JLS2 ? decl.getReturnType() : decl.getReturnType2();
}
diff --git a/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/internal/ui/util/ASTHelper.java b/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/internal/ui/util/ASTHelper.java
index 3d397ae..7d8c7b2 100644
--- a/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/internal/ui/util/ASTHelper.java
+++ b/org.eclipse.jdt.core.manipulation/common/org/eclipse/jdt/internal/ui/util/ASTHelper.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2019, 2020 IBM Corporation and others.
+ * Copyright (c) 2019, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -7,6 +7,10 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
+ *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
*
* Contributors:
* IBM Corporation - initial API and implementation
@@ -17,20 +21,38 @@
import org.eclipse.jdt.core.dom.ASTNode;
import org.eclipse.jdt.core.dom.Modifier;
+@SuppressWarnings("deprecation")
public class ASTHelper {
- @SuppressWarnings("deprecation")
+ public static final int JLS2 = AST.JLS2;
+ public static final int JLS3 = AST.JLS3;
+ public static final int JLS4 = AST.JLS4;
+ public static final int JLS8 = AST.JLS8;
+ public static final int JLS9 = AST.JLS9;
+ public static final int JLS10 = AST.JLS10;
+ public static final int JLS11 = AST.JLS11;
+ public static final int JLS12 = AST.JLS12;
+ public static final int JLS13 = AST.JLS13;
+ public static final int JLS14 = AST.JLS14;
+ public static final int JLS15 = AST.JLS15;
+ public static final int JLS16 = AST.JLS16;
+
+ /*
+ * Junit4TestFinder and Junit5TestFinder use AST.JLS_Latest directly
+ */
+ public static final int JLS_Latest = AST.JLS_Latest;
+
private static boolean isNodeTypeSupportedInAST(AST ast, int nodeType) {
switch (nodeType) {
case ASTNode.SWITCH_CASE:
case ASTNode.SWITCH_EXPRESSION:
case ASTNode.YIELD_STATEMENT:
- return ast.apiLevel() >= AST.JLS14;
+ return ast.apiLevel() >= JLS14;
case ASTNode.TEXT_BLOCK:
- return ast.apiLevel() >= AST.JLS15;
+ return ast.apiLevel() >= JLS15;
case ASTNode.RECORD_DECLARATION:
case ASTNode.INSTANCEOF_EXPRESSION:
- return ast.isPreviewEnabled();
+ return ast.apiLevel() >= JLS16;
default:
break;
}
@@ -72,4 +94,8 @@
return isModifierSupportedInAST(ast, Modifier.SEALED);
}
+ public static boolean isInstanceofExpressionPatternSupported(AST ast) {
+ return isNodeTypeSupportedInAST(ast, ASTNode.INSTANCEOF_EXPRESSION);
+ }
+
}
diff --git a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/codemanipulation/StubUtility2Core.java b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/codemanipulation/StubUtility2Core.java
index b8cf73d..970f7cb 100644
--- a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/codemanipulation/StubUtility2Core.java
+++ b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/codemanipulation/StubUtility2Core.java
@@ -85,6 +85,8 @@
import org.eclipse.jdt.internal.corext.refactoring.util.JavaElementUtil;
import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
+import org.eclipse.jdt.internal.ui.util.ASTHelper;
+
/**
* Utilities for code generation based on AST rewrite.
*
@@ -525,7 +527,7 @@
public static void createThrownExceptions(MethodDeclaration decl, IMethodBinding method, ImportRewrite imports, ImportRewriteContext context, AST ast) {
ITypeBinding[] excTypes= method.getExceptionTypes();
- if (ast.apiLevel() >= AST.JLS8) {
+ if (ast.apiLevel() >= ASTHelper.JLS8) {
List<Type> thrownExceptions= decl.thrownExceptionTypes();
for (ITypeBinding t : excTypes) {
Type excType= imports.addImport(t, ast, context, TypeLocation.EXCEPTION);
diff --git a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/dom/ASTFlattener.java b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/dom/ASTFlattener.java
index 42a35dc..c483baa 100644
--- a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/dom/ASTFlattener.java
+++ b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/dom/ASTFlattener.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2020 IBM Corporation and others.
+ * Copyright (c) 2000, 2021 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -7,6 +7,10 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
+ *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
*
* Contributors:
* IBM Corporation - initial API and implementation
@@ -29,27 +33,6 @@
*/
/**
- * @deprecated to avoid deprecation warnings
- */
- @Deprecated
- private static final int JLS3= AST.JLS3;
- /**
- * @deprecated to avoid deprecation warnings
- */
- @Deprecated
- private static final int JLS4= AST.JLS4;
- /**
- * @deprecated to avoid deprecation warnings
- */
- @Deprecated
- private static final int JLS8= AST.JLS8;
- /**
- * @deprecated to avoid deprecation warnings
- */
- @Deprecated
- private static final int JLS9= AST.JLS9;
-
- /**
* The string buffer into which the serialized representation of the AST is
* written.
*/
@@ -137,7 +120,7 @@
}
void printTypeAnnotations(AnnotatableType node) {
- if (node.getAST().apiLevel() >= JLS8) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS8) {
printAnnotationsList(node.annotations());
}
}
@@ -287,7 +270,7 @@
*/
@Override
public boolean visit(ArrayType node) {
- if (node.getAST().apiLevel() < JLS8) {
+ if (node.getAST().apiLevel() < ASTHelper.JLS8) {
getComponentType(node).accept(this);
this.fBuffer.append("[]");//$NON-NLS-1$
} else {
@@ -420,7 +403,7 @@
this.fBuffer.append(".");//$NON-NLS-1$
}
this.fBuffer.append("new ");//$NON-NLS-1$
- if (node.getAST().apiLevel() >= JLS3) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS3) {
if (!node.typeArguments().isEmpty()) {
this.fBuffer.append("<");//$NON-NLS-1$
for (Iterator<Type> it= node.typeArguments().iterator(); it.hasNext();) {
@@ -454,7 +437,7 @@
*/
@Override
public boolean visit(CompilationUnit node) {
- if (node.getAST().apiLevel() >= JLS9) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS9) {
if (node.getModule() != null) {
node.getModule().accept(this);
}
@@ -491,7 +474,7 @@
*/
@Override
public boolean visit(ConstructorInvocation node) {
- if (node.getAST().apiLevel() >= JLS3) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS3) {
if (!node.typeArguments().isEmpty()) {
this.fBuffer.append("<");//$NON-NLS-1$
for (Iterator<Type> it= node.typeArguments().iterator(); it.hasNext();) {
@@ -708,7 +691,7 @@
if (node.getJavadoc() != null) {
node.getJavadoc().accept(this);
}
- if (node.getAST().apiLevel() >= JLS3) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS3) {
printModifiers(node.modifiers());
}
node.getType().accept(this);
@@ -770,7 +753,7 @@
@Override
public boolean visit(ImportDeclaration node) {
this.fBuffer.append("import ");//$NON-NLS-1$
- if (node.getAST().apiLevel() >= JLS3) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS3) {
if (node.isStatic()) {
this.fBuffer.append("static ");//$NON-NLS-1$
}
@@ -812,7 +795,7 @@
if (node.getJavadoc() != null) {
node.getJavadoc().accept(this);
}
- if (node.getAST().apiLevel() >= JLS3) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS3) {
printModifiers(node.modifiers());
}
node.getBody().accept(this);
@@ -829,6 +812,14 @@
node.getRightOperand().accept(this);
return false;
}
+
+ @Override
+ public boolean visit(PatternInstanceofExpression node) {
+ node.getLeftOperand().accept(this);
+ this.fBuffer.append(" instanceof ");//$NON-NLS-1$
+ node.getRightOperand().accept(this);
+ return false;
+ }
/*
* @see ASTVisitor#visit(IntersectionType)
@@ -969,7 +960,7 @@
@Override
public boolean visit(MethodRefParameter node) {
node.getType().accept(this);
- if (node.getAST().apiLevel() >= JLS3) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS3) {
if (node.isVarargs()) {
this.fBuffer.append("...");//$NON-NLS-1$
}
@@ -989,7 +980,7 @@
if (node.getJavadoc() != null) {
node.getJavadoc().accept(this);
}
- if (node.getAST().apiLevel() >= JLS3) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS3) {
printModifiers(node.modifiers());
if (!node.typeParameters().isEmpty()) {
this.fBuffer.append("<");//$NON-NLS-1$
@@ -1014,7 +1005,7 @@
}
node.getName().accept(this);
this.fBuffer.append("(");//$NON-NLS-1$
- if (node.getAST().apiLevel() >= JLS8) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS8) {
Type receiverType= node.getReceiverType();
if (receiverType != null) {
receiverType.accept(this);
@@ -1038,7 +1029,7 @@
}
}
this.fBuffer.append(")");//$NON-NLS-1$
- if (node.getAST().apiLevel() >= JLS8) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS8) {
List<Dimension> dimensions = node.extraDimensions();
for (Dimension e : dimensions) {
e.accept(this);
@@ -1048,7 +1039,7 @@
this.fBuffer.append("[]"); //$NON-NLS-1$
}
}
- List<? extends ASTNode> thrownExceptions= node.getAST().apiLevel() >= JLS8 ? node.thrownExceptionTypes() : getThrownExceptions(node);
+ List<? extends ASTNode> thrownExceptions= node.getAST().apiLevel() >= ASTHelper.JLS8 ? node.thrownExceptionTypes() : getThrownExceptions(node);
if (!thrownExceptions.isEmpty()) {
this.fBuffer.append(" throws ");//$NON-NLS-1$
for (Iterator<? extends ASTNode> it= thrownExceptions.iterator(); it.hasNext();) {
@@ -1077,7 +1068,7 @@
node.getExpression().accept(this);
this.fBuffer.append(".");//$NON-NLS-1$
}
- if (node.getAST().apiLevel() >= JLS3) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS3) {
if (!node.typeArguments().isEmpty()) {
this.fBuffer.append("<");//$NON-NLS-1$
for (Iterator<Type> it= node.typeArguments().iterator(); it.hasNext();) {
@@ -1211,7 +1202,7 @@
*/
@Override
public boolean visit(PackageDeclaration node) {
- if (node.getAST().apiLevel() >= JLS3) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS3) {
if (node.getJavadoc() != null) {
node.getJavadoc().accept(this);
}
@@ -1438,13 +1429,13 @@
*/
@Override
public boolean visit(SingleVariableDeclaration node) {
- if (node.getAST().apiLevel() >= JLS3) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS3) {
printModifiers(node.modifiers());
}
node.getType().accept(this);
- if (node.getAST().apiLevel() >= JLS3) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS3) {
if (node.isVarargs()) {
- if (node.getAST().apiLevel() >= JLS8) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS8) {
this.fBuffer.append(' ');
List<Annotation> annotations= node.varargsAnnotations();
printAnnotationsList(annotations);
@@ -1454,7 +1445,7 @@
}
this.fBuffer.append(" ");//$NON-NLS-1$
node.getName().accept(this);
- if (node.getAST().apiLevel() >= JLS8) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS8) {
List<Dimension> dimensions = node.extraDimensions();
for (Dimension e : dimensions) {
e.accept(this);
@@ -1498,7 +1489,7 @@
node.getExpression().accept(this);
this.fBuffer.append(".");//$NON-NLS-1$
}
- if (node.getAST().apiLevel() >= JLS3) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS3) {
if (!node.typeArguments().isEmpty()) {
this.fBuffer.append("<");//$NON-NLS-1$
for (Iterator<Type> it= node.typeArguments().iterator(); it.hasNext();) {
@@ -1547,7 +1538,7 @@
this.fBuffer.append(".");//$NON-NLS-1$
}
this.fBuffer.append("super.");//$NON-NLS-1$
- if (node.getAST().apiLevel() >= JLS3) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS3) {
if (!node.typeArguments().isEmpty()) {
this.fBuffer.append("<");//$NON-NLS-1$
for (Iterator<Type> it= node.typeArguments().iterator(); it.hasNext();) {
@@ -1757,7 +1748,7 @@
@Override
public boolean visit(TryStatement node) {
this.fBuffer.append("try ");//$NON-NLS-1$
- if (node.getAST().apiLevel() >= JLS4) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS4) {
if (!node.resources().isEmpty()) {
this.fBuffer.append("(");//$NON-NLS-1$
for (Iterator<Expression> it= node.resources().iterator(); it.hasNext();) {
@@ -1791,12 +1782,12 @@
if (node.getJavadoc() != null) {
node.getJavadoc().accept(this);
}
- if (node.getAST().apiLevel() >= JLS3) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS3) {
printModifiers(node.modifiers());
}
this.fBuffer.append(node.isInterface() ? "interface " : "class ");//$NON-NLS-2$//$NON-NLS-1$
node.getName().accept(this);
- if (node.getAST().apiLevel() >= JLS3) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS3) {
if (!node.typeParameters().isEmpty()) {
this.fBuffer.append("<");//$NON-NLS-1$
for (Iterator<TypeParameter> it= node.typeParameters().iterator(); it.hasNext();) {
@@ -1810,7 +1801,7 @@
}
}
this.fBuffer.append(" ");//$NON-NLS-1$
- if (node.getAST().apiLevel() >= JLS3) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS3) {
if (node.getSuperclassType() != null) {
this.fBuffer.append("extends ");//$NON-NLS-1$
node.getSuperclassType().accept(this);
@@ -1866,7 +1857,7 @@
*/
@Override
public boolean visit(TypeDeclarationStatement node) {
- if (node.getAST().apiLevel() >= JLS3) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS3) {
node.getDeclaration().accept(this);
}
return false;
@@ -1943,7 +1934,7 @@
*/
@Override
public boolean visit(VariableDeclarationExpression node) {
- if (node.getAST().apiLevel() >= JLS3) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS3) {
printModifiers(node.modifiers());
}
node.getType().accept(this);
@@ -1964,7 +1955,7 @@
@Override
public boolean visit(VariableDeclarationFragment node) {
node.getName().accept(this);
- if (node.getAST().apiLevel() >= JLS8) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS8) {
List<Dimension> dimensions = node.extraDimensions();
for (Dimension e : dimensions) {
e.accept(this);
@@ -1986,7 +1977,7 @@
*/
@Override
public boolean visit(VariableDeclarationStatement node) {
- if (node.getAST().apiLevel() >= JLS3) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS3) {
printModifiers(node.modifiers());
}
node.getType().accept(this);
diff --git a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/dom/ASTNodeFactory.java b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/dom/ASTNodeFactory.java
index 0a53ee3..fada460 100644
--- a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/dom/ASTNodeFactory.java
+++ b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/dom/ASTNodeFactory.java
@@ -57,6 +57,8 @@
import org.eclipse.jdt.internal.corext.codemanipulation.StubUtility2Core;
+import org.eclipse.jdt.internal.ui.util.ASTHelper;
+
/**
* JDT-UI-internal helper methods to create new {@link ASTNode}s.
* Complements <code>AST#new*(..)</code> and <code>ImportRewrite#add*(..)</code>.
@@ -430,7 +432,7 @@
}
public static Type newNonVarType(AST ast, VariableDeclaration declaration, ImportRewrite importRewrite, ImportRewriteContext context) {
- if (declaration.getAST().apiLevel() < AST.JLS10) {
+ if (declaration.getAST().apiLevel() < ASTHelper.JLS10) {
return newType(ast, declaration, importRewrite, context);
}
diff --git a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/dom/IASTSharedValues.java b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/dom/IASTSharedValues.java
index 4297ae0..5d9049d 100644
--- a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/dom/IASTSharedValues.java
+++ b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/dom/IASTSharedValues.java
@@ -15,13 +15,15 @@
import org.eclipse.jdt.core.dom.AST;
+import org.eclipse.jdt.internal.ui.util.ASTHelper;
+
public interface IASTSharedValues {
/**
* This value is subject to change with every release. JDT-UI-internal code typically supports
* the latest available {@link AST#apiLevel() AST level} exclusively.
*/
- int SHARED_AST_LEVEL= AST.JLS15;
+ int SHARED_AST_LEVEL= ASTHelper.JLS_Latest;
boolean SHARED_AST_STATEMENT_RECOVERY= true;
diff --git a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/dom/LinkedNodeFinder.java b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/dom/LinkedNodeFinder.java
index cd7be3d..6073904 100644
--- a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/dom/LinkedNodeFinder.java
+++ b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/dom/LinkedNodeFinder.java
@@ -18,7 +18,6 @@
import org.eclipse.jdt.core.Flags;
import org.eclipse.jdt.core.compiler.IProblem;
-import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.ASTNode;
import org.eclipse.jdt.core.dom.ASTVisitor;
import org.eclipse.jdt.core.dom.BreakStatement;
@@ -269,7 +268,7 @@
public static SimpleName[] findByProblems(ASTNode parent, SimpleName nameNode) {
- if (nameNode.getAST().apiLevel() >= AST.JLS10 && nameNode.isVar()) {
+ if (nameNode.getAST().apiLevel() >= ASTHelper.JLS10 && nameNode.isVar()) {
return null;
}
ArrayList<SimpleName> res= new ArrayList<>();
@@ -299,7 +298,7 @@
if ((nameNodeKind & currKind) != 0) {
ASTNode node= NodeFinder.perform(parent, probStart, (probEnd - probStart));
if (node instanceof SimpleName && name.equals(((SimpleName) node).getIdentifier())) {
- if (node.getAST().apiLevel() < AST.JLS10 || !((SimpleName) node).isVar()) {
+ if (node.getAST().apiLevel() < ASTHelper.JLS10 || !((SimpleName) node).isVar()) {
res.add((SimpleName) node);
}
}
@@ -371,7 +370,7 @@
@Override
public boolean visit(SimpleName node) {
- if (node.getAST().apiLevel() >= AST.JLS10 && node.isVar()) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS10 && node.isVar()) {
return false;
}
IBinding binding= node.resolveBinding();
diff --git a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/refactoring/structure/MovedMemberAnalyzer.java b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/refactoring/structure/MovedMemberAnalyzer.java
index 4d47d5d..0c0ad4c 100644
--- a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/refactoring/structure/MovedMemberAnalyzer.java
+++ b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/refactoring/structure/MovedMemberAnalyzer.java
@@ -14,7 +14,6 @@
*******************************************************************************/
package org.eclipse.jdt.internal.corext.refactoring.structure;
-import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.FieldAccess;
import org.eclipse.jdt.core.dom.IBinding;
import org.eclipse.jdt.core.dom.IMethodBinding;
@@ -29,6 +28,8 @@
import org.eclipse.jdt.internal.corext.dom.Bindings;
+import org.eclipse.jdt.internal.ui.util.ASTHelper;
+
/**
* Updates references in moved static members.
* Accepts <code>BodyDeclaration</code>s.
@@ -65,7 +66,7 @@
if (isMovedMember(binding))
return super.visit(node);
- boolean isVarType= node.getAST().apiLevel() >= AST.JLS10 && node.isVar();
+ boolean isVarType= node.getAST().apiLevel() >= ASTHelper.JLS10 && node.isVar();
if (isSourceAccess(binding) && ! isVarType)
rewrite(node, fSource);
return super.visit(node);
diff --git a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/refactoring/structure/ReferenceAnalyzer.java b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/refactoring/structure/ReferenceAnalyzer.java
index f9a88fd..0718be0 100644
--- a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/refactoring/structure/ReferenceAnalyzer.java
+++ b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/refactoring/structure/ReferenceAnalyzer.java
@@ -14,7 +14,6 @@
*******************************************************************************/
package org.eclipse.jdt.internal.corext.refactoring.structure;
-import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.AnnotationTypeDeclaration;
import org.eclipse.jdt.core.dom.EnumDeclaration;
import org.eclipse.jdt.core.dom.FieldAccess;
@@ -32,6 +31,8 @@
import org.eclipse.jdt.core.dom.TypeDeclaration;
import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
+import org.eclipse.jdt.internal.ui.util.ASTHelper;
+
/**
* Updates references to moved static members.
* Accepts <code>CompilationUnit</code>s.
@@ -87,7 +88,7 @@
@Override
public boolean visit(SimpleName node) {
- boolean isVarType= node.getAST().apiLevel() >= AST.JLS10 && node.isVar();
+ boolean isVarType= node.getAST().apiLevel() >= ASTHelper.JLS10 && node.isVar();
if (! node.isDeclaration() && isMovedMember(node.resolveBinding()) && ! isVarType && ! isProcessed(node))
rewrite(node, fTarget);
return false;
diff --git a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/util/JavaModelUtil.java b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/util/JavaModelUtil.java
index ae7d957..0429b41 100644
--- a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/util/JavaModelUtil.java
+++ b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/util/JavaModelUtil.java
@@ -8,6 +8,10 @@
*
* SPDX-License-Identifier: EPL-2.0
*
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Matt Chapman, mpchapman@gmail.com - 89977 Make JDT .java agnostic
@@ -80,7 +84,7 @@
*/
public static final String VERSION_LATEST;
static {
- VERSION_LATEST= JavaCore.VERSION_15; // make sure it is not inlined
+ VERSION_LATEST= JavaCore.VERSION_16; // make sure it is not inlined
}
public static final int VALIDATE_EDIT_CHANGED_CONTENT= 10003;
@@ -841,6 +845,10 @@
return !isVersionLessThan(compliance, JavaCore.VERSION_15);
}
+ public static boolean is16OrHigher(String compliance) {
+ return !isVersionLessThan(compliance, JavaCore.VERSION_16);
+ }
+
/**
* Checks if the given project or workspace has source compliance 1.2 or greater.
*
@@ -959,6 +967,17 @@
return is15OrHigher(getSourceCompliance(project));
}
+ /**
+ * Checks if the given project or workspace has source compliance 16 or greater.
+ *
+ * @param project the project to test or <code>null</code> to test the workspace settings
+ * @return <code>true</code> if the given project or workspace has source compliance 16 or
+ * greater.
+ */
+ public static boolean is16OrHigher(IJavaProject project) {
+ return is16OrHigher(getSourceCompliance(project));
+ }
+
private static String getSourceCompliance(IJavaProject project) {
return project != null ? project.getOption(JavaCore.COMPILER_SOURCE, true) : JavaCore.getOption(JavaCore.COMPILER_SOURCE);
}
@@ -1009,6 +1028,8 @@
String version= vMInstall.getJavaVersion();
if (version == null) {
return defaultCompliance;
+ } else if (version.startsWith(JavaCore.VERSION_16)) {
+ return JavaCore.VERSION_16;
} else if (version.startsWith(JavaCore.VERSION_15)) {
return JavaCore.VERSION_15;
} else if (version.startsWith(JavaCore.VERSION_14)) {
@@ -1051,7 +1072,9 @@
// fallback:
String desc= executionEnvironment.getId();
- if (desc.indexOf(JavaCore.VERSION_15) != -1) {
+ if (desc.indexOf(JavaCore.VERSION_16) != -1) {
+ return JavaCore.VERSION_16;
+ } else if (desc.indexOf(JavaCore.VERSION_15) != -1) {
return JavaCore.VERSION_15;
} else if (desc.indexOf(JavaCore.VERSION_14) != -1) {
return JavaCore.VERSION_14;
diff --git a/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/ITestFinder.java b/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/ITestFinder.java
index b79d2e8..c3d237e 100644
--- a/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/ITestFinder.java
+++ b/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/ITestFinder.java
@@ -29,6 +29,7 @@
* org.eclipse.jdt.junit.internal_testKinds.
*/
public interface ITestFinder {
+
ITestFinder NULL= new ITestFinder() {
@Override
public void findTestsInContainer(IJavaElement element, Set<IType> result, IProgressMonitor pm) {
diff --git a/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/JUnit4TestFinder.java b/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/JUnit4TestFinder.java
index fdea73f..c58dd8c 100644
--- a/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/JUnit4TestFinder.java
+++ b/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/JUnit4TestFinder.java
@@ -205,7 +205,7 @@
if (CoreTestSearchEngine.hasSuiteMethod(type)) { // since JUnit 4.3.1
return true;
}
- ASTParser parser= ASTParser.newParser(AST.JLS15);
+ ASTParser parser= ASTParser.newParser(AST.JLS_Latest);
/* TODO: When bug 156352 is fixed:
parser.setProject(type.getJavaProject());
IBinding[] bindings= parser.createBindings(new IJavaElement[] { type }, monitor);
diff --git a/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/JUnit5TestFinder.java b/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/JUnit5TestFinder.java
index c1236e3..655e6e0 100644
--- a/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/JUnit5TestFinder.java
+++ b/org.eclipse.jdt.junit.core/src/org/eclipse/jdt/internal/junit/launcher/JUnit5TestFinder.java
@@ -256,7 +256,7 @@
if (CoreTestSearchEngine.hasSuiteMethod(type)) { // since JUnit 4.3.1
return true;
}
- ASTParser parser= ASTParser.newParser(AST.JLS15);
+ ASTParser parser= ASTParser.newParser(AST.JLS_Latest);
if (type.getCompilationUnit() != null) {
parser.setSource(type.getCompilationUnit());
} else if (!isAvailable(type.getSourceRange())) { // class file with no source
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/AllRefactoringTests.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/AllRefactoringTests.java
index 5147eed..4ef4237 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/AllRefactoringTests.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/AllRefactoringTests.java
@@ -28,7 +28,7 @@
ExtractMethodTests1d8.class,
InlineMethodTests.class,
InlineMethodTests1d8.class,
- InlineMethodTests14.class,
+ InlineMethodTests16.class,
ReplaceInvocationsTests.class,
SefTests.class,
InlineTempTests.class,
@@ -47,12 +47,12 @@
IntroduceParameterTests.class,
IntroduceParameterTests1d7.class,
IntroduceFactoryTests.class,
- IntroduceFactoryTests15.class,
+ IntroduceFactoryTests16.class,
//-- structure
ChangeSignatureTests.class,
ChangeSignatureTests1d8.class,
- ChangeSignatureTests15.class,
+ ChangeSignatureTests16.class,
IntroduceParameterObjectTests.class,
PullUpTests.class,
PullUpTests1d8.class,
@@ -63,7 +63,7 @@
ExtractInterfaceTests1d8.class,
ExtractSupertypeTests.class,
MoveInnerToTopLevelTests.class,
- MoveInnerToNewTests14.class,
+ MoveInnerToNewTests16.class,
UseSupertypeWherePossibleTests.class,
ExtractClassTests.class,
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/ChangeSignatureTests15.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/ChangeSignatureTests16.java
similarity index 92%
rename from org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/ChangeSignatureTests15.java
rename to org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/ChangeSignatureTests16.java
index df57fe6..30f2c2d 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/ChangeSignatureTests15.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/ChangeSignatureTests16.java
@@ -26,16 +26,16 @@
import org.eclipse.jdt.ui.tests.CustomBaseRunner;
import org.eclipse.jdt.ui.tests.IgnoreInheritedTests;
-import org.eclipse.jdt.ui.tests.core.rules.Java15ProjectTestSetup;
+import org.eclipse.jdt.ui.tests.core.rules.Java16ProjectTestSetup;
/**
* Those tests are made to run on Java Spider 1.8 .
*/
@IgnoreInheritedTests
@RunWith(CustomBaseRunner.class)
-public class ChangeSignatureTests15 extends ChangeSignatureTests {
+public class ChangeSignatureTests16 extends ChangeSignatureTests {
@Rule
- public Java15ProjectTestSetup jps= new Java15ProjectTestSetup(true);
+ public Java16ProjectTestSetup jps= new Java16ProjectTestSetup(false);
private IJavaProject fJProject1;
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/InlineMethodTestSetup14.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/InlineMethodTestSetup16.java
similarity index 90%
rename from org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/InlineMethodTestSetup14.java
rename to org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/InlineMethodTestSetup16.java
index 16ceb69..780bb85 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/InlineMethodTestSetup14.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/InlineMethodTestSetup16.java
@@ -16,9 +16,9 @@
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IPackageFragmentRoot;
-import org.eclipse.jdt.ui.tests.refactoring.rules.JavaPreviewSetup;
+import org.eclipse.jdt.ui.tests.refactoring.rules.Java16Setup;
-public class InlineMethodTestSetup14 extends JavaPreviewSetup {
+public class InlineMethodTestSetup16 extends Java16Setup {
private IPackageFragment fSimple14;
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/InlineMethodTests14.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/InlineMethodTests16.java
similarity index 75%
rename from org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/InlineMethodTests14.java
rename to org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/InlineMethodTests16.java
index 0f5286e..d1a2ada 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/InlineMethodTests14.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/InlineMethodTests16.java
@@ -26,24 +26,24 @@
@IgnoreInheritedTests
@RunWith(CustomBaseRunner.class)
-public class InlineMethodTests14 extends InlineMethodTests {
+public class InlineMethodTests16 extends InlineMethodTests {
@Rule
- public InlineMethodTestSetup14 fgTestSetup14= new InlineMethodTestSetup14();
+ public InlineMethodTestSetup16 fgSetup= new InlineMethodTestSetup16();
protected void performSimpleTest() throws Exception {
- performTestInlineCall(fgTestSetup14.getSimplePackage(), getName(), COMPARE_WITH_OUTPUT, fgTestSetup14.getSimplePkgOutName());
+ performTestInlineCall(fgSetup.getSimplePackage(), getName(), COMPARE_WITH_OUTPUT, fgSetup.getSimplePkgOutName());
}
protected void performDefaultTest() throws Exception {
- performTestInlineCall(fgTestSetup14.getDefaultPackage(), getName(), COMPARE_WITH_OUTPUT, fgTestSetup14.getSimplePkgOutName());
+ performTestInlineCall(fgSetup.getDefaultPackage(), getName(), COMPARE_WITH_OUTPUT, fgSetup.getSimplePkgOutName());
}
@Override
protected String getFilePath(IPackageFragment pack, String name) {
IPackageFragment packToUse = pack;
- if (pack == fgTestSetup14.getDefaultPackage()) {
- packToUse= fgTestSetup14.getSimplePackage();
+ if (pack == fgSetup.getDefaultPackage()) {
+ packToUse= fgSetup.getSimplePackage();
}
return super.getFilePath(packToUse, name);
}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/IntroduceFactoryTests15.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/IntroduceFactoryTests16.java
similarity index 83%
rename from org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/IntroduceFactoryTests15.java
rename to org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/IntroduceFactoryTests16.java
index 95c4c2d..caf3589 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/IntroduceFactoryTests15.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/IntroduceFactoryTests16.java
@@ -15,13 +15,13 @@
import org.junit.Test;
-import org.eclipse.jdt.ui.tests.refactoring.rules.JavaPreviewSetup;
+import org.eclipse.jdt.ui.tests.refactoring.rules.Java16Setup;
-public class IntroduceFactoryTests15 extends IntroduceFactoryTestsBase {
+public class IntroduceFactoryTests16 extends IntroduceFactoryTestsBase {
private static final String REFACTORING_PATH= "IntroduceFactory/";
- public IntroduceFactoryTests15() {
- rts= new JavaPreviewSetup();
+ public IntroduceFactoryTests16() {
+ rts= new Java16Setup();
}
@Override
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/MoveInnerToNewTests14.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/MoveInnerToNewTests16.java
similarity index 94%
rename from org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/MoveInnerToNewTests14.java
rename to org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/MoveInnerToNewTests16.java
index 7fab934..668e580 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/MoveInnerToNewTests14.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/MoveInnerToNewTests16.java
@@ -31,15 +31,15 @@
import org.eclipse.jdt.internal.corext.refactoring.RefactoringAvailabilityTester;
import org.eclipse.jdt.internal.corext.refactoring.structure.MoveInnerToTopRefactoring;
-import org.eclipse.jdt.ui.tests.refactoring.rules.JavaPreviewSetup;
+import org.eclipse.jdt.ui.tests.refactoring.rules.Java16Setup;
import org.eclipse.jdt.internal.ui.preferences.JavaPreferencesSettings;
-public class MoveInnerToNewTests14 extends GenericRefactoringTest {
+public class MoveInnerToNewTests16 extends GenericRefactoringTest {
private static final String REFACTORING_PATH= "MoveInnerToNew14/";
- public MoveInnerToNewTests14() {
- rts= new JavaPreviewSetup();
+ public MoveInnerToNewTests16() {
+ rts= new Java16Setup();
}
@Override
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/RenameRecordElementsTests.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/RenameRecordElementsTests.java
index 3fe4999..250f402 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/RenameRecordElementsTests.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/RenameRecordElementsTests.java
@@ -46,7 +46,7 @@
import org.eclipse.jdt.internal.core.refactoring.descriptors.RefactoringSignatureDescriptorFactory;
import org.eclipse.jdt.internal.corext.refactoring.rename.RenameFieldProcessor;
-import org.eclipse.jdt.ui.tests.refactoring.rules.JavaPreviewSetup;
+import org.eclipse.jdt.ui.tests.refactoring.rules.Java16Setup;
public class RenameRecordElementsTests extends GenericRefactoringTest {
private static final String REFACTORING_PATH= "RenameRecordElements/";
@@ -54,7 +54,7 @@
private String fPrefixPref;
public RenameRecordElementsTests() {
- rts= new JavaPreviewSetup();
+ rts= new Java16Setup();
}
@Override
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/rules/Java16Setup.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/rules/Java16Setup.java
new file mode 100644
index 0000000..2107a12
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/rules/Java16Setup.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2020 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.ui.tests.refactoring.rules;
+
+import org.eclipse.jdt.testplugin.JavaProjectHelper;
+
+import org.eclipse.core.runtime.CoreException;
+
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
+
+public class Java16Setup extends RefactoringTestSetup {
+ /*
+ * @see org.eclipse.jdt.ui.tests.refactoring.RefactoringTestSetup#addRTJar(org.eclipse.jdt.core.IJavaProject)
+ */
+ @Override
+ protected IPackageFragmentRoot addRTJar(IJavaProject project) throws CoreException {
+ return JavaProjectHelper.addRTJar_16(project, false);
+ }
+}
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/rules/JavaPreviewSetup.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/rules/JavaPreviewSetup.java
index fe98e1c..b938dfe 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/rules/JavaPreviewSetup.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/rules/JavaPreviewSetup.java
@@ -13,6 +13,19 @@
*******************************************************************************/
package org.eclipse.jdt.ui.tests.refactoring.rules;
-public class JavaPreviewSetup extends Java15Setup {
+import org.eclipse.jdt.testplugin.JavaProjectHelper;
+import org.eclipse.core.runtime.CoreException;
+
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
+
+public class JavaPreviewSetup extends Java16Setup {
+ /*
+ * @see org.eclipse.jdt.ui.tests.refactoring.RefactoringTestSetup#addRTJar(org.eclipse.jdt.core.IJavaProject)
+ */
+ @Override
+ protected IPackageFragmentRoot addRTJar(IJavaProject project) throws CoreException {
+ return JavaProjectHelper.addRTJar_16(project, true);
+ }
}
diff --git a/org.eclipse.jdt.ui.tests/test plugin/org/eclipse/jdt/testplugin/JavaProjectHelper.java b/org.eclipse.jdt.ui.tests/test plugin/org/eclipse/jdt/testplugin/JavaProjectHelper.java
index 41b14a5..a5966fd 100644
--- a/org.eclipse.jdt.ui.tests/test plugin/org/eclipse/jdt/testplugin/JavaProjectHelper.java
+++ b/org.eclipse.jdt.ui.tests/test plugin/org/eclipse/jdt/testplugin/JavaProjectHelper.java
@@ -104,6 +104,7 @@
public static final IPath RT_STUBS13= new Path("testresources/rtstubs13.jar");
public static final IPath RT_STUBS14= new Path("testresources/rtstubs14.jar");
public static final IPath RT_STUBS15= new Path("testresources/rtstubs_15.jar");
+ public static final IPath RT_STUBS16= new Path("testresources/rtstubs_16.jar");
public static final IPath JUNIT_SRC_381= new Path("testresources/junit381-noUI-src.zip");
public static final String JUNIT_SRC_ENCODING= "ISO-8859-1";
@@ -313,6 +314,23 @@
}
/**
+ * Sets the compiler options to 15 for the given project.
+ *
+ * @param project the java project
+ * @param enable_preview_feature sets enable-preview compliance project option based on the
+ * value specified.
+ */
+ public static void set16CompilerOptions(IJavaProject project, boolean enable_preview_feature) {
+ Map<String, String> options= project.getOptions(false);
+ set16_CompilerOptions(options);
+ if (enable_preview_feature) {
+ options.put(JavaCore.COMPILER_PB_ENABLE_PREVIEW_FEATURES, JavaCore.ENABLED);
+ options.put(JavaCore.COMPILER_PB_REPORT_PREVIEW_FEATURES, JavaCore.IGNORE);
+ }
+ project.setOptions(options);
+ }
+
+ /**
* Sets the compiler options to 1.8 for the given project.
*
* @param project the java project
@@ -420,7 +438,7 @@
}
/**
- * Sets the compiler options to 14.
+ * Sets the compiler options to 15.
*
* @param options the compiler options to configure
*/
@@ -429,6 +447,15 @@
}
/**
+ * Sets the compiler options to 16.
+ *
+ * @param options the compiler options to configure
+ */
+ public static void set16_CompilerOptions(Map<String, String> options) {
+ JavaCore.setComplianceOptions(JavaCore.VERSION_16, options);
+ }
+
+ /**
* Sets the compiler options to 1.8
*
* @param options the compiler options to configure
@@ -946,6 +973,12 @@
return addLibrary(jproject, rtJarPath[0], rtJarPath[1], rtJarPath[2]);
}
+ public static IPackageFragmentRoot addRTJar_16(IJavaProject jproject, boolean enable_preview_feature) throws CoreException {
+ IPath[] rtJarPath= findRtJar(RT_STUBS16);
+ set16CompilerOptions(jproject, enable_preview_feature);
+ return addLibrary(jproject, rtJarPath[0], rtJarPath[1], rtJarPath[2]);
+ }
+
/**
* Adds a variable entry with source attachment to a IJavaProject.
* Can return null if variable can not be resolved.
diff --git a/org.eclipse.jdt.ui.tests/testresources/rtstubs_16.jar b/org.eclipse.jdt.ui.tests/testresources/rtstubs_16.jar
new file mode 100644
index 0000000..fb6cb93
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests/testresources/rtstubs_16.jar
Binary files differ
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/AbstractBindingLabelsTest.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/AbstractBindingLabelsTest.java
index 8142119..2bfd398 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/AbstractBindingLabelsTest.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/AbstractBindingLabelsTest.java
@@ -24,10 +24,10 @@
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.ASTParser;
import org.eclipse.jdt.core.dom.IBinding;
+import org.eclipse.jdt.internal.ui.util.ASTHelper;
import org.eclipse.jdt.internal.ui.viewsupport.JavaElementLinks;
public abstract class AbstractBindingLabelsTest extends CoreTests {
@@ -35,7 +35,7 @@
protected boolean fHaveSource= true;
protected String getBindingLabel(IJavaElement elem, long flags) {
- ASTParser parser= ASTParser.newParser(AST.JLS15);
+ ASTParser parser= ASTParser.newParser(ASTHelper.JLS_Latest);
parser.setResolveBindings(true);
parser.setProject(fJProject1);
IBinding binding= parser.createBindings(new IJavaElement[]{elem}, null)[0];
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/BindingLabels18Test.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/BindingLabels18Test.java
index 57d4a03..eb8e58e 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/BindingLabels18Test.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/BindingLabels18Test.java
@@ -33,7 +33,6 @@
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.Signature;
-import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.ASTParser;
import org.eclipse.jdt.core.dom.ASTRequestor;
import org.eclipse.jdt.core.dom.Assignment;
@@ -50,6 +49,7 @@
import org.eclipse.jdt.ui.PreferenceConstants;
import org.eclipse.jdt.ui.tests.core.rules.Java1d8ProjectTestSetup;
+import org.eclipse.jdt.internal.ui.util.ASTHelper;
import org.eclipse.jdt.internal.ui.viewsupport.JavaElementLinks;
public class BindingLabels18Test extends AbstractBindingLabelsTest {
@@ -464,7 +464,7 @@
this.ast= unit;
}
}
- ASTParser parser= ASTParser.newParser(AST.JLS15);
+ ASTParser parser= ASTParser.newParser(ASTHelper.JLS_Latest);
parser.setResolveBindings(true);
parser.setBindingsRecovery(true);
parser.setProject(javaProject);
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/BindingLabelsTest.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/BindingLabelsTest.java
index 8919980..beb54e0 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/BindingLabelsTest.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/BindingLabelsTest.java
@@ -32,7 +32,6 @@
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.ITypeParameter;
import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.ASTParser;
import org.eclipse.jdt.core.dom.IBinding;
import org.eclipse.jdt.core.dom.ITypeBinding;
@@ -41,6 +40,7 @@
import org.eclipse.jdt.ui.PreferenceConstants;
import org.eclipse.jdt.ui.tests.core.rules.ProjectTestSetup;
+import org.eclipse.jdt.internal.ui.util.ASTHelper;
import org.eclipse.jdt.internal.ui.viewsupport.JavaElementLinks;
/**
@@ -485,7 +485,7 @@
IJavaElement t1= cu.getElementAt(content.indexOf("T1"));
IJavaElement t2= cu.getElementAt(content.indexOf("T2"));
- ASTParser parser= ASTParser.newParser(AST.JLS8);
+ ASTParser parser= ASTParser.newParser(ASTHelper.JLS8);
parser.setResolveBindings(true);
parser.setProject(fJProject1);
IBinding[] bindings= parser.createBindings(new IJavaElement[]{main, t1, t2}, null);
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/JDTFlagsTest18.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/JDTFlagsTest18.java
index 10eced4..f76d01e 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/JDTFlagsTest18.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/JDTFlagsTest18.java
@@ -44,7 +44,6 @@
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.ASTParser;
import org.eclipse.jdt.core.dom.AnnotationTypeMemberDeclaration;
import org.eclipse.jdt.core.dom.CompilationUnit;
@@ -60,6 +59,8 @@
import org.eclipse.jdt.ui.tests.core.rules.Java1d8ProjectTestSetup;
+import org.eclipse.jdt.internal.ui.util.ASTHelper;
+
/**
* Those tests are made to run on Java Spider 1.8 .
*/
@@ -83,7 +84,7 @@
}
protected CompilationUnit getCompilationUnitNode(String source) {
- ASTParser parser = ASTParser.newParser(AST.JLS8);
+ ASTParser parser = ASTParser.newParser(ASTHelper.JLS8);
parser.setSource(source.toCharArray());
Hashtable<String, String> options= JavaCore.getOptions();
JavaCore.setComplianceOptions(JavaCore.VERSION_1_8, options);
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/rules/Java16ProjectTestSetup.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/rules/Java16ProjectTestSetup.java
new file mode 100644
index 0000000..af93fd3
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/rules/Java16ProjectTestSetup.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2020 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * derived from corresponding file in org.eclipse.jdt.ui.tests.core
+ * instead extending TestSetup for junit4 ExternalResource is extended
+ * to allow use as junit "@Rule"
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.ui.tests.core.rules;
+
+import org.eclipse.jdt.testplugin.JavaProjectHelper;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.jdt.core.IClasspathAttribute;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+
+import org.eclipse.jdt.internal.core.ClasspathEntry;
+
+public class Java16ProjectTestSetup extends ProjectTestSetup {
+
+ public static final String PROJECT_NAME16= "TestSetupProject16";
+
+ private boolean enable_preview_feature;
+
+ @Override
+ public IJavaProject getProject() {
+ IProject project= ResourcesPlugin.getWorkspace().getRoot().getProject(PROJECT_NAME16);
+ return JavaCore.create(project);
+ }
+
+ @Override
+ public IClasspathEntry[] getDefaultClasspath() throws CoreException {
+ IPath[] rtJarPath= JavaProjectHelper.findRtJar(JavaProjectHelper.RT_STUBS16);
+ IClasspathAttribute[] extraAttributes= { JavaCore.newClasspathAttribute(IClasspathAttribute.MODULE, Boolean.TRUE.toString()) };
+ return new IClasspathEntry[] { JavaCore.newLibraryEntry(rtJarPath[0], rtJarPath[1], rtJarPath[2], ClasspathEntry.NO_ACCESS_RULES, extraAttributes, true) };
+ }
+
+ public Java16ProjectTestSetup( boolean enable_preview_feature) {
+ this.enable_preview_feature= enable_preview_feature;
+ }
+
+ @Override
+ protected boolean projectExists() {
+ return getProject().exists();
+ }
+
+ @Override
+ protected IJavaProject createAndInitializeProject() throws CoreException {
+ IJavaProject javaProject= JavaProjectHelper.createJavaProject(PROJECT_NAME16, "bin");
+ javaProject.setRawClasspath(getDefaultClasspath(), null);
+ JavaProjectHelper.set16CompilerOptions(javaProject, enable_preview_feature);
+ return javaProject;
+ }
+
+}
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/AddUnimplementedMethodsTest.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/AddUnimplementedMethodsTest.java
index d340750..680135f 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/AddUnimplementedMethodsTest.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/AddUnimplementedMethodsTest.java
@@ -47,7 +47,6 @@
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.compiler.IProblem;
-import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.AbstractTypeDeclaration;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.core.dom.IMethodBinding;
@@ -69,6 +68,8 @@
import org.eclipse.jdt.ui.PreferenceConstants;
import org.eclipse.jdt.ui.tests.core.rules.ProjectTestSetup;
+import org.eclipse.jdt.internal.ui.util.ASTHelper;
+
public class AddUnimplementedMethodsTest {
@Rule
public ProjectTestSetup pts= new ProjectTestSetup();
@@ -385,7 +386,7 @@
@Deprecated
@Test
public void jLS3() throws Exception {
- doTestOldAstLevel(AST.JLS3);
+ doTestOldAstLevel(ASTHelper.JLS3);
}
/**
@@ -395,12 +396,12 @@
@Deprecated
@Test
public void jLS4() throws Exception {
- doTestOldAstLevel(AST.JLS4);
+ doTestOldAstLevel(ASTHelper.JLS4);
}
@Test
public void jLS8() throws Exception {
- doTestOldAstLevel(AST.JLS8);
+ doTestOldAstLevel(ASTHelper.JLS8);
}
/**
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/GenerateGettersSettersTest14.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/GenerateGettersSettersTest16.java
similarity index 97%
rename from org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/GenerateGettersSettersTest14.java
rename to org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/GenerateGettersSettersTest16.java
index 76ee6aa..2865381 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/GenerateGettersSettersTest14.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/GenerateGettersSettersTest16.java
@@ -39,7 +39,7 @@
* @see org.eclipse.jdt.internal.corext.codemanipulation.AddGetterSetterOperation
*
*/
-public class GenerateGettersSettersTest14 extends SourceTestCase14 {
+public class GenerateGettersSettersTest16 extends SourceTestCase16 {
@Rule
public ProjectTestSetup pts= new ProjectTestSetup();
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/SourceActionTests.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/SourceActionTests.java
index 8989403..72385a1 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/SourceActionTests.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/SourceActionTests.java
@@ -28,7 +28,7 @@
@Suite.SuiteClasses({
AddUnimplementedMethodsTest.class,
GenerateGettersSettersTest.class,
-GenerateGettersSettersTest14.class,
+GenerateGettersSettersTest16.class,
GenerateDelegateMethodsTest.class,
AddUnimplementedConstructorsTest.class,
GenerateConstructorUsingFieldsTest.class,
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/SourceTestCase14.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/SourceTestCase16.java
similarity index 97%
rename from org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/SourceTestCase14.java
rename to org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/SourceTestCase16.java
index ae8f8cc..c82dfac 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/SourceTestCase14.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/core/source/SourceTestCase16.java
@@ -50,7 +50,7 @@
* @see org.eclipse.jdt.internal.corext.codemanipulation.AddGetterSetterOperation
*
*/
-public class SourceTestCase14 {
+public class SourceTestCase16 {
@Rule
public TestName tn=new TestName();
@@ -106,7 +106,7 @@
public void setUp() throws CoreException {
fJavaProject= JavaProjectHelper.createJavaProject("DummyProject", "bin");
- assertNotNull(JavaProjectHelper.addRTJar_15(fJavaProject, true));
+ assertNotNull(JavaProjectHelper.addRTJar_16(fJavaProject, false));
fRoot= JavaProjectHelper.addSourceContainer(fJavaProject, "src");
fPackageP= fRoot.createPackageFragment("p", true, null);
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest.java
index 45a77b9..08ba57b 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest.java
@@ -48,7 +48,6 @@
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.compiler.IProblem;
-import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.ASTParser;
import org.eclipse.jdt.core.dom.ASTRequestor;
import org.eclipse.jdt.core.dom.CompilationUnit;
@@ -73,6 +72,7 @@
import org.eclipse.jdt.internal.ui.fix.RedundantModifiersCleanUp;
import org.eclipse.jdt.internal.ui.fix.UnimplementedCodeCleanUp;
import org.eclipse.jdt.internal.ui.text.correction.ProblemLocation;
+import org.eclipse.jdt.internal.ui.util.ASTHelper;
public class CleanUpTest extends CleanUpTestCase {
@Rule
@@ -19657,7 +19657,7 @@
assertRefactoringHasNoChange(new ICompilationUnit[] { cu1 });
// When
- ASTParser parser= ASTParser.newParser(AST.JLS15);
+ ASTParser parser= ASTParser.newParser(ASTHelper.JLS_Latest);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(cu1);
parser.setResolveBindings(true);
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest15.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest16.java
similarity index 97%
rename from org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest15.java
rename to org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest16.java
index 6a116b3..1579ac6 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest15.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest16.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2020 Red Hat Inc. and others.
+ * Copyright (c) 2020, 2021 Red Hat Inc. and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -30,17 +30,17 @@
import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
-import org.eclipse.jdt.ui.tests.core.rules.Java15ProjectTestSetup;
+import org.eclipse.jdt.ui.tests.core.rules.Java16ProjectTestSetup;
import org.eclipse.jdt.ui.tests.core.rules.ProjectTestSetup;
import org.eclipse.jdt.internal.ui.fix.MultiFixMessages;
/**
- * Tests the cleanup features related to Java 15.
+ * Tests the cleanup features related to Java 16.
*/
-public class CleanUpTest15 extends CleanUpTestCase {
+public class CleanUpTest16 extends CleanUpTestCase {
@Rule
- public ProjectTestSetup projectSetup= new Java15ProjectTestSetup(true);
+ public ProjectTestSetup projectSetup= new Java16ProjectTestSetup(false);
@Override
protected IJavaProject getProject() {
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTestCaseSuite.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTestCaseSuite.java
index dd3c5d6..dc268a1 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTestCaseSuite.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTestCaseSuite.java
@@ -31,7 +31,7 @@
CleanUpTest11.class,
CleanUpTest12.class,
CleanUpTest14.class,
- CleanUpTest15.class,
+ CleanUpTest16.class,
CleanUpAnnotationTest.class,
SaveParticipantTest.class,
CleanUpActionTest.class,
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/JavadocQuickFixTestPreview.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/JavadocQuickFixTestPreview.java
index b04ae89..3ca5c77 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/JavadocQuickFixTestPreview.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/JavadocQuickFixTestPreview.java
@@ -36,7 +36,7 @@
import org.eclipse.jdt.internal.core.manipulation.CodeTemplateContextType;
import org.eclipse.jdt.internal.core.manipulation.StubUtility;
-import org.eclipse.jdt.ui.tests.core.rules.Java15ProjectTestSetup;
+import org.eclipse.jdt.ui.tests.core.rules.Java16ProjectTestSetup;
import org.eclipse.jdt.ui.tests.core.rules.ProjectTestSetup;
import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal;
import org.eclipse.jdt.ui.text.java.correction.CUCorrectionProposal;
@@ -44,7 +44,7 @@
public class JavadocQuickFixTestPreview extends QuickFixTest {
@Rule
- public ProjectTestSetup projectsetup = new Java15ProjectTestSetup(true);
+ public ProjectTestSetup projectsetup = new Java16ProjectTestSetup(true);
private IJavaProject fJProject1;
@@ -72,7 +72,7 @@
StubUtility.setCodeTemplate(CodeTemplateContextType.TYPECOMMENT_ID, res, null);
fJProject1= JavaProjectHelper.createJavaProject("TestProject1", "bin");
- JavaProjectHelper.set15CompilerOptions(fJProject1, true);
+ JavaProjectHelper.set16CompilerOptions(fJProject1, true);
JavaProjectHelper.addRequiredModularProject(fJProject1, projectsetup.getProject());
fSourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src");
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/QuickFixTest.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/QuickFixTest.java
index a8ef0ca..023015f 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/QuickFixTest.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/QuickFixTest.java
@@ -88,6 +88,11 @@
/**
*/
public class QuickFixTest {
+
+ protected static String MODULE_INFO_FILE_CONTENT = ""
+ + "module test {\n"
+ + "}\n";
+
public static void assertCorrectLabels(List<? extends ICompletionProposal> proposals) {
for (ICompletionProposal proposal : proposals) {
String name= proposal.getDisplayString();
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/QuickFixTest16.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/QuickFixTest16.java
new file mode 100644
index 0000000..1dae9d0
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/QuickFixTest16.java
@@ -0,0 +1,309 @@
+/*******************************************************************************
+ * Copyright (c) 2020 IBM Corporation and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.ui.tests.quickfix;
+
+import java.util.ArrayList;
+
+import org.junit.After;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import org.eclipse.jdt.testplugin.JavaProjectHelper;
+
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IPackageFragment;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+
+import org.eclipse.jdt.internal.corext.util.Messages;
+
+import org.eclipse.jdt.ui.tests.core.rules.Java16ProjectTestSetup;
+import org.eclipse.jdt.ui.tests.core.rules.ProjectTestSetup;
+import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal;
+import org.eclipse.jdt.ui.text.java.correction.CUCorrectionProposal;
+
+import org.eclipse.jdt.internal.ui.text.correction.CorrectionMessages;
+
+@RunWith(JUnit4.class)
+public class QuickFixTest16 extends QuickFixTest {
+
+ @Rule
+ public ProjectTestSetup projectsetup= new Java16ProjectTestSetup(false);
+
+ private IJavaProject fJProject;
+
+ private IPackageFragmentRoot fSourceFolder;
+
+ @After
+ public void tearDown() throws Exception {
+ if (fJProject != null) {
+ JavaProjectHelper.delete(fJProject);
+ }
+ }
+
+ @Test
+ public void testRecordGetNeedHigherComplianceProposal() throws Exception {
+ fJProject= JavaProjectHelper.createJavaProject("TestProject1", "bin");
+ fJProject.setRawClasspath(projectsetup.getDefaultClasspath(), null);
+ JavaProjectHelper.set15CompilerOptions(fJProject, false);
+
+ fSourceFolder= JavaProjectHelper.addSourceContainer(fJProject, "src");
+
+
+ IPackageFragment def= fSourceFolder.createPackageFragment("", false, null);
+ def.createCompilationUnit("module-info.java", MODULE_INFO_FILE_CONTENT, false, null);
+
+ IPackageFragment pack= fSourceFolder.createPackageFragment("test", false, null);
+ String test= ""
+ + "package test;\n"
+ + "public record Rec1() {\n"
+ + "}\n";
+ ICompilationUnit cu= pack.createCompilationUnit("Rec1.java", test, false, null);
+
+ CompilationUnit astRoot= getASTRoot(cu);
+ ArrayList<IJavaCompletionProposal> proposals= collectCorrections(cu, astRoot, 1, null);
+
+ assertNumberOfProposals(proposals, 1);
+ String label= Messages.format(CorrectionMessages.ReorgCorrectionsSubProcessor_change_project_compliance_description, "16");
+ assertProposalExists(proposals, label);
+ }
+
+ @Test
+ public void testRecordConstructorIncorrectParamsProposal1() throws Exception {
+ fJProject= JavaProjectHelper.createJavaProject("TestProject1", "bin");
+ fJProject.setRawClasspath(projectsetup.getDefaultClasspath(), null);
+ JavaProjectHelper.set16CompilerOptions(fJProject, false);
+
+ fSourceFolder= JavaProjectHelper.addSourceContainer(fJProject, "src");
+ IPackageFragment pack1= fSourceFolder.createPackageFragment("test", false, null);
+
+ String test= "" +
+ "package test;\n" +
+ "\n" +
+ "public record Rec1(int a){\n" +
+ "\n" +
+ " public static void main(String[] args) {\n" +
+ " Rec1 abc = new Rec1();\n" +
+ " }\n" +
+ "}\n";
+ ICompilationUnit cu= pack1.createCompilationUnit("Rec1.java", test, false, null);
+
+ CompilationUnit astRoot= getASTRoot(cu);
+ ArrayList<IJavaCompletionProposal> proposals= collectCorrections(cu, astRoot, 1);
+ assertNumberOfProposals(proposals, 2);
+ assertCorrectLabels(proposals);
+
+ CUCorrectionProposal proposal= (CUCorrectionProposal) proposals.get(0);
+ String preview1= getPreviewContent(proposal);
+
+ String expected1= "" +
+ "package test;\n" +
+ "\n" +
+ "public record Rec1(int a){\n" +
+ "\n" +
+ " public static void main(String[] args) {\n" +
+ " Rec1 abc = new Rec1(a);\n" +
+ " }\n" +
+ "}\n";
+
+ proposal= (CUCorrectionProposal) proposals.get(1);
+ String preview2= getPreviewContent(proposal);
+
+ String expected2= "" +
+ "package test;\n" +
+ "\n" +
+ "public record Rec1(int a){\n" +
+ "\n" +
+ " /**\n" +
+ " * \n" +
+ " */\n" +
+ " public Rec1() {\n" +
+ " // TODO Auto-generated constructor stub\n" +
+ " }\n" +
+ "\n" +
+ " public static void main(String[] args) {\n" +
+ " Rec1 abc = new Rec1();\n" +
+ " }\n" +
+ "}\n";
+
+ assertEqualStringsIgnoreOrder(new String[] { preview1, preview2 }, new String[] { expected1, expected2 });
+ }
+
+ @Test
+ public void testRecordConstructorIncorrectParamsProposal2() throws Exception {
+ fJProject= JavaProjectHelper.createJavaProject("TestProject1", "bin");
+ fJProject.setRawClasspath(projectsetup.getDefaultClasspath(), null);
+ JavaProjectHelper.set16CompilerOptions(fJProject, false);
+
+ fSourceFolder= JavaProjectHelper.addSourceContainer(fJProject, "src");
+ IPackageFragment pack1= fSourceFolder.createPackageFragment("test", false, null);
+
+ String test= "" +
+ "package test;\n" +
+ "\n" +
+ "public record Rec1(int a){\n" +
+ "\n" +
+ " public static void main(String[] args) {\n" +
+ " Rec1 abc = new Rec1(10, 20);\n" +
+ " }\n" +
+ "}\n";
+ ICompilationUnit cu= pack1.createCompilationUnit("Rec1.java", test, false, null);
+
+ CompilationUnit astRoot= getASTRoot(cu);
+ ArrayList<IJavaCompletionProposal> proposals= collectCorrections(cu, astRoot, 1);
+ assertNumberOfProposals(proposals, 2);
+ assertCorrectLabels(proposals);
+
+ CUCorrectionProposal proposal= (CUCorrectionProposal) proposals.get(0);
+ String preview1= getPreviewContent(proposal);
+
+ String expected1= "" +
+ "package test;\n" +
+ "\n" +
+ "public record Rec1(int a){\n" +
+ "\n" +
+ " public static void main(String[] args) {\n" +
+ " Rec1 abc = new Rec1(10);\n" +
+ " }\n" +
+ "}\n";
+
+ proposal= (CUCorrectionProposal) proposals.get(1);
+ String preview2= getPreviewContent(proposal);
+
+ String expected2= "" +
+ "package test;\n" +
+ "\n" +
+ "public record Rec1(int a){\n" +
+ "\n" +
+ " /**\n" +
+ " * @param i\n" +
+ " * @param j\n" +
+ " */\n" +
+ " public Rec1(int i, int j) {\n" +
+ " // TODO Auto-generated constructor stub\n" +
+ " }\n" +
+ "\n" +
+ " public static void main(String[] args) {\n" +
+ " Rec1 abc = new Rec1(10, 20);\n" +
+ " }\n" +
+ "}\n";
+
+ assertEqualStringsIgnoreOrder(new String[] { preview1, preview2 }, new String[] { expected1, expected2 });
+ }
+
+ @Test
+ public void testRecordConstructorIncorrectParamsProposal3() throws Exception {
+ fJProject= JavaProjectHelper.createJavaProject("TestProject1", "bin");
+ fJProject.setRawClasspath(projectsetup.getDefaultClasspath(), null);
+ JavaProjectHelper.set16CompilerOptions(fJProject, false);
+
+ fSourceFolder= JavaProjectHelper.addSourceContainer(fJProject, "src");
+ IPackageFragment pack1= fSourceFolder.createPackageFragment("test", false, null);
+
+ String test= "" +
+ "package test;\n" +
+ "\n" +
+ "public record Rec1(int a){\n" +
+ "\n" +
+ " public static void main(String[] args) {\n" +
+ " Rec1 abc = new Rec1(\"str\");\n" +
+ " }\n" +
+ "}\n";
+ ICompilationUnit cu= pack1.createCompilationUnit("Rec1.java", test, false, null);
+
+ CompilationUnit astRoot= getASTRoot(cu);
+ ArrayList<IJavaCompletionProposal> proposals= collectCorrections(cu, astRoot, 1);
+ assertNumberOfProposals(proposals, 1);
+ assertCorrectLabels(proposals);
+
+ CUCorrectionProposal proposal= (CUCorrectionProposal) proposals.get(0);
+ String preview1= getPreviewContent(proposal);
+
+ String expected1= "" +
+ "package test;\n" +
+ "\n" +
+ "public record Rec1(int a){\n" +
+ "\n" +
+ " /**\n" +
+ " * @param string\n" +
+ " */\n" +
+ " public Rec1(String string) {\n" +
+ " // TODO Auto-generated constructor stub\n" +
+ " }\n" +
+ "\n" +
+ " public static void main(String[] args) {\n" +
+ " Rec1 abc = new Rec1(\"str\");\n" +
+ " }\n" +
+ "}\n";
+
+ assertEqualStringsIgnoreOrder(new String[] { preview1 }, new String[] { expected1 });
+ }
+
+ @Test
+ public void testRecordCanonicalConstructordUninitializedFieldProposal() throws Exception {
+ fJProject= JavaProjectHelper.createJavaProject("TestProject1", "bin");
+ fJProject.setRawClasspath(projectsetup.getDefaultClasspath(), null);
+ JavaProjectHelper.set16CompilerOptions(fJProject, false);
+
+ fSourceFolder= JavaProjectHelper.addSourceContainer(fJProject, "src");
+ IPackageFragment pack1= fSourceFolder.createPackageFragment("test", false, null);
+
+ String test= "" +
+ "package test;\n" +
+ "\n" +
+ "public record Rec1(int a, int b){\n" +
+ "\n" +
+ " public Rec1(int a, int b) {\n" +
+ " \n" +
+ " }\n\n" +
+ " public Rec1(int a) {\n" +
+ " this(a, a);\n" +
+ " }\n\n" +
+ " public Rec1(int a, int b, int c) {\n" +
+ " this(a, b+c);\n" +
+ " }\n\n" +
+ "}\n";
+ ICompilationUnit cu= pack1.createCompilationUnit("Rec1.java", test, false, null);
+
+ CompilationUnit astRoot= getASTRoot(cu);
+ ArrayList<IJavaCompletionProposal> proposals= collectCorrections(cu, astRoot, 2);
+ assertNumberOfProposals(proposals, 1);
+ assertCorrectLabels(proposals);
+
+ CUCorrectionProposal proposal= (CUCorrectionProposal) proposals.get(0);
+ String preview1= getPreviewContent(proposal);
+
+ String expected1= "" +
+ "package test;\n" +
+ "\n" +
+ "public record Rec1(int a, int b){\n" +
+ "\n" +
+ " public Rec1(int a, int b) {\n" +
+ " this.a = 0;\n" +
+ " \n" +
+ " }\n\n" +
+ " public Rec1(int a) {\n" +
+ " this(a, a);\n" +
+ " }\n\n" +
+ " public Rec1(int a, int b, int c) {\n" +
+ " this(a, b+c);\n" +
+ " }\n\n" +
+ "}\n";
+
+ assertEqualStringsIgnoreOrder(new String[] { preview1 }, new String[] { expected1 });
+ }
+}
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/QuickFixTestPreview.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/QuickFixTestPreview.java
index 28a6a4c..7216012 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/QuickFixTestPreview.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/QuickFixTestPreview.java
@@ -17,14 +17,11 @@
import java.util.Map;
import org.junit.After;
-import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.eclipse.jdt.testplugin.JavaProjectHelper;
-import org.eclipse.jface.text.contentassist.ICompletionProposal;
-
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IPackageFragment;
@@ -32,27 +29,19 @@
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.dom.CompilationUnit;
-import org.eclipse.jdt.internal.corext.util.Messages;
-
-import org.eclipse.jdt.ui.tests.core.rules.Java15ProjectTestSetup;
+import org.eclipse.jdt.ui.tests.core.rules.Java16ProjectTestSetup;
import org.eclipse.jdt.ui.tests.core.rules.ProjectTestSetup;
import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal;
import org.eclipse.jdt.ui.text.java.correction.CUCorrectionProposal;
-import org.eclipse.jdt.internal.ui.text.correction.CorrectionMessages;
-
public class QuickFixTestPreview extends QuickFixTest {
- @Rule
- public ProjectTestSetup projectsetup= new Java15ProjectTestSetup(true);
+ @Rule
+ public ProjectTestSetup projectsetup = new Java16ProjectTestSetup(true);
- private IJavaProject fJProject1;
+ private IJavaProject fJProject1;
- private IPackageFragmentRoot fSourceFolder;
-
- private static String MODULE_INFO_FILE_CONTENT = ""
- + "module test {\n"
- + "}\n";
+ private IPackageFragmentRoot fSourceFolder;
@After
public void tearDown() throws Exception {
@@ -62,135 +51,10 @@
}
@Test
- public void testEnablePreviewsAndOpenCompilerPropertiesProposals() throws Exception {
- fJProject1= JavaProjectHelper.createJavaProject("TestProject1", "bin");
- fJProject1.setRawClasspath(projectsetup.getDefaultClasspath(), null);
- JavaProjectHelper.set15CompilerOptions(fJProject1, false);
-
- fSourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src");
-
- IPackageFragment def= fSourceFolder.createPackageFragment("", false, null);
- def.createCompilationUnit("module-info.java", MODULE_INFO_FILE_CONTENT, false, null);
-
- IPackageFragment pack= fSourceFolder.createPackageFragment("test", false, null);
- String test= ""
- + "package test;\n"
- + "public record Rec1() {\n"
- + "}\n";
- ICompilationUnit cu= pack.createCompilationUnit("Rec1.java", test, false, null);
-
- CompilationUnit astRoot= getASTRoot(cu);
- ArrayList<IJavaCompletionProposal> proposals= collectCorrections(cu, astRoot, 1, null);
-
- assertNumberOfProposals(proposals, 2);
- String label1= CorrectionMessages.PreviewFeaturesSubProcessor_enable_preview_features;
- assertProposalExists(proposals, label1);
- String label2= CorrectionMessages.PreviewFeaturesSubProcessor_open_compliance_properties_page_enable_preview_features;
- assertProposalExists(proposals, label2);
- }
-
- @Test
- public void testRecordSuppressWarningsProposals() throws Exception {
- fJProject1= JavaProjectHelper.createJavaProject("TestProject1", "bin");
- fJProject1.setRawClasspath(projectsetup.getDefaultClasspath(), null);
- JavaProjectHelper.set15CompilerOptions(fJProject1, true);
-
- Map<String, String> options= fJProject1.getOptions(false);
- options.put(JavaCore.COMPILER_PB_REPORT_PREVIEW_FEATURES, JavaCore.WARNING);
- fJProject1.setOptions(options);
-
- fSourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src");
-
-
- IPackageFragment def= fSourceFolder.createPackageFragment("", false, null);
- def.createCompilationUnit("module-info.java", MODULE_INFO_FILE_CONTENT, false, null);
-
- IPackageFragment pack= fSourceFolder.createPackageFragment("test", false, null);
- String test= ""
- + "package test;\n"
- + "public record Rec1() {\n"
- + "}\n";
- ICompilationUnit cu= pack.createCompilationUnit("Rec1.java", test, false, null);
-
- CompilationUnit astRoot= getASTRoot(cu);
- ArrayList<IJavaCompletionProposal> proposals= collectCorrections(cu, astRoot, 1, null);
-
- assertNumberOfProposals(proposals, 2);
- String label= Messages.format(CorrectionMessages.SuppressWarningsSubProcessor_suppress_warnings_label, new String[] { "preview", "Rec1" });
- assertProposalExists(proposals, label);
-
- CUCorrectionProposal proposal= (CUCorrectionProposal) proposals.get(0);
- String preview= getPreviewContent(proposal);
-
- String expected= ""
- + "package test;\n"
- + "@SuppressWarnings(\"preview\")\n"
- + "public record Rec1() {\n"
- + "}\n";
-
- assertEqualStringsIgnoreOrder(new String[] { preview }, new String[] { expected });
- }
-
- @Ignore("See bug 562103 comment 4")
- @Test
- public void testGetNeedHigherComplianceProposalsAndEnablePreviewsProposal() throws Exception {
- fJProject1= JavaProjectHelper.createJavaProject("TestProject1", "bin");
- fJProject1.setRawClasspath(projectsetup.getDefaultClasspath(), null);
- JavaProjectHelper.set15CompilerOptions(fJProject1, false);
-
- fSourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src");
-
-
- IPackageFragment def= fSourceFolder.createPackageFragment("", false, null);
- def.createCompilationUnit("module-info.java", MODULE_INFO_FILE_CONTENT, false, null);
-
- IPackageFragment pack= fSourceFolder.createPackageFragment("test", false, null);
- String test= ""
- + "package test;\n"
- + "public record Rec1() {\n"
- + "}\n";
- ICompilationUnit cu= pack.createCompilationUnit("Rec1.java", test, false, null);
-
- CompilationUnit astRoot= getASTRoot(cu);
- ArrayList<IJavaCompletionProposal> proposals= collectCorrections(cu, astRoot, 1, null);
-
- assertNumberOfProposals(proposals, 1);
- String label1= Messages.format(CorrectionMessages.ReorgCorrectionsSubProcessor_change_project_compliance_description, "14");
- String label2= CorrectionMessages.PreviewFeaturesSubProcessor_enable_preview_features;
- String label= Messages.format(CorrectionMessages.ReorgCorrectionsSubProcessor_combine_two_quickfixes, new String[] {label1, label2});
- assertProposalExists(proposals, label);
- }
-
- @Test
- public void testNoEnablePreviewProposal() throws Exception {
- fJProject1= JavaProjectHelper.createJavaProject("TestProject1", "bin");
- fJProject1.setRawClasspath(projectsetup.getDefaultClasspath(), null);
- JavaProjectHelper.set15CompilerOptions(fJProject1, true);
-
- fSourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src");
-
-
- IPackageFragment def= fSourceFolder.createPackageFragment("", false, null);
- def.createCompilationUnit("module-info.java", MODULE_INFO_FILE_CONTENT, false, null);
-
- IPackageFragment pack= fSourceFolder.createPackageFragment("test", false, null);
- String test= ""
- + "package test;\n"
- + "public record Rec() {\n"
- + "}\n";
- ICompilationUnit cu= pack.createCompilationUnit("Rec.java", test, false, null);
-
- CompilationUnit astRoot= getASTRoot(cu);
- ArrayList<ICompletionProposal> proposals= collectAllCorrections(cu, astRoot, 0);
-
- assertNumberOfProposals(proposals, 0);
- }
-
- @Test
public void testAddSealedMissingClassModifierProposal() throws Exception {
fJProject1= JavaProjectHelper.createJavaProject("TestProject1", "bin");
fJProject1.setRawClasspath(projectsetup.getDefaultClasspath(), null);
- JavaProjectHelper.set15CompilerOptions(fJProject1, true);
+ JavaProjectHelper.set16CompilerOptions(fJProject1, true);
Map<String, String> options= fJProject1.getOptions(false);
options.put(JavaCore.COMPILER_PB_REPORT_PREVIEW_FEATURES, JavaCore.IGNORE);
@@ -250,7 +114,7 @@
public void testAddSealedMissingInterfaceModifierProposal() throws Exception {
fJProject1= JavaProjectHelper.createJavaProject("TestProject1", "bin");
fJProject1.setRawClasspath(projectsetup.getDefaultClasspath(), null);
- JavaProjectHelper.set15CompilerOptions(fJProject1, true);
+ JavaProjectHelper.set16CompilerOptions(fJProject1, true);
Map<String, String> options= fJProject1.getOptions(false);
options.put(JavaCore.COMPILER_PB_REPORT_PREVIEW_FEATURES, JavaCore.IGNORE);
@@ -296,244 +160,5 @@
}
- @Test
- public void testRecordConstructorIncorrectParamsProposal1() throws Exception {
- fJProject1= JavaProjectHelper.createJavaProject("TestProject1", "bin");
- fJProject1.setRawClasspath(projectsetup.getDefaultClasspath(), null);
- JavaProjectHelper.set15CompilerOptions(fJProject1, true);
- Map<String, String> options= fJProject1.getOptions(false);
- options.put(JavaCore.COMPILER_PB_REPORT_PREVIEW_FEATURES, JavaCore.IGNORE);
- fJProject1.setOptions(options);
-
- fSourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src");
- IPackageFragment pack1= fSourceFolder.createPackageFragment("test", false, null);
-
- String test= "" +
- "package test;\n" +
- "\n" +
- "public record Rec1(int a){\n" +
- "\n" +
- " public static void main(String[] args) {\n" +
- " Rec1 abc = new Rec1();\n" +
- " }\n" +
- "}\n";
- ICompilationUnit cu= pack1.createCompilationUnit("Rec1.java", test, false, null);
-
- CompilationUnit astRoot= getASTRoot(cu);
- ArrayList<IJavaCompletionProposal> proposals= collectCorrections(cu, astRoot, 1);
- assertNumberOfProposals(proposals, 2);
- assertCorrectLabels(proposals);
-
- CUCorrectionProposal proposal= (CUCorrectionProposal) proposals.get(0);
- String preview1= getPreviewContent(proposal);
-
- String expected1= "" +
- "package test;\n" +
- "\n" +
- "public record Rec1(int a){\n" +
- "\n" +
- " public static void main(String[] args) {\n" +
- " Rec1 abc = new Rec1(a);\n" +
- " }\n" +
- "}\n";
-
- proposal= (CUCorrectionProposal) proposals.get(1);
- String preview2= getPreviewContent(proposal);
-
- String expected2= "" +
- "package test;\n" +
- "\n" +
- "public record Rec1(int a){\n" +
- "\n" +
- " /**\n" +
- " * \n" +
- " */\n" +
- " public Rec1() {\n" +
- " // TODO Auto-generated constructor stub\n" +
- " }\n" +
- "\n" +
- " public static void main(String[] args) {\n" +
- " Rec1 abc = new Rec1();\n" +
- " }\n" +
- "}\n";
-
- assertEqualStringsIgnoreOrder(new String[] { preview1, preview2 }, new String[] { expected1, expected2 });
- }
-
- @Test
- public void testRecordConstructorIncorrectParamsProposal2() throws Exception {
- fJProject1= JavaProjectHelper.createJavaProject("TestProject1", "bin");
- fJProject1.setRawClasspath(projectsetup.getDefaultClasspath(), null);
- JavaProjectHelper.set15CompilerOptions(fJProject1, true);
-
- Map<String, String> options= fJProject1.getOptions(false);
- options.put(JavaCore.COMPILER_PB_REPORT_PREVIEW_FEATURES, JavaCore.IGNORE);
- fJProject1.setOptions(options);
-
- fSourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src");
- IPackageFragment pack1= fSourceFolder.createPackageFragment("test", false, null);
-
- String test= "" +
- "package test;\n" +
- "\n" +
- "public record Rec1(int a){\n" +
- "\n" +
- " public static void main(String[] args) {\n" +
- " Rec1 abc = new Rec1(10, 20);\n" +
- " }\n" +
- "}\n";
- ICompilationUnit cu= pack1.createCompilationUnit("Rec1.java", test, false, null);
-
- CompilationUnit astRoot= getASTRoot(cu);
- ArrayList<IJavaCompletionProposal> proposals= collectCorrections(cu, astRoot, 1);
- assertNumberOfProposals(proposals, 2);
- assertCorrectLabels(proposals);
-
- CUCorrectionProposal proposal= (CUCorrectionProposal) proposals.get(0);
- String preview1= getPreviewContent(proposal);
-
- String expected1= "" +
- "package test;\n" +
- "\n" +
- "public record Rec1(int a){\n" +
- "\n" +
- " public static void main(String[] args) {\n" +
- " Rec1 abc = new Rec1(10);\n" +
- " }\n" +
- "}\n";
-
- proposal= (CUCorrectionProposal) proposals.get(1);
- String preview2= getPreviewContent(proposal);
-
- String expected2= "" +
- "package test;\n" +
- "\n" +
- "public record Rec1(int a){\n" +
- "\n" +
- " /**\n" +
- " * @param i\n" +
- " * @param j\n" +
- " */\n" +
- " public Rec1(int i, int j) {\n" +
- " // TODO Auto-generated constructor stub\n" +
- " }\n" +
- "\n" +
- " public static void main(String[] args) {\n" +
- " Rec1 abc = new Rec1(10, 20);\n" +
- " }\n" +
- "}\n";
-
- assertEqualStringsIgnoreOrder(new String[] { preview1, preview2 }, new String[] { expected1, expected2 });
- }
-
- @Test
- public void testRecordConstructorIncorrectParamsProposal3() throws Exception {
- fJProject1= JavaProjectHelper.createJavaProject("TestProject1", "bin");
- fJProject1.setRawClasspath(projectsetup.getDefaultClasspath(), null);
- JavaProjectHelper.set15CompilerOptions(fJProject1, true);
-
- Map<String, String> options= fJProject1.getOptions(false);
- options.put(JavaCore.COMPILER_PB_REPORT_PREVIEW_FEATURES, JavaCore.IGNORE);
- fJProject1.setOptions(options);
-
- fSourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src");
- IPackageFragment pack1= fSourceFolder.createPackageFragment("test", false, null);
-
- String test= "" +
- "package test;\n" +
- "\n" +
- "public record Rec1(int a){\n" +
- "\n" +
- " public static void main(String[] args) {\n" +
- " Rec1 abc = new Rec1(\"str\");\n" +
- " }\n" +
- "}\n";
- ICompilationUnit cu= pack1.createCompilationUnit("Rec1.java", test, false, null);
-
- CompilationUnit astRoot= getASTRoot(cu);
- ArrayList<IJavaCompletionProposal> proposals= collectCorrections(cu, astRoot, 1);
- assertNumberOfProposals(proposals, 1);
- assertCorrectLabels(proposals);
-
- CUCorrectionProposal proposal= (CUCorrectionProposal) proposals.get(0);
- String preview1= getPreviewContent(proposal);
-
- String expected1= "" +
- "package test;\n" +
- "\n" +
- "public record Rec1(int a){\n" +
- "\n" +
- " /**\n" +
- " * @param string\n" +
- " */\n" +
- " public Rec1(String string) {\n" +
- " // TODO Auto-generated constructor stub\n" +
- " }\n" +
- "\n" +
- " public static void main(String[] args) {\n" +
- " Rec1 abc = new Rec1(\"str\");\n" +
- " }\n" +
- "}\n";
-
- assertEqualStringsIgnoreOrder(new String[] { preview1 }, new String[] { expected1 });
- }
-
- @Test
- public void testRecordCanonicalConstructordUninitializedFieldProposal() throws Exception {
- fJProject1= JavaProjectHelper.createJavaProject("TestProject1", "bin");
- fJProject1.setRawClasspath(projectsetup.getDefaultClasspath(), null);
- JavaProjectHelper.set15CompilerOptions(fJProject1, true);
-
- Map<String, String> options= fJProject1.getOptions(false);
- options.put(JavaCore.COMPILER_PB_REPORT_PREVIEW_FEATURES, JavaCore.IGNORE);
- fJProject1.setOptions(options);
-
- fSourceFolder= JavaProjectHelper.addSourceContainer(fJProject1, "src");
- IPackageFragment pack1= fSourceFolder.createPackageFragment("test", false, null);
-
- String test= "" +
- "package test;\n" +
- "\n" +
- "public record Rec1(int a, int b){\n" +
- "\n" +
- " public Rec1(int a, int b) {\n" +
- " \n" +
- " }\n\n" +
- " public Rec1(int a) {\n" +
- " this(a, a);\n" +
- " }\n\n" +
- " public Rec1(int a, int b, int c) {\n" +
- " this(a, b+c);\n" +
- " }\n\n" +
- "}\n";
- ICompilationUnit cu= pack1.createCompilationUnit("Rec1.java", test, false, null);
-
- CompilationUnit astRoot= getASTRoot(cu);
- ArrayList<IJavaCompletionProposal> proposals= collectCorrections(cu, astRoot, 2);
- assertNumberOfProposals(proposals, 1);
- assertCorrectLabels(proposals);
-
- CUCorrectionProposal proposal= (CUCorrectionProposal) proposals.get(0);
- String preview1= getPreviewContent(proposal);
-
- String expected1= "" +
- "package test;\n" +
- "\n" +
- "public record Rec1(int a, int b){\n" +
- "\n" +
- " public Rec1(int a, int b) {\n" +
- " this.a = 0;\n" +
- " \n" +
- " }\n\n" +
- " public Rec1(int a) {\n" +
- " this(a, a);\n" +
- " }\n\n" +
- " public Rec1(int a, int b, int c) {\n" +
- " this(a, b+c);\n" +
- " }\n\n" +
- "}\n";
-
- assertEqualStringsIgnoreOrder(new String[] { preview1 }, new String[] { expected1 });
- }
}
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/UtilitiesTest.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/UtilitiesTest.java
index d9f1c13..7f10f11 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/UtilitiesTest.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/UtilitiesTest.java
@@ -221,7 +221,7 @@
@Test
public void testGetPossibleTypeKindsForTypes() throws Exception {
- JavaProjectHelper.set15CompilerOptions(fJProject1, true);
+ JavaProjectHelper.set16CompilerOptions(fJProject1, true);
IPackageFragment pack1= fSourceFolder.createPackageFragment("test1", false, null);
StringBuilder buf= new StringBuilder();
diff --git a/org.eclipse.jdt.ui/.settings/.api_filters b/org.eclipse.jdt.ui/.settings/.api_filters
index aad5889..4b08b50 100644
--- a/org.eclipse.jdt.ui/.settings/.api_filters
+++ b/org.eclipse.jdt.ui/.settings/.api_filters
@@ -32,36 +32,6 @@
</message_arguments>
</filter>
</resource>
- <resource path="core refactoring/org/eclipse/jdt/internal/corext/refactoring/TypeContextChecker.java" type="org.eclipse.jdt.internal.corext.refactoring.TypeContextChecker">
- <filter comment="This is a Java15 preview feature" id="640712815">
- <message_arguments>
- <message_argument value="AbstractTypeDeclaration"/>
- <message_argument value="TypeContextChecker"/>
- <message_argument value="getName()"/>
- </message_arguments>
- </filter>
- <filter comment="This is a Java15 preview feature" id="640712815">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="TypeContextChecker"/>
- <message_argument value="recordComponents()"/>
- </message_arguments>
- </filter>
- <filter comment="This is a Java 15 preview feature" id="640712815">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="TypeContextChecker"/>
- <message_argument value="superInterfaceTypes()"/>
- </message_arguments>
- </filter>
- <filter comment="This is a Java 15 preview feature" id="640712815">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="TypeContextChecker"/>
- <message_argument value="typeParameters()"/>
- </message_arguments>
- </filter>
- </resource>
<resource path="core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/IntroduceFactoryRefactoring.java" type="org.eclipse.jdt.internal.corext.refactoring.code.IntroduceFactoryRefactoring">
<filter comment="This is a Java 15 preview feature" id="640712815">
<message_arguments>
@@ -77,13 +47,6 @@
<message_argument value="isCompactConstructor()"/>
</message_arguments>
</filter>
- <filter comment="This is a Java 15 preview feature" id="640712815">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="IntroduceFactoryRefactoring"/>
- <message_argument value="recordComponents()"/>
- </message_arguments>
- </filter>
</resource>
<resource path="core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ReplaceInvocationsRefactoring.java" type="org.eclipse.jdt.internal.corext.refactoring.code.ReplaceInvocationsRefactoring">
<filter id="571519004">
@@ -230,11 +193,18 @@
</filter>
</resource>
<resource path="ui/org/eclipse/jdt/internal/ui/fix/PatternMatchingForInstanceofCleanUp.java" type="org.eclipse.jdt.internal.ui.fix.PatternMatchingForInstanceofCleanUp$PatternMatchingForInstanceofOperation">
- <filter comment="For Java 15" id="640712815">
+ <filter comment="This is a Java 16 preview feature" id="640712815">
<message_arguments>
- <message_argument value="InstanceofExpression"/>
+ <message_argument value="PatternInstanceofExpression"/>
<message_argument value="PatternMatchingForInstanceofOperation"/>
- <message_argument value="setPatternVariable(SimpleName)"/>
+ <message_argument value="setLeftOperand(Expression)"/>
+ </message_arguments>
+ </filter>
+ <filter comment="This is a Java 16 preview feature" id="640712815">
+ <message_arguments>
+ <message_argument value="PatternInstanceofExpression"/>
+ <message_argument value="PatternMatchingForInstanceofOperation"/>
+ <message_argument value="setRightOperand(SingleVariableDeclaration)"/>
</message_arguments>
</filter>
</resource>
@@ -287,20 +257,6 @@
</filter>
</resource>
<resource path="ui/org/eclipse/jdt/internal/ui/javaeditor/SemanticHighlightingReconciler.java" type="org.eclipse.jdt.internal.ui.javaeditor.SemanticHighlightingReconciler$PositionCollector">
- <filter comment="This is a Java15 preview feature" id="640712815">
- <message_arguments>
- <message_argument value="ASTNode"/>
- <message_argument value="PositionCollector"/>
- <message_argument value="getAST()"/>
- </message_arguments>
- </filter>
- <filter comment="For Java 14 preview features" id="640712815">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="PositionCollector"/>
- <message_argument value="getRestrictedIdentifierStartPosition()"/>
- </message_arguments>
- </filter>
<filter comment="This is a Java 15 preview feature" id="640712815">
<message_arguments>
<message_argument value="TypeDeclaration"/>
@@ -317,98 +273,6 @@
</message_arguments>
</filter>
</resource>
- <resource path="ui/org/eclipse/jdt/internal/ui/text/correction/JavadocTagsSubProcessor.java" type="org.eclipse.jdt.internal.ui.text.correction.JavadocTagsSubProcessor">
- <filter comment="For Java 14 Enable Preview feature" id="623939596">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="JavadocTagsSubProcessor"/>
- <message_argument value="RECORD_COMPONENTS_PROPERTY"/>
- </message_arguments>
- </filter>
- <filter comment="For Java 14 Enable Preview feature" id="623939596">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="JavadocTagsSubProcessor"/>
- <message_argument value="TYPE_PARAMETERS_PROPERTY"/>
- </message_arguments>
- </filter>
- <filter comment="For Java 14 Enable Preview feature" id="640712815">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="JavadocTagsSubProcessor"/>
- <message_argument value="recordComponents()"/>
- </message_arguments>
- </filter>
- <filter comment="For Java 14 Enable Preview feature" id="640712815">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="JavadocTagsSubProcessor"/>
- <message_argument value="typeParameters()"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="ui/org/eclipse/jdt/internal/ui/text/correction/JavadocTagsSubProcessor.java" type="org.eclipse.jdt.internal.ui.text.correction.JavadocTagsSubProcessor$AddAllMissingJavadocTagsProposal">
- <filter comment="For Java 14 Enable Preview feature" id="640712815">
- <message_arguments>
- <message_argument value="ASTNode"/>
- <message_argument value="AddAllMissingJavadocTagsProposal"/>
- <message_argument value="getAST()"/>
- </message_arguments>
- </filter>
- <filter comment="For Java 14 Enable Preview feature" id="640712815">
- <message_arguments>
- <message_argument value="BodyDeclaration"/>
- <message_argument value="AddAllMissingJavadocTagsProposal"/>
- <message_argument value="getJavadoc()"/>
- </message_arguments>
- </filter>
- <filter comment="For Java 14 Enable Preview feature" id="640712815">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="AddAllMissingJavadocTagsProposal"/>
- <message_argument value="recordComponents()"/>
- </message_arguments>
- </filter>
- <filter comment="For Java 14 Enable Preview feature" id="640712815">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="AddAllMissingJavadocTagsProposal"/>
- <message_argument value="typeParameters()"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="ui/org/eclipse/jdt/internal/ui/text/correction/JavadocTagsSubProcessor.java" type="org.eclipse.jdt.internal.ui.text.correction.JavadocTagsSubProcessor$AddMissingJavadocTagProposal">
- <filter comment="This is a Java15 preview feature" id="640712815">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="AddMissingJavadocTagProposal"/>
- <message_argument value="recordComponents()"/>
- </message_arguments>
- </filter>
- <filter comment="For Java 14 Enable Preview feature" id="640712815">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="AddMissingJavadocTagProposal"/>
- <message_argument value="typeParameters()"/>
- </message_arguments>
- </filter>
- </resource>
- <resource path="ui/org/eclipse/jdt/internal/ui/text/correction/SuppressWarningsSubProcessor.java" type="org.eclipse.jdt.internal.ui.text.correction.SuppressWarningsSubProcessor">
- <filter comment="For Java 14 Enable Preview feature" id="623939596">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="SuppressWarningsSubProcessor"/>
- <message_argument value="MODIFIERS2_PROPERTY"/>
- </message_arguments>
- </filter>
- <filter comment="For Java 14 Enable Preview feature" id="640712815">
- <message_arguments>
- <message_argument value="AbstractTypeDeclaration"/>
- <message_argument value="SuppressWarningsSubProcessor"/>
- <message_argument value="getName()"/>
- </message_arguments>
- </filter>
- </resource>
<resource path="ui/org/eclipse/jdt/internal/ui/text/correction/UnresolvedElementsSubProcessor.java" type="org.eclipse.jdt.internal.ui.text.correction.UnresolvedElementsSubProcessor">
<filter comment="This is a Java 15 preview feature" id="640712815">
<message_arguments>
@@ -419,13 +283,6 @@
</filter>
</resource>
<resource path="ui/org/eclipse/jdt/internal/ui/text/correction/proposals/InitializeFinalFieldProposal.java" type="org.eclipse.jdt.internal.ui.text.correction.proposals.InitializeFinalFieldProposal">
- <filter id="640712815">
- <message_arguments>
- <message_argument value="AbstractTypeDeclaration"/>
- <message_argument value="InitializeFinalFieldProposal"/>
- <message_argument value="getName()"/>
- </message_arguments>
- </filter>
<filter comment="This is a Java 15 preview feature" id="640712815">
<message_arguments>
<message_argument value="IMethodBinding"/>
@@ -434,15 +291,6 @@
</message_arguments>
</filter>
</resource>
- <resource path="ui/org/eclipse/jdt/internal/ui/text/correction/proposals/InitializeFinalFieldProposal.java" type="org.eclipse.jdt.internal.ui.text.correction.proposals.InitializeFinalFieldProposal$RecordComponentVisitor">
- <filter id="640712815">
- <message_arguments>
- <message_argument value="RecordDeclaration"/>
- <message_argument value="RecordComponentVisitor"/>
- <message_argument value="recordComponents()"/>
- </message_arguments>
- </filter>
- </resource>
<resource path="ui/org/eclipse/jdt/internal/ui/util/ViewerPane.java" type="org.eclipse.jdt.internal.ui.util.ViewerPane">
<filter id="571473929">
<message_arguments>
diff --git a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/actions/RenameJavaElementAction.java b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/actions/RenameJavaElementAction.java
index c1bb80c..0165194 100644
--- a/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/actions/RenameJavaElementAction.java
+++ b/org.eclipse.jdt.ui/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/actions/RenameJavaElementAction.java
@@ -33,7 +33,6 @@
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.ITypeRoot;
import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.ASTNode;
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.core.dom.IMethodBinding;
@@ -61,6 +60,7 @@
import org.eclipse.jdt.internal.ui.refactoring.reorg.RenameLinkedMode;
import org.eclipse.jdt.internal.ui.text.correction.CorrectionCommandHandler;
import org.eclipse.jdt.internal.ui.text.correction.proposals.LinkedNamesAssistProposal;
+import org.eclipse.jdt.internal.ui.util.ASTHelper;
import org.eclipse.jdt.internal.ui.util.ExceptionHandler;
public class RenameJavaElementAction extends SelectionDispatchAction {
@@ -244,7 +244,7 @@
private boolean isVarTypeSelection(ITextSelection textSelection) {
if (textSelection instanceof JavaTextSelection) {
ASTNode node= ((JavaTextSelection) textSelection).resolveCoveringNode();
- if (node instanceof SimpleName && node.getAST().apiLevel() >= AST.JLS10 && ((SimpleName) node).isVar()) {
+ if (node instanceof SimpleName && node.getAST().apiLevel() >= ASTHelper.JLS10 && ((SimpleName) node).isVar()) {
return true;
}
} else if (textSelection != null) {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/PatternMatchingForInstanceofCleanUp.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/PatternMatchingForInstanceofCleanUp.java
index 5a5bc6d..4cbe83d 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/PatternMatchingForInstanceofCleanUp.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/PatternMatchingForInstanceofCleanUp.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2020 Fabrice TIERCELIN and others.
+ * Copyright (c) 2020, 2021 Fabrice TIERCELIN and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -8,9 +8,13 @@
*
* SPDX-License-Identifier: EPL-2.0
*
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ *
* Contributors:
* Fabrice TIERCELIN - initial API and implementation
- * IBM Corporation - Bug 565447
+ * IBM Corporation - Bug 565447, Bug 570690
*******************************************************************************/
package org.eclipse.jdt.internal.ui.fix;
@@ -35,8 +39,10 @@
import org.eclipse.jdt.core.dom.IfStatement;
import org.eclipse.jdt.core.dom.InfixExpression;
import org.eclipse.jdt.core.dom.InstanceofExpression;
+import org.eclipse.jdt.core.dom.PatternInstanceofExpression;
import org.eclipse.jdt.core.dom.PrefixExpression;
import org.eclipse.jdt.core.dom.SimpleName;
+import org.eclipse.jdt.core.dom.SingleVariableDeclaration;
import org.eclipse.jdt.core.dom.Statement;
import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
import org.eclipse.jdt.core.dom.VariableDeclarationStatement;
@@ -55,8 +61,6 @@
import org.eclipse.jdt.ui.cleanup.ICleanUpFix;
import org.eclipse.jdt.ui.text.java.IProblemLocation;
-import org.eclipse.jdt.internal.ui.text.correction.PreviewFeaturesSubProcessor;
-
/**
* A fix that uses pattern matching for the instanceof expression when possible.
*/
@@ -103,8 +107,7 @@
@Override
protected ICleanUpFix createFix(CompilationUnit unit) throws CoreException {
if (!isEnabled(CleanUpConstants.USE_PATTERN_MATCHING_FOR_INSTANCEOF)
- || !PreviewFeaturesSubProcessor.isPreviewFeatureEnabled(unit.getJavaElement().getJavaProject())
- || !JavaModelUtil.is15OrHigher(unit.getJavaElement().getJavaProject())) {
+ || !JavaModelUtil.is16OrHigher(unit.getJavaElement().getJavaProject())) {
return null;
}
@@ -140,8 +143,7 @@
@Override
public boolean visit(final InstanceofExpression visited) {
- if (visited.getPatternVariable() != null
- || !ASTNodes.isPassive(visited.getLeftOperand())
+ if (!ASTNodes.isPassive(visited.getLeftOperand())
|| visited.getRightOperand().resolveBinding() == null) {
return true;
}
@@ -267,10 +269,12 @@
AST ast= cuRewrite.getRoot().getAST();
TextEditGroup group= createTextEditGroup(MultiFixMessages.PatternMatchingForInstanceofCleanup_description, cuRewrite);
- InstanceofExpression newInstanceof= ast.newInstanceofExpression();
+ PatternInstanceofExpression newInstanceof= ast.newPatternInstanceofExpression();
newInstanceof.setLeftOperand(ASTNodes.createMoveTarget(rewrite, nodeToComplete.getLeftOperand()));
- newInstanceof.setRightOperand(ASTNodes.createMoveTarget(rewrite, nodeToComplete.getRightOperand()));
- newInstanceof.setPatternVariable(ASTNodes.createMoveTarget(rewrite, expressionToMove));
+ SingleVariableDeclaration newSVDecl= ast.newSingleVariableDeclaration();
+ newSVDecl.setName(ASTNodes.createMoveTarget(rewrite, expressionToMove));
+ newSVDecl.setType(ASTNodes.createMoveTarget(rewrite, nodeToComplete.getRightOperand()));
+ newInstanceof.setRightOperand(newSVDecl);
ASTNodes.replaceButKeepComment(rewrite, nodeToComplete, newInstanceof, group);
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/SemanticHighlightingReconciler.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/SemanticHighlightingReconciler.java
index 6bf5f7a..531c831 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/SemanticHighlightingReconciler.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/SemanticHighlightingReconciler.java
@@ -131,7 +131,7 @@
@Override
public boolean visit(SimpleType node) {
- if (node.getAST().apiLevel() >= AST.JLS10 && node.isVar()) {
+ if (node.getAST().apiLevel() >= ASTHelper.JLS10 && node.isVar()) {
int offset= node.getStartPosition();
int length= node.getLength();
if (offset > -1 && length > 0) {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/ComplianceConfigurationBlock.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/ComplianceConfigurationBlock.java
index 9731796..36ed061 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/ComplianceConfigurationBlock.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/ComplianceConfigurationBlock.java
@@ -8,6 +8,10 @@
*
* SPDX-License-Identifier: EPL-2.0
*
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* Jesper S Møller - Bug 529432 - Allow JDT UI to target Java 10
@@ -143,6 +147,7 @@
private static final String VERSION_13 = JavaCore.VERSION_13;
private static final String VERSION_14 = JavaCore.VERSION_14;
private static final String VERSION_15 = JavaCore.VERSION_15;
+ private static final String VERSION_16 = JavaCore.VERSION_16;
private static final String VERSION_LATEST = JavaCore.latestSupportedJavaVersion();
private static final String VERSION_JSR14= "jsr14"; //$NON-NLS-1$
@@ -300,7 +305,7 @@
private Composite createComplianceTabContent(Composite folder) {
final String[] complianceVersions= new String[] { VERSION_1_3, VERSION_1_4,
- VERSION_1_5, VERSION_1_6, VERSION_1_7, VERSION_1_8, VERSION_9, VERSION_10, VERSION_11, VERSION_12, VERSION_13, VERSION_14, VERSION_15 };
+ VERSION_1_5, VERSION_1_6, VERSION_1_7, VERSION_1_8, VERSION_9, VERSION_10, VERSION_11, VERSION_12, VERSION_13, VERSION_14, VERSION_15, VERSION_16 };
final String[] complianceLabels= new String[] {
PreferencesMessages.ComplianceConfigurationBlock_version13,
PreferencesMessages.ComplianceConfigurationBlock_version14,
@@ -315,10 +320,11 @@
PreferencesMessages.ComplianceConfigurationBlock_version_13,
PreferencesMessages.ComplianceConfigurationBlock_version_14,
PreferencesMessages.ComplianceConfigurationBlock_version_15,
+ PreferencesMessages.ComplianceConfigurationBlock_version_16,
};
String[] targetVersions= new String[] { VERSION_CLDC_1_1, VERSION_1_1, VERSION_1_2, VERSION_1_3, VERSION_1_4,
- VERSION_1_5, VERSION_1_6, VERSION_1_7, VERSION_1_8, VERSION_9, VERSION_10, VERSION_11, VERSION_12, VERSION_13, VERSION_14, VERSION_15 };
+ VERSION_1_5, VERSION_1_6, VERSION_1_7, VERSION_1_8, VERSION_9, VERSION_10, VERSION_11, VERSION_12, VERSION_13, VERSION_14, VERSION_15, VERSION_16 };
String[] targetLabels= new String[] {
PreferencesMessages.ComplianceConfigurationBlock_versionCLDC11,
PreferencesMessages.ComplianceConfigurationBlock_version11,
@@ -336,6 +342,7 @@
PreferencesMessages.ComplianceConfigurationBlock_version_13,
PreferencesMessages.ComplianceConfigurationBlock_version_14,
PreferencesMessages.ComplianceConfigurationBlock_version_15,
+ PreferencesMessages.ComplianceConfigurationBlock_version_16,
};
if (ComplianceConfigurationBlock.VERSION_JSR14.equals(getValue(PREF_CODEGEN_TARGET_PLATFORM))) {
targetVersions= append(targetVersions, ComplianceConfigurationBlock.VERSION_JSR14);
@@ -343,7 +350,7 @@
}
String[] sourceVersions= new String[] { VERSION_1_3, VERSION_1_4,
- VERSION_1_5, VERSION_1_6, VERSION_1_7, VERSION_1_8, VERSION_9, VERSION_10, VERSION_11, VERSION_12, VERSION_13, VERSION_14, VERSION_15 };
+ VERSION_1_5, VERSION_1_6, VERSION_1_7, VERSION_1_8, VERSION_9, VERSION_10, VERSION_11, VERSION_12, VERSION_13, VERSION_14, VERSION_15, VERSION_16 };
String[] sourceLabels= new String[] {
PreferencesMessages.ComplianceConfigurationBlock_version13,
PreferencesMessages.ComplianceConfigurationBlock_version14,
@@ -358,6 +365,7 @@
PreferencesMessages.ComplianceConfigurationBlock_version_13,
PreferencesMessages.ComplianceConfigurationBlock_version_14,
PreferencesMessages.ComplianceConfigurationBlock_version_15,
+ PreferencesMessages.ComplianceConfigurationBlock_version_16,
};
final ScrolledPageContent sc1 = new ScrolledPageContent(folder);
@@ -807,13 +815,13 @@
}
}
-// //TODO: Comment once Java SE 15 has been shipped:
-// String selectedCompliance= getValue(PREF_COMPLIANCE);
-// if (VERSION_15.equals(selectedCompliance)) {
-// fJRE50InfoText.setText(
-// "This is an implementation of an early-draft specification developed under the Java Community Process (JCP) and is made available for testing and evaluation purposes only. The code is not compatible with any specification of the JCP."); //$NON-NLS-1$
-// isVisible= true;
-// }
+ //TODO: Comment once Java SE 16 has been shipped:
+ String selectedCompliance= getValue(PREF_COMPLIANCE);
+ if (VERSION_16.equals(selectedCompliance)) {
+ fJRE50InfoText.setText(
+ "This is an implementation of an early-draft specification developed under the Java Community Process (JCP) and is made available for testing and evaluation purposes only. The code is not compatible with any specification of the JCP."); //$NON-NLS-1$
+ isVisible= true;
+ }
fJRE50InfoText.setVisible(isVisible);
fJRE50InfoImage.setImage(isVisible ? image : null);
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.java
index 52946cc..65b04e6 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.java
@@ -8,6 +8,10 @@
*
* SPDX-License-Identifier: EPL-2.0
*
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
+ *
* Contributors:
* IBM Corporation - initial API and implementation
* John Kaplan, johnkaplantech@gmail.com - 108071 [code templates] template for body of newly created class
@@ -839,6 +843,7 @@
public static String ComplianceConfigurationBlock_version_13;
public static String ComplianceConfigurationBlock_version_14;
public static String ComplianceConfigurationBlock_version_15;
+ public static String ComplianceConfigurationBlock_version_16;
public static String ComplianceConfigurationBlock_versionCLDC11;
public static String ComplianceConfigurationBlock_src_greater_compliance;
public static String ComplianceConfigurationBlock_classfile_greater_compliance;
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.properties b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.properties
index a8801fc..d8b7290 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.properties
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/PreferencesMessages.properties
@@ -8,6 +8,10 @@
#
# SPDX-License-Identifier: EPL-2.0
#
+# This is an implementation of an early-draft specification developed under the Java
+# Community Process (JCP) and is made available for testing and evaluation purposes
+# only. The code is not compatible with any specification of the JCP.
+#
# IBM Corporation - initial API and implementation
# John Kaplan, johnkaplantech@gmail.com - 108071 [code templates] template for body of newly created class
# Sebastian Davids, sdavids@gmx.de - 187316 [preferences] Mark Occurrences Pref Page; Link to
@@ -591,6 +595,7 @@
ComplianceConfigurationBlock_version_13=13
ComplianceConfigurationBlock_version_14=14
ComplianceConfigurationBlock_version_15=15
+ComplianceConfigurationBlock_version_16=16 (BETA)
ComplianceConfigurationBlock_versionCLDC11=CLDC 1.1
ComplianceConfigurationBlock_needsbuild_title=Compiler Settings Changed
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionCommandHandler.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionCommandHandler.java
index cd37cd0..da8952e 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionCommandHandler.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionCommandHandler.java
@@ -38,7 +38,6 @@
import org.eclipse.ui.keys.IBindingService;
import org.eclipse.jdt.core.ICompilationUnit;
-import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.ASTNode;
import org.eclipse.jdt.core.dom.SimpleName;
@@ -50,6 +49,7 @@
import org.eclipse.jdt.internal.ui.actions.ActionUtil;
import org.eclipse.jdt.internal.ui.javaeditor.JavaEditor;
import org.eclipse.jdt.internal.ui.text.correction.proposals.LinkedNamesAssistProposal;
+import org.eclipse.jdt.internal.ui.util.ASTHelper;
/**
* Handler to be used to run a quick fix or assist by keyboard shortcut
@@ -132,7 +132,7 @@
ASTNode node= context.getCoveringNode();
if (node instanceof SimpleName) {
SimpleName name= (SimpleName) node;
- if (name.getAST().apiLevel() >= AST.JLS10 && name.isVar()) {
+ if (name.getAST().apiLevel() >= ASTHelper.JLS10 && name.isVar()) {
return null;
}
return new LinkedNamesAssistProposal(context, name);
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/LocalCorrectionsSubProcessor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/LocalCorrectionsSubProcessor.java
index 30aca6b..f048d6f 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/LocalCorrectionsSubProcessor.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/LocalCorrectionsSubProcessor.java
@@ -246,7 +246,7 @@
List<String> affectedLocals= new ArrayList<>();
SimpleName vName= null;
ITypeBinding vType= null;
- if (selectedNode.getAST().apiLevel() >= AST.JLS10 && (selectedNode instanceof VariableDeclarationStatement)) {
+ if (selectedNode.getAST().apiLevel() >= ASTHelper.JLS10 && (selectedNode instanceof VariableDeclarationStatement)) {
for (Object o : ((VariableDeclarationStatement)selectedNode).fragments()) {
VariableDeclarationFragment v= ((VariableDeclarationFragment)o);
vName= v.getName();
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java
index 9a06d22..07655ca 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java
@@ -3059,7 +3059,7 @@
return false;
}
SimpleName name= (SimpleName) node;
- if (name.getAST().apiLevel() >= AST.JLS10 && name.isVar()) {
+ if (name.getAST().apiLevel() >= ASTHelper.JLS10 && name.isVar()) {
return false;
}
IBinding binding= name.resolveBinding();
@@ -3097,7 +3097,7 @@
return false;
}
SimpleName name= (SimpleName) node;
- if (name.getAST().apiLevel() >= AST.JLS10 && name.isVar()) {
+ if (name.getAST().apiLevel() >= ASTHelper.JLS10 && name.isVar()) {
return false;
}
IBinding binding= name.resolveBinding();
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/TypeMismatchSubProcessor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/TypeMismatchSubProcessor.java
index 031301b..24f0342 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/TypeMismatchSubProcessor.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/TypeMismatchSubProcessor.java
@@ -82,6 +82,7 @@
import org.eclipse.jdt.internal.ui.text.correction.proposals.NewVariableCorrectionProposal;
import org.eclipse.jdt.internal.ui.text.correction.proposals.OptionalCorrectionProposal;
import org.eclipse.jdt.internal.ui.text.correction.proposals.TypeChangeCorrectionProposal;
+import org.eclipse.jdt.internal.ui.util.ASTHelper;
import org.eclipse.jdt.internal.ui.viewsupport.BindingLabelProvider;
@@ -159,7 +160,7 @@
if (!(nodeToCast instanceof ArrayInitializer)) {
String castTypeName= castTypeBinding.getErasure().getQualifiedName();
- if (castTypeName.equals("java.util.Optional") && ast.apiLevel() >= AST.JLS8) { //$NON-NLS-1$
+ if (castTypeName.equals("java.util.Optional") && ast.apiLevel() >= ASTHelper.JLS8) { //$NON-NLS-1$
ITypeBinding nodeToCastTypeBinding= nodeToCast.resolveTypeBinding();
String label0= Messages.format(CorrectionMessages.TypeMismatchSubProcessor_changetooptionalempty_description, nodeToCast.toString());
proposals.add(new OptionalCorrectionProposal(label0, cu, nodeToCast, IProposalRelevance.CREATE_EMPTY_OPTIONAL, OptionalCorrectionProposal.OPTIONAL_EMPTY));
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/NewProviderMethodDeclaration.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/NewProviderMethodDeclaration.java
index 29bfcb7..b2948fd 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/NewProviderMethodDeclaration.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/proposals/NewProviderMethodDeclaration.java
@@ -47,6 +47,7 @@
import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
import org.eclipse.jdt.internal.ui.JavaPluginImages;
+import org.eclipse.jdt.internal.ui.util.ASTHelper;
public class NewProviderMethodDeclaration extends AbstractMethodCorrectionProposal {
@@ -67,7 +68,7 @@
typeProposals.addAll(Arrays.asList(subTypes));
Image image= JavaPluginImages.get(JavaPluginImages.IMG_MISC_PUBLIC);
- ASTParser parser= ASTParser.newParser(AST.JLS9);
+ ASTParser parser= ASTParser.newParser(ASTHelper.JLS9);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setProject(compilationUnit.getJavaProject());
parser.setSource(compilationUnit);
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/template/contentassist/TemplateEngine.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/template/contentassist/TemplateEngine.java
index aefa99a..7ea18e5 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/template/contentassist/TemplateEngine.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/template/contentassist/TemplateEngine.java
@@ -47,7 +47,6 @@
import org.eclipse.jdt.internal.ui.JavaPlugin;
import org.eclipse.jdt.internal.ui.JavaPluginImages;
-import org.eclipse.jdt.internal.ui.text.correction.PreviewFeaturesSubProcessor;
public class TemplateEngine {
@@ -213,7 +212,7 @@
}
return false;
}
- if (NEW_RECORD_TEMPLATE_NAME.equals(template.getName()) && PreviewFeaturesSubProcessor.isPreviewFeatureEnabled(context.getJavaProject())) {
+ if (NEW_RECORD_TEMPLATE_NAME.equals(template.getName()) && JavaModelUtil.is16OrHigher(context.getJavaProject())) {
return true;
}
return true;
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.java
index 2faefdd..7f6db77 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.java
@@ -118,7 +118,6 @@
public static String NewTypeWizardPage_warning_NotJDKCompliant2;
public static String NewTypeWizardPage_warning_EnumClassNotFound;
public static String NewTypeWizardPage_warning_RecordClassNotFound;
- public static String NewTypeWizardPage_warning_PreviewFeatureNotEnabled;
public static String NewTypeWizardPage_default;
public static String NewTypeWizardPage_ChoosePackageDialog_title;
public static String NewTypeWizardPage_ChoosePackageDialog_description;
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.properties b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.properties
index 59f0f1a..93fe9c1 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.properties
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.properties
@@ -93,7 +93,6 @@
NewTypeWizardPage_warning_NotJDKCompliant2=Project ''{0}'' is not a Java {1} compliant project.
NewTypeWizardPage_warning_EnumClassNotFound=Type 'java.lang.Enum' is not on the project's build path. Make sure you use a 1.5 JDK.
NewTypeWizardPage_warning_RecordClassNotFound=Type 'java.lang.Record' is not on the project's build path. Make sure you use a 14 JDK.
-NewTypeWizardPage_warning_PreviewFeatureNotEnabled=Project ''{0}'' does not have preview features enabled.
NewTypeWizardPage_default=(default)
NewTypeWizardPage_ChoosePackageDialog_title=Package Selection
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/SharedASTProvider.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/SharedASTProvider.java
index f0d941e..b74205f 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/SharedASTProvider.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/SharedASTProvider.java
@@ -7,6 +7,10 @@
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
+ *
+ * This is an implementation of an early-draft specification developed under the Java
+ * Community Process (JCP) and is made available for testing and evaluation purposes
+ * only. The code is not compatible with any specification of the JCP.
*
* Contributors:
* IBM Corporation - initial API and implementation
@@ -33,7 +37,7 @@
* <p>Clients can make the following assumptions about the AST:</p>
* <ul>
* <li>the AST has a {@link ITypeRoot} as source: {@link CompilationUnit#getTypeRoot()} is not null.</li>
- * <li>the {@link AST#apiLevel() AST API level} is {@link AST#JLS15 API level 15} or higher</li>
+ * <li>the {@link AST#apiLevel() AST API level} is {@link AST#JLS16 API level 16} or higher</li>
* <li>the AST has bindings resolved ({@link AST#hasResolvedBindings()})</li>
* <li>{@link AST#hasStatementsRecovery() statement} and {@link AST#hasBindingsRecovery() bindings}
* recovery are enabled
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewTypeWizardPage.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewTypeWizardPage.java
index a893ee9..eec15f3 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewTypeWizardPage.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/wizards/NewTypeWizardPage.java
@@ -149,7 +149,6 @@
import org.eclipse.jdt.internal.ui.refactoring.contentassist.ControlContentAssistHelper;
import org.eclipse.jdt.internal.ui.refactoring.contentassist.JavaPackageCompletionProcessor;
import org.eclipse.jdt.internal.ui.refactoring.contentassist.JavaTypeCompletionProcessor;
-import org.eclipse.jdt.internal.ui.text.correction.PreviewFeaturesSubProcessor;
import org.eclipse.jdt.internal.ui.util.SWTUtil;
import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages;
import org.eclipse.jdt.internal.ui.wizards.SuperInterfaceSelectionDialog;
@@ -1613,10 +1612,8 @@
}
if ((fTypeKind == RECORD_TYPE) && !status.matches(IStatus.ERROR)) {
if (root != null) {
- if (!JavaModelUtil.is14OrHigher(root.getJavaProject())) {
- return new StatusInfo(IStatus.ERROR, Messages.format(NewWizardMessages.NewTypeWizardPage_warning_NotJDKCompliant2, new String[] {BasicElementLabels.getJavaElementName(root.getJavaProject().getElementName()), "14" })); //$NON-NLS-1$
- } else if (!PreviewFeaturesSubProcessor.isPreviewFeatureEnabled(root.getJavaProject())) {
- return new StatusInfo(IStatus.ERROR, Messages.format(NewWizardMessages.NewTypeWizardPage_warning_PreviewFeatureNotEnabled, BasicElementLabels.getJavaElementName(root.getJavaProject().getElementName())));
+ if (!JavaModelUtil.is16OrHigher(root.getJavaProject())) {
+ return new StatusInfo(IStatus.ERROR, Messages.format(NewWizardMessages.NewTypeWizardPage_warning_NotJDKCompliant2, new String[] {BasicElementLabels.getJavaElementName(root.getJavaProject().getElementName()), "16" })); //$NON-NLS-1$
}
try {
// if findType(...) == null then Record is unavailable
diff --git a/pom.xml b/pom.xml
index b6694d8..23d954e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,6 +35,10 @@
<profiles>
<profile>
<id>build-individual-bundles</id>
+ <properties>
+ <eclipse-p2-repo.url>http://download.eclipse.org/eclipse/updates/Y-builds</eclipse-p2-repo.url>
+ <skipAPIAnalysis>true</skipAPIAnalysis>
+ </properties>
<repositories>
<repository>
<releases>