aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--src/main/java/japa/parser/ast/visitor/EqualsVisitor.java8
-rw-r--r--src/test/java/japa/parser/ast/test/TestCommentsParsing.java37
-rw-r--r--src/test/resources/japa/parser/ast/test/ClassWithLineCommentsInMultipleMethods.java22
4 files changed, 65 insertions, 4 deletions
diff --git a/.gitignore b/.gitignore
index d184e2720..541e61ae3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,5 @@ target
/target
.project
.classpath
+.idea/
+*.iml
diff --git a/src/main/java/japa/parser/ast/visitor/EqualsVisitor.java b/src/main/java/japa/parser/ast/visitor/EqualsVisitor.java
index 736356cc5..bcaea9796 100644
--- a/src/main/java/japa/parser/ast/visitor/EqualsVisitor.java
+++ b/src/main/java/japa/parser/ast/visitor/EqualsVisitor.java
@@ -243,6 +243,10 @@ public class EqualsVisitor implements GenericVisitor<Boolean, Node> {
return Boolean.FALSE;
}
+ if (!objEquals(n1.getBeginLine(), n2.getBeginLine())) {
+ return Boolean.FALSE;
+ }
+
return Boolean.TRUE;
}
@@ -253,6 +257,10 @@ public class EqualsVisitor implements GenericVisitor<Boolean, Node> {
return Boolean.FALSE;
}
+ if (!objEquals(n1.getBeginLine(), n2.getBeginLine())) {
+ return Boolean.FALSE;
+ }
+
return Boolean.TRUE;
}
diff --git a/src/test/java/japa/parser/ast/test/TestCommentsParsing.java b/src/test/java/japa/parser/ast/test/TestCommentsParsing.java
index eb844e04f..0ca3e0de3 100644
--- a/src/test/java/japa/parser/ast/test/TestCommentsParsing.java
+++ b/src/test/java/japa/parser/ast/test/TestCommentsParsing.java
@@ -1,16 +1,16 @@
package japa.parser.ast.test;
+import japa.parser.ast.CompilationUnit;
import japa.parser.ast.body.ClassOrInterfaceDeclaration;
import japa.parser.ast.body.FieldDeclaration;
import japa.parser.ast.body.MethodDeclaration;
import japa.parser.ast.body.TypeDeclaration;
import japa.parser.ast.stmt.BlockStmt;
-import japa.parser.ast.Node;
import org.junit.Test;
-import japa.parser.ast.CompilationUnit;
-
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
public class TestCommentsParsing {
@@ -190,4 +190,33 @@ public class TestCommentsParsing {
assertEquals("Comment1",classDecl.getComment().getContent());
}
+ @Test
+ public void testSameCommentsInACompilationUnit() throws Exception {
+ String source = Helper.readStream(getClass().getResourceAsStream("ClassWithLineCommentsInMultipleMethods.java"));
+ CompilationUnit cu = Helper.parserString(source);
+
+ assertNull(cu.getComment());
+
+ ClassOrInterfaceDeclaration clazzDecl = (ClassOrInterfaceDeclaration) cu.getChildrenNodes().get(2);
+
+ MethodDeclaration methodDecl = (MethodDeclaration) clazzDecl.getMembers().get(0);
+ BlockStmt block = methodDecl.getBody();
+
+ assertEquals(4, block.getAllContainedComments().size());
+ assertEquals(3, block.getOrphanComments().size());
+ assertEquals(0, methodDecl.getOrphanComments().size());
+ assertEquals(4, methodDecl.getAllContainedComments().size());
+
+ MethodDeclaration methodDec2 = (MethodDeclaration) clazzDecl.getMembers().get(1);
+ block = methodDec2.getBody();
+
+ assertEquals(5, block.getAllContainedComments().size());
+ assertEquals(4, block.getOrphanComments().size());
+ assertEquals(0, methodDec2.getOrphanComments().size());
+ assertEquals(5, methodDec2.getAllContainedComments().size());
+
+ assertEquals(9, clazzDecl.getAllContainedComments().size());
+ assertEquals(9, cu.getAllContainedComments().size());
+ assertEquals(0, cu.getOrphanComments().size());
+ }
}
diff --git a/src/test/resources/japa/parser/ast/test/ClassWithLineCommentsInMultipleMethods.java b/src/test/resources/japa/parser/ast/test/ClassWithLineCommentsInMultipleMethods.java
new file mode 100644
index 000000000..8845dea79
--- /dev/null
+++ b/src/test/resources/japa/parser/ast/test/ClassWithLineCommentsInMultipleMethods.java
@@ -0,0 +1,22 @@
+package japa.parser.ast.test;
+
+import org.junit.Ignore;
+
+@Ignore
+public class ClassWithLineCommentsInMultipleMethods {
+
+ public void aMethod() {
+ // first comment
+ int a = 0; //second comment
+ // third comment
+ // fourth comment
+ }
+
+ public void anotherMethod() {
+ // a unique comment
+ // first comment
+ int a = 0; //second comment
+ // third comment
+ // fourth comment
+ }
+}