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 12d4600..f92682a 100644 --- a/src/org/jetbrains/java/decompiler/modules/decompiler/exps/InvocationExprent.java +++ b/src/org/jetbrains/java/decompiler/modules/decompiler/exps/InvocationExprent.java @@ -247,7 +247,9 @@ public class InvocationExprent extends Exprent { if (invocationTyp == INVOKE_SPECIAL) { if (!classname.equals(this_classname)) { // TODO: direct comparison to the super class? - super_qualifier = this_classname; + StructClass cl = DecompilerContext.getStructContext().getClass(classname); + boolean isInterface = cl != null && (cl.getAccessFlags() & CodeConstants.ACC_INTERFACE) != 0; + super_qualifier = !isInterface ? this_classname : classname; } } } diff --git a/test/org/jetbrains/java/decompiler/SingleClassesTest.java b/test/org/jetbrains/java/decompiler/SingleClassesTest.java index 6b76492..e08ab4b 100644 --- a/test/org/jetbrains/java/decompiler/SingleClassesTest.java +++ b/test/org/jetbrains/java/decompiler/SingleClassesTest.java @@ -110,7 +110,7 @@ public class SingleClassesTest { @Test public void testEmptyBlocks() { doTest("pkg/TestEmptyBlocks"); } @Test public void testPrivateEmptyConstructor() { doTest("pkg/TestPrivateEmptyConstructor"); } @Test public void testSynchronizedUnprotected() { doTest("pkg/TestSynchronizedUnprotected"); } - + @Test public void testInterfaceSuper() { doTest("pkg/TestInterfaceSuper"); } // TODO: fix all below //@Test public void testPackageInfo() { doTest("pkg/package-info"); } @@ -118,7 +118,6 @@ public class SingleClassesTest { //@Test public void testUnionType() { doTest("pkg/TestUnionType"); } //@Test public void testInnerClassConstructor2() { doTest("pkg/TestInner2"); } //@Test public void testInUse() { doTest("pkg/TestInUse"); } - //@Test public void testInterfaceSuper() { doTest("pkg/TestInterfaceSuper"); } @Test public void testGroovyClass() { doTest("pkg/TestGroovyClass"); } @Test public void testGroovyTrait() { doTest("pkg/TestGroovyTrait"); }