Version 3.17.0 (August 2, 2021)
User-visible changes:
-Ainfer can now infer postcondition annotations that reference formal parameters (e.g. "#1", "#2") and the receiver ("this").
Implementation details:
Method renamings and signature changes (old methods are removed) in GenericAnnotatedTypeFactory:
getPreconditionAnnotation(VariableElement, AnnotatedTypeMirror)=>getPreconditionAnnotations(String, AnnotatedTypeMirror, AnnotatedTypeMirror)getPostconditionAnnotation(VariableElement, AnnotatedTypeMirror, List<AnnotationMirror>)=>getPostconditionAnnotations(String, AnnotatedTypeMirror, AnnotatedTypeMirror, List<AnnotationMirror>)getPreOrPostconditionAnnotation(VariableElement, AnnotatedTypeMirror, Analysis.BeforeOrAfter, List<AnnotationMirror>)=>getPreOrPostconditionAnnotations(String, AnnotatedTypeMirror, AnnotatedTypeMirror, Analysis.BeforeOrAfter, List<AnnotationMirror>)requiresOrEnsuresQualifierAnno(VariableElement, AnnotationMirror, Analysis.BeforeOrAfter)=>createRequiresOrEnsuresQualifier(String, AnnotationMirror, AnnotatedTypeMirror, Analysis.BeforeOrAfter, List<AnnotationMirror>)
Method renamings and signature changes (old method is removed) in WholeProgramInferenceStorage:
getPreOrPostconditionsForField(Analysis.BeforeOrAfter, ExecutableElement, VariableElement, AnnotatedTypeFactory)=>getPreOrPostconditions(Analysis.BeforeOrAfter, ExecutableElement, String, AnnotatedTypeMirror, AnnotatedTypeFactory)
Method renamings:
CFAbstractAnalysis.getFieldValues=>getFieldInitialValues
The following methods no longer take a fieldValues parameter:
GenericAnnotatedTypeFactory#createFlowAnalysisCFAnalysisconstructorCFAbstractAnalysis#performAnalysisCFAbstractAnalysisconstructors
Closed issues:
#4685, #4689, #4785, #4805, #4806, #4815, #4829, #4849.