File tree Expand file tree Collapse file tree 2 files changed +19
-4
lines changed Expand file tree Collapse file tree 2 files changed +19
-4
lines changed Original file line number Diff line number Diff line change @@ -939,10 +939,15 @@ static CodeCompletionResult::ExpectedTypeRelation calculateTypeRelation(
939
939
Ty->is <ErrorType>() ||
940
940
ExpectedTy->is <ErrorType>())
941
941
return CodeCompletionResult::ExpectedTypeRelation::Unrelated;
942
- if (Ty->isEqual (ExpectedTy))
943
- return CodeCompletionResult::ExpectedTypeRelation::Identical;
944
- if (isConvertibleTo (Ty, ExpectedTy, *DC))
945
- return CodeCompletionResult::ExpectedTypeRelation::Convertible;
942
+
943
+ // Equality/Conversion of GenericTypeParameterType won't account for
944
+ // requirements – ignore them
945
+ if (!Ty->hasTypeParameter () && !ExpectedTy->hasTypeParameter ()) {
946
+ if (Ty->isEqual (ExpectedTy))
947
+ return CodeCompletionResult::ExpectedTypeRelation::Identical;
948
+ if (isConvertibleTo (Ty, ExpectedTy, *DC))
949
+ return CodeCompletionResult::ExpectedTypeRelation::Convertible;
950
+ }
946
951
if (auto FT = Ty->getAs <AnyFunctionType>()) {
947
952
if (FT->getResult ()->isVoid ())
948
953
return CodeCompletionResult::ExpectedTypeRelation::Invalid;
Original file line number Diff line number Diff line change 45
45
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=BOUND_IUO | %FileCheck %s -check-prefix=MEMBEROF_IUO
46
46
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=FORCED_IUO | %FileCheck %s -check-prefix=MEMBEROF_IUO
47
47
48
+ // RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=GENERIC_TO_GENERIC | %FileCheck %s -check-prefix=GENERIC_TO_GENERIC
49
+
48
50
var i1 = 1
49
51
var i2 = 2
50
52
var oi1 : Int ?
@@ -373,6 +375,14 @@ struct TestBoundGeneric1 {
373
375
// BOUND_GENERIC_1: Decl[InstanceVar]/CurrNominal: y[#[Int]#];
374
376
}
375
377
378
+ func whereConvertible< T> ( lhs: T , rhs: T ) where T: Collection {
379
+ _ = zip ( lhs, #^GENERIC_TO_GENERIC^#)
380
+ }
381
+ // GENERIC_TO_GENERIC: Begin completions
382
+ // GENERIC_TO_GENERIC: Decl[LocalVar]/Local: lhs[#Collection#]; name=lhs
383
+ // GENERIC_TO_GENERIC: Decl[LocalVar]/Local: rhs[#Collection#]; name=rhs
384
+ // GENERIC_TO_GENERIC: End completions
385
+
376
386
func emptyOverload( ) { }
377
387
func emptyOverload( foo foo: Int ) { }
378
388
emptyOverload ( foo: #^EMPTY_OVERLOAD_1 ^#)
You can’t perform that action at this time.
0 commit comments