From dfcc2cd6327642b6c87969f867e435111dee710c Mon Sep 17 00:00:00 2001 From: Aosen Xiong Date: Tue, 16 Jun 2026 02:46:42 -0400 Subject: [PATCH 1/2] Add viewpoint generic supertype crash test --- .../tests/viewpointtest/GenericSelfContainedCrash.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 framework/tests/viewpointtest/GenericSelfContainedCrash.java diff --git a/framework/tests/viewpointtest/GenericSelfContainedCrash.java b/framework/tests/viewpointtest/GenericSelfContainedCrash.java new file mode 100644 index 00000000000..951651a69ae --- /dev/null +++ b/framework/tests/viewpointtest/GenericSelfContainedCrash.java @@ -0,0 +1,7 @@ +public class GenericSelfContainedCrash { + interface Box {} + + static class BoxImpl implements Box {} + + protected BoxImpl field; +} From 99f5c9eb5fd942ba59e4e086ebb21e474829d908 Mon Sep 17 00:00:00 2001 From: Aosen Xiong Date: Tue, 16 Jun 2026 02:49:43 -0400 Subject: [PATCH 2/2] Default direct supertypes before viewpoint adaptation --- docs/CHANGELOG.md | 2 +- .../framework/type/GenericAnnotatedTypeFactory.java | 2 +- framework/tests/viewpointtest/GenericSelfContainedCrash.java | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 2e0e8f0991e..86ae198b31b 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -231,7 +231,7 @@ median of four warm-daemon reps per side). **Closed issues:** -eisop#433, eisop#792, eisop#863, eisop#1801. +eisop#433, eisop#786, eisop#792, eisop#863, eisop#1801. Version 3.49.5-eisop1 (April 26, 2026) diff --git a/framework/src/main/java/org/checkerframework/framework/type/GenericAnnotatedTypeFactory.java b/framework/src/main/java/org/checkerframework/framework/type/GenericAnnotatedTypeFactory.java index 4100f3c63fc..793348b54fa 100644 --- a/framework/src/main/java/org/checkerframework/framework/type/GenericAnnotatedTypeFactory.java +++ b/framework/src/main/java/org/checkerframework/framework/type/GenericAnnotatedTypeFactory.java @@ -930,13 +930,13 @@ public QualifierPolymorphism getQualifierPolymorphism() { @Override protected void postDirectSuperTypes( AnnotatedTypeMirror type, List supertypes) { - super.postDirectSuperTypes(type, supertypes); if (type.getKind() == TypeKind.DECLARED) { for (AnnotatedTypeMirror supertype : supertypes) { Element elt = ((DeclaredType) supertype.getUnderlyingType()).asElement(); addComputedTypeAnnotations(elt, supertype); } } + super.postDirectSuperTypes(type, supertypes); } /** diff --git a/framework/tests/viewpointtest/GenericSelfContainedCrash.java b/framework/tests/viewpointtest/GenericSelfContainedCrash.java index 951651a69ae..b53e78b7d12 100644 --- a/framework/tests/viewpointtest/GenericSelfContainedCrash.java +++ b/framework/tests/viewpointtest/GenericSelfContainedCrash.java @@ -1,3 +1,5 @@ +// Test case for EISOP issue #786: +// https://github.com/eisop/checker-framework/issues/786 public class GenericSelfContainedCrash { interface Box {}