Commits

Doug Gregor committed 9e8633ac41a
Encode and pass all of the archetypes, including derived archetypes, in SpecializeExpr, so that we have complete substitution and protocol-conformance information. On the IR generation side, pass witness tables for all of the archetypes (again, including derived archetypes) into generic functions, so that we have witness tables for all of the associated types. There are at least two major issues: (1) This is a terribly inefficient way to pass witness tables for associated types. The witness tables for associated types should be accessible via the witness tables of their parent. However, we need more information in the ASTs here, because there may be additional witness tables that will need to be passed for requirements that are placed on the associated type by the generic function itself. (2) Something about my test triggers a void/non-void verification failure in the witness build for an instance function whose abstracted form returns an associated type archetype and whose concrete form returns an empty struct. See the FIXME in the test. Swift SVN r2464