@@ -42,6 +42,8 @@ bool ExprTypeCheckCompletionCallback::Result::operator==(
4242 return IsImplicitSingleExpressionReturn ==
4343 Other.IsImplicitSingleExpressionReturn &&
4444 IsInAsyncContext == Other.IsInAsyncContext &&
45+ nullableTypesEqual (UnresolvedMemberBaseType,
46+ Other.UnresolvedMemberBaseType ) &&
4547 solutionSpecificVarTypesEqual (SolutionSpecificVarTypes,
4648 Other.SolutionSpecificVarTypes );
4749}
@@ -58,9 +60,13 @@ void ExprTypeCheckCompletionCallback::addExpectedType(Type ExpectedType) {
5860
5961void ExprTypeCheckCompletionCallback::addResult (
6062 bool IsImplicitSingleExpressionReturn, bool IsInAsyncContext,
63+ Type UnresolvedMemberBaseType,
6164 llvm::SmallDenseMap<const VarDecl *, Type> SolutionSpecificVarTypes) {
65+ if (!AddUnresolvedMemberCompletions) {
66+ UnresolvedMemberBaseType = Type ();
67+ }
6268 Result NewResult = {IsImplicitSingleExpressionReturn, IsInAsyncContext,
63- SolutionSpecificVarTypes};
69+ UnresolvedMemberBaseType, SolutionSpecificVarTypes};
6470 if (llvm::is_contained (Results, NewResult)) {
6571 return ;
6672 }
@@ -80,10 +86,12 @@ void ExprTypeCheckCompletionCallback::sawSolutionImpl(
8086 llvm::SmallDenseMap<const VarDecl *, Type> SolutionSpecificVarTypes;
8187 getSolutionSpecificVarTypes (S, SolutionSpecificVarTypes);
8288
83- addResult (ImplicitReturn, IsAsync, SolutionSpecificVarTypes);
89+ addResult (ImplicitReturn, IsAsync, ExpectedTy, SolutionSpecificVarTypes);
8490 addExpectedType (ExpectedTy);
8591
8692 if (auto PatternMatchType = getPatternMatchType (S, CompletionExpr)) {
93+ addResult (ImplicitReturn, IsAsync, PatternMatchType,
94+ SolutionSpecificVarTypes);
8795 addExpectedType (PatternMatchType);
8896 }
8997}
@@ -104,6 +112,9 @@ void ExprTypeCheckCompletionCallback::deliverResults(
104112
105113 Lookup.getValueCompletionsInDeclContext (CCLoc);
106114 Lookup.getSelfTypeCompletionInDeclContext (CCLoc, /* isForDeclResult=*/ false );
115+ if (Result.UnresolvedMemberBaseType ) {
116+ Lookup.getUnresolvedMemberCompletions (Result.UnresolvedMemberBaseType );
117+ }
107118 }
108119
109120 deliverCompletionResults (CompletionCtx, Lookup, DC, Consumer);
0 commit comments