|
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