This directory contains the expected result of type-checking projects from
https://github.com/plume-lib/, after whole-program inference.
The script `test-wpi-plumelib.sh` runs the tests.

If the tests fail, you may need to fix a problem with whole-program
inference, or you might need to edit the `*.expected` files in this
directory.  Those files are just like the `typecheck.out` file created by
running wpi.sh, with two permitted additions:
 * comments (a line starting with "#") to explain type-checking errors
 * blank lines to improve readability

The script `test-wpi-plumelib.sh` complements the Gradle `wpiManyTest`
task.  Here are differences:
 * Different projects use a different list of type-checkers.
   (wpi-many.sh uses a fixed set of type-checkers for all projects.)
 * This uses the HEAD commit.
   (wpi-many.sh uses a fixed commit.)
 * This checks for expected type-checking errors.
   (The Gradle wpiManyTest target requires that there are no errors, so it
   skips type systems for which inference does not currently work.)

The use of the HEAD commit makes these tests brittle.  They might fail if:
 * The Checker Framework is changed in a way that makes whole-program
   inference fail to infer all needed annotations.
 * A plume-lib project is changed in a way that exposes a limitation of
   whole-program inference.

A test failure always indicates a limitation of whole-program inference, or
the removal of a limitation.  It is unfortunate that commits to a different
repository can make the Checker Framework tests fail, but that is the price
of staying at the head commit.
