Skip to content

Commit 459e07f

Browse files
committed
[CodeCompletion] Don't emit failable initialization for member types
in unresolved member completion.
1 parent a640fe7 commit 459e07f

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

lib/IDE/CodeCompletion.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2637,6 +2637,10 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
26372637
for (auto *init : initializers) {
26382638
if (shouldHideDeclFromCompletionResults(init))
26392639
continue;
2640+
if (IsUnresolvedMember &&
2641+
cast<ConstructorDecl>(init)->getFailability() == OTK_Optional) {
2642+
continue;
2643+
}
26402644
addConstructorCall(cast<ConstructorDecl>(init), Reason, type, None,
26412645
/*IsOnType=*/true, name);
26422646
}

test/IDE/complete_unresolved_members.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,8 @@ func testInStringInterpolation() {
431431
class BaseClass {
432432
class SubClass : BaseClass { init() {} }
433433
static var subInstance: SubClass = SubClass()
434+
init() {}
435+
init?(failable: Void) {}
434436
}
435437
protocol MyProtocol {
436438
typealias Concrete1 = BaseClass
@@ -442,6 +444,7 @@ func testSubType() {
442444
var _: BaseClass = .#^SUBTYPE_1^#
443445
}
444446
// SUBTYPE_1: Begin completions, 4 items
447+
// SUBTYPE_1-NOT: init(failable:
445448
// SUBTYPE_1-DAG: Decl[Constructor]/CurrNominal/TypeRelation[Identical]: init()[#BaseClass#];
446449
// SUBTYPE_1-DAG: Decl[Constructor]/CurrNominal/TypeRelation[Convertible]: SubClass()[#BaseClass.SubClass#];
447450
// SUBTYPE_1-DAG: Decl[StaticVar]/CurrNominal/TypeRelation[Convertible]: subInstance[#BaseClass.SubClass#];
@@ -452,6 +455,7 @@ func testMemberTypealias() {
452455
var _: MyProtocol = .#^SUBTYPE_2^#
453456
}
454457
// SUBTYPE_2: Begin completions, 2 items
458+
// SUBTYPE_1-NOT: Concrete1(failable:
455459
// SUBTYPE_2-DAG: Decl[Constructor]/CurrNominal/TypeRelation[Convertible]: Concrete1()[#BaseClass#];
456460
// SUBTYPE_2-DAG: Decl[Constructor]/CurrNominal/TypeRelation[Convertible]: Concrete2()[#AnotherTy#];
457461
// SUBTYPE_2: End completions

0 commit comments

Comments
 (0)