@@ -2802,6 +2802,8 @@ Parser::parseDecl(ParseDeclOptions Flags,
28022802 StaticSpelling, tryLoc);
28032803 StaticLoc = SourceLoc (); // we handled static if present.
28042804 MayNeedOverrideCompletion = true ;
2805+ if (DeclResult.hasCodeCompletion () && isCodeCompletionFirstPass ())
2806+ break ;
28052807 std::for_each (Entries.begin (), Entries.end (), Handler);
28062808 if (auto *D = DeclResult.getPtrOrNull ())
28072809 markWasHandled (D);
@@ -2824,6 +2826,8 @@ Parser::parseDecl(ParseDeclOptions Flags,
28242826 llvm::SmallVector<Decl *, 4 > Entries;
28252827 DeclParsingContext.setCreateSyntax (SyntaxKind::EnumCaseDecl);
28262828 DeclResult = parseDeclEnumCase (Flags, Attributes, Entries);
2829+ if (DeclResult.hasCodeCompletion () && isCodeCompletionFirstPass ())
2830+ break ;
28272831 std::for_each (Entries.begin (), Entries.end (), Handler);
28282832 if (auto *D = DeclResult.getPtrOrNull ())
28292833 markWasHandled (D);
@@ -2873,6 +2877,8 @@ Parser::parseDecl(ParseDeclOptions Flags,
28732877 }
28742878 llvm::SmallVector<Decl *, 4 > Entries;
28752879 DeclResult = parseDeclSubscript (Flags, Attributes, Entries);
2880+ if (DeclResult.hasCodeCompletion () && isCodeCompletionFirstPass ())
2881+ break ;
28762882 std::for_each (Entries.begin (), Entries.end (), Handler);
28772883 MayNeedOverrideCompletion = true ;
28782884 if (auto *D = DeclResult.getPtrOrNull ())
@@ -2995,7 +3001,8 @@ Parser::parseDecl(ParseDeclOptions Flags,
29953001 }
29963002
29973003 if (DeclResult.hasCodeCompletion () && isCodeCompletionFirstPass () &&
2998- !CurDeclContext->isModuleScopeContext ()) {
3004+ !CurDeclContext->isModuleScopeContext () &&
3005+ !isa<TopLevelCodeDecl>(CurDeclContext)) {
29993006 // Only consume non-toplevel decls.
30003007 consumeDecl (BeginParserPosition, Flags, /* IsTopLevel=*/ false );
30013008
0 commit comments