twitter/commons — pull request #32 by benjyw (2012-07-06 19:53:51+00:00)
Title: Zinc integration into Pants.

Zinc is the new standalone incremental scala compiler, refactored
out of SBT.

The most tricky part of this change is the interplay between incremental
compilation and non-flat compilation. Each compiler pass has an analysis
cache associated with it. If building non-flat, each pass has to receive
its upstream dependencies as separate dependencies on the classpath,
that are then associated with the appropriate analysis caches. What's more,
these dependencies must be directories. They can't be jars (although it might
be possible to change this in Zinc in the future).

This means that in this case each pass must emit .class files to a separate
directory. We then copy those over to the main classes directory.