@@ -263,6 +263,8 @@ class CodeCompletionCallbacksImpl : public CodeCompletionCallbacks,
263263 void completeExprKeyPath (KeyPathExpr *KPE, SourceLoc DotLoc) override ;
264264
265265 void completeTypeDeclResultBeginning () override ;
266+ void completeTypeBeginning () override ;
267+ void completeTypeSimpleOrComposition () override ;
266268 void completeTypeSimpleBeginning () override ;
267269 void completeTypeSimpleWithDot (TypeRepr *TR) override ;
268270 void completeTypeSimpleWithoutDot (TypeRepr *TR) override ;
@@ -462,6 +464,16 @@ void CodeCompletionCallbacksImpl::completeTypeDeclResultBeginning() {
462464 CurDeclContext = P.CurDeclContext ;
463465}
464466
467+ void CodeCompletionCallbacksImpl::completeTypeBeginning () {
468+ Kind = CompletionKind::TypeBeginning;
469+ CurDeclContext = P.CurDeclContext ;
470+ }
471+
472+ void CodeCompletionCallbacksImpl::completeTypeSimpleOrComposition () {
473+ Kind = CompletionKind::TypeSimpleOrComposition;
474+ CurDeclContext = P.CurDeclContext ;
475+ }
476+
465477void CodeCompletionCallbacksImpl::completeTypeSimpleBeginning () {
466478 Kind = CompletionKind::TypeSimpleBeginning;
467479 CurDeclContext = P.CurDeclContext ;
@@ -961,10 +973,6 @@ void swift::ide::addSuperKeyword(CodeCompletionResultSink &Sink,
961973 Builder.addTypeAnnotation (ST, PrintOptions ());
962974}
963975
964- static void addOpaqueTypeKeyword (CodeCompletionResultSink &Sink) {
965- addKeyword (Sink, " some" , CodeCompletionKeywordKind::None, " some" );
966- }
967-
968976static void addAnyTypeKeyword (CodeCompletionResultSink &Sink, Type T) {
969977 CodeCompletionResultBuilder Builder (Sink, CodeCompletionResultKind::Keyword,
970978 SemanticContextKind::None);
@@ -1094,16 +1102,15 @@ void CodeCompletionCallbacksImpl::addKeywords(CodeCompletionResultSink &Sink,
10941102 }
10951103 break ;
10961104
1097- case CompletionKind::TypeDeclResultBeginning: {
1098- auto DC = CurDeclContext ;
1099- if (ParsedDecl && ParsedDecl == CurDeclContext-> getAsDecl ())
1100- DC = ParsedDecl-> getDeclContext ();
1101- if (!isa<ProtocolDecl>(DC))
1102- if (DC-> isTypeContext () || isa_and_nonnull<FuncDecl>(ParsedDecl))
1103- addOpaqueTypeKeyword (Sink);
1104-
1105+ case CompletionKind::TypeBeginning:
1106+ addKeyword (Sink, " repeat " , CodeCompletionKeywordKind::None) ;
1107+ LLVM_FALLTHROUGH;
1108+ case CompletionKind::TypeDeclResultBeginning:
1109+ case CompletionKind::TypeSimpleOrComposition:
1110+ addKeyword (Sink, " some " , CodeCompletionKeywordKind::None);
1111+ addKeyword (Sink, " any " , CodeCompletionKeywordKind::None );
1112+ addKeyword (Sink, " each " , CodeCompletionKeywordKind::None);
11051113 LLVM_FALLTHROUGH;
1106- }
11071114 case CompletionKind::TypeSimpleBeginning:
11081115 addAnyTypeKeyword (Sink, CurDeclContext->getASTContext ().TheAnyType );
11091116 break ;
@@ -1299,6 +1306,8 @@ void swift::ide::postProcessCompletionResults(
12991306 // names at non-type name position are "rare".
13001307 if (result->getKind () == CodeCompletionResultKind::Declaration &&
13011308 result->getAssociatedDeclKind () == CodeCompletionDeclKind::Protocol &&
1309+ Kind != CompletionKind::TypeBeginning &&
1310+ Kind != CompletionKind::TypeSimpleOrComposition &&
13021311 Kind != CompletionKind::TypeSimpleBeginning &&
13031312 Kind != CompletionKind::TypeSimpleWithoutDot &&
13041313 Kind != CompletionKind::TypeSimpleWithDot &&
@@ -1828,6 +1837,8 @@ void CodeCompletionCallbacksImpl::doneParsing(SourceFile *SrcFile) {
18281837 }
18291838
18301839 case CompletionKind::TypeDeclResultBeginning:
1840+ case CompletionKind::TypeBeginning:
1841+ case CompletionKind::TypeSimpleOrComposition:
18311842 case CompletionKind::TypeSimpleBeginning: {
18321843 auto Loc = Context.SourceMgr .getIDEInspectionTargetLoc ();
18331844 Lookup.getTypeCompletionsInDeclContext (Loc);
0 commit comments