From fed0216f9731fffa2519ab84ceb40bb57536e5d2 Mon Sep 17 00:00:00 2001 From: Suzanne Millstein Date: Mon, 20 Jul 2020 13:48:17 -0700 Subject: [PATCH] Don't ignore type arguments (Fixes #3443.) (#3456) --- checker/tests/nullness/Issue3443.java | 19 +++++++++++++++++++ .../framework/type/DefaultTypeHierarchy.java | 1 - 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 checker/tests/nullness/Issue3443.java diff --git a/checker/tests/nullness/Issue3443.java b/checker/tests/nullness/Issue3443.java new file mode 100644 index 00000000000..d70d281fb3e --- /dev/null +++ b/checker/tests/nullness/Issue3443.java @@ -0,0 +1,19 @@ +import org.checkerframework.checker.nullness.qual.Nullable; + +class Issue3443 { + static > Supplier3443 passThrough(T t) { + // :: error: (return.type.incompatible) + return t; + } + + public static void main(String[] args) { + Supplier3443<@Nullable String> s1 = () -> null; + // TODO: passThrough(s1) should cause an error. #979. + Supplier3443 s2 = passThrough(s1); + s2.get().toString(); + } +} + +interface Supplier3443 { + T get(); +} diff --git a/framework/src/main/java/org/checkerframework/framework/type/DefaultTypeHierarchy.java b/framework/src/main/java/org/checkerframework/framework/type/DefaultTypeHierarchy.java index 8c4c9b996f2..10fe883d43e 100644 --- a/framework/src/main/java/org/checkerframework/framework/type/DefaultTypeHierarchy.java +++ b/framework/src/main/java/org/checkerframework/framework/type/DefaultTypeHierarchy.java @@ -1048,7 +1048,6 @@ && isPrimarySubtype(ub, supertype)) { } return false; } - return isPrimarySubtype(upperBound, supertype); } return checkAndSubtype(upperBound, supertype); }