[ABI] Use generic environment to handle mangled generic keypath types.

Always use mangled type names to represent type metadata in keypath patterns.
For generic types, use the generic environment to pull substituted types
from the instantiation arguments.

Finishes the type metadata part of rdar://problem/38038799.
This commit is contained in:
Doug Gregor
2018-11-16 10:07:03 -08:00
parent b206bd610a
commit cc2ee165a1
8 changed files with 145 additions and 75 deletions

View File

@@ -256,7 +256,9 @@ const long long $ss12_ClassMirrorVMa[1] = {0};
// KeyPath
SWIFT_RUNTIME_STDLIB_SPI
const HeapObject *swift_getKeyPathImpl(const void *p, const void *a) {
const HeapObject *swift_getKeyPathImpl(const void *p,
const void *e,
const void *a) {
abort();
}