From 262747687dca05c477a7c65c89f14de3297c0ab6 Mon Sep 17 00:00:00 2001 From: Pouryafard75 Date: Tue, 18 Jun 2024 20:44:58 -0400 Subject: [PATCH] feat: optionalTagName for javadocs in jdt --- .../github/gumtreediff/gen/jdt/JdtVisitor.java | 5 +++++ .../gumtreediff/gen/jdt/TestJdtGenerator.java | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/gen.jdt/src/main/java/com/github/gumtreediff/gen/jdt/JdtVisitor.java b/gen.jdt/src/main/java/com/github/gumtreediff/gen/jdt/JdtVisitor.java index 750bda3f..775079c7 100644 --- a/gen.jdt/src/main/java/com/github/gumtreediff/gen/jdt/JdtVisitor.java +++ b/gen.jdt/src/main/java/com/github/gumtreediff/gen/jdt/JdtVisitor.java @@ -41,6 +41,7 @@ public class JdtVisitor extends AbstractJdtVisitor { private static final Type ASSIGNMENT_OPERATOR = type("ASSIGNMENT_OPERATOR"); private static final Type PREFIX_EXPRESSION_OPERATOR = type("PREFIX_EXPRESSION_OPERATOR"); private static final Type POSTFIX_EXPRESSION_OPERATOR = type("POSTFIX_EXPRESSION_OPERATOR"); + private static final Type TAG_NAME = type("TAG_NAME"); private static final Type ARRAY_INITIALIZER = nodeAsSymbol(ASTNode.ARRAY_INITIALIZER); private static final Type SIMPLE_NAME = nodeAsSymbol(ASTNode.SIMPLE_NAME); @@ -111,6 +112,10 @@ public boolean visit(TypeDeclaration d) { @Override public boolean visit(TagElement e) { + if (e.getTagName() != null && !e.getTagName().isEmpty()) { + push(e, TAG_NAME, e.getTagName(), e.getStartPosition(), e.getTagName().length()); + popNode(); + } return true; } diff --git a/gen.jdt/src/test/java/com/github/gumtreediff/gen/jdt/TestJdtGenerator.java b/gen.jdt/src/test/java/com/github/gumtreediff/gen/jdt/TestJdtGenerator.java index 55dfe870..8cf4775d 100644 --- a/gen.jdt/src/test/java/com/github/gumtreediff/gen/jdt/TestJdtGenerator.java +++ b/gen.jdt/src/test/java/com/github/gumtreediff/gen/jdt/TestJdtGenerator.java @@ -187,4 +187,19 @@ public void testGenericFunctionWithTypeParameter() throws IOException { + " SimpleName: emptyList [55,64]"; assertEquals(expected, ct.getRoot().toTreeString()); } + + @Test + public void testTagElement() throws IOException { + String input = "/** @author john */ class C {}"; + TreeContext ct = new JdtTreeGenerator().generateFrom().string(input); + String expected = "CompilationUnit [0,30]\n" + + " TypeDeclaration [0,30]\n" + + " Javadoc [0,19]\n" + + " TagElement [4,17]\n" + + " TAG_NAME: @author [4,11]\n" + + " TextElement: john [11,17]\n" + + " TYPE_DECLARATION_KIND: class [20,25]\n" + + " SimpleName: C [26,27]"; + assertEquals(expected, ct.getRoot().toTreeString()); + } }