@@ -42,6 +42,8 @@ bool ExprTypeCheckCompletionCallback::Result::operator==(
42
42
return IsImplicitSingleExpressionReturn ==
43
43
Other.IsImplicitSingleExpressionReturn &&
44
44
IsInAsyncContext == Other.IsInAsyncContext &&
45
+ nullableTypesEqual (UnresolvedMemberBaseType,
46
+ Other.UnresolvedMemberBaseType ) &&
45
47
solutionSpecificVarTypesEqual (SolutionSpecificVarTypes,
46
48
Other.SolutionSpecificVarTypes );
47
49
}
@@ -58,9 +60,13 @@ void ExprTypeCheckCompletionCallback::addExpectedType(Type ExpectedType) {
58
60
59
61
void ExprTypeCheckCompletionCallback::addResult (
60
62
bool IsImplicitSingleExpressionReturn, bool IsInAsyncContext,
63
+ Type UnresolvedMemberBaseType,
61
64
llvm::SmallDenseMap<const VarDecl *, Type> SolutionSpecificVarTypes) {
65
+ if (!AddUnresolvedMemberCompletions) {
66
+ UnresolvedMemberBaseType = Type ();
67
+ }
62
68
Result NewResult = {IsImplicitSingleExpressionReturn, IsInAsyncContext,
63
- SolutionSpecificVarTypes};
69
+ UnresolvedMemberBaseType, SolutionSpecificVarTypes};
64
70
if (llvm::is_contained (Results, NewResult)) {
65
71
return ;
66
72
}
@@ -80,10 +86,12 @@ void ExprTypeCheckCompletionCallback::sawSolutionImpl(
80
86
llvm::SmallDenseMap<const VarDecl *, Type> SolutionSpecificVarTypes;
81
87
getSolutionSpecificVarTypes (S, SolutionSpecificVarTypes);
82
88
83
- addResult (ImplicitReturn, IsAsync, SolutionSpecificVarTypes);
89
+ addResult (ImplicitReturn, IsAsync, ExpectedTy, SolutionSpecificVarTypes);
84
90
addExpectedType (ExpectedTy);
85
91
86
92
if (auto PatternMatchType = getPatternMatchType (S, CompletionExpr)) {
93
+ addResult (ImplicitReturn, IsAsync, PatternMatchType,
94
+ SolutionSpecificVarTypes);
87
95
addExpectedType (PatternMatchType);
88
96
}
89
97
}
@@ -104,6 +112,9 @@ void ExprTypeCheckCompletionCallback::deliverResults(
104
112
105
113
Lookup.getValueCompletionsInDeclContext (CCLoc);
106
114
Lookup.getSelfTypeCompletionInDeclContext (CCLoc, /* isForDeclResult=*/ false );
115
+ if (Result.UnresolvedMemberBaseType ) {
116
+ Lookup.getUnresolvedMemberCompletions (Result.UnresolvedMemberBaseType );
117
+ }
107
118
}
108
119
109
120
deliverCompletionResults (CompletionCtx, Lookup, DC, Consumer);
0 commit comments