Skip to content

Commit 03e4f05

Browse files
authored
Merge pull request #31566 from rintaro/5.3-sourcekit-completion-invalidtyperelation-rdar57726512
[5.3][CodeCompletion] Dont mark type mismatching items 'not recommended'
2 parents 4cc1db0 + 3b3934e commit 03e4f05

20 files changed

+164
-137
lines changed

include/swift/IDE/CodeCompletion.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,6 @@ class CodeCompletionResult {
575575

576576
enum NotRecommendedReason {
577577
Redundant,
578-
TypeMismatch,
579578
Deprecated,
580579
NoReason,
581580
};
@@ -705,17 +704,18 @@ class CodeCompletionResult {
705704
StringRef BriefDocComment,
706705
ArrayRef<StringRef> AssociatedUSRs,
707706
ArrayRef<std::pair<StringRef, StringRef>> DocWords,
707+
ExpectedTypeRelation TypeDistance,
708708
CodeCompletionOperatorKind KnownOperatorKind)
709709
: Kind(ResultKind::Declaration),
710710
KnownOperatorKind(unsigned(KnownOperatorKind)),
711711
SemanticContext(unsigned(SemanticContext)),
712712
NotRecommended(NotRecommended), NotRecReason(NotRecReason),
713713
NumBytesToErase(NumBytesToErase), CompletionString(CompletionString),
714714
ModuleName(ModuleName), BriefDocComment(BriefDocComment),
715-
AssociatedUSRs(AssociatedUSRs), DocWords(DocWords) {
715+
AssociatedUSRs(AssociatedUSRs), DocWords(DocWords),
716+
TypeDistance(TypeDistance) {
716717
AssociatedKind = static_cast<unsigned>(DeclKind);
717718
assert(CompletionString);
718-
TypeDistance = ExpectedTypeRelation::Unknown;
719719
assert(!isOperator() ||
720720
getOperatorKind() != CodeCompletionOperatorKind::None);
721721
}

lib/IDE/CodeCompletion.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1240,11 +1240,6 @@ CodeCompletionResult *CodeCompletionResultBuilder::takeResult() {
12401240
typeRelation =
12411241
calculateMaxTypeRelationForDecl(AssociatedDecl, declTypeContext);
12421242

1243-
if (typeRelation == CodeCompletionResult::Invalid) {
1244-
IsNotRecommended = true;
1245-
NotRecReason = CodeCompletionResult::NotRecommendedReason::TypeMismatch;
1246-
}
1247-
12481243
return new (*Sink.Allocator) CodeCompletionResult(
12491244
SemanticContext, NumBytesToErase, CCS, AssociatedDecl, ModuleName,
12501245
/*NotRecommended=*/IsNotRecommended, NotRecReason,

lib/IDE/CodeCompletionCache.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,8 @@ static bool readCachedModule(llvm::MemoryBuffer *in,
251251
context, numBytesToErase, string, declKind, moduleName,
252252
notRecommended, CodeCompletionResult::NotRecommendedReason::NoReason,
253253
briefDocComment, copyStringArray(*V.Sink.Allocator, assocUSRs),
254-
copyStringPairArray(*V.Sink.Allocator, declKeywords), opKind);
254+
copyStringPairArray(*V.Sink.Allocator, declKeywords),
255+
CodeCompletionResult::Unknown, opKind);
255256
} else {
256257
result = new (*V.Sink.Allocator)
257258
CodeCompletionResult(kind, context, numBytesToErase, string,

test/IDE/complete_assignment.swift

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func f1() {
7777
// ASSIGN_1-DAG: Decl[InstanceVar]/CurrNominal/TypeRelation[Identical]: I1[#Int#]; name=I1
7878
// ASSIGN_1-DAG: Decl[InstanceVar]/CurrNominal/TypeRelation[Identical]: I2[#Int#]; name=I2
7979
// ASSIGN_1-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Identical]: IntGenerator()[#Int#]; name=IntGenerator()
80-
// ASSIGN_1-DAG: Decl[InstanceMethod]/CurrNominal/NotRecommended/TypeRelation[Invalid]: VoidGen()[#Void#]; name=VoidGen()
80+
// ASSIGN_1-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Invalid]: VoidGen()[#Void#]; name=VoidGen()
8181
// ASSIGN_1-DAG: Decl[InstanceVar]/CurrNominal: S1[#String#]; name=S1
8282

8383
func f2() {
@@ -104,7 +104,7 @@ func f2() {
104104
// ASSIGN_3-DAG: Decl[InstanceVar]/CurrNominal/TypeRelation[Identical]: S1[#String#]; name=S1
105105
// ASSIGN_3-DAG: Decl[InstanceVar]/CurrNominal/TypeRelation[Identical]: S2[#String#]; name=S2
106106
// ASSIGN_3-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Identical]: StringGenerator()[#String#]; name=StringGenerator()
107-
// ASSIGN_3-DAG: Decl[InstanceMethod]/CurrNominal/NotRecommended/TypeRelation[Invalid]: VoidGen()[#Void#]; name=VoidGen()
107+
// ASSIGN_3-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Invalid]: VoidGen()[#Void#]; name=VoidGen()
108108
// ASSIGN_3-DAG: Decl[InstanceVar]/CurrNominal: I1[#Int#]; name=I1
109109

110110
func f4() {
@@ -119,7 +119,7 @@ func f2() {
119119
// ASSIGN_4-DAG: Decl[InstanceVar]/CurrNominal/TypeRelation[Identical]: SO1[#String?#]; name=SO1
120120
// ASSIGN_4-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Convertible]: StringGenerator()[#String#]; name=StringGenerator()
121121
// ASSIGN_4-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Identical]: StringOpGenerator()[#String?#]; name=StringOpGenerator()
122-
// ASSIGN_4-DAG: Decl[InstanceMethod]/CurrNominal/NotRecommended/TypeRelation[Invalid]: VoidGen()[#Void#]; name=VoidGen()
122+
// ASSIGN_4-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Invalid]: VoidGen()[#Void#]; name=VoidGen()
123123
// ASSIGN_4-DAG: Decl[InstanceVar]/CurrNominal: I1[#Int#]; name=I1
124124

125125
func f5() {
@@ -149,7 +149,7 @@ func f2() {
149149
// ASSIGN_7-DAG: Decl[InstanceMethod]/CurrNominal: IntOpGen()[#Int?#]
150150
// ASSIGN_7-DAG: Decl[InstanceMethod]/CurrNominal: D1Gen()[#D1#]
151151
// ASSIGN_7-DAG: Decl[InstanceMethod]/CurrNominal: D2Gen()[#D2#]
152-
// ASSIGN_7-DAG: Decl[InstanceMethod]/CurrNominal/NotRecommended/TypeRelation[Invalid]: VoidGen()[#Void#]
152+
// ASSIGN_7-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Invalid]: VoidGen()[#Void#]
153153
// ASSIGN_7-DAG: Decl[InstanceVar]/CurrNominal: InternalC2[#C2#]
154154

155155
func f8 (C : C2) {
@@ -162,7 +162,7 @@ func f2() {
162162
// ASSIGN_8-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Identical]: IntOpGen()[#Int?#]
163163
// ASSIGN_8-DAG: Decl[InstanceMethod]/CurrNominal: D1Gen()[#D1#]
164164
// ASSIGN_8-DAG: Decl[InstanceMethod]/CurrNominal: D2Gen()[#D2#]
165-
// ASSIGN_8-DAG: Decl[InstanceMethod]/CurrNominal/NotRecommended/TypeRelation[Invalid]: VoidGen()[#Void#]
165+
// ASSIGN_8-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Invalid]: VoidGen()[#Void#]
166166
// ASSIGN_8-DAG: Decl[InstanceVar]/CurrNominal: InternalC2[#C2#]
167167

168168
func f9 (C : C2) {
@@ -175,7 +175,7 @@ func f2() {
175175
// ASSIGN_9-DAG: Decl[InstanceMethod]/CurrNominal: IntOpGen()[#Int?#]
176176
// ASSIGN_9-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Identical]: D1Gen()[#D1#]
177177
// ASSIGN_9-DAG: Decl[InstanceMethod]/CurrNominal: D2Gen()[#D2#]
178-
// ASSIGN_9-DAG: Decl[InstanceMethod]/CurrNominal/NotRecommended/TypeRelation[Invalid]: VoidGen()[#Void#]
178+
// ASSIGN_9-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Invalid]: VoidGen()[#Void#]
179179
// ASSIGN_9-DAG: Decl[InstanceVar]/CurrNominal: InternalC2[#C2#]
180180

181181
func f10 (C : C2) {
@@ -188,7 +188,7 @@ func f2() {
188188
// ASSIGN_10-DAG: Decl[InstanceMethod]/CurrNominal: IntOpGen()[#Int?#]
189189
// ASSIGN_10-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Identical]: D1Gen()[#D1#]
190190
// ASSIGN_10-DAG: Decl[InstanceMethod]/CurrNominal: D2Gen()[#D2#]
191-
// ASSIGN_10-DAG: Decl[InstanceMethod]/CurrNominal/NotRecommended/TypeRelation[Invalid]: VoidGen()[#Void#]
191+
// ASSIGN_10-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Invalid]: VoidGen()[#Void#]
192192
// ASSIGN_10-DAG: Decl[InstanceVar]/CurrNominal: InternalC2[#C2#]
193193

194194
func f11(C: C2) {
@@ -213,7 +213,7 @@ func f2() {
213213
// ASSIGN_12-DAG: Decl[InstanceMethod]/CurrNominal: IntOpGen()[#Int?#]
214214
// ASSIGN_12-DAG: Decl[InstanceMethod]/CurrNominal: D1Gen()[#D1#]
215215
// ASSIGN_12-DAG: Decl[InstanceMethod]/CurrNominal: D2Gen()[#D2#]
216-
// ASSIGN_12-DAG: Decl[InstanceMethod]/CurrNominal/NotRecommended/TypeRelation[Invalid]: VoidGen()[#Void#]
216+
// ASSIGN_12-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Invalid]: VoidGen()[#Void#]
217217
// ASSIGN_12-DAG: Decl[InstanceVar]/CurrNominal: InternalC2[#C2#]
218218

219219
func f13() {
@@ -223,7 +223,7 @@ func f2() {
223223
// ASSIGN_13-DAG: Decl[InstanceVar]/CurrNominal/TypeRelation[Identical]: I1[#Int#]; name=I1
224224
// ASSIGN_13-DAG: Decl[InstanceVar]/CurrNominal/TypeRelation[Identical]: I2[#Int#]; name=I2
225225
// ASSIGN_13-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Identical]: IntGenerator()[#Int#]; name=IntGenerator()
226-
// ASSIGN_13-DAG: Decl[InstanceMethod]/CurrNominal/NotRecommended/TypeRelation[Invalid]: VoidGen()[#Void#]; name=VoidGen()
226+
// ASSIGN_13-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Invalid]: VoidGen()[#Void#]; name=VoidGen()
227227
// ASSIGN_13-DAG: Decl[InstanceVar]/CurrNominal: S1[#String#]; name=S1
228228

229229
func f14() {
@@ -252,7 +252,7 @@ func f2() {
252252
// ASSIGN_16-DAG: Decl[InstanceMethod]/CurrNominal: IntOpGen()[#Int?#]
253253
// ASSIGN_16-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Identical]: D1Gen()[#D1#]
254254
// ASSIGN_16-DAG: Decl[InstanceMethod]/CurrNominal: D2Gen()[#D2#]
255-
// ASSIGN_16-DAG: Decl[InstanceMethod]/CurrNominal/NotRecommended/TypeRelation[Invalid]: VoidGen()[#Void#]
255+
// ASSIGN_16-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Invalid]: VoidGen()[#Void#]
256256
// ASSIGN_16-DAG: Decl[InstanceVar]/CurrNominal: InternalC2[#C2#]
257257

258258
func f17() {
@@ -264,7 +264,7 @@ func f2() {
264264
// ASSIGN_17-DAG: Decl[InstanceMethod]/CurrNominal: IntOpGen()[#Int?#]
265265
// ASSIGN_17-DAG: Decl[InstanceMethod]/CurrNominal: D1Gen()[#D1#]
266266
// ASSIGN_17-DAG: Decl[InstanceMethod]/CurrNominal: D2Gen()[#D2#]
267-
// ASSIGN_17-DAG: Decl[InstanceMethod]/CurrNominal/NotRecommended/TypeRelation[Invalid]: VoidGen()[#Void#]
267+
// ASSIGN_17-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Invalid]: VoidGen()[#Void#]
268268
// ASSIGN_17-DAG: Decl[InstanceVar]/CurrNominal: InternalC2[#C2#]
269269

270270
func f18 (C : C2) {
@@ -276,7 +276,7 @@ func f2() {
276276
// ASSIGN_18-DAG: Decl[InstanceMethod]/CurrNominal: IntOpGen()[#Int?#]
277277
// ASSIGN_18-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Identical]: D1Gen()[#D1#]
278278
// ASSIGN_18-DAG: Decl[InstanceMethod]/CurrNominal: D2Gen()[#D2#]
279-
// ASSIGN_18-DAG: Decl[InstanceMethod]/CurrNominal/NotRecommended/TypeRelation[Invalid]: VoidGen()[#Void#]
279+
// ASSIGN_18-DAG: Decl[InstanceMethod]/CurrNominal/TypeRelation[Invalid]: VoidGen()[#Void#]
280280
// ASSIGN_18-DAG: Decl[InstanceVar]/CurrNominal: InternalC2[#C2#]
281281
}
282282

test/IDE/complete_at_top_level.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,7 @@ _ = "" + "\(#^STRING_INTERP_4^#)" + ""
472472
// STRING_INTERP: Begin completions
473473
// STRING_INTERP-DAG: Decl[InstanceMethod]/CurrNominal: ['(']{#(value): T#}[')'][#Void#];
474474
// STRING_INTERP-DAG: Decl[Struct]/CurrModule: FooStruct[#FooStruct#];
475-
// STRING_INTERP-DAG: Decl[FreeFunction]/CurrModule/NotRecommended/TypeRelation[Invalid]: fooFunc1()[#Void#];
475+
// STRING_INTERP-DAG: Decl[FreeFunction]/CurrModule/TypeRelation[Invalid]: fooFunc1()[#Void#];
476476
// STRING_INTERP-DAG: Decl[FreeFunction]/CurrModule: optStr()[#String?#];
477477
// STRING_INTERP-DAG: Decl[GlobalVar]/Local: fooObject[#FooStruct#];
478478
// STRING_INTERP: End completions

0 commit comments

Comments
 (0)