diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/InvocationExprent.java b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/InvocationExprent.java index 3ceb99c..758b93f 100644 --- a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/InvocationExprent.java +++ b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/InvocationExprent.java @@ -334,7 +334,7 @@ public class InvocationExprent extends Exprent { boolean firstParameter = true; int start = isEnum ? 2 : 0; for (int i = start; i < lstParameters.size(); i++) { - if (sigFields == null) { + if (sigFields == null || null == sigFields.get(i)) { if (!firstParameter) { buf.append(", "); } diff --git a/test/org/jetbrains/java/decompiler/SingleClassesTest.java b/test/org/jetbrains/java/decompiler/SingleClassesTest.java index e905fb3..260445d 100644 --- a/test/org/jetbrains/java/decompiler/SingleClassesTest.java +++ b/test/org/jetbrains/java/decompiler/SingleClassesTest.java @@ -84,6 +84,7 @@ public class SingleClassesTest { @Test public void testMethodReferenceLetterClass() { doTest("pkg/TestMethodReferenceLetterClass"); } @Test public void testMemberAnnotations() { doTest("pkg/TestMemberAnnotations"); } @Test public void testStaticNameClash() { doTest("pkg/TestStaticNameClash"); } + @Test public void testExtendingSubclass() { doTest("pkg/TestExtendingSubclass"); } protected void doTest(String testFile, String... companionFiles) { ConsoleDecompiler decompiler = fixture.getDecompiler(); @@ -130,4 +131,4 @@ public class SingleClassesTest { return files; } -} \ No newline at end of file +} diff --git a/testData/classes/pkg/TestExtendingSubclass$Subclass1.class b/testData/classes/pkg/TestExtendingSubclass$Subclass1.class new file mode 100644 index 0000000..fbf2ce2 Binary files /dev/null and b/testData/classes/pkg/TestExtendingSubclass$Subclass1.class differ diff --git a/testData/classes/pkg/TestExtendingSubclass$Subclass2.class b/testData/classes/pkg/TestExtendingSubclass$Subclass2.class new file mode 100644 index 0000000..d30cc61 Binary files /dev/null and b/testData/classes/pkg/TestExtendingSubclass$Subclass2.class differ diff --git a/testData/classes/pkg/TestExtendingSubclass.class b/testData/classes/pkg/TestExtendingSubclass.class new file mode 100644 index 0000000..eb4f049 Binary files /dev/null and b/testData/classes/pkg/TestExtendingSubclass.class differ diff --git a/testData/results/TestExtendingSubclass.dec b/testData/results/TestExtendingSubclass.dec new file mode 100644 index 0000000..5e13985 --- /dev/null +++ b/testData/results/TestExtendingSubclass.dec @@ -0,0 +1,35 @@ +package pkg; + +public class TestExtendingSubclass { + class Subclass2 extends TestExtendingSubclass.Subclass1 { + Subclass2(String name) { + super(name);// 14 + }// 15 + } + + class Subclass1 { + Subclass1(String name) { + }// 9 + } +} + +class 'pkg/TestExtendingSubclass$Subclass2' { + method ' (Lpkg/TestExtendingSubclass;Ljava/lang/String;)V' { + 8 5 + b 6 + } +} + +class 'pkg/TestExtendingSubclass$Subclass1' { + method ' (Lpkg/TestExtendingSubclass;Ljava/lang/String;)V' { + 9 11 + } +} + +Lines mapping: +9 <-> 12 +14 <-> 6 +15 <-> 7 +Not mapped: +8 +13 diff --git a/testData/src/pkg/TestExtendingSubclass.java b/testData/src/pkg/TestExtendingSubclass.java new file mode 100644 index 0000000..f63baed --- /dev/null +++ b/testData/src/pkg/TestExtendingSubclass.java @@ -0,0 +1,18 @@ +package pkg; + +import java.math.BigDecimal; + +public class TestExtendingSubclass { + + class Subclass1 { + Subclass1(String name) { + } + } + + class Subclass2 extends Subclass1 { + Subclass2(String name) { + super(name); + } + } + +}