@@ -630,21 +630,36 @@ enum class CodeCompletionDiagnosticSeverity : uint8_t {
630630 MAX_VALUE = Note
631631};
632632
633+ // / Reasons why a code completion item might not be recommended in a certain
634+ // / context.
635+ enum class NotRecommendedReason : uint8_t {
636+ None = 0 , // both contextual and context-free
637+ RedundantImport, // contextual
638+ RedundantImportIndirect, // contextual
639+ Deprecated, // context-free
640+ SoftDeprecated, // context-free
641+ InvalidAsyncContext, // contextual
642+ CrossActorReference, // contextual
643+ VariableUsedInOwnDefinition, // contextual
644+
645+ MAX_VALUE = VariableUsedInOwnDefinition
646+ };
647+
648+ enum class CodeCompletionResultKind : uint8_t {
649+ Declaration,
650+ Keyword,
651+ Pattern,
652+ Literal,
653+ BuiltinOperator,
654+
655+ MAX_VALUE = BuiltinOperator
656+ };
657+
633658// / A single code completion result.
634659class CodeCompletionResult {
635660 friend class CodeCompletionResultBuilder ;
636661
637662public:
638- enum class ResultKind : uint8_t {
639- Declaration,
640- Keyword,
641- Pattern,
642- Literal,
643- BuiltinOperator,
644-
645- MAX_VALUE = BuiltinOperator
646- };
647-
648663 // / Describes the relationship between the type of the completion results and
649664 // / the expected type at the code completion position.
650665 enum class ExpectedTypeRelation : uint8_t {
@@ -670,21 +685,9 @@ class CodeCompletionResult {
670685 MAX_VALUE = Identical
671686 };
672687
673- enum class NotRecommendedReason : uint8_t {
674- None = 0 ,
675- RedundantImport,
676- RedundantImportIndirect,
677- Deprecated,
678- SoftDeprecated,
679- InvalidAsyncContext,
680- CrossActorReference,
681- VariableUsedInOwnDefinition,
682-
683- MAX_VALUE = VariableUsedInOwnDefinition
684- };
685688
686689private:
687- ResultKind Kind : 3 ;
690+ CodeCompletionResultKind Kind : 3 ;
688691 unsigned AssociatedKind : 8 ;
689692 CodeCompletionOperatorKind KnownOperatorKind : 6 ;
690693 SemanticContextKind SemanticContext : 3 ;
@@ -710,7 +713,7 @@ class CodeCompletionResult {
710713 StringRef DiagnosticMessage;
711714
712715 // Assertions for limiting max values of enums.
713- static_assert (int (ResultKind ::MAX_VALUE) < 1 << 3 , " " );
716+ static_assert (int (CodeCompletionResultKind ::MAX_VALUE) < 1 << 3 , " " );
714717 static_assert (int (CodeCompletionOperatorKind::MAX_VALUE) < 1 << 6 , " " );
715718 static_assert (int (SemanticContextKind::MAX_VALUE) < 1 << 3 , " " );
716719 static_assert (int (NotRecommendedReason::MAX_VALUE) < 1 << 4 , " " );
@@ -721,7 +724,8 @@ class CodeCompletionResult {
721724 // / Constructs a \c Pattern, \c Keyword or \c BuiltinOperator result.
722725 // /
723726 // / \note The caller must ensure \c CodeCompletionString outlives this result.
724- CodeCompletionResult (ResultKind Kind, SemanticContextKind SemanticContext,
727+ CodeCompletionResult (CodeCompletionResultKind Kind,
728+ SemanticContextKind SemanticContext,
725729 CodeCompletionFlair Flair, unsigned NumBytesToErase,
726730 CodeCompletionString *CompletionString,
727731 ExpectedTypeRelation TypeDistance,
@@ -733,7 +737,8 @@ class CodeCompletionResult {
733737 NotRecommended(NotRecommendedReason::None),
734738 NumBytesToErase(NumBytesToErase), CompletionString(CompletionString),
735739 BriefDocComment(BriefDocComment), TypeDistance(TypeDistance) {
736- assert (Kind != ResultKind::Declaration && " use the other constructor" );
740+ assert (Kind != CodeCompletionResultKind::Declaration &&
741+ " use the other constructor" );
737742 assert (CompletionString);
738743 if (isOperator () && KnownOperatorKind == CodeCompletionOperatorKind::None)
739744 this ->KnownOperatorKind = getCodeCompletionOperatorKind (CompletionString);
@@ -753,7 +758,7 @@ class CodeCompletionResult {
753758 CodeCompletionString *CompletionString,
754759 ExpectedTypeRelation TypeDistance,
755760 StringRef BriefDocComment = StringRef())
756- : Kind(ResultKind ::Keyword),
761+ : Kind(CodeCompletionResultKind ::Keyword),
757762 KnownOperatorKind(CodeCompletionOperatorKind::None),
758763 SemanticContext(SemanticContext), Flair(Flair.toRaw()),
759764 NotRecommended(NotRecommendedReason::None),
@@ -773,7 +778,7 @@ class CodeCompletionResult {
773778 CodeCompletionFlair Flair, unsigned NumBytesToErase,
774779 CodeCompletionString *CompletionString,
775780 ExpectedTypeRelation TypeDistance)
776- : Kind(ResultKind ::Literal),
781+ : Kind(CodeCompletionResultKind ::Literal),
777782 KnownOperatorKind(CodeCompletionOperatorKind::None),
778783 SemanticContext(SemanticContext), Flair(Flair.toRaw()),
779784 NotRecommended(NotRecommendedReason::None),
@@ -794,11 +799,11 @@ class CodeCompletionResult {
794799 CodeCompletionFlair Flair, unsigned NumBytesToErase,
795800 CodeCompletionString *CompletionString,
796801 const Decl *AssociatedDecl, StringRef ModuleName,
797- CodeCompletionResult:: NotRecommendedReason NotRecReason,
802+ NotRecommendedReason NotRecReason,
798803 StringRef BriefDocComment,
799804 ArrayRef<StringRef> AssociatedUSRs,
800805 ExpectedTypeRelation TypeDistance)
801- : Kind(ResultKind ::Declaration),
806+ : Kind(CodeCompletionResultKind ::Declaration),
802807 KnownOperatorKind(CodeCompletionOperatorKind::None),
803808 SemanticContext(SemanticContext), Flair(Flair.toRaw()),
804809 NotRecommended(NotRecReason), NumBytesToErase(NumBytesToErase),
@@ -821,16 +826,15 @@ class CodeCompletionResult {
821826 CodeCompletionFlair Flair, unsigned NumBytesToErase,
822827 CodeCompletionString *CompletionString,
823828 CodeCompletionDeclKind DeclKind, bool IsSystem,
824- StringRef ModuleName,
825- CodeCompletionResult::NotRecommendedReason NotRecReason,
829+ StringRef ModuleName, NotRecommendedReason NotRecReason,
826830 CodeCompletionDiagnosticSeverity diagSeverity,
827831 StringRef DiagnosticMessage, StringRef BriefDocComment,
828832 ArrayRef<StringRef> AssociatedUSRs,
829833 ExpectedTypeRelation TypeDistance,
830834 CodeCompletionOperatorKind KnownOperatorKind)
831- : Kind(ResultKind ::Declaration), KnownOperatorKind(KnownOperatorKind ),
832- SemanticContext(SemanticContext ), Flair(Flair.toRaw() ),
833- NotRecommended(NotRecReason), IsSystem(IsSystem),
835+ : Kind(CodeCompletionResultKind ::Declaration),
836+ KnownOperatorKind(KnownOperatorKind ), SemanticContext(SemanticContext ),
837+ Flair(Flair.toRaw()), NotRecommended(NotRecReason), IsSystem(IsSystem),
834838 NumBytesToErase(NumBytesToErase), CompletionString(CompletionString),
835839 ModuleName(ModuleName), BriefDocComment(BriefDocComment),
836840 AssociatedUSRs(AssociatedUSRs), TypeDistance(TypeDistance),
@@ -847,26 +851,26 @@ class CodeCompletionResult {
847851 CodeCompletionResult *withFlair (CodeCompletionFlair newFlair,
848852 CodeCompletionResultSink &Sink);
849853
850- ResultKind getKind () const { return Kind; }
854+ CodeCompletionResultKind getKind () const { return Kind; }
851855
852856 CodeCompletionDeclKind getAssociatedDeclKind () const {
853- assert (getKind () == ResultKind ::Declaration);
857+ assert (getKind () == CodeCompletionResultKind ::Declaration);
854858 return static_cast <CodeCompletionDeclKind>(AssociatedKind);
855859 }
856860
857861 CodeCompletionLiteralKind getLiteralKind () const {
858- assert (getKind () == ResultKind ::Literal);
862+ assert (getKind () == CodeCompletionResultKind ::Literal);
859863 return static_cast <CodeCompletionLiteralKind>(AssociatedKind);
860864 }
861865
862866 CodeCompletionKeywordKind getKeywordKind () const {
863- assert (getKind () == ResultKind ::Keyword);
867+ assert (getKind () == CodeCompletionResultKind ::Keyword);
864868 return static_cast <CodeCompletionKeywordKind>(AssociatedKind);
865869 }
866870
867871 bool isOperator () const {
868- if (getKind () != ResultKind ::Declaration)
869- return getKind () == ResultKind ::BuiltinOperator;
872+ if (getKind () != CodeCompletionResultKind ::Declaration)
873+ return getKind () == CodeCompletionResultKind ::BuiltinOperator;
870874 switch (getAssociatedDeclKind ()) {
871875 case CodeCompletionDeclKind::PrefixOperatorFunction:
872876 case CodeCompletionDeclKind::PostfixOperatorFunction:
0 commit comments