rust-lang/rust — pull request #18483 by eddyb (2014-10-31 08:18:23+00:00)
Title: Replace unsafety in middle::ty with lifetimes.

**NOTE**: temporarily rebased on top of #18458, (hopefully) the last issue out of the many `safe-ty` has had.

After more than a month of sitting on this patch, rebasing and tracking down some nasty bugs (there's might be still one out there, but it only manifested in `middle::trans::reflect` which is now gone), I'd like to merge it as it is.

This changeset makes middle::ty safe, linking the lifetime of a type to the type context it was created in.
It's a prerequisite for introducing function-local type contexts to localize types with inference variables, in order to (potentially) free hundreds of MBs from rustc's memory usage peak.