Skip to content

Commit 8c2e54b

Browse files
authored
Merge pull request swiftlang#36634 from rintaro/ide-completion-rdar75963052
[CodeCompletion] Stop suggesting initializer calls on unresolved member
2 parents 23bcb8b + 4df17c5 commit 8c2e54b

File tree

3 files changed

+5
-20
lines changed

3 files changed

+5
-20
lines changed

lib/IDE/CodeCompletion.cpp

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3255,7 +3255,7 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
32553255
void addConstructorCallsForType(Type type, Identifier name,
32563256
DeclVisibilityKind Reason,
32573257
DynamicLookupInfo dynamicLookupInfo) {
3258-
if (!Ctx.LangOpts.CodeCompleteInitsInPostfixExpr && !IsUnresolvedMember)
3258+
if (!Ctx.LangOpts.CodeCompleteInitsInPostfixExpr)
32593259
return;
32603260

32613261
assert(CurrDeclContext);
@@ -3267,10 +3267,6 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
32673267
auto *init = cast<ConstructorDecl>(entry.getValueDecl());
32683268
if (init->shouldHideFromEditor())
32693269
continue;
3270-
if (IsUnresolvedMember && init->isFailable() &&
3271-
!init->isImplicitlyUnwrappedOptional()) {
3272-
continue;
3273-
}
32743270
addConstructorCall(cast<ConstructorDecl>(init), Reason,
32753271
dynamicLookupInfo, type, None,
32763272
/*IsOnType=*/true, name);
@@ -3341,8 +3337,6 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
33413337

33423338
void addNominalTypeRef(const NominalTypeDecl *NTD, DeclVisibilityKind Reason,
33433339
DynamicLookupInfo dynamicLookupInfo) {
3344-
if (IsUnresolvedMember)
3345-
return;
33463340
CommandWordsPairs Pairs;
33473341
CodeCompletionResultBuilder Builder(
33483342
Sink, CodeCompletionResult::ResultKind::Declaration,
@@ -3371,8 +3365,6 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
33713365

33723366
void addTypeAliasRef(const TypeAliasDecl *TAD, DeclVisibilityKind Reason,
33733367
DynamicLookupInfo dynamicLookupInfo) {
3374-
if (IsUnresolvedMember)
3375-
return;
33763368
CommandWordsPairs Pairs;
33773369
CodeCompletionResultBuilder Builder(
33783370
Sink, CodeCompletionResult::ResultKind::Declaration,

test/IDE/complete_enum_elements.swift

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -127,19 +127,12 @@ enum FooEnum: CaseIterable {
127127
// FOO_ENUM_DOT_CONTEXT-NEXT: Decl[StaticVar]/CurrNominal: allCases[#[FooEnum]#]{{; name=.+$}}
128128
// FOO_ENUM_DOT_CONTEXT-NEXT: End completions
129129

130-
// FOO_ENUM_DOT_ELEMENTS: Begin completions, 13 items
130+
// FOO_ENUM_DOT_ELEMENTS: Begin completions, 6 items
131131
// FOO_ENUM_DOT_ELEMENTS-NEXT: Decl[EnumElement]/ExprSpecific/TypeRelation[Identical]: Foo1[#FooEnum#]{{; name=.+$}}
132132
// FOO_ENUM_DOT_ELEMENTS-NEXT: Decl[EnumElement]/ExprSpecific/TypeRelation[Identical]: Foo2[#FooEnum#]{{; name=.+$}}
133133
// FOO_ENUM_DOT_ELEMENTS-NEXT: Decl[StaticVar]/ExprSpecific/TypeRelation[Identical]: alias1[#FooEnum#]; name=alias1
134134
// FOO_ENUM_DOT_ELEMENTS-NEXT: Decl[InstanceMethod]/CurrNominal/TypeRelation[Invalid]: hash({#(self): FooEnum#})[#(into: inout Hasher) -> Void#]; name=hash(self: FooEnum)
135-
// FOO_ENUM_DOT_ELEMENTS-NEXT: Decl[Constructor]/CurrNominal/IsSystem: AllCases({#arrayLiteral: FooEnum...#})[#Array<FooEnum>#]; name=AllCases(arrayLiteral: FooEnum...)
136-
// FOO_ENUM_DOT_ELEMENTS-NEXT: Decl[Constructor]/CurrNominal/IsSystem: AllCases()[#Array<FooEnum>#]; name=AllCases()
137-
// FOO_ENUM_DOT_ELEMENTS-NEXT: Decl[Constructor]/CurrNominal/IsSystem: AllCases({#(s): Sequence#})[#Array<FooEnum>#]; name=AllCases(s: Sequence)
138-
// FOO_ENUM_DOT_ELEMENTS-NEXT: Decl[Constructor]/CurrNominal/IsSystem: AllCases({#repeating: FooEnum#}, {#count: Int#})[#Array<FooEnum>#]; name=AllCases(repeating: FooEnum, count: Int)
139-
// FOO_ENUM_DOT_ELEMENTS-NEXT: Decl[Constructor]/CurrNominal/IsSystem: AllCases({#unsafeUninitializedCapacity: Int#}, {#initializingWith: (inout UnsafeMutableBufferPointer<FooEnum>, inout Int) throws -> Void##(inout UnsafeMutableBufferPointer<FooEnum>, inout Int) throws -> Void#})[' rethrows'][#Array<FooEnum>#]; name=AllCases(unsafeUninitializedCapacity: Int, initializingWith: (inout UnsafeMutableBufferPointer<FooEnum>, inout Int) throws -> Void) rethrows
140-
// FOO_ENUM_DOT_ELEMENTS-NEXT: Decl[Constructor]/CurrNominal/IsSystem: AllCases({#from: Decoder#})[' throws'][#Array<FooEnum>#]; name=AllCases(from: Decoder) throws
141-
// FOO_ENUM_DOT_ELEMENTS-NEXT: Decl[Constructor]/CurrNominal/IsSystem: AllCases({#repeating: FooEnum#}, {#count: Int#})[#FooEnum.AllCases#]; name=AllCases(repeating: FooEnum, count: Int)
142-
// FOO_ENUM_DOT_ELEMENTS-NEXT: Decl[Constructor]/CurrNominal/IsSystem: AllCases({#(elements): Sequence#})[#FooEnum.AllCases#]; name=AllCases(elements: Sequence)
135+
// FOO_ENUM_DOT_ELEMENTS-NEXT: Decl[TypeAlias]/CurrNominal: AllCases[#[FooEnum]#]; name=AllCases
143136
// FOO_ENUM_DOT_ELEMENTS-NEXT: Decl[StaticVar]/CurrNominal: allCases[#[FooEnum]#]; name=allCases
144137
// FOO_ENUM_DOT_ELEMENTS-NEXT: End completions
145138

@@ -456,7 +449,7 @@ func testUnqualified1(x: QuxEnum) {
456449
// UNRESOLVED_2: Begin completions
457450
// UNRESOLVED_2-DAG: Decl[EnumElement]/ExprSpecific/TypeRelation[Identical]: Qux1[#QuxEnum#]; name=Qux1
458451
// UNRESOLVED_2-DAG: Decl[EnumElement]/ExprSpecific/TypeRelation[Identical]: Qux2[#QuxEnum#]; name=Qux2
459-
// UNRESOLVED_2-DAG: Decl[Constructor]/CurrNominal/IsSystem: RawValue({#bitPattern: UInt#})[#Int#]; name=RawValue(bitPattern: UInt)
452+
// UNRESOLVED_2-DAG: Decl[TypeAlias]/CurrNominal: RawValue[#Int#]; name=RawValue
460453
// UNRESOLVED_2-DAG: Decl[Constructor]/CurrNominal: init({#rawValue: Int#})[#QuxEnum?#]; name=init(rawValue: Int)
461454
// UNRESOLVED_2-DAG: Decl[InstanceMethod]/Super/IsSystem/TypeRelation[Invalid]: hash({#(self): QuxEnum#})[#(into: inout Hasher) -> Void#]; name=hash(self: QuxEnum)
462455
// UNRESOLVED_2: End completions

test/IDE/complete_unresolved_members.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -568,7 +568,7 @@ func testSubType() {
568568
// SUBTYPE_1: Begin completions, 4 items
569569
// SUBTYPE_1-NOT: Concrete1(
570570
// SUBTYPE_1-DAG: Decl[Constructor]/CurrNominal/TypeRelation[Identical]: init()[#BaseClass#];
571-
// SUBTYPE_1-DAG: Decl[Constructor]/CurrNominal/TypeRelation[Convertible]: SubClass()[#BaseClass.SubClass#];
571+
// SUBTYPE_1-DAG: Decl[Class]/CurrNominal/TypeRelation[Convertible]: SubClass[#BaseClass.SubClass#];
572572
// SUBTYPE_1-DAG: Decl[StaticVar]/CurrNominal/TypeRelation[Convertible]: subInstance[#BaseClass.SubClass#];
573573
// SUBTYPE_1-DAG: Decl[Constructor]/CurrNominal: init({#failable: Void#})[#BaseClass?#];
574574
// SUBTYPE_1: End completions

0 commit comments

Comments
 (0)