@@ -33,12 +33,14 @@ class Decl;
3333class DeclContext ;
3434class FrontendOptions ;
3535class ModuleDecl ;
36+ class SourceFile ;
3637
3738namespace ide {
3839
3940class CodeCompletionCache ;
4041class CodeCompletionContext ;
4142class CodeCompletionResultBuilder ;
43+ struct CodeCompletionResultSink ;
4244struct RequestedCachedModule ;
4345
4446// / A routine to remove code completion tokens from code completion
@@ -424,6 +426,13 @@ enum class CodeCompletionFlairBit: uint8_t {
424426
425427 // / E.g. type decl introducer ('enum', 'class', etc.) in a function body.
426428 RareKeywordAtCurrentPosition = 1 << 4 ,
429+
430+ // / E.g. protocol names at an expression position.
431+ RareTypeAtCurrentPosition = 1 << 5 ,
432+
433+ // / E.g. referencing a type, function, etc… at top level position in a non
434+ // / script/main.swift file
435+ ExpressionAtNonScriptOrMainFileScope = 1 << 6 ,
427436};
428437
429438using CodeCompletionFlair = OptionSet<CodeCompletionFlairBit>;
@@ -752,6 +761,12 @@ class CodeCompletionResult {
752761 getOperatorKind () != CodeCompletionOperatorKind::None);
753762 }
754763
764+ // / Copy this result to \p Sink with \p newFlair . Note that this does NOT
765+ // / copy the value of \c CompletionString , \c AssociatedUSRs etc. it only
766+ // / copies the pointers to them.
767+ CodeCompletionResult *withFlair (CodeCompletionFlair newFlair,
768+ CodeCompletionResultSink &Sink);
769+
755770 ResultKind getKind () const { return static_cast <ResultKind>(Kind); }
756771
757772 CodeCompletionDeclKind getAssociatedDeclKind () const {
@@ -807,6 +822,11 @@ class CodeCompletionResult {
807822 return static_cast <CodeCompletionFlair>(Flair);
808823 }
809824
825+ // / Modify "flair" of this result *in place*.
826+ void setFlair (CodeCompletionFlair flair) {
827+ Flair = unsigned (flair.toRaw ());
828+ }
829+
810830 bool isNotRecommended () const {
811831 return getNotRecommendedReason () != NotRecommendedReason::None;
812832 }
@@ -961,7 +981,7 @@ class CodeCompletionConsumer {
961981 virtual void
962982 handleResultsAndModules (CodeCompletionContext &context,
963983 ArrayRef<RequestedCachedModule> requestedModules,
964- DeclContext *DCForModules ) = 0 ;
984+ DeclContext *DC ) = 0 ;
965985};
966986
967987// / A simplified code completion consumer interface that clients can use to get
@@ -1014,14 +1034,15 @@ void lookupCodeCompletionResultsFromModule(CodeCompletionResultSink &targetSink,
10141034 const ModuleDecl *module ,
10151035 ArrayRef<std::string> accessPath,
10161036 bool needLeadingDot,
1017- const DeclContext *currDeclContext );
1037+ const SourceFile *SF );
10181038
10191039// / Copy code completion results from \p sourceSink to \p targetSink, possibly
1020- // / restricting by \p onlyTypes.
1021- void copyCodeCompletionResults (CodeCompletionResultSink &targetSink,
1022- CodeCompletionResultSink &sourceSink,
1023- bool onlyTypes,
1024- bool onlyPrecedenceGroups);
1040+ // / restricting by \p onlyTypes. Returns copied results in \p targetSink.
1041+ MutableArrayRef<CodeCompletionResult *>
1042+ copyCodeCompletionResults (CodeCompletionResultSink &targetSink,
1043+ CodeCompletionResultSink &sourceSink,
1044+ bool onlyTypes,
1045+ bool onlyPrecedenceGroups);
10251046
10261047} // end namespace ide
10271048} // end namespace swift
0 commit comments