|
14 | 14 | #include "CodeCompletionDiagnostics.h" |
15 | 15 | #include "CodeCompletionResultBuilder.h" |
16 | 16 | #include "ExprContextAnalysis.h" |
| 17 | +#include "ReadyForTypeCheckingCallback.h" |
17 | 18 | #include "swift/AST/ASTPrinter.h" |
18 | 19 | #include "swift/AST/ASTWalker.h" |
19 | 20 | #include "swift/AST/Comment.h" |
@@ -105,7 +106,7 @@ std::string swift::ide::removeCodeCompletionTokens( |
105 | 106 | namespace { |
106 | 107 |
|
107 | 108 | class CodeCompletionCallbacksImpl : public CodeCompletionCallbacks, |
108 | | - public DoneParsingCallback { |
| 109 | + public ReadyForTypeCheckingCallback { |
109 | 110 | CodeCompletionContext &CompletionContext; |
110 | 111 | CodeCompletionConsumer &Consumer; |
111 | 112 | CodeCompletionExpr *CodeCompleteTokenExpr = nullptr; |
@@ -175,25 +176,6 @@ class CodeCompletionCallbacksImpl : public CodeCompletionCallbacks, |
175 | 176 |
|
176 | 177 | /// \returns true on success, false on failure. |
177 | 178 | bool typecheckParsedType() { |
178 | | - // If the type appeared inside an extension, make sure that extension has |
179 | | - // been bound. |
180 | | - auto SF = CurDeclContext->getParentSourceFile(); |
181 | | - auto visitTopLevelDecl = [&](Decl *D) { |
182 | | - if (auto ED = dyn_cast<ExtensionDecl>(D)) { |
183 | | - if (ED->getSourceRange().contains(ParsedTypeLoc.getLoc())) { |
184 | | - ED->computeExtendedNominal(); |
185 | | - } |
186 | | - } |
187 | | - }; |
188 | | - for (auto item : SF->getTopLevelItems()) { |
189 | | - if (auto D = item.dyn_cast<Decl *>()) { |
190 | | - visitTopLevelDecl(D); |
191 | | - } |
192 | | - } |
193 | | - for (auto *D : SF->getHoistedDecls()) { |
194 | | - visitTopLevelDecl(D); |
195 | | - } |
196 | | - |
197 | 179 | assert(ParsedTypeLoc.getTypeRepr() && "should have a TypeRepr"); |
198 | 180 | if (ParsedTypeLoc.wasValidated() && !ParsedTypeLoc.isError()) { |
199 | 181 | return true; |
@@ -233,8 +215,8 @@ class CodeCompletionCallbacksImpl : public CodeCompletionCallbacks, |
233 | 215 | CodeCompletionCallbacksImpl(Parser &P, |
234 | 216 | CodeCompletionContext &CompletionContext, |
235 | 217 | CodeCompletionConsumer &Consumer) |
236 | | - : CodeCompletionCallbacks(P), DoneParsingCallback(), |
237 | | - CompletionContext(CompletionContext), Consumer(Consumer) {} |
| 218 | + : CodeCompletionCallbacks(P), CompletionContext(CompletionContext), |
| 219 | + Consumer(Consumer) {} |
238 | 220 |
|
239 | 221 | void setAttrTargetDeclKind(std::optional<DeclKind> DK) override { |
240 | 222 | if (DK == DeclKind::PatternBinding) |
@@ -309,7 +291,7 @@ class CodeCompletionCallbacksImpl : public CodeCompletionCallbacks, |
309 | 291 | void completeTypeAttrInheritanceBeginning() override; |
310 | 292 | void completeOptionalBinding() override; |
311 | 293 |
|
312 | | - void doneParsing(SourceFile *SrcFile) override; |
| 294 | + void readyForTypeChecking(SourceFile *SrcFile) override; |
313 | 295 |
|
314 | 296 | private: |
315 | 297 | void addKeywords(CodeCompletionResultSink &Sink, bool MaybeFuncBody); |
@@ -1641,7 +1623,7 @@ void CodeCompletionCallbacksImpl::afterPoundCompletion(SourceLoc CompletionLoc, |
1641 | 1623 | Consumer.handleResults(CompletionContext); |
1642 | 1624 | } |
1643 | 1625 |
|
1644 | | -void CodeCompletionCallbacksImpl::doneParsing(SourceFile *SrcFile) { |
| 1626 | +void CodeCompletionCallbacksImpl::readyForTypeChecking(SourceFile *SrcFile) { |
1645 | 1627 | CompletionContext.CodeCompletionKind = Kind; |
1646 | 1628 |
|
1647 | 1629 | if (Kind == CompletionKind::None) { |
|
0 commit comments