Serialize initializer stub implementations.

Fixes the cross-module initializer inheritance issues implied by
rdar://problem/19794036.

Swift SVN r25336
This commit is contained in:
Doug Gregor
2015-02-17 00:38:21 +00:00
parent 12b8a54ea4
commit 96a2659223
9 changed files with 42 additions and 16 deletions

View File

@@ -2139,7 +2139,7 @@ Decl *ModuleFile::getDecl(DeclID DID, Optional<DeclContext *> ForcedContext) {
case decls_block::CONSTRUCTOR_DECL: {
DeclContextID contextID;
uint8_t rawFailability;
bool isImplicit, isObjC;
bool isImplicit, isObjC, hasStubImplementation;
uint8_t storedInitKind, rawAccessLevel;
TypeID signatureID;
TypeID interfaceID;
@@ -2148,7 +2148,8 @@ Decl *ModuleFile::getDecl(DeclID DID, Optional<DeclContext *> ForcedContext) {
decls_block::ConstructorLayout::readRecord(scratch, contextID,
rawFailability, isImplicit,
isObjC, storedInitKind,
isObjC, hasStubImplementation,
storedInitKind,
signatureID, interfaceID,
overriddenID, rawAccessLevel,
argNameIDs);
@@ -2226,6 +2227,8 @@ Decl *ModuleFile::getDecl(DeclID DID, Optional<DeclContext *> ForcedContext) {
if (isImplicit)
ctor->setImplicit();
if (hasStubImplementation)
ctor->setStubImplementation(true);
if (auto initKind = getActualCtorInitializerKind(storedInitKind))
ctor->setInitKind(*initKind);
if (auto overridden