Community
Participate
Working Groups
RC1 I'm not 100% sure, but shouldn't the resolved key of the invocation of foo() not be <String> void Test.MethodArguments.foo(List<String> lt, Integer i) it currently is <String> void Test.MethodArguments.foo(List<T> lt, Integer i) public class MethodArguments { public <T> void foo(List<T> lt, Integer i) { } void use() { ArrayList<String> as= null; foo(as, 123); } } (the resolved key we get is Lpack/TestIt$MethodArguments;.foo<T:Ljava/lang/Object;>(Ljava/util/List<TT;>;Ljava/lang/Integer;)V%<Ljava/lang/String;>)
Actually, the binding key itself is good. But the substitution is not done recursively when transforming it to a Signature.
Created attachment 21968 [details] Proposed fix
Created attachment 21969 [details] Regression test
+1 for RC2
Released fix and test (renamed to test040())
This is not verified in N20050606-0010. The key is still: 'LMethodArguments;.foo<T:Ljava/lang/Object;>(Ljava/util/List<TT;>;Ljava/lang/Integer;)V%<Ljava/lang/String;>'
As said in comment #1, the binding key was good and is still good. The problem was in BindingKey#internalToSignature(). Please verify this.
Verified in N20050606-0010 + JDT/Core HEAD
Verified for 3.1 RC2 using build I20050610-0010