diff options
4 files changed, 16 insertions, 2 deletions
diff --git a/java/com/google/turbine/binder/TypeBinder.java b/java/com/google/turbine/binder/TypeBinder.java index 071ab39..45d4abc 100644 --- a/java/com/google/turbine/binder/TypeBinder.java +++ b/java/com/google/turbine/binder/TypeBinder.java @@ -109,11 +109,11 @@ public class TypeBinder { ClassSymbol curr = sym; while (curr != null) { HeaderBoundClass info = env.get(curr); - Symbol result = info.typeParameters().get(lookup.first()); + Symbol result = Resolve.resolve(env, sym, curr, lookup.first()); if (result != null) { return new LookupResult(result, lookup); } - result = Resolve.resolve(env, sym, curr, lookup.first()); + result = info.typeParameters().get(lookup.first()); if (result != null) { return new LookupResult(result, lookup); } diff --git a/javatests/com/google/turbine/lower/LowerIntegrationTest.java b/javatests/com/google/turbine/lower/LowerIntegrationTest.java index d89e2b2..f54f624 100644 --- a/javatests/com/google/turbine/lower/LowerIntegrationTest.java +++ b/javatests/com/google/turbine/lower/LowerIntegrationTest.java @@ -284,6 +284,8 @@ public class LowerIntegrationTest { "type_anno_receiver.test", "enum_final.test", "dollar.test", + "typaram_lookup.test", + "typaram_lookup_enclosing.test", }; List<Object[]> tests = ImmutableList.copyOf(testCases).stream().map(x -> new Object[] {x}).collect(toList()); diff --git a/javatests/com/google/turbine/lower/testdata/typaram_lookup.test b/javatests/com/google/turbine/lower/testdata/typaram_lookup.test new file mode 100644 index 0000000..078be63 --- /dev/null +++ b/javatests/com/google/turbine/lower/testdata/typaram_lookup.test @@ -0,0 +1,6 @@ +=== Test.java === +class Test<T> { + interface T {} + // 'T' is `LTest$T;`, not `TT;` + protected Test(T t) {} +} diff --git a/javatests/com/google/turbine/lower/testdata/typaram_lookup_enclosing.test b/javatests/com/google/turbine/lower/testdata/typaram_lookup_enclosing.test new file mode 100644 index 0000000..63f7e63 --- /dev/null +++ b/javatests/com/google/turbine/lower/testdata/typaram_lookup_enclosing.test @@ -0,0 +1,6 @@ +=== Test.java === +interface T {} +class Test<T> { + // 'T' is 'TT', not 'LT;' + protected Test(T t) {} +}
\ No newline at end of file |