Commits

Joe Groff committed 6849ebda878
SIL printer: Disambiguate context archetypes with name collisions. This can happen in witnesses, whose context archetypes are composed from the type-level archetypes of the witnessing type, and the method-level archetypes of the requirement. If you have something like: protocol Foo { func foo<T>(x: T) } struct Bar<T>: Foo { func foo<U>(x: U) } Bar's witness to Foo.foo will end up with two archetypes named "T". Deal with this by having the SIL printer introduce a name mapping that disambiguates colliding archetypes. Refactor the SIL printer to do streaming through the SILPrinter itself, rather than directly on its ostream, so that we make sure it controls how subelements like types are printed, and it can pass the appropriate options down to the AST type printer. Fixes rdar://problem/20659406. Swift SVN r27991