diff options
author | Sarika Sinha | 2021-02-22 10:45:13 +0000 |
---|---|---|
committer | Sarika Sinha | 2021-02-23 02:36:39 +0000 |
commit | 11e7b7d71c30fdb2f658085aedb10047bed40c87 (patch) | |
tree | 99ca88cc2f01fc8b1335dd94945422773a44d32c | |
parent | bf16d2ae550e528402f8b7c6df448d7aa5c896ac (diff) | |
download | eclipse.jdt.core-11e7b7d71c30fdb2f658085aedb10047bed40c87.tar.gz eclipse.jdt.core-11e7b7d71c30fdb2f658085aedb10047bed40c87.tar.xz eclipse.jdt.core-11e7b7d71c30fdb2f658085aedb10047bed40c87.zip |
Change-Id: I4bf6580bdb90d17a0beb9a086a80288295982b97
3 files changed, 58 insertions, 5 deletions
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingInstanceOfPatternExpressionTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingInstanceOfPatternExpressionTest.java index 5130a300a5..2d9729c3c7 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingInstanceOfPatternExpressionTest.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingInstanceOfPatternExpressionTest.java @@ -29,6 +29,7 @@ import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.IfStatement; import org.eclipse.jdt.core.dom.MethodDeclaration; import org.eclipse.jdt.core.dom.PatternInstanceofExpression; +import org.eclipse.jdt.core.dom.SimpleName; import org.eclipse.jdt.core.dom.SingleVariableDeclaration; import org.eclipse.jdt.core.dom.TypeDeclaration; import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; @@ -168,4 +169,56 @@ public class ASTRewritingInstanceOfPatternExpressionTest extends ASTRewritingTes assertEqualString(preview, buf.toString()); } + + @SuppressWarnings({ "rawtypes", "deprecation" }) + public void test003() throws Exception { + if (this.apiLevel != 16) { + System.err.println("Test "+getName()+" requires a JRE 16"); + return; + } + IPackageFragment pack1= this.sourceFolder.createPackageFragment("test1", false, null); + StringBuffer buf= new StringBuffer(); + buf= new StringBuffer(); + buf.append("package test1;\n"); + buf.append("public class X {\n"); + buf.append(" void foo(Object o) {\n"); + buf.append(" if (o instanceof String s)\n"); + buf.append(" ;\n"); + buf.append(" }\n"); + buf.append("}\n"); + ICompilationUnit cu= pack1.createCompilationUnit("X.java", buf.toString(), false, null); + + CompilationUnit astRoot= createAST(cu); + ASTRewrite rewrite= ASTRewrite.create(astRoot.getAST()); + + AST ast= astRoot.getAST(); + + assertTrue("Parse errors", (astRoot.getFlags() & ASTNode.MALFORMED) == 0); + TypeDeclaration type= findTypeDeclaration(astRoot, "X"); + MethodDeclaration methodDecl= findMethodDeclaration(type, "foo"); + Block block= methodDecl.getBody(); + List blockStatements= block.statements(); + assertTrue("Number of statements not 1", blockStatements.size() == 1); + { // change left side + IfStatement ifStatement = (IfStatement)blockStatements.get(0); + PatternInstanceofExpression expr = (PatternInstanceofExpression)ifStatement.getExpression(); + + SimpleName name= ast.newSimpleName("x"); + rewrite.replace(expr.getLeftOperand(), name, null); + } + + String preview= evaluateRewrite(cu, rewrite); + + buf= new StringBuffer(); + buf.append("package test1;\n"); + buf.append("public class X {\n"); + buf.append(" void foo(Object o) {\n"); + buf.append(" if (x instanceof String s)\n"); + buf.append(" ;\n"); + buf.append(" }\n"); + buf.append("}\n"); + + assertEqualString(preview, buf.toString()); + + } } diff --git a/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java b/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java index 3f559b3d36..888d702df1 100644 --- a/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java +++ b/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java @@ -3143,9 +3143,9 @@ public final class ASTRewriteAnalyzer extends ASTVisitor { return doVisitUnchangedChildren(node); } - rewriteRequiredNode(node, InstanceofExpression.LEFT_OPERAND_PROPERTY); - ensureSpaceAfterReplace(node, InstanceofExpression.LEFT_OPERAND_PROPERTY); - rewriteRequiredNode(node, InstanceofExpression.RIGHT_OPERAND_PROPERTY); + rewriteRequiredNode(node, PatternInstanceofExpression.LEFT_OPERAND_PROPERTY); + ensureSpaceAfterReplace(node, PatternInstanceofExpression.LEFT_OPERAND_PROPERTY); + rewriteRequiredNode(node, PatternInstanceofExpression.RIGHT_OPERAND_PROPERTY); return false; } diff --git a/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFlattener.java b/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFlattener.java index a48d2522fe..81891ca7a3 100644 --- a/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFlattener.java +++ b/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteFlattener.java @@ -642,9 +642,9 @@ public class ASTRewriteFlattener extends ASTVisitor { @Override public boolean visit(PatternInstanceofExpression node) { - getChildNode(node, InstanceofExpression.LEFT_OPERAND_PROPERTY).accept(this); + getChildNode(node, PatternInstanceofExpression.LEFT_OPERAND_PROPERTY).accept(this); this.result.append(" instanceof "); //$NON-NLS-1$ - getChildNode(node, InstanceofExpression.RIGHT_OPERAND_PROPERTY).accept(this); + getChildNode(node, PatternInstanceofExpression.RIGHT_OPERAND_PROPERTY).accept(this); return false; } |