aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/com/google/turbine/binder/TypeBinder.java4
-rw-r--r--javatests/com/google/turbine/lower/LowerIntegrationTest.java2
-rw-r--r--javatests/com/google/turbine/lower/testdata/typaram_lookup.test6
-rw-r--r--javatests/com/google/turbine/lower/testdata/typaram_lookup_enclosing.test6
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