From b09cde6d039b387740ec7ef02fb2ff37231ca893 Mon Sep 17 00:00:00 2001 From: oowekyala Date: Fri, 26 May 2017 14:56:49 +0200 Subject: [PATCH] Canonical type of arguments in method Qname\n That doesn't work for now because of Typeres. Be sure to edit the tests --- .../pmd/lang/java/ast/ASTConstructorDeclaration.java | 3 ++- .../pmd/lang/java/ast/ASTMethodDeclaration.java | 3 +-- .../pmd/lang/java/ast/AbstractJavaTypeNode.java | 5 +++++ .../pmd/lang/java/ast/QualifiedNameTest.java | 10 +++++----- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTConstructorDeclaration.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTConstructorDeclaration.java index e1b05d15af..bcdf83c8ce 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTConstructorDeclaration.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTConstructorDeclaration.java @@ -55,7 +55,8 @@ public class ASTConstructorDeclaration extends AbstractJavaAccessNode implements String[] types = new String[numParams]; for (int i = 0; i < numParams; i++) { - types[i] = params.jjtGetChild(i).getFirstDescendantOfType(ASTType.class).getTypeImage(); + // Needs typeres ! TODO + types[i] = params.jjtGetChild(i).getFirstDescendantOfType(ASTType.class).getCanonicalTypeName(); } diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTMethodDeclaration.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTMethodDeclaration.java index a6967e28e6..e9be5f6bc0 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTMethodDeclaration.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTMethodDeclaration.java @@ -125,10 +125,9 @@ public class ASTMethodDeclaration extends AbstractJavaAccessNode implements DFAG String[] types = new String[numParams]; for (int i = 0; i < numParams; i++) { - types[i] = params.jjtGetChild(i).getFirstDescendantOfType(ASTType.class).getTypeImage(); + types[i] = params.jjtGetChild(i).getFirstDescendantOfType(ASTType.class).getCanonicalTypeName(); } - qualifiedName = QualifiedName.makeOperationOf(parent, getMethodName(), types); return qualifiedName; } diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/AbstractJavaTypeNode.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/AbstractJavaTypeNode.java index 039780fcf6..d077f6dc80 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/AbstractJavaTypeNode.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/AbstractJavaTypeNode.java @@ -31,4 +31,9 @@ public abstract class AbstractJavaTypeNode extends AbstractJavaNode implements T public void setType(Class type) { this.type = type; } + + public String getCanonicalTypeName() { + return type.getCanonicalName(); + } + } diff --git a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/QualifiedNameTest.java b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/QualifiedNameTest.java index ad4780fda5..b57eb37e45 100644 --- a/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/QualifiedNameTest.java +++ b/pmd-java/src/test/java/net/sourceforge/pmd/lang/java/ast/QualifiedNameTest.java @@ -133,15 +133,15 @@ public class QualifiedNameTest extends ParserTst { public void testConstructorWithParams() { final String TEST = "package bar; class Bzaz{ public Bzaz(int j, String k){}}"; - Set nodes = getNodes(ASTConstructorDeclaration.class, TEST); for (ASTConstructorDeclaration declaration : nodes) { QualifiableNode.QualifiedName qname = declaration.getQualifiedName(); - assertEquals("bar.Bzaz#Bzaz(int,String)", qname.toString()); + // TODO fails due to typeres + assertEquals("bar.Bzaz#Bzaz(int,java.lang.String)", qname.toString()); assertNotNull(qname.getOperation()); - assertEquals("Bzaz(int,String)", qname.getOperation()); + assertEquals("Bzaz(int,java.lang.String)", qname.getOperation()); } } @@ -160,7 +160,7 @@ public class QualifiedNameTest extends ParserTst { } @Test - public void testConstructorOverload() { + public void testConstructorOverload() { // TODO fails due to typeres final String TEST = "package bar; class Bzaz{ public Bzaz(int j) {} public Bzaz(int j, String k){}}"; Set nodes = getNodes(ASTConstructorDeclaration.class, @@ -171,7 +171,7 @@ public class QualifiedNameTest extends ParserTst { } @Test - public void testMethodOverload() { + public void testMethodOverload() { // TODO fails due to typeres final String TEST = "package bar; class Bzaz{ public void foo(String j) {} " + "public void foo(int j){} public void foo(double k){}}";