@@ -33,12 +33,14 @@ class Decl;
33
33
class DeclContext ;
34
34
class FrontendOptions ;
35
35
class ModuleDecl ;
36
+ class SourceFile ;
36
37
37
38
namespace ide {
38
39
39
40
class CodeCompletionCache ;
40
41
class CodeCompletionContext ;
41
42
class CodeCompletionResultBuilder ;
43
+ struct CodeCompletionResultSink ;
42
44
struct RequestedCachedModule ;
43
45
44
46
// / A routine to remove code completion tokens from code completion
@@ -424,6 +426,13 @@ enum class CodeCompletionFlairBit: uint8_t {
424
426
425
427
// / E.g. type decl introducer ('enum', 'class', etc.) in a function body.
426
428
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 ,
427
436
};
428
437
429
438
using CodeCompletionFlair = OptionSet<CodeCompletionFlairBit>;
@@ -752,6 +761,12 @@ class CodeCompletionResult {
752
761
getOperatorKind () != CodeCompletionOperatorKind::None);
753
762
}
754
763
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
+
755
770
ResultKind getKind () const { return static_cast <ResultKind>(Kind); }
756
771
757
772
CodeCompletionDeclKind getAssociatedDeclKind () const {
@@ -807,6 +822,11 @@ class CodeCompletionResult {
807
822
return static_cast <CodeCompletionFlair>(Flair);
808
823
}
809
824
825
+ // / Modify "flair" of this result *in place*.
826
+ void setFlair (CodeCompletionFlair flair) {
827
+ Flair = unsigned (flair.toRaw ());
828
+ }
829
+
810
830
bool isNotRecommended () const {
811
831
return getNotRecommendedReason () != NotRecommendedReason::None;
812
832
}
@@ -961,7 +981,7 @@ class CodeCompletionConsumer {
961
981
virtual void
962
982
handleResultsAndModules (CodeCompletionContext &context,
963
983
ArrayRef<RequestedCachedModule> requestedModules,
964
- DeclContext *DCForModules ) = 0 ;
984
+ DeclContext *DC ) = 0 ;
965
985
};
966
986
967
987
// / A simplified code completion consumer interface that clients can use to get
@@ -1014,14 +1034,15 @@ void lookupCodeCompletionResultsFromModule(CodeCompletionResultSink &targetSink,
1014
1034
const ModuleDecl *module ,
1015
1035
ArrayRef<std::string> accessPath,
1016
1036
bool needLeadingDot,
1017
- const DeclContext *currDeclContext );
1037
+ const SourceFile *SF );
1018
1038
1019
1039
// / 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);
1025
1046
1026
1047
} // end namespace ide
1027
1048
} // end namespace swift
0 commit comments