@@ -59,6 +59,7 @@ using namespace swift;
5959using namespace ide ;
6060
6161using CommandWordsPairs = std::vector<std::pair<StringRef, StringRef>>;
62+ using NotRecommendedReason = CodeCompletionResult::NotRecommendedReason;
6263
6364enum CodeCompletionCommandKind {
6465 none,
@@ -819,7 +820,7 @@ void CodeCompletionResultBuilder::setAssociatedDecl(const Decl *D) {
819820 }
820821
821822 if (D->getAttrs ().getDeprecated (D->getASTContext ()))
822- setNotRecommended (CodeCompletionResult ::Deprecated);
823+ setNotRecommended (NotRecommendedReason ::Deprecated);
823824}
824825
825826namespace {
@@ -1294,8 +1295,7 @@ CodeCompletionResult *CodeCompletionResultBuilder::takeResult() {
12941295
12951296 return new (*Sink.Allocator ) CodeCompletionResult (
12961297 SemanticContext, NumBytesToErase, CCS, AssociatedDecl, ModuleName,
1297- /* NotRecommended=*/ IsNotRecommended, NotRecReason,
1298- copyString (*Sink.Allocator , BriefComment),
1298+ NotRecReason, copyString (*Sink.Allocator , BriefComment),
12991299 copyAssociatedUSRs (*Sink.Allocator , AssociatedDecl),
13001300 copyArray (*Sink.Allocator , CommentWords), ExpectedTypeRelation);
13011301 }
@@ -2090,8 +2090,7 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
20902090 Builder.addBaseName (MD->getNameStr ());
20912091 Builder.addTypeAnnotation (" Module" );
20922092 if (Pair.second )
2093- Builder.setNotRecommended (CodeCompletionResult::NotRecommendedReason::
2094- Redundant);
2093+ Builder.setNotRecommended (NotRecommendedReason::RedundantImport);
20952094 }
20962095 }
20972096
@@ -2115,9 +2114,7 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
21152114 }
21162115 }
21172116
2118- void addModuleName (
2119- ModuleDecl *MD,
2120- Optional<CodeCompletionResult::NotRecommendedReason> R = None) {
2117+ void addModuleName (ModuleDecl *MD, Optional<NotRecommendedReason> R = None) {
21212118
21222119 // Don't add underscored cross-import overlay modules.
21232120 if (MD->getDeclaringModuleIfCrossImportOverlay ())
@@ -2151,11 +2148,11 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
21512148 continue ;
21522149
21532150 auto MD = ModuleDecl::create (ModuleName, Ctx);
2154- Optional<CodeCompletionResult:: NotRecommendedReason> Reason = None;
2151+ Optional<NotRecommendedReason> Reason = None;
21552152
21562153 // Imported modules are not recommended.
21572154 if (ImportedModules.count (MD->getNameStr ()) != 0 )
2158- Reason = CodeCompletionResult:: NotRecommendedReason::Redundant ;
2155+ Reason = NotRecommendedReason::RedundantImport ;
21592156
21602157 addModuleName (MD, Reason);
21612158 }
@@ -2518,9 +2515,8 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
25182515 return Type ();
25192516 }
25202517
2521- void analyzeActorIsolation (
2522- const ValueDecl *VD, Type T, bool &implicitlyAsync,
2523- Optional<CodeCompletionResult::NotRecommendedReason> &NotRecommended) {
2518+ void analyzeActorIsolation (const ValueDecl *VD, Type T, bool &implicitlyAsync,
2519+ Optional<NotRecommendedReason> &NotRecommended) {
25242520 auto isolation = getActorIsolation (const_cast <ValueDecl *>(VD));
25252521
25262522 switch (isolation.getKind ()) {
@@ -2544,19 +2540,19 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
25442540 if (implicitlyAsync && T) {
25452541 if (isa<VarDecl>(VD)) {
25462542 if (!isSendableType (CurrDeclContext, T)) {
2547- NotRecommended = CodeCompletionResult ::CrossActorReference;
2543+ NotRecommended = NotRecommendedReason ::CrossActorReference;
25482544 }
25492545 } else {
25502546 assert (isa<FuncDecl>(VD) || isa<SubscriptDecl>(VD));
25512547 // Check if the result and the param types are all 'Sendable'.
25522548 auto *AFT = T->castTo <AnyFunctionType>();
25532549 if (!isSendableType (CurrDeclContext, AFT->getResult ())) {
2554- NotRecommended = CodeCompletionResult ::CrossActorReference;
2550+ NotRecommended = NotRecommendedReason ::CrossActorReference;
25552551 } else {
25562552 for (auto ¶m : AFT->getParams ()) {
25572553 Type paramType = param.getPlainType ();
25582554 if (!isSendableType (CurrDeclContext, paramType)) {
2559- NotRecommended = CodeCompletionResult ::CrossActorReference;
2555+ NotRecommended = NotRecommendedReason ::CrossActorReference;
25602556 break ;
25612557 }
25622558 }
@@ -2577,18 +2573,18 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
25772573 if (VD->hasInterfaceType ())
25782574 VarType = getTypeOfMember (VD, dynamicLookupInfo);
25792575
2580- Optional<CodeCompletionResult:: NotRecommendedReason> NotRecommended;
2576+ Optional<NotRecommendedReason> NotRecommended;
25812577 // "not recommended" in its own getter.
25822578 if (Kind == LookupKind::ValueInDeclContext) {
25832579 if (auto accessor = dyn_cast<AccessorDecl>(CurrDeclContext)) {
25842580 if (accessor->getStorage () == VD && accessor->isGetter ())
2585- NotRecommended = CodeCompletionResult::NoReason ;
2581+ NotRecommended = NotRecommendedReason::VariableUsedInOwnDefinition ;
25862582 }
25872583 }
25882584 bool implicitlyAsync = false ;
25892585 analyzeActorIsolation (VD, VarType, implicitlyAsync, NotRecommended);
25902586 if (!NotRecommended && implicitlyAsync && !CanCurrDeclContextHandleAsync) {
2591- NotRecommended = CodeCompletionResult::InvalidContext ;
2587+ NotRecommended = NotRecommendedReason::InvalidAsyncContext ;
25922588 }
25932589
25942590 CommandWordsPairs Pairs;
@@ -2929,8 +2925,7 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
29292925 addTypeAnnotation (Builder, AFT->getResult (), genericSig);
29302926
29312927 if (AFT->isAsync () && !CanCurrDeclContextHandleAsync) {
2932- Builder.setNotRecommended (
2933- CodeCompletionResult::NotRecommendedReason::InvalidContext);
2928+ Builder.setNotRecommended (NotRecommendedReason::InvalidAsyncContext);
29342929 }
29352930 };
29362931
@@ -3039,14 +3034,14 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
30393034 if (AFT && !IsImplicitlyCurriedInstanceMethod)
30403035 trivialTrailingClosure = hasTrivialTrailingClosure (FD, AFT);
30413036
3042- Optional<CodeCompletionResult:: NotRecommendedReason> NotRecommended;
3037+ Optional<NotRecommendedReason> NotRecommended;
30433038 bool implictlyAsync = false ;
30443039 analyzeActorIsolation (FD, AFT, implictlyAsync, NotRecommended);
30453040
30463041 if (!NotRecommended && !IsImplicitlyCurriedInstanceMethod &&
30473042 ((AFT && AFT->isAsync ()) || implictlyAsync) &&
30483043 !CanCurrDeclContextHandleAsync) {
3049- NotRecommended = CodeCompletionResult::InvalidContext ;
3044+ NotRecommended = NotRecommendedReason::InvalidAsyncContext ;
30503045 }
30513046
30523047 // Add the method, possibly including any default arguments.
@@ -3244,8 +3239,7 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
32443239 }
32453240
32463241 if (ConstructorType->isAsync () && !CanCurrDeclContextHandleAsync) {
3247- Builder.setNotRecommended (
3248- CodeCompletionResult::NotRecommendedReason::InvalidContext);
3242+ Builder.setNotRecommended (NotRecommendedReason::InvalidAsyncContext);
32493243 }
32503244 };
32513245
@@ -3291,12 +3285,12 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
32913285 if (!subscriptType)
32923286 return ;
32933287
3294- Optional<CodeCompletionResult:: NotRecommendedReason> NotRecommended;
3288+ Optional<NotRecommendedReason> NotRecommended;
32953289 bool implictlyAsync = false ;
32963290 analyzeActorIsolation (SD, subscriptType, implictlyAsync, NotRecommended);
32973291
32983292 if (!NotRecommended && implictlyAsync && !CanCurrDeclContextHandleAsync) {
3299- NotRecommended = CodeCompletionResult::InvalidContext ;
3293+ NotRecommended = NotRecommendedReason::InvalidAsyncContext ;
33003294 }
33013295
33023296 CommandWordsPairs Pairs;
0 commit comments