Commits

John McCall committed 8f30faa4c18
Include access functions for the metadata and witness tables of associated types in protocol witness tables. We use the global access functions when the result isn't dependent, and a simple accessor when the result can be cheaply recovered from the conforming metadata. Otherwise, we add a cache slot to a private section of the witness table, forcing an instantiation per conformance. Like generic type metadata, concrete instantiations of generic conformances are memoized. There's a fair amount of code in this patch that can't be dynamically tested at the moment because of the widespread reliance on recursive expansion of archetypes / dependent types. That's something we're now theoretically in a position to change, and as we do so, we'll test more of this code. This speculatively re-applies 7576a9100976c3de5c8d8c22ba5be7d2410eb905, i.e. reverts commit 11ab3d537f96b05742bba20c2dbd021c3d0370f4. We have not been able to duplicate the build failure in independent testing; it might have been spurious or unrelated.