@@ -59,6 +59,7 @@ using namespace swift;
59
59
using namespace ide ;
60
60
61
61
using CommandWordsPairs = std::vector<std::pair<StringRef, StringRef>>;
62
+ using NotRecommendedReason = CodeCompletionResult::NotRecommendedReason;
62
63
63
64
enum CodeCompletionCommandKind {
64
65
none,
@@ -819,7 +820,7 @@ void CodeCompletionResultBuilder::setAssociatedDecl(const Decl *D) {
819
820
}
820
821
821
822
if (D->getAttrs ().getDeprecated (D->getASTContext ()))
822
- setNotRecommended (CodeCompletionResult ::Deprecated);
823
+ setNotRecommended (NotRecommendedReason ::Deprecated);
823
824
}
824
825
825
826
namespace {
@@ -1294,8 +1295,7 @@ CodeCompletionResult *CodeCompletionResultBuilder::takeResult() {
1294
1295
1295
1296
return new (*Sink.Allocator ) CodeCompletionResult (
1296
1297
SemanticContext, NumBytesToErase, CCS, AssociatedDecl, ModuleName,
1297
- /* NotRecommended=*/ IsNotRecommended, NotRecReason,
1298
- copyString (*Sink.Allocator , BriefComment),
1298
+ NotRecReason, copyString (*Sink.Allocator , BriefComment),
1299
1299
copyAssociatedUSRs (*Sink.Allocator , AssociatedDecl),
1300
1300
copyArray (*Sink.Allocator , CommentWords), ExpectedTypeRelation);
1301
1301
}
@@ -2090,8 +2090,7 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
2090
2090
Builder.addBaseName (MD->getNameStr ());
2091
2091
Builder.addTypeAnnotation (" Module" );
2092
2092
if (Pair.second )
2093
- Builder.setNotRecommended (CodeCompletionResult::NotRecommendedReason::
2094
- Redundant);
2093
+ Builder.setNotRecommended (NotRecommendedReason::RedundantImport);
2095
2094
}
2096
2095
}
2097
2096
@@ -2115,9 +2114,7 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
2115
2114
}
2116
2115
}
2117
2116
2118
- void addModuleName (
2119
- ModuleDecl *MD,
2120
- Optional<CodeCompletionResult::NotRecommendedReason> R = None) {
2117
+ void addModuleName (ModuleDecl *MD, Optional<NotRecommendedReason> R = None) {
2121
2118
2122
2119
// Don't add underscored cross-import overlay modules.
2123
2120
if (MD->getDeclaringModuleIfCrossImportOverlay ())
@@ -2151,11 +2148,11 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
2151
2148
continue ;
2152
2149
2153
2150
auto MD = ModuleDecl::create (ModuleName, Ctx);
2154
- Optional<CodeCompletionResult:: NotRecommendedReason> Reason = None;
2151
+ Optional<NotRecommendedReason> Reason = None;
2155
2152
2156
2153
// Imported modules are not recommended.
2157
2154
if (ImportedModules.count (MD->getNameStr ()) != 0 )
2158
- Reason = CodeCompletionResult:: NotRecommendedReason::Redundant ;
2155
+ Reason = NotRecommendedReason::RedundantImport ;
2159
2156
2160
2157
addModuleName (MD, Reason);
2161
2158
}
@@ -2518,9 +2515,8 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
2518
2515
return Type ();
2519
2516
}
2520
2517
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) {
2524
2520
auto isolation = getActorIsolation (const_cast <ValueDecl *>(VD));
2525
2521
2526
2522
switch (isolation.getKind ()) {
@@ -2544,19 +2540,19 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
2544
2540
if (implicitlyAsync && T) {
2545
2541
if (isa<VarDecl>(VD)) {
2546
2542
if (!isSendableType (CurrDeclContext, T)) {
2547
- NotRecommended = CodeCompletionResult ::CrossActorReference;
2543
+ NotRecommended = NotRecommendedReason ::CrossActorReference;
2548
2544
}
2549
2545
} else {
2550
2546
assert (isa<FuncDecl>(VD) || isa<SubscriptDecl>(VD));
2551
2547
// Check if the result and the param types are all 'Sendable'.
2552
2548
auto *AFT = T->castTo <AnyFunctionType>();
2553
2549
if (!isSendableType (CurrDeclContext, AFT->getResult ())) {
2554
- NotRecommended = CodeCompletionResult ::CrossActorReference;
2550
+ NotRecommended = NotRecommendedReason ::CrossActorReference;
2555
2551
} else {
2556
2552
for (auto ¶m : AFT->getParams ()) {
2557
2553
Type paramType = param.getPlainType ();
2558
2554
if (!isSendableType (CurrDeclContext, paramType)) {
2559
- NotRecommended = CodeCompletionResult ::CrossActorReference;
2555
+ NotRecommended = NotRecommendedReason ::CrossActorReference;
2560
2556
break ;
2561
2557
}
2562
2558
}
@@ -2577,18 +2573,18 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
2577
2573
if (VD->hasInterfaceType ())
2578
2574
VarType = getTypeOfMember (VD, dynamicLookupInfo);
2579
2575
2580
- Optional<CodeCompletionResult:: NotRecommendedReason> NotRecommended;
2576
+ Optional<NotRecommendedReason> NotRecommended;
2581
2577
// "not recommended" in its own getter.
2582
2578
if (Kind == LookupKind::ValueInDeclContext) {
2583
2579
if (auto accessor = dyn_cast<AccessorDecl>(CurrDeclContext)) {
2584
2580
if (accessor->getStorage () == VD && accessor->isGetter ())
2585
- NotRecommended = CodeCompletionResult::NoReason ;
2581
+ NotRecommended = NotRecommendedReason::VariableUsedInOwnDefinition ;
2586
2582
}
2587
2583
}
2588
2584
bool implicitlyAsync = false ;
2589
2585
analyzeActorIsolation (VD, VarType, implicitlyAsync, NotRecommended);
2590
2586
if (!NotRecommended && implicitlyAsync && !CanCurrDeclContextHandleAsync) {
2591
- NotRecommended = CodeCompletionResult::InvalidContext ;
2587
+ NotRecommended = NotRecommendedReason::InvalidAsyncContext ;
2592
2588
}
2593
2589
2594
2590
CommandWordsPairs Pairs;
@@ -2929,8 +2925,7 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
2929
2925
addTypeAnnotation (Builder, AFT->getResult (), genericSig);
2930
2926
2931
2927
if (AFT->isAsync () && !CanCurrDeclContextHandleAsync) {
2932
- Builder.setNotRecommended (
2933
- CodeCompletionResult::NotRecommendedReason::InvalidContext);
2928
+ Builder.setNotRecommended (NotRecommendedReason::InvalidAsyncContext);
2934
2929
}
2935
2930
};
2936
2931
@@ -3039,14 +3034,14 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
3039
3034
if (AFT && !IsImplicitlyCurriedInstanceMethod)
3040
3035
trivialTrailingClosure = hasTrivialTrailingClosure (FD, AFT);
3041
3036
3042
- Optional<CodeCompletionResult:: NotRecommendedReason> NotRecommended;
3037
+ Optional<NotRecommendedReason> NotRecommended;
3043
3038
bool implictlyAsync = false ;
3044
3039
analyzeActorIsolation (FD, AFT, implictlyAsync, NotRecommended);
3045
3040
3046
3041
if (!NotRecommended && !IsImplicitlyCurriedInstanceMethod &&
3047
3042
((AFT && AFT->isAsync ()) || implictlyAsync) &&
3048
3043
!CanCurrDeclContextHandleAsync) {
3049
- NotRecommended = CodeCompletionResult::InvalidContext ;
3044
+ NotRecommended = NotRecommendedReason::InvalidAsyncContext ;
3050
3045
}
3051
3046
3052
3047
// Add the method, possibly including any default arguments.
@@ -3244,8 +3239,7 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
3244
3239
}
3245
3240
3246
3241
if (ConstructorType->isAsync () && !CanCurrDeclContextHandleAsync) {
3247
- Builder.setNotRecommended (
3248
- CodeCompletionResult::NotRecommendedReason::InvalidContext);
3242
+ Builder.setNotRecommended (NotRecommendedReason::InvalidAsyncContext);
3249
3243
}
3250
3244
};
3251
3245
@@ -3291,12 +3285,12 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
3291
3285
if (!subscriptType)
3292
3286
return ;
3293
3287
3294
- Optional<CodeCompletionResult:: NotRecommendedReason> NotRecommended;
3288
+ Optional<NotRecommendedReason> NotRecommended;
3295
3289
bool implictlyAsync = false ;
3296
3290
analyzeActorIsolation (SD, subscriptType, implictlyAsync, NotRecommended);
3297
3291
3298
3292
if (!NotRecommended && implictlyAsync && !CanCurrDeclContextHandleAsync) {
3299
- NotRecommended = CodeCompletionResult::InvalidContext ;
3293
+ NotRecommended = NotRecommendedReason::InvalidAsyncContext ;
3300
3294
}
3301
3295
3302
3296
CommandWordsPairs Pairs;
0 commit comments