diff options
| author | Jayaprakash Arthanareeswaran | 2013-04-04 10:06:38 +0000 |
|---|---|---|
| committer | Jayaprakash Arthanareeswaran | 2013-04-04 10:09:13 +0000 |
| commit | 91c6ddff6bd7fe61320d5046ec5ff027fe20fd88 (patch) | |
| tree | 7235b02db314c8ff3a771cabdf186dfbd07a9023 | |
| parent | 4ec31f2318860628c1e1a1e762dba2d5b54e8d3c (diff) | |
| download | eclipse.jdt.core-91c6ddff6bd7fe61320d5046ec5ff027fe20fd88.tar.gz eclipse.jdt.core-91c6ddff6bd7fe61320d5046ec5ff027fe20fd88.tar.xz eclipse.jdt.core-91c6ddff6bd7fe61320d5046ec5ff027fe20fd88.zip | |
Fix for bug 403985 - Adding new regression test
2 files changed, 62 insertions, 2 deletions
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingMethodDeclTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingMethodDeclTest.java index 0961e993ab..2e63c5026c 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingMethodDeclTest.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingMethodDeclTest.java @@ -26,6 +26,7 @@ import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.dom.*; +import org.eclipse.jdt.core.dom.Modifier.ModifierKeyword; import org.eclipse.jdt.core.dom.rewrite.ASTRewrite; import org.eclipse.jdt.core.dom.rewrite.ListRewrite; import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants; @@ -3584,5 +3585,65 @@ public class ASTRewritingMethodDeclTest extends ASTRewritingTest { buf.append("}\n"); assertEqualString(preview, buf.toString()); } - + // https://bugs.eclipse.org/bugs/show_bug.cgi?id=403985 + public void testBug403985_since_8() throws Exception { + String contents = + "public interface X {\n" + + " static void foo(){}\n" + + " public default void foo(int i){}\n" + + " public default int foo2(int i) { return 0;}\n" + + " public void foo3(int i);\n" + + " public default int foo4(int i) { return 0;}\n" + + "}\n"; + IPackageFragment pack1= this.sourceFolder.createPackageFragment("test1", false, null); + ICompilationUnit cu= pack1.createCompilationUnit("X.java", contents, false, null); + CompilationUnit astRoot= createAST(cu); + AST ast = astRoot.getAST(); + ASTRewrite rewrite= ASTRewrite.create(astRoot.getAST()); + TypeDeclaration type= findTypeDeclaration(astRoot, "X"); + MethodDeclaration[] methods = type.getMethods(); + assertEquals("Incorrect no of methods", 5, methods.length); + MethodDeclaration method = methods[0]; + { // Change default method to static and vice versa + ListRewrite listRewrite = rewrite.getListRewrite(method, MethodDeclaration.MODIFIERS2_PROPERTY); + ASTNode newMod = ast.newModifier(ModifierKeyword.DEFAULT_KEYWORD); + listRewrite.replace((ASTNode) method.modifiers().get(0), newMod, null); + + method = methods[1]; + listRewrite = rewrite.getListRewrite(method, MethodDeclaration.MODIFIERS2_PROPERTY); + newMod = ast.newModifier(ModifierKeyword.STATIC_KEYWORD); + listRewrite.replace((ASTNode) method.modifiers().get(1), newMod, null); + } + { // Remove default and the body + method = methods[2]; + ListRewrite listRewrite = rewrite.getListRewrite(method, MethodDeclaration.MODIFIERS2_PROPERTY); + listRewrite.remove((ASTNode) method.modifiers().get(1), null); + rewrite.set(method, MethodDeclaration.BODY_PROPERTY, null, null); + } + { // Add a default and body + method = methods[3]; + ListRewrite listRewrite = rewrite.getListRewrite(method, MethodDeclaration.MODIFIERS2_PROPERTY); + ASTNode newMod = ast.newModifier(ModifierKeyword.DEFAULT_KEYWORD); + listRewrite.insertAt(newMod, 1, null); + Block newBlock = ast.newBlock(); + rewrite.set(method, MethodDeclaration.BODY_PROPERTY, newBlock, null); + } + { // Alter parameters for a default method + method = methods[4]; + ListRewrite listRewrite = rewrite.getListRewrite(method, MethodDeclaration.PARAMETERS_PROPERTY); + listRewrite.remove((ASTNode) method.parameters().get(0), null); + listRewrite = rewrite.getListRewrite(method, MethodDeclaration.MODIFIERS2_PROPERTY); + listRewrite.remove((ASTNode) method.modifiers().get(0), null); + } + String preview = evaluateRewrite(cu, rewrite); + contents = + "public interface X {\n" + + " default void foo(){}\n" + + " public static void foo(int i){}\n" + + " public int foo2(int i);\n" + + " public default void foo3(int i) {\n }\n" + + " default int foo4() { return 0;}\n" + + "}\n"; + assertEqualString(preview, contents); + } } diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingTypeDeclTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingTypeDeclTest.java index 546a5cbf93..fb83aea60d 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingTypeDeclTest.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/rewrite/describing/ASTRewritingTypeDeclTest.java @@ -1929,5 +1929,4 @@ public class ASTRewritingTypeDeclTest extends ASTRewritingTest { assertEqualString(preview, buf.toString()); } - } |
