Bug 566001 - Only enabled on Java 15 and do not create empty else
Change-Id: I66efc14be4e0eb8bacea8021024286625cdab003
Signed-off-by: Fabrice Tiercelin <fabrice.tiercelin@yahoo.fr>
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest1d15.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest1d15.java
index 7452241..f86dfe5 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest1d15.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/CleanUpTest1d15.java
@@ -168,6 +168,14 @@
+ "\n" //
+ " return 0;\n" //
+ " }\n" //
+ + "\n" //
+ + " public int matchPatternOnLoneElse(Object object) {\n" //
+ + " // Keep this comment\n" //
+ + " if (!(object instanceof Date)) object.toString();\n" //
+ + " else final Date date = (Date) object;\n" //
+ + "\n" //
+ + " return 0;\n" //
+ + " }\n" //
+ "}\n";
ICompilationUnit cu= pack.createCompilationUnit("E.java", input, false, null);
@@ -243,6 +251,13 @@
+ "\n" //
+ " return 0;\n" //
+ " }\n" //
+ + "\n" //
+ + " public int matchPatternOnLoneElse(Object object) {\n" //
+ + " // Keep this comment\n" //
+ + " if (!(object instanceof Date date)) object.toString();\n" //
+ + "\n" //
+ + " return 0;\n" //
+ + " }\n" //
+ "}\n";
assertGroupCategoryUsed(new ICompilationUnit[] { cu }, new String[] { MultiFixMessages.PatternMatchingForInstanceofCleanup_description });
assertRefactoringResultAsExpected(new ICompilationUnit[] { cu }, new String[] { output });
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 9fd3eb9..e5c6d3f 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
@@ -105,7 +105,7 @@
protected ICleanUpFix createFix(CompilationUnit unit) throws CoreException {
if (!isEnabled(CleanUpConstants.USE_PATTERN_MATCHING_FOR_INSTANCEOF)
|| !PreviewFeaturesSubProcessor.isPreviewFeatureEnabled(unit.getJavaElement().getJavaProject())
- || !JavaModelUtil.is14OrHigher(unit.getJavaElement().getJavaProject())) {
+ || !JavaModelUtil.is15OrHigher(unit.getJavaElement().getJavaProject())) {
return null;
}
@@ -278,7 +278,7 @@
ASTNodes.replaceButKeepComment(rewrite, nodeToComplete, newInstanceof, group);
- if (ASTNodes.canHaveSiblings(statementToRemove)) {
+ if (ASTNodes.canHaveSiblings(statementToRemove) || statementToRemove.getLocationInParent() == IfStatement.ELSE_STATEMENT_PROPERTY) {
rewrite.remove(statementToRemove, group);
} else {
ASTNodes.replaceButKeepComment(rewrite, statementToRemove, ast.newBlock(), group);