Ensure the transitive completion of type arguments and the superclass

before declaring nominal type metadata complete.

Also, future-proof MetadataState.
This commit is contained in:
John McCall
2018-03-29 13:51:03 -04:00
parent d33dc3cd76
commit aceb2fd5ce
22 changed files with 499 additions and 222 deletions

View File

@@ -1910,9 +1910,8 @@ namespace {
void emitStoreOfSuperclass(IRGenFunction &IGF, CanType superclassType,
llvm::Value *metadata,
MetadataDependencyCollector *collector) {
auto request =
DynamicMetadataRequest::getNonBlocking(MetadataState::Complete,
collector);
auto request = DynamicMetadataRequest::getNonBlocking(
MetadataState::NonTransitiveComplete, collector);
llvm::Value *superMetadata =
emitClassHeapMetadataRef(IGF, superclassType,