Release 1.4.0 of the Checker Framework, Type Annotations compiler, and Annotation File Utilities

5 views
Skip to first unread message

Werner Dietl

unread,
Sep 12, 2012, 12:14:46 PM9/12/12
to jsr308-...@googlegroups.com, checker-fram...@googlegroups.com
We have released a new version of the Type Annotations (JSR 308) compiler,
the Checker Framework, and the Annotation File Utilities.
 * The Type Annotations compiler supports the type annotation syntax that is
   planned for a future version of the Java language.
 * The Checker Framework lets you create and/or run pluggable type-checkers,
   in order to detect and prevent bugs in your code.
 * The Annotation File Utilities provide tools to manipulate annotations in
   source and bytecode form.

You can find documentation and download links for these projects at:
http://types.cs.washington.edu/jsr308/


Changes for the Checker Framework
Version 1.4.0, 11 Sep 2012


User-visible framework improvements:
  Defaulting:
    @DefaultQualifier annotations now use a Class instead of a String,
      preventing simple typo errors.
    @DefaultLocation extended with more constants.
    TreeAnnotator propagates the least-upper-bound of the operands of
      binary/compound operations, instead of taking the default qualifier.
  Stub files now ignore the return type, allowing for files automatically
    generated from other formats.
  Type factories and type hierarchies:
    Simplify AnnotatedTypeFactory constructors.
    Add a GeneralAnnotatedTypeFactory that supports multiple type systems.
    Improvements to QualifierHierarchy construction.
  Type-checking improvements:
    Propagate annotations from the sub-expression of a cast to its result.
    Better handling of assignment context and improved inference of
      array creation expressions.
  Optional stricter checking of casts to array and generic types using
    the new -Alint=cast:strict flag.
    This will become the default in the future.
  Code reorganization:
    SourceChecker.initChecker no longer has a ProcessingEnvironment
      parameter. The environment can now be accessed using the standard
      processingEnv field (instead of the previous env field).
    Classes com.sun.source.util.AbstractTypeProcessor and
      checkers.util.AggregateChecker are now in package checkers.source.
    Move isAssignable from the BaseTypeChecker to the BaseTypeVisitor; now
      the Checker only consists of factories and logic is contained in the
      Visitor.
  Warning and error messages:
    Issue a warning if an unsupported -Alint option is provided.
    Improved error messages.
  Maven plugin now works.

Nullness Checker:
  Only allow creation of (implicitly) non-null objects.
  Optionally forbid creation of arrays with @NonNull component type,
    when flag -Alint=arrays:forbidnonnullcomponents is supplied.
    This will become the default in the future.

Internal framework improvements:
  Enable assertion checking.
  Improve handling of annotated type variables.
  Assignment context is now a type, not a tree.
  Fix all compiler warnings.

Changes for the Type Annotations Compiler

Version 1.4.0, 11 Sep 2012

Tools for converting to new receiver syntax:
  Files doc/convert-receiver.py and doc/convert-receiver.el are two
  programs (one written in Python and one writtenin Emacs Lisp) that convert
  a Java program from old-style (C++-style) receiver annotations to new-style
  ("this" formal parameter) receiver annotations.

Code improvements:
- Remove com.sun.source.util.AbstractTypeProcessor
- Remove com.sun.tools.javac.tree.JCTree.JCTypeAnnotation.annotation_position field
- Add V52 classfile version
- Adaptations to these changes and many cleanups
- All jtreg test cases pass

Base build
  Updated to OpenJDK 8 langtools as of 7 Sep 2012.

Reply all
Reply to author
Forward
0 new messages