From 99f2cdde9c0a6aeb30d2955bd18cd542244ee950 Mon Sep 17 00:00:00 2001 From: Baorui Zhou Date: Wed, 20 Mar 2019 12:03:01 -0400 Subject: [PATCH 1/8] fix accessibility issues and add missing methods for pico --- .../InitializationAnnotatedTypeFactory.java | 2 +- .../nullness/KeyForAnnotatedTypeFactory.java | 2 +- .../framework/type/AnnotatedTypeFactory.java | 4 ++++ .../framework/type/DefaultTypeHierarchy.java | 2 +- .../framework/type/TypeHierarchy.java | 15 +++++++++++++++ 5 files changed, 22 insertions(+), 3 deletions(-) diff --git a/checker/src/main/java/org/checkerframework/checker/initialization/InitializationAnnotatedTypeFactory.java b/checker/src/main/java/org/checkerframework/checker/initialization/InitializationAnnotatedTypeFactory.java index 891b4d9c0915..519438e3a347 100644 --- a/checker/src/main/java/org/checkerframework/checker/initialization/InitializationAnnotatedTypeFactory.java +++ b/checker/src/main/java/org/checkerframework/checker/initialization/InitializationAnnotatedTypeFactory.java @@ -394,7 +394,7 @@ public void postAsMemberOf( * @see #computeFieldAccessType * @see #getAnnotatedTypeLhs(Tree) */ - private boolean computingAnnotatedTypeMirrorOfLHS = false; + protected boolean computingAnnotatedTypeMirrorOfLHS = false; @Override public AnnotatedTypeMirror getAnnotatedTypeLhs(Tree lhsTree) { diff --git a/checker/src/main/java/org/checkerframework/checker/nullness/KeyForAnnotatedTypeFactory.java b/checker/src/main/java/org/checkerframework/checker/nullness/KeyForAnnotatedTypeFactory.java index 1f968444b1c3..187f89b8b2b4 100644 --- a/checker/src/main/java/org/checkerframework/checker/nullness/KeyForAnnotatedTypeFactory.java +++ b/checker/src/main/java/org/checkerframework/checker/nullness/KeyForAnnotatedTypeFactory.java @@ -121,7 +121,7 @@ public KeyForTypeHierarchy( } @Override - protected boolean isSubtype( + public boolean isSubtype( AnnotatedTypeMirror subtype, AnnotatedTypeMirror supertype, AnnotationMirror top) { // TODO: THIS IS FROM THE OLD TYPE HIERARCHY. WE SHOULD FIX DATA-FLOW/PROPAGATION TO DO // THE RIGHT THING diff --git a/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java b/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java index fd0d2430d5ac..0e6049f813c5 100644 --- a/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java +++ b/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java @@ -796,6 +796,10 @@ protected ViewpointAdapter createViewpointAdapter() { return null; } + public ViewpointAdapter getViewpointAdapter() { + return viewpointAdapter; + } + /** * TypeVariableSubstitutor provides a method to replace type parameters with their arguments. */ 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 07fcc0f39627..bbe13f5c969f 100644 --- a/framework/src/main/java/org/checkerframework/framework/type/DefaultTypeHierarchy.java +++ b/framework/src/main/java/org/checkerframework/framework/type/DefaultTypeHierarchy.java @@ -173,7 +173,7 @@ public boolean isSubtype( * @return returns true if {@code subtype} is a subtype of {@code supertype} in the qualifier * hierarchy whose top is {@code top} */ - protected boolean isSubtype( + public boolean isSubtype( final AnnotatedTypeMirror subtype, final AnnotatedTypeMirror supertype, final AnnotationMirror top) { diff --git a/framework/src/main/java/org/checkerframework/framework/type/TypeHierarchy.java b/framework/src/main/java/org/checkerframework/framework/type/TypeHierarchy.java index e1f932f818a4..6787074d68ba 100644 --- a/framework/src/main/java/org/checkerframework/framework/type/TypeHierarchy.java +++ b/framework/src/main/java/org/checkerframework/framework/type/TypeHierarchy.java @@ -1,5 +1,6 @@ package org.checkerframework.framework.type; +import javax.lang.model.element.AnnotationMirror; import org.checkerframework.framework.util.AnnotatedTypes; /** Compares AnnotatedTypeMirrors for subtype relationships. See also QualifierHierarchy */ @@ -59,4 +60,18 @@ public interface TypeHierarchy { * present. */ boolean isSubtype(AnnotatedTypeMirror subtype, AnnotatedTypeMirror supertype); + + /** + * The same as {@link #isSubtype(AnnotatedTypeMirror, AnnotatedTypeMirror)}, but only for the + * hierarchy of which {@code top} is the top. + * + * @param subtype possible subtype + * @param supertype possible supertype + * @param top the qualifier at the top of the hierarchy for which the subtype check should be + * preformed + * @return returns true if {@code subtype} is a subtype of {@code supertype} in the qualifier + * hierarchy whose top is {@code top} + */ + boolean isSubtype( + AnnotatedTypeMirror subtype, AnnotatedTypeMirror supertype, AnnotationMirror top); } From 58b05ddd2dface05aa08114d16850b1c2aeb1d61 Mon Sep 17 00:00:00 2001 From: lnsun <57457122+lnsun@users.noreply.github.com> Date: Tue, 16 Jun 2020 21:57:24 -0400 Subject: [PATCH 2/8] javadoc --- .../framework/type/AnnotatedTypeFactory.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java b/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java index 0e6049f813c5..509fd385c5b6 100644 --- a/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java +++ b/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java @@ -796,6 +796,11 @@ protected ViewpointAdapter createViewpointAdapter() { return null; } + /** + * Get {@code viewpointAdapter}. + * + * @return {@code viewpointAdapter} + */ public ViewpointAdapter getViewpointAdapter() { return viewpointAdapter; } From 02f1f1075ef4ce7af7f2772587ffc2745146ca48 Mon Sep 17 00:00:00 2001 From: lnsun <57457122+lnsun@users.noreply.github.com> Date: Wed, 17 Jun 2020 09:47:27 -0400 Subject: [PATCH 3/8] javadoc --- .../framework/flow/CFAbstractTransfer.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/framework/src/main/java/org/checkerframework/framework/flow/CFAbstractTransfer.java b/framework/src/main/java/org/checkerframework/framework/flow/CFAbstractTransfer.java index a0ccb798b210..07b5b835bb41 100644 --- a/framework/src/main/java/org/checkerframework/framework/flow/CFAbstractTransfer.java +++ b/framework/src/main/java/org/checkerframework/framework/flow/CFAbstractTransfer.java @@ -380,7 +380,15 @@ public S initialStore( return info; } - private void addFieldValues( + /** + * Add knowledge about field values to the store {@code info}. + * + * @param info {@code S} + * @param factory the type factory + * @param classTree the class tree + * @param methodTree the method tree + */ + protected void addFieldValues( S info, AnnotatedTypeFactory factory, ClassTree classTree, MethodTree methodTree) { // Add knowledge about final fields, or values of non-final fields From 1dca34345f82e0e88e65b88f871fd55dc408c69f Mon Sep 17 00:00:00 2001 From: lnsun <57457122+lnsun@users.noreply.github.com> Date: Wed, 17 Jun 2020 09:47:55 -0400 Subject: [PATCH 4/8] make public --- .../checkerframework/framework/type/AnnotatedTypeFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java b/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java index 509fd385c5b6..5a61c8df3125 100644 --- a/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java +++ b/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java @@ -1372,7 +1372,7 @@ private AnnotatedTypeMirror fromExpression(ExpressionTree tree) { * @param tree the type tree * @return the (partially) annotated type of the type in the AST */ - /*package private*/ final AnnotatedTypeMirror fromTypeTree(Tree tree) { + public final AnnotatedTypeMirror fromTypeTree(Tree tree) { if (shouldCache && fromTypeTreeCache.containsKey(tree)) { return fromTypeTreeCache.get(tree).deepCopy(); } From c1b93f8d0d859b2669927b73f642aa745b27a523 Mon Sep 17 00:00:00 2001 From: lnsun <57457122+lnsun@users.noreply.github.com> Date: Wed, 17 Jun 2020 09:48:06 -0400 Subject: [PATCH 5/8] override --- .../checkerframework/framework/type/DefaultTypeHierarchy.java | 1 + 1 file changed, 1 insertion(+) 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 bbe13f5c969f..993a9a46f89c 100644 --- a/framework/src/main/java/org/checkerframework/framework/type/DefaultTypeHierarchy.java +++ b/framework/src/main/java/org/checkerframework/framework/type/DefaultTypeHierarchy.java @@ -173,6 +173,7 @@ public boolean isSubtype( * @return returns true if {@code subtype} is a subtype of {@code supertype} in the qualifier * hierarchy whose top is {@code top} */ + @Override public boolean isSubtype( final AnnotatedTypeMirror subtype, final AnnotatedTypeMirror supertype, From f6e23aac92fba756c86dfed9b0337761a5c1616b Mon Sep 17 00:00:00 2001 From: lnsun <57457122+lnsun@users.noreply.github.com> Date: Mon, 22 Jun 2020 11:27:20 -0400 Subject: [PATCH 6/8] javadoc --- .../checkerframework/framework/type/AnnotatedTypeFactory.java | 4 ++-- .../org/checkerframework/framework/type/TypeHierarchy.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java b/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java index 5a61c8df3125..77e6a5d07a35 100644 --- a/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java +++ b/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java @@ -797,9 +797,9 @@ protected ViewpointAdapter createViewpointAdapter() { } /** - * Get {@code viewpointAdapter}. + * Get {@link #viewpointAdapter}. * - * @return {@code viewpointAdapter} + * @return {@link #viewpointAdapter} */ public ViewpointAdapter getViewpointAdapter() { return viewpointAdapter; diff --git a/framework/src/main/java/org/checkerframework/framework/type/TypeHierarchy.java b/framework/src/main/java/org/checkerframework/framework/type/TypeHierarchy.java index 6787074d68ba..027485fa3c75 100644 --- a/framework/src/main/java/org/checkerframework/framework/type/TypeHierarchy.java +++ b/framework/src/main/java/org/checkerframework/framework/type/TypeHierarchy.java @@ -69,8 +69,8 @@ public interface TypeHierarchy { * @param supertype possible supertype * @param top the qualifier at the top of the hierarchy for which the subtype check should be * preformed - * @return returns true if {@code subtype} is a subtype of {@code supertype} in the qualifier - * hierarchy whose top is {@code top} + * @return true if {@code subtype} is a subtype of {@code supertype} in the qualifier hierarchy + * whose top is {@code top} */ boolean isSubtype( AnnotatedTypeMirror subtype, AnnotatedTypeMirror supertype, AnnotationMirror top); From e85c8ff19a5a2476cd8ca04994237cc48a98397e Mon Sep 17 00:00:00 2001 From: lnsun <57457122+lnsun@users.noreply.github.com> Date: Thu, 25 Jun 2020 16:18:59 -0400 Subject: [PATCH 7/8] revert isSubtype --- .../nullness/KeyForAnnotatedTypeFactory.java | 2 +- .../framework/type/DefaultTypeHierarchy.java | 3 +-- .../framework/type/TypeHierarchy.java | 15 --------------- 3 files changed, 2 insertions(+), 18 deletions(-) diff --git a/checker/src/main/java/org/checkerframework/checker/nullness/KeyForAnnotatedTypeFactory.java b/checker/src/main/java/org/checkerframework/checker/nullness/KeyForAnnotatedTypeFactory.java index 187f89b8b2b4..1f968444b1c3 100644 --- a/checker/src/main/java/org/checkerframework/checker/nullness/KeyForAnnotatedTypeFactory.java +++ b/checker/src/main/java/org/checkerframework/checker/nullness/KeyForAnnotatedTypeFactory.java @@ -121,7 +121,7 @@ public KeyForTypeHierarchy( } @Override - public boolean isSubtype( + protected boolean isSubtype( AnnotatedTypeMirror subtype, AnnotatedTypeMirror supertype, AnnotationMirror top) { // TODO: THIS IS FROM THE OLD TYPE HIERARCHY. WE SHOULD FIX DATA-FLOW/PROPAGATION TO DO // THE RIGHT THING 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 993a9a46f89c..07fcc0f39627 100644 --- a/framework/src/main/java/org/checkerframework/framework/type/DefaultTypeHierarchy.java +++ b/framework/src/main/java/org/checkerframework/framework/type/DefaultTypeHierarchy.java @@ -173,8 +173,7 @@ public boolean isSubtype( * @return returns true if {@code subtype} is a subtype of {@code supertype} in the qualifier * hierarchy whose top is {@code top} */ - @Override - public boolean isSubtype( + protected boolean isSubtype( final AnnotatedTypeMirror subtype, final AnnotatedTypeMirror supertype, final AnnotationMirror top) { diff --git a/framework/src/main/java/org/checkerframework/framework/type/TypeHierarchy.java b/framework/src/main/java/org/checkerframework/framework/type/TypeHierarchy.java index 027485fa3c75..e1f932f818a4 100644 --- a/framework/src/main/java/org/checkerframework/framework/type/TypeHierarchy.java +++ b/framework/src/main/java/org/checkerframework/framework/type/TypeHierarchy.java @@ -1,6 +1,5 @@ package org.checkerframework.framework.type; -import javax.lang.model.element.AnnotationMirror; import org.checkerframework.framework.util.AnnotatedTypes; /** Compares AnnotatedTypeMirrors for subtype relationships. See also QualifierHierarchy */ @@ -60,18 +59,4 @@ public interface TypeHierarchy { * present. */ boolean isSubtype(AnnotatedTypeMirror subtype, AnnotatedTypeMirror supertype); - - /** - * The same as {@link #isSubtype(AnnotatedTypeMirror, AnnotatedTypeMirror)}, but only for the - * hierarchy of which {@code top} is the top. - * - * @param subtype possible subtype - * @param supertype possible supertype - * @param top the qualifier at the top of the hierarchy for which the subtype check should be - * preformed - * @return true if {@code subtype} is a subtype of {@code supertype} in the qualifier hierarchy - * whose top is {@code top} - */ - boolean isSubtype( - AnnotatedTypeMirror subtype, AnnotatedTypeMirror supertype, AnnotationMirror top); } From fa32b965188d056c88bcee0b26ba707cd55fd50a Mon Sep 17 00:00:00 2001 From: lnsun <57457122+lnsun@users.noreply.github.com> Date: Thu, 25 Jun 2020 16:28:49 -0400 Subject: [PATCH 8/8] remove getViewpointAdapter --- .../framework/type/AnnotatedTypeFactory.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java b/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java index 77e6a5d07a35..e2bf127fee54 100644 --- a/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java +++ b/framework/src/main/java/org/checkerframework/framework/type/AnnotatedTypeFactory.java @@ -796,15 +796,6 @@ protected ViewpointAdapter createViewpointAdapter() { return null; } - /** - * Get {@link #viewpointAdapter}. - * - * @return {@link #viewpointAdapter} - */ - public ViewpointAdapter getViewpointAdapter() { - return viewpointAdapter; - } - /** * TypeVariableSubstitutor provides a method to replace type parameters with their arguments. */