This is an automated email from the ASF dual-hosted git repository. matthiasblaesing pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push: new c843263140 [3921] Correctly handling opens directive in package rename. new 14c9f20d97 Merge pull request #3993 from jlahoda/3921 c843263140 is described below commit c8432631406191aefa40ad511189361901de57a3 Author: Jan Lahoda <jlah...@netbeans.org> AuthorDate: Sun Apr 17 19:02:44 2022 +0200 [3921] Correctly handling opens directive in package rename. --- .../refactoring/java/plugins/MoveTransformer.java | 18 +++++++++++---- .../refactoring/java/test/RenamePackageTest.java | 26 +++++++++++++++++++++- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/java/refactoring.java/src/org/netbeans/modules/refactoring/java/plugins/MoveTransformer.java b/java/refactoring.java/src/org/netbeans/modules/refactoring/java/plugins/MoveTransformer.java index 201267a16e..05f7baee3b 100644 --- a/java/refactoring.java/src/org/netbeans/modules/refactoring/java/plugins/MoveTransformer.java +++ b/java/refactoring.java/src/org/netbeans/modules/refactoring/java/plugins/MoveTransformer.java @@ -449,16 +449,26 @@ public class MoveTransformer extends RefactoringVisitor { @Override public Tree visitExports(ExportsTree node, Element p) { + renamePackage(node.getPackageName()); + return super.visitExports(node, p); + } + + @Override + public Tree visitOpens(OpensTree node, Element p) { + renamePackage(node.getPackageName()); + return super.visitOpens(node, p); + } + + private void renamePackage(ExpressionTree packageName) { if (!workingCopy.getTreeUtilities().isSynthetic(getCurrentPath())) { - final Element el = workingCopy.getTrees().getElement(new TreePath(getCurrentPath(), node.getPackageName())); + final Element el = workingCopy.getTrees().getElement(new TreePath(getCurrentPath(), packageName)); if (el != null && el.getKind() == ElementKind.PACKAGE && isThisPackageMoving((PackageElement)el)) { Tree nju = make.Identifier(getTargetPackageName(el)); - rewrite(node.getPackageName(), nju); + rewrite(packageName, nju); } } - return super.visitExports(node, p); } - + private boolean containsAnyOf(Element el, EnumSet<Modifier> neededMods) { for (Modifier mod : neededMods) { if(el.getModifiers().contains(mod)) { diff --git a/java/refactoring.java/test/unit/src/org/netbeans/modules/refactoring/java/test/RenamePackageTest.java b/java/refactoring.java/test/unit/src/org/netbeans/modules/refactoring/java/test/RenamePackageTest.java index bbbd4d1b19..1cb717f488 100644 --- a/java/refactoring.java/test/unit/src/org/netbeans/modules/refactoring/java/test/RenamePackageTest.java +++ b/java/refactoring.java/test/unit/src/org/netbeans/modules/refactoring/java/test/RenamePackageTest.java @@ -20,8 +20,10 @@ package org.netbeans.modules.refactoring.java.test; import java.util.Arrays; +import java.util.HashSet; import java.util.LinkedList; import java.util.List; +import java.util.Set; import org.netbeans.modules.java.source.parsing.JavacParser; import org.netbeans.modules.refactoring.api.Problem; import org.netbeans.modules.refactoring.api.RefactoringSession; @@ -37,8 +39,10 @@ import org.openide.util.lookup.Lookups; */ public class RenamePackageTest extends RefactoringTestBase { + private static final Set<String> MODULAR_TESTS = new HashSet<>(Arrays.asList("testModuleOpens")); + public RenamePackageTest(String name) { - super(name, "1.8"); + super(name, MODULAR_TESTS.contains(name) ? "9" : "1.8"); } static { @@ -129,6 +133,26 @@ public class RenamePackageTest extends RefactoringTestBase { + "}")); } + public void testModuleOpens() throws Exception { + writeFilesAndWaitForScan(src, + new File("module-info.java", "module m {\n" + + "exports t;\n" + + "opens t;\n" + + "}"), + new File("t/A.java", "package t;\n" + + "public class A {\n" + + "}")); + performRenameFolder(src.getFileObject("t"), "u", false); + verifyContent(src, + new File("module-info.java", "module m {\n" + + "exports u;\n" + + "opens u;\n" + + "}"), + new File("u/A.java", "package u;\n" + + "public class A {\n" + + "}")); + } + private void performRenameFolder(FileObject source, final String newname, boolean searchInComments, Problem... expectedProblems) throws Exception { final RenameRefactoring[] r = new RenameRefactoring[1]; --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists