diff options
Diffstat (limited to 'clang/lib/Parse/ParseDecl.cpp')
-rw-r--r-- | clang/lib/Parse/ParseDecl.cpp | 62 |
1 files changed, 34 insertions, 28 deletions
diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp index 179564a..2ce8fa9 100644 --- a/clang/lib/Parse/ParseDecl.cpp +++ b/clang/lib/Parse/ParseDecl.cpp @@ -27,6 +27,7 @@ #include "clang/Sema/ParsedTemplate.h" #include "clang/Sema/Scope.h" #include "clang/Sema/SemaCUDA.h" +#include "clang/Sema/SemaCodeCompletion.h" #include "clang/Sema/SemaDiagnostic.h" #include "clang/Sema/SemaObjC.h" #include "clang/Sema/SemaOpenMP.h" @@ -218,7 +219,8 @@ void Parser::ParseGNUAttributes(ParsedAttributes &Attrs, break; if (Tok.is(tok::code_completion)) { cutOffParsing(); - Actions.CodeCompleteAttribute(AttributeCommonInfo::Syntax::AS_GNU); + Actions.CodeCompletion().CodeCompleteAttribute( + AttributeCommonInfo::Syntax::AS_GNU); break; } IdentifierInfo *AttrName = Tok.getIdentifierInfo(); @@ -895,7 +897,8 @@ void Parser::ParseMicrosoftDeclSpecs(ParsedAttributes &Attrs) { if (Tok.is(tok::code_completion)) { cutOffParsing(); - Actions.CodeCompleteAttribute(AttributeCommonInfo::AS_Declspec); + Actions.CodeCompletion().CodeCompleteAttribute( + AttributeCommonInfo::AS_Declspec); return; } @@ -2286,7 +2289,7 @@ Parser::DeclGroupPtrTy Parser::ParseDeclGroup(ParsingDeclSpec &DS, // Check to see if we have a function *definition* which must have a body. if (Tok.is(tok::equal) && NextToken().is(tok::code_completion)) { cutOffParsing(); - Actions.CodeCompleteAfterFunctionEquals(D); + Actions.CodeCompletion().CodeCompleteAfterFunctionEquals(D); return nullptr; } // We're at the point where the parsing of function declarator is finished. @@ -2722,7 +2725,8 @@ Decl *Parser::ParseDeclarationAfterDeclaratorAndAttributes( if (Tok.is(tok::code_completion)) { cutOffParsing(); - Actions.CodeCompleteInitializer(getCurScope(), ThisDecl); + Actions.CodeCompletion().CodeCompleteInitializer(getCurScope(), + ThisDecl); Actions.FinalizeDeclaration(ThisDecl); return nullptr; } @@ -2767,10 +2771,11 @@ Decl *Parser::ParseDeclarationAfterDeclaratorAndAttributes( auto ThisVarDecl = dyn_cast_or_null<VarDecl>(ThisDecl); auto RunSignatureHelp = [&]() { - QualType PreferredType = Actions.ProduceConstructorSignatureHelp( - ThisVarDecl->getType()->getCanonicalTypeInternal(), - ThisDecl->getLocation(), Exprs, T.getOpenLocation(), - /*Braced=*/false); + QualType PreferredType = + Actions.CodeCompletion().ProduceConstructorSignatureHelp( + ThisVarDecl->getType()->getCanonicalTypeInternal(), + ThisDecl->getLocation(), Exprs, T.getOpenLocation(), + /*Braced=*/false); CalledSignatureHelp = true; return PreferredType; }; @@ -2791,7 +2796,7 @@ Decl *Parser::ParseDeclarationAfterDeclaratorAndAttributes( if (SawError) { if (ThisVarDecl && PP.isCodeCompletionReached() && !CalledSignatureHelp) { - Actions.ProduceConstructorSignatureHelp( + Actions.CodeCompletion().ProduceConstructorSignatureHelp( ThisVarDecl->getType()->getCanonicalTypeInternal(), ThisDecl->getLocation(), Exprs, T.getOpenLocation(), /*Braced=*/false); @@ -3635,7 +3640,8 @@ void Parser::ParseDeclarationSpecifiers( continue; case tok::code_completion: { - Sema::ParserCompletionContext CCC = Sema::PCC_Namespace; + SemaCodeCompletion::ParserCompletionContext CCC = + SemaCodeCompletion::PCC_Namespace; if (DS.hasTypeSpecifier()) { bool AllowNonIdentifiers = (getCurScope()->getFlags() & (Scope::ControlScope | @@ -3648,25 +3654,25 @@ void Parser::ParseDeclarationSpecifiers( (DSContext == DeclSpecContext::DSC_class && DS.isFriendSpecified()); cutOffParsing(); - Actions.CodeCompleteDeclSpec(getCurScope(), DS, - AllowNonIdentifiers, - AllowNestedNameSpecifiers); + Actions.CodeCompletion().CodeCompleteDeclSpec( + getCurScope(), DS, AllowNonIdentifiers, AllowNestedNameSpecifiers); return; } // Class context can appear inside a function/block, so prioritise that. if (TemplateInfo.Kind != ParsedTemplateInfo::NonTemplate) - CCC = DSContext == DeclSpecContext::DSC_class ? Sema::PCC_MemberTemplate - : Sema::PCC_Template; + CCC = DSContext == DeclSpecContext::DSC_class + ? SemaCodeCompletion::PCC_MemberTemplate + : SemaCodeCompletion::PCC_Template; else if (DSContext == DeclSpecContext::DSC_class) - CCC = Sema::PCC_Class; + CCC = SemaCodeCompletion::PCC_Class; else if (getCurScope()->getFnParent() || getCurScope()->getBlockParent()) - CCC = Sema::PCC_LocalDeclarationSpecifiers; + CCC = SemaCodeCompletion::PCC_LocalDeclarationSpecifiers; else if (CurParsedObjCImpl) - CCC = Sema::PCC_ObjCImplementation; + CCC = SemaCodeCompletion::PCC_ObjCImplementation; cutOffParsing(); - Actions.CodeCompleteOrdinaryName(getCurScope(), CCC); + Actions.CodeCompletion().CodeCompleteOrdinaryName(getCurScope(), CCC); return; } @@ -5076,7 +5082,7 @@ void Parser::ParseEnumSpecifier(SourceLocation StartLoc, DeclSpec &DS, if (Tok.is(tok::code_completion)) { // Code completion for an enum name. cutOffParsing(); - Actions.CodeCompleteTag(getCurScope(), DeclSpec::TST_enum); + Actions.CodeCompletion().CodeCompleteTag(getCurScope(), DeclSpec::TST_enum); DS.SetTypeSpecError(); // Needed by ActOnUsingDeclaration. return; } @@ -6266,7 +6272,7 @@ void Parser::ParseTypeQualifierListOpt( if (CodeCompletionHandler) (*CodeCompletionHandler)(); else - Actions.CodeCompleteTypeQualifiers(DS); + Actions.CodeCompletion().CodeCompleteTypeQualifiers(DS); return; case tok::kw_const: @@ -7403,12 +7409,12 @@ void Parser::ParseFunctionDeclarator(Declarator &D, // with the pure-specifier in the same way. // Parse cv-qualifier-seq[opt]. - ParseTypeQualifierListOpt(DS, AR_NoAttributesParsed, - /*AtomicAllowed*/ false, - /*IdentifierRequired=*/false, - llvm::function_ref<void()>([&]() { - Actions.CodeCompleteFunctionQualifiers(DS, D); - })); + ParseTypeQualifierListOpt( + DS, AR_NoAttributesParsed, + /*AtomicAllowed*/ false, + /*IdentifierRequired=*/false, llvm::function_ref<void()>([&]() { + Actions.CodeCompletion().CodeCompleteFunctionQualifiers(DS, D); + })); if (!DS.getSourceRange().getEnd().isInvalid()) { EndLoc = DS.getSourceRange().getEnd(); } @@ -7971,7 +7977,7 @@ void Parser::ParseBracketDeclarator(Declarator &D) { return; } else if (Tok.getKind() == tok::code_completion) { cutOffParsing(); - Actions.CodeCompleteBracketDeclarator(getCurScope()); + Actions.CodeCompletion().CodeCompleteBracketDeclarator(getCurScope()); return; } |