openrewrite / rewrite

Automated mass refactoring of source code.

Home Page:https://docs.openrewrite.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

rewrite-java - Parser issue with consecutive comment blocks

nmck257 opened this issue · comments

Test case:

    @Test
    void consecutiveCommentBlocks() {
        rewriteRun(
          java(
            """
            package org.sample;

            //import org.apache.log4j.Logger;
            /*import org.apache.logging.log4j.LogManager;
            import org.apache.logging.log4j.Logger;*/
            
            /**
             * Does stuff
             */
            public class MyClass {
            /*//	private static Logger log = Logger.getLogger(MyClass.class);
                private static Logger log = (Logger) LogManager.getLogger(MyClass.class);
                *//**
                 * Does main stuff
                 *
                 * @param arguments
                 *//*
                public static void main(String[] args) {
                }
                *//*public static void main(String[] arguments) {
                    
                }*/
            }
            """
          )
        );
    }

Result:

org.opentest4j.AssertionFailedError: [When parsing and printing the source code back to text without modifications, the printed source didn't match the original source code. This means there is a bug in the parser implementation itself. Please open an issue to report this, providing a sample of the code that generated this error for "org\sample\MyClass.java":
diff --git a/org/sample/MyClass.java b/org/sample/MyClass.java
index 01d13a3..f0e4660 100644
--- a/org/sample/MyClass.java
+++ b/org/sample/MyClass.java
@@ -14,10 +14,10 @@ 
      * Does main stuff
      *
      * @param arguments
-     *//*
+     *////
     public static void main(String[] args) {
     }
-    *//*public static void main(String[] arguments) {
+    //*public static void main(String[] arguments) {
 
-    }*/
-}
\ No newline at end of file
+    }/
+}//*
\ No newline at end of file
] 
expected: "package org.sample;

//import org.apache.log4j.Logger;
/*import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;*/

/**
 * Does stuff
 */
public class MyClass {
/*//	private static Logger log = Logger.getLogger(MyClass.class);
    private static Logger log = (Logger) LogManager.getLogger(MyClass.class);
    *//**
     * Does main stuff
     *
     * @param arguments
     *//*
    public static void main(String[] args) {
    }
    *//*public static void main(String[] arguments) {

    }*/
}"
 but was: "package org.sample;

//import org.apache.log4j.Logger;
/*import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;*/

/**
 * Does stuff
 */
public class MyClass {
/*//	private static Logger log = Logger.getLogger(MyClass.class);
    private static Logger log = (Logger) LogManager.getLogger(MyClass.class);
    *//**
     * Does main stuff
     *
     * @param arguments
     *////
    public static void main(String[] args) {
    }
    //*public static void main(String[] arguments) {

    }/
}//*"
	at org.openrewrite.test.RewriteTest.assertContentEquals(RewriteTest.java:616)
	at org.openrewrite.test.RewriteTest.rewriteRun(RewriteTest.java:311)
	at org.openrewrite.test.RewriteTest.rewriteRun(RewriteTest.java:132)
	at org.openrewrite.test.RewriteTest.rewriteRun(RewriteTest.java:127)
	at org.openrewrite.java.JavaParserTest.consecutiveCommentBlocks(JavaParserTest.java:59)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)