Commits

Doug Gregor committed 680a5ba5e7c
Introduce a per-constraint system constraint graph (optionally). Make the constraint graph into a scoped data structure that tracks the changes that occur within a given scope, undoing those changes when the scope is popped off the scope stack. The constraint graph's scopes align with the constraint solver's scopes. Synchronize the solver's constraint addition/removal operations with the constraint graph, and improve our verification to make sure these stay in sync. This is still a work in progress. Type checking the standard library is about 5% slower with the per-constraint-system constraint graph rather than building a new constraint graph each iteration *after* simplification, and there are two intruiging test failures that appear to be the constraint solver breaking its own invariants. Therefore, this feature is off by default. See the ConstraintSystem constructor for the one-line change to turn it back on. Swift SVN r10927