mozilla/rust — pull request #11254 by huonw (2014-01-01 05:39:47+00:00)
Title: syntax: expand impl_pretty_name to handle more cases.

The resulting symbol names aren't very pretty at all:

trait Trait { fn method(&self); }
impl<'a> Trait for ~[(&'a int, fn())] { fn method(&self) {} }

gives

Trait$$UP$$VEC$$TUP_2$$BP$int$$FN$$::method::...hash...::v0.0

However, at least it contain some reference to the Self type, unlike
`Trait$__extensions__::method:...`, which is what the symbol name used
to be for anything other than `impl Trait for foo::bar::Baz` (which
became, and still becomes, Trait$Baz::method).