diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/utils/TypeUtils.java b/jadx-core/src/main/java/jadx/core/dex/nodes/utils/TypeUtils.java index 8259df38b..5c97a3daa 100644 --- a/jadx-core/src/main/java/jadx/core/dex/nodes/utils/TypeUtils.java +++ b/jadx-core/src/main/java/jadx/core/dex/nodes/utils/TypeUtils.java @@ -242,9 +242,9 @@ public class TypeUtils { } Map map = new HashMap<>(1 + invokeInsn.getArgsCount()); addTypeVarMapping(map, mthDetails.getReturnType(), invokeInsn.getResult()); - int argCount = Math.min(mthDetails.getArgTypes().size(), invokeInsn.getArgsCount()); + int argCount = Math.min(mthDetails.getArgTypes().size(), invokeInsn.getArgsCount() - invokeInsn.getFirstArgOffset()); for (int i = 0; i < argCount; i++) { - addTypeVarMapping(map, mthDetails.getArgTypes().get(i), invokeInsn.getArg(i)); + addTypeVarMapping(map, mthDetails.getArgTypes().get(i), invokeInsn.getArg(i + invokeInsn.getFirstArgOffset())); } return map; } diff --git a/jadx-core/src/test/java/jadx/tests/integration/invoke/TestOverloadedMethodInvoke2.java b/jadx-core/src/test/java/jadx/tests/integration/invoke/TestOverloadedMethodInvoke2.java new file mode 100644 index 000000000..ad6cb9cfc --- /dev/null +++ b/jadx-core/src/test/java/jadx/tests/integration/invoke/TestOverloadedMethodInvoke2.java @@ -0,0 +1,36 @@ +package jadx.tests.integration.invoke; + +import org.junit.jupiter.api.Test; + +import jadx.tests.api.IntegrationTest; +import jadx.tests.api.utils.assertj.JadxAssertions; + +public class TestOverloadedMethodInvoke2 extends IntegrationTest { + + public static class AbstractItem { + + public void doSomething(Container c, Item i) { + c.add(i); + } + + public static class Container { + + public int add(T t) { + return 0; + } + + public void add(AbstractItem... item) { + } + } + + public static class Item extends AbstractItem { + } + } + + @Test + public void test() { + JadxAssertions.assertThat(getClassNode(TestOverloadedMethodInvoke2.AbstractItem.class)) + .code().containsOne("c.add(i);") + .doesNotContain("(Container)"); + } +}