You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by ma...@apache.org on 2022/04/19 18:50:40 UTC

[netbeans] branch master updated: [3921] Correctly handling opens directive in package rename.

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 <jl...@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-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists