Generic Universe Types README
=============================

This project consists of two implementations of a Generic Universe
Types checker: one that only checks the type rules and one that can be
used to either infer annotations or to check the type rules.
The first one is written in Java only, whereas the second one depends
on the Checker Inference project and is partly written in Scala.
The documentation of the source code is currently minimal and there is
no developer manual yet.
In recent developments, the two type systems diverged a bit. In
particular handling of primitive types and static methods need to be
unified again. Also, checking of purity is not implemented yet.

All suggestions for improvements are very welcome!


Installation
------------

You will need a JDK and Scala environment.
I usually use OpenJDK 7 and Scala 2.9.

Install the source-versions of these three tools:

http://types.cs.washington.edu/jsr308/
http://types.cs.washington.edu/annotation-file-utilities/
http://types.cs.washington.edu/checker-framework/

Put all of them into a common directory.
Make sure that all tools are compiled correctly and that all Checker
Framework test cases work.

Install the Checker Inference project if you also want to use type
inference.

Install the GUT project into the same common directory.
Edit file scripts/setup.sh and edit the paths for the ROOT and
JAVA_HOME variables. All other variables should be set correctly
depending only on those two.

Script compileGUT.sh will then compile all source code.
The other shell scripts execute the checker, the test cases, or check
the error messages for consistency.

All the projects are easy to use from Eclipse. Create one workspace
for all projects and import the existing project configurations.
Contributions of make, Ant, and Maven scripts would be greatly
appreciated.


Copyright
---------

The current copyright is CRAPL, an "An academic-strength open source
license":

http://matt.might.net/articles/crapl/