SILGen: Emit ObjC thunks for initializers in extensions that fulfill @objc requirements.

Fixes <rdar://problem/17211135>.

Swift SVN r19970
This commit is contained in:
Joe Groff
2014-07-15 04:26:15 +00:00
parent 5e9e346e78
commit 52bdeba521
2 changed files with 18 additions and 0 deletions

View File

@@ -1380,6 +1380,8 @@ public:
SGM.emitObjCMethodThunk(method);
else if (auto *prop = dyn_cast<VarDecl>(vd))
SGM.emitObjCPropertyMethodThunks(prop);
else if (auto *ctor = dyn_cast<ConstructorDecl>(vd))
SGM.emitObjCConstructorThunk(ctor);
else
llvm_unreachable("unexpected conformance mapping");
});

View File

@@ -192,3 +192,19 @@ func testInitializableExistential(im: Initializable.Type, i: Int) -> Initializab
var i2 = im(int: i)
return i2
}
class InitializableConformer: Initializable {
required init(int: Int) {}
}
// CHECK-LABEL: sil @_TToFC14objc_protocols22InitializableConformercfMS0_FT3intSi_S0_
class InitializableConformerByExtension {
init() {}
}
extension InitializableConformerByExtension: Initializable {
convenience init(int: Int) {
self.init()
}
}
// CHECK-LABEL: sil @_TToFC14objc_protocols33InitializableConformerByExtensioncfMS0_FT3intSi_S0_