@@ -103,7 +103,8 @@ std::string swift::ide::removeCodeCompletionTokens(
103103
104104namespace {
105105
106- class CodeCompletionCallbacksImpl : public IDEInspectionCallbacks {
106+ class CodeCompletionCallbacksImpl : public CodeCompletionCallbacks ,
107+ public DoneParsingCallback {
107108 CodeCompletionContext &CompletionContext;
108109 CodeCompletionConsumer &Consumer;
109110 CodeCompletionExpr *CodeCompleteTokenExpr = nullptr ;
@@ -123,7 +124,7 @@ class CodeCompletionCallbacksImpl : public IDEInspectionCallbacks {
123124 // / In situations when \c SyntaxKind hints or determines
124125 // / completions, i.e. a precedence group attribute, this
125126 // / can be set and used to control the code completion scenario.
126- IDEInspectionCallbacks ::PrecedenceGroupCompletionKind SyntxKind;
127+ CodeCompletionCallbacks ::PrecedenceGroupCompletionKind SyntxKind;
127128
128129 int AttrParamIndex;
129130 bool IsInSil = false ;
@@ -233,9 +234,8 @@ class CodeCompletionCallbacksImpl : public IDEInspectionCallbacks {
233234 CodeCompletionCallbacksImpl (Parser &P,
234235 CodeCompletionContext &CompletionContext,
235236 CodeCompletionConsumer &Consumer)
236- : IDEInspectionCallbacks(P), CompletionContext(CompletionContext),
237- Consumer (Consumer) {
238- }
237+ : CodeCompletionCallbacks(P), DoneParsingCallback(),
238+ CompletionContext (CompletionContext), Consumer(Consumer) {}
239239
240240 void setAttrTargetDeclKind (Optional<DeclKind> DK) override {
241241 if (DK == DeclKind::PatternBinding)
@@ -273,7 +273,7 @@ class CodeCompletionCallbacksImpl : public IDEInspectionCallbacks {
273273 void completeDeclAttrParam (DeclAttrKind DK, int Index) override ;
274274 void completeEffectsSpecifier (bool hasAsync, bool hasThrows) override ;
275275 void completeInPrecedenceGroup (
276- IDEInspectionCallbacks ::PrecedenceGroupCompletionKind SK) override ;
276+ CodeCompletionCallbacks ::PrecedenceGroupCompletionKind SK) override ;
277277 void completeNominalMemberBeginning (
278278 SmallVectorImpl<StringRef> &Keywords, SourceLoc introducerLoc) override ;
279279 void completeAccessorBeginning (CodeCompletionExpr *E) override ;
@@ -484,7 +484,7 @@ void CodeCompletionCallbacksImpl::completeDeclAttrBeginning(
484484}
485485
486486void CodeCompletionCallbacksImpl::completeInPrecedenceGroup (
487- IDEInspectionCallbacks ::PrecedenceGroupCompletionKind SK) {
487+ CodeCompletionCallbacks ::PrecedenceGroupCompletionKind SK) {
488488 assert (P.Tok .is (tok::code_complete));
489489
490490 SyntxKind = SK;
@@ -1480,7 +1480,7 @@ bool CodeCompletionCallbacksImpl::trySolverCompletion(bool MaybeFuncBody) {
14801480 case CompletionKind::KeyPathExprSwift: {
14811481 assert (CurDeclContext);
14821482
1483- // IDEInspectionCallbacks ::completeExprKeyPath takes a \c KeyPathExpr,
1483+ // CodeCompletionCallbacks ::completeExprKeyPath takes a \c KeyPathExpr,
14841484 // so we can safely cast the \c ParsedExpr back to a \c KeyPathExpr.
14851485 auto KeyPath = cast<KeyPathExpr>(ParsedExpr);
14861486 KeyPathTypeCheckCompletionCallback Lookup (KeyPath);
@@ -2040,8 +2040,10 @@ class CodeCompletionCallbacksFactoryImpl
20402040 CodeCompletionConsumer &Consumer)
20412041 : CompletionContext(CompletionContext), Consumer(Consumer) {}
20422042
2043- IDEInspectionCallbacks *createIDEInspectionCallbacks (Parser &P) override {
2044- return new CodeCompletionCallbacksImpl (P, CompletionContext, Consumer);
2043+ Callbacks createCallbacks (Parser &P) override {
2044+ auto callbacks = std::make_shared<CodeCompletionCallbacksImpl>(
2045+ P, CompletionContext, Consumer);
2046+ return {callbacks, callbacks};
20452047 }
20462048};
20472049} // end anonymous namespace
0 commit comments