-
Notifications
You must be signed in to change notification settings - Fork 19
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Move PICO to EISOP #1013
base: master
Are you sure you want to change the base?
Move PICO to EISOP #1013
Conversation
Co-authored-by: Werner Dietl <wdietl@gmail.com> Co-authored-by: Haifeng Shi <shihaifeng1998@gmail.com> Co-authored-by: Weitian Xing <xingweitian@gmail.com> Co-authored-by: Jeff Luo <j36luo@uwaterloo.ca> Co-authored-by: Mier Ta <m2ta@uwaterloo.ca>
33dfd50
to
32a297b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A quick round of initial comments.
checker/src/test/java/org/checkerframework/checker/test/junit/PICOImmutabilityTest.java
Show resolved
Hide resolved
checker-qual/src/main/java/org/checkerframework/checker/pico/qual/Bottom.java
Outdated
Show resolved
Hide resolved
checker-qual/src/main/java/org/checkerframework/checker/pico/qual/Lost.java
Outdated
Show resolved
Hide resolved
.../src/main/java/org/checkerframework/checker/pico/PICOInitializationAnnotatedTypeFactory.java
Outdated
Show resolved
Hide resolved
checker/src/main/java/org/checkerframework/checker/pico/PICONoInitAnnotatedTypeFactory.java
Outdated
Show resolved
Hide resolved
checker/src/main/java/org/checkerframework/checker/pico/jdk.astub
Outdated
Show resolved
Hide resolved
checker/src/main/java/org/checkerframework/checker/pico/jdk.astub
Outdated
Show resolved
Hide resolved
checker/src/main/java/org/checkerframework/checker/pico/jdk.astub
Outdated
Show resolved
Hide resolved
checker/src/main/java/org/checkerframework/checker/pico/jdk.astub
Outdated
Show resolved
Hide resolved
checker/src/main/java/org/checkerframework/checker/pico/jdk.astub
Outdated
Show resolved
Hide resolved
Co-authored-by: Werner Dietl <wdietl@gmail.com>
PICOViewpointAdapter vpa = atypeFactory.getViewpointAdapter(); | ||
AnnotationMirror adapted = vpa.combineAnnotationWithAnnotation(lhs, rhs); | ||
return atypeFactory.getQualifierHierarchy().isSubtypeQualifiersOnly(adapted, lhs); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
After #1032, this method and the override of isValidUse( AnnotatedDeclaredType declarationType, AnnotatedDeclaredType useType, Tree tree)
can be removed.
|
|
|
I think we have to bear the windows failure as the script does not support windows
|
|
||
// TODO Make the superclass's bound implicit works | ||
// :: error: (declaration.inconsistent.with.extends.clause) :: error: (super.invocation.invalid) | ||
class ImmutableChildClassBad1 extends @Mutable MutableClass {} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Forbid annotation before extends/implements clause.
Co-authored-by: Werner Dietl <wdietl@gmail.com>
Looks like this hack override of I am using a different branch for doing case study on guava based on the hack. |
protected boolean isTypeCastSafe(AnnotatedTypeMirror castType, AnnotatedTypeMirror exprType) { | ||
QualifierHierarchy qualifierHierarchy = atypeFactory.getQualifierHierarchy(); | ||
|
||
final TypeKind castTypeKind = castType.getKind(); | ||
if (castTypeKind == TypeKind.DECLARED) { | ||
// Don't issue an error if the mutability annotations are equivalent to the qualifier | ||
// upper bound of the type. | ||
// BaseTypeVisitor#isTypeCastSafe is not used, to be consistent with inference which | ||
// only have mutability qualifiers if inference is supporting FBC in the future, this | ||
// overridden method can be removed. | ||
AnnotatedDeclaredType castDeclared = (AnnotatedDeclaredType) castType; | ||
AnnotationMirror bound = | ||
qualifierHierarchy.findAnnotationInHierarchy( | ||
atypeFactory.getTypeDeclarationBounds(castDeclared.getUnderlyingType()), | ||
atypeFactory.READONLY); | ||
assert bound != null; | ||
|
||
if (AnnotationUtils.areSame( | ||
castDeclared.getAnnotationInHierarchy(atypeFactory.READONLY), bound)) { | ||
return true; | ||
} | ||
} | ||
|
||
return super.isTypeCastSafe(castType, exprType); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be nicer after #1049
Original code repo: https://github.com/opprop/immutability
Some of commits are presented in: https://github.com/Ao-senXiong/immutability/tree/pico-cf-only
Merge with: eisop/jdk#106
As discussed before, I will try to move PICO here gradually. Hopefully adding test cases and Javadoc with more discussion as well.