Skip to content

Commit

Permalink
Fix PrettyPrintingUtil::displaySignature with extra dimensions
Browse files Browse the repository at this point in the history
  • Loading branch information
oowekyala committed Apr 2, 2021
1 parent b16e80c commit e7de833
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import net.sourceforge.pmd.lang.java.ast.ASTAnnotationTypeDeclaration;
import net.sourceforge.pmd.lang.java.ast.ASTAnyTypeDeclaration;
import net.sourceforge.pmd.lang.java.ast.ASTArrayDimensions;
import net.sourceforge.pmd.lang.java.ast.ASTArrayType;
import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceDeclaration;
import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceType;
Expand Down Expand Up @@ -44,6 +45,13 @@ public static String displaySignature(String methodName, ASTFormalParameters par
first = false;

prettyPrintTypeNode(param.getTypeNode(), sb);
ASTArrayDimensions extraDimensions = param.getVarId().getExtraDimensions();
if (extraDimensions != null) {
int extra = extraDimensions.size();
while (extra-- > 0) {
sb.append("[]");
}
}
}

sb.append(')');
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/

package net.sourceforge.pmd.lang.java.ast.internal;

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;

import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit;
import net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration;
import net.sourceforge.pmd.lang.java.symboltable.BaseNonParserTest;

public class PrettyPrintingUtilTest extends BaseNonParserTest {

@Test
void displaySignatureTestWithExtraDimensions() {
ASTCompilationUnit root = java.parse("class A { public void foo(String[] a[]) {} ");
ASTMethodDeclaration m = root.descendants(ASTMethodDeclaration.class).firstOrThrow();

assertEquals("foo(String[][])", PrettyPrintingUtil.displaySignature(m));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ public class Foo {
<expected-messages>
<message>'Foo' has value 58.</message>
<message>'Foo#foo()' has value 1.</message>
<message>'Foo#main(String)' has value 40.</message>
<message>'Foo#main(String[])' has value 40.</message>
</expected-messages>
<code-ref id="full-example"/>
</test-code>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ public class Foo extends Bar {
<message>'com.company.money.Foo#Foo()' has value 2.</message>
<message>'com.company.money.Foo#Foo(int)' has value 13.</message>
<message>'com.company.money.Foo#foo()' has value 14.</message>
<message>'com.company.money.Foo#main(String)' has value 21.</message>
<message>'com.company.money.Foo#main(String[])' has value 21.</message>
</expected-messages>
<code-ref id="full-example"/>
</test-code>
Expand All @@ -145,7 +145,7 @@ public class Foo extends Bar {
<message>'com.company.money.Foo#Foo()' has value 2.</message>
<message>'com.company.money.Foo#Foo(int)' has value 13.</message>
<message>'com.company.money.Foo#foo()' has value 14.</message>
<message>'com.company.money.Foo#main(String)' has value 21.</message>
<message>'com.company.money.Foo#main(String[])' has value 21.</message>
</expected-messages>
<code-ref id="full-example"/>
</test-code>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ public class Foo extends Bar {
<message>The class 'Foo' has a NCSS line count of 66 (Highest = 21).</message>
<message>The constructor 'Foo(int)' has a NCSS line count of 13.</message>
<message>The method 'foo()' has a NCSS line count of 14.</message>
<message>The method 'main(String)' has a NCSS line count of 21.</message>
<message>The method 'main(String[])' has a NCSS line count of 21.</message>
</expected-messages>
<code-ref id="full-example"/>
</test-code>
Expand All @@ -147,7 +147,7 @@ public class Foo extends Bar {
<message>The class 'Foo' has a NCSS line count of 72 (Highest = 21).</message>
<message>The constructor 'Foo(int)' has a NCSS line count of 13.</message>
<message>The method 'foo()' has a NCSS line count of 14.</message>
<message>The method 'main(String)' has a NCSS line count of 21.</message>
<message>The method 'main(String[])' has a NCSS line count of 21.</message>
</expected-messages>
<code-ref id="full-example"/>
</test-code>
Expand Down

0 comments on commit e7de833

Please sign in to comment.