@@ -4415,7 +4415,7 @@ namespace {
44154415 ConstructorDecl *importConstructor (const clang::ObjCMethodDecl *objcMethod,
44164416 DeclContext *dc,
44174417 bool implicit,
4418- Optional< CtorInitializerKind> kindIn ,
4418+ CtorInitializerKind kind ,
44194419 bool required,
44204420 ObjCSelector selector,
44214421 ImportedName importedName,
@@ -6081,9 +6081,10 @@ ConstructorDecl *SwiftDeclConverter::importConstructor(
60816081 }
60826082
60836083 bool redundant;
6084- auto result =
6085- importConstructor (objcMethod, dc, implicit, kind, required, selector,
6086- importedName, params, variadic, redundant);
6084+ auto result = importConstructor (objcMethod, dc, implicit,
6085+ kind.getValueOr (importedName.getInitKind ()),
6086+ required, selector, importedName, params,
6087+ variadic, redundant);
60876088
60886089 // If this is a compatibility stub, mark it as such.
60896090 if (result && correctSwiftName)
@@ -6193,7 +6194,7 @@ bool SwiftDeclConverter::existingConstructorIsWorse(
61936194// / constructor declaration appropriately.
61946195ConstructorDecl *SwiftDeclConverter::importConstructor (
61956196 const clang::ObjCMethodDecl *objcMethod, DeclContext *dc, bool implicit,
6196- Optional< CtorInitializerKind> kindIn , bool required, ObjCSelector selector,
6197+ CtorInitializerKind kind , bool required, ObjCSelector selector,
61976198 ImportedName importedName, ArrayRef<const clang::ParmVarDecl *> args,
61986199 bool variadic, bool &redundant) {
61996200 redundant = false ;
@@ -6202,35 +6203,6 @@ ConstructorDecl *SwiftDeclConverter::importConstructor(
62026203 auto ownerNominal = dc->getSelfNominalTypeDecl ();
62036204 assert (ownerNominal && " Method in non-type context?" );
62046205
6205- // Find the interface, if we can.
6206- const clang::ObjCInterfaceDecl *interface = nullptr ;
6207- if (auto classDecl = dyn_cast<ClassDecl>(ownerNominal)) {
6208- interface =
6209- dyn_cast_or_null<clang::ObjCInterfaceDecl>(classDecl->getClangDecl ());
6210- }
6211-
6212- // If we weren't told what kind of initializer this should be,
6213- // figure it out now.
6214- CtorInitializerKind kind;
6215-
6216- if (kindIn) {
6217- kind = *kindIn;
6218-
6219- // If we know this is a designated initializer, mark it as such.
6220- if (interface && hasDesignatedInitializers (interface) &&
6221- isDesignatedInitializer (interface, objcMethod))
6222- kind = CtorInitializerKind::Designated;
6223- } else {
6224- // If the owning Objective-C class has designated initializers and this
6225- // is not one of them, treat it as a convenience initializer.
6226- if (interface && hasDesignatedInitializers (interface) &&
6227- !isDesignatedInitializer (interface, objcMethod)) {
6228- kind = CtorInitializerKind::Convenience;
6229- } else {
6230- kind = CtorInitializerKind::Designated;
6231- }
6232- }
6233-
62346206 // Import the type that this method will have.
62356207 Optional<ForeignErrorConvention> errorConvention;
62366208 ParameterList *bodyParams;
@@ -7274,9 +7246,9 @@ void SwiftDeclConverter::importInheritedConstructors(
72747246 };
72757247
72767248 // The kind of initializer to import. If this class has designated
7277- // initializers, everything it imports is a convenience initializer.
7249+ // initializers, everything it inherits is a convenience initializer.
72787250 Optional<CtorInitializerKind> kind;
7279- if (hasDesignatedInitializers (curObjCClass ))
7251+ if (curObjCClass-> hasDesignatedInitializers ())
72807252 kind = CtorInitializerKind::Convenience;
72817253
72827254
0 commit comments