diff --git a/clang/include/clang/Parse/Parser.h b/clang/include/clang/Parse/Parser.h --- a/clang/include/clang/Parse/Parser.h +++ b/clang/include/clang/Parse/Parser.h @@ -2581,7 +2581,7 @@ public: TypeResult ParseTypeName(SourceRange *Range = nullptr, DeclaratorContext Context - = DeclaratorContext::TypeNameContext, + = DeclaratorContext::TypeName, AccessSpecifier AS = AS_none, Decl **OwnedType = nullptr, ParsedAttributes *Attrs = nullptr); diff --git a/clang/include/clang/Sema/DeclSpec.h b/clang/include/clang/Sema/DeclSpec.h --- a/clang/include/clang/Sema/DeclSpec.h +++ b/clang/include/clang/Sema/DeclSpec.h @@ -1761,36 +1761,35 @@ }; enum class DeclaratorContext { - FileContext, // File scope declaration. - PrototypeContext, // Within a function prototype. - ObjCResultContext, // An ObjC method result type. - ObjCParameterContext,// An ObjC method parameter type. - KNRTypeListContext, // K&R type definition list for formals. - TypeNameContext, // Abstract declarator for types. - FunctionalCastContext, // Type in a C++ functional cast expression. - MemberContext, // Struct/Union field. - BlockContext, // Declaration within a block in a function. - ForContext, // Declaration within first part of a for loop. - InitStmtContext, // Declaration within optional init stmt of if/switch. - ConditionContext, // Condition declaration in a C++ if/switch/while/for. - TemplateParamContext,// Within a template parameter list. - CXXNewContext, // C++ new-expression. - CXXCatchContext, // C++ catch exception-declaration - ObjCCatchContext, // Objective-C catch exception-declaration - BlockLiteralContext, // Block literal declarator. - LambdaExprContext, // Lambda-expression declarator. - LambdaExprParameterContext, // Lambda-expression parameter declarator. - ConversionIdContext, // C++ conversion-type-id. - TrailingReturnContext, // C++11 trailing-type-specifier. - TrailingReturnVarContext, // C++11 trailing-type-specifier for variable. - TemplateArgContext, // Any template argument (in template argument list). - TemplateTypeArgContext, // Template type argument (in default argument). - AliasDeclContext, // C++11 alias-declaration. - AliasTemplateContext, // C++11 alias-declaration template. - RequiresExprContext // C++2a requires-expression. + File, // File scope declaration. + Prototype, // Within a function prototype. + ObjCResult, // An ObjC method result type. + ObjCParameter, // An ObjC method parameter type. + KNRTypeList, // K&R type definition list for formals. + TypeName, // Abstract declarator for types. + FunctionalCast, // Type in a C++ functional cast expression. + Member, // Struct/Union field. + Block, // Declaration within a block in a function. + ForInit, // Declaration within first part of a for loop. + SelectionInit, // Declaration within optional init stmt of if/switch. + Condition, // Condition declaration in a C++ if/switch/while/for. + TemplateParam, // Within a template parameter list. + CXXNew, // C++ new-expression. + CXXCatch, // C++ catch exception-declaration + ObjCCatch, // Objective-C catch exception-declaration + BlockLiteral, // Block literal declarator. + LambdaExpr, // Lambda-expression declarator. + LambdaExprParameter, // Lambda-expression parameter declarator. + ConversionId, // C++ conversion-type-id. + TrailingReturn, // C++11 trailing-type-specifier. + TrailingReturnVar, // C++11 trailing-type-specifier for variable. + TemplateArg, // Any template argument (in template argument list). + TemplateTypeArg, // Template type argument (in default argument). + AliasDecl, // C++11 alias-declaration. + AliasTemplate, // C++11 alias-declaration template. + RequiresExpr // C++2a requires-expression. }; - /// Information about one declarator, including the parsed type /// information and the identifier. /// @@ -1934,10 +1933,10 @@ DeclaratorContext getContext() const { return Context; } bool isPrototypeContext() const { - return (Context == DeclaratorContext::PrototypeContext || - Context == DeclaratorContext::ObjCParameterContext || - Context == DeclaratorContext::ObjCResultContext || - Context == DeclaratorContext::LambdaExprParameterContext); + return (Context == DeclaratorContext::Prototype || + Context == DeclaratorContext::ObjCParameter || + Context == DeclaratorContext::ObjCResult || + Context == DeclaratorContext::LambdaExprParameter); } /// Get the source range that spans this declarator. @@ -1992,35 +1991,35 @@ /// parameter lists. bool mayOmitIdentifier() const { switch (Context) { - case DeclaratorContext::FileContext: - case DeclaratorContext::KNRTypeListContext: - case DeclaratorContext::MemberContext: - case DeclaratorContext::BlockContext: - case DeclaratorContext::ForContext: - case DeclaratorContext::InitStmtContext: - case DeclaratorContext::ConditionContext: + case DeclaratorContext::File: + case DeclaratorContext::KNRTypeList: + case DeclaratorContext::Member: + case DeclaratorContext::Block: + case DeclaratorContext::ForInit: + case DeclaratorContext::SelectionInit: + case DeclaratorContext::Condition: return false; - case DeclaratorContext::TypeNameContext: - case DeclaratorContext::FunctionalCastContext: - case DeclaratorContext::AliasDeclContext: - case DeclaratorContext::AliasTemplateContext: - case DeclaratorContext::PrototypeContext: - case DeclaratorContext::LambdaExprParameterContext: - case DeclaratorContext::ObjCParameterContext: - case DeclaratorContext::ObjCResultContext: - case DeclaratorContext::TemplateParamContext: - case DeclaratorContext::CXXNewContext: - case DeclaratorContext::CXXCatchContext: - case DeclaratorContext::ObjCCatchContext: - case DeclaratorContext::BlockLiteralContext: - case DeclaratorContext::LambdaExprContext: - case DeclaratorContext::ConversionIdContext: - case DeclaratorContext::TemplateArgContext: - case DeclaratorContext::TemplateTypeArgContext: - case DeclaratorContext::TrailingReturnContext: - case DeclaratorContext::TrailingReturnVarContext: - case DeclaratorContext::RequiresExprContext: + case DeclaratorContext::TypeName: + case DeclaratorContext::FunctionalCast: + case DeclaratorContext::AliasDecl: + case DeclaratorContext::AliasTemplate: + case DeclaratorContext::Prototype: + case DeclaratorContext::LambdaExprParameter: + case DeclaratorContext::ObjCParameter: + case DeclaratorContext::ObjCResult: + case DeclaratorContext::TemplateParam: + case DeclaratorContext::CXXNew: + case DeclaratorContext::CXXCatch: + case DeclaratorContext::ObjCCatch: + case DeclaratorContext::BlockLiteral: + case DeclaratorContext::LambdaExpr: + case DeclaratorContext::ConversionId: + case DeclaratorContext::TemplateArg: + case DeclaratorContext::TemplateTypeArg: + case DeclaratorContext::TrailingReturn: + case DeclaratorContext::TrailingReturnVar: + case DeclaratorContext::RequiresExpr: return true; } llvm_unreachable("unknown context kind!"); @@ -2031,35 +2030,35 @@ /// typenames. bool mayHaveIdentifier() const { switch (Context) { - case DeclaratorContext::FileContext: - case DeclaratorContext::KNRTypeListContext: - case DeclaratorContext::MemberContext: - case DeclaratorContext::BlockContext: - case DeclaratorContext::ForContext: - case DeclaratorContext::InitStmtContext: - case DeclaratorContext::ConditionContext: - case DeclaratorContext::PrototypeContext: - case DeclaratorContext::LambdaExprParameterContext: - case DeclaratorContext::TemplateParamContext: - case DeclaratorContext::CXXCatchContext: - case DeclaratorContext::ObjCCatchContext: - case DeclaratorContext::RequiresExprContext: + case DeclaratorContext::File: + case DeclaratorContext::KNRTypeList: + case DeclaratorContext::Member: + case DeclaratorContext::Block: + case DeclaratorContext::ForInit: + case DeclaratorContext::SelectionInit: + case DeclaratorContext::Condition: + case DeclaratorContext::Prototype: + case DeclaratorContext::LambdaExprParameter: + case DeclaratorContext::TemplateParam: + case DeclaratorContext::CXXCatch: + case DeclaratorContext::ObjCCatch: + case DeclaratorContext::RequiresExpr: return true; - case DeclaratorContext::TypeNameContext: - case DeclaratorContext::FunctionalCastContext: - case DeclaratorContext::CXXNewContext: - case DeclaratorContext::AliasDeclContext: - case DeclaratorContext::AliasTemplateContext: - case DeclaratorContext::ObjCParameterContext: - case DeclaratorContext::ObjCResultContext: - case DeclaratorContext::BlockLiteralContext: - case DeclaratorContext::LambdaExprContext: - case DeclaratorContext::ConversionIdContext: - case DeclaratorContext::TemplateArgContext: - case DeclaratorContext::TemplateTypeArgContext: - case DeclaratorContext::TrailingReturnContext: - case DeclaratorContext::TrailingReturnVarContext: + case DeclaratorContext::TypeName: + case DeclaratorContext::FunctionalCast: + case DeclaratorContext::CXXNew: + case DeclaratorContext::AliasDecl: + case DeclaratorContext::AliasTemplate: + case DeclaratorContext::ObjCParameter: + case DeclaratorContext::ObjCResult: + case DeclaratorContext::BlockLiteral: + case DeclaratorContext::LambdaExpr: + case DeclaratorContext::ConversionId: + case DeclaratorContext::TemplateArg: + case DeclaratorContext::TemplateTypeArg: + case DeclaratorContext::TrailingReturn: + case DeclaratorContext::TrailingReturnVar: return false; } llvm_unreachable("unknown context kind!"); @@ -2068,41 +2067,41 @@ /// Return true if the context permits a C++17 decomposition declarator. bool mayHaveDecompositionDeclarator() const { switch (Context) { - case DeclaratorContext::FileContext: + case DeclaratorContext::File: // FIXME: It's not clear that the proposal meant to allow file-scope // structured bindings, but it does. - case DeclaratorContext::BlockContext: - case DeclaratorContext::ForContext: - case DeclaratorContext::InitStmtContext: - case DeclaratorContext::ConditionContext: + case DeclaratorContext::Block: + case DeclaratorContext::ForInit: + case DeclaratorContext::SelectionInit: + case DeclaratorContext::Condition: return true; - case DeclaratorContext::MemberContext: - case DeclaratorContext::PrototypeContext: - case DeclaratorContext::TemplateParamContext: - case DeclaratorContext::RequiresExprContext: + case DeclaratorContext::Member: + case DeclaratorContext::Prototype: + case DeclaratorContext::TemplateParam: + case DeclaratorContext::RequiresExpr: // Maybe one day... return false; // These contexts don't allow any kind of non-abstract declarator. - case DeclaratorContext::KNRTypeListContext: - case DeclaratorContext::TypeNameContext: - case DeclaratorContext::FunctionalCastContext: - case DeclaratorContext::AliasDeclContext: - case DeclaratorContext::AliasTemplateContext: - case DeclaratorContext::LambdaExprParameterContext: - case DeclaratorContext::ObjCParameterContext: - case DeclaratorContext::ObjCResultContext: - case DeclaratorContext::CXXNewContext: - case DeclaratorContext::CXXCatchContext: - case DeclaratorContext::ObjCCatchContext: - case DeclaratorContext::BlockLiteralContext: - case DeclaratorContext::LambdaExprContext: - case DeclaratorContext::ConversionIdContext: - case DeclaratorContext::TemplateArgContext: - case DeclaratorContext::TemplateTypeArgContext: - case DeclaratorContext::TrailingReturnContext: - case DeclaratorContext::TrailingReturnVarContext: + case DeclaratorContext::KNRTypeList: + case DeclaratorContext::TypeName: + case DeclaratorContext::FunctionalCast: + case DeclaratorContext::AliasDecl: + case DeclaratorContext::AliasTemplate: + case DeclaratorContext::LambdaExprParameter: + case DeclaratorContext::ObjCParameter: + case DeclaratorContext::ObjCResult: + case DeclaratorContext::CXXNew: + case DeclaratorContext::CXXCatch: + case DeclaratorContext::ObjCCatch: + case DeclaratorContext::BlockLiteral: + case DeclaratorContext::LambdaExpr: + case DeclaratorContext::ConversionId: + case DeclaratorContext::TemplateArg: + case DeclaratorContext::TemplateTypeArg: + case DeclaratorContext::TrailingReturn: + case DeclaratorContext::TrailingReturnVar: return false; } llvm_unreachable("unknown context kind!"); @@ -2117,7 +2116,7 @@ return false; if (getDeclSpec().getStorageClassSpec() == DeclSpec::SCS_extern && - Context != DeclaratorContext::FileContext) + Context != DeclaratorContext::File) return false; // Special names can't have direct initializers. @@ -2125,40 +2124,40 @@ return false; switch (Context) { - case DeclaratorContext::FileContext: - case DeclaratorContext::BlockContext: - case DeclaratorContext::ForContext: - case DeclaratorContext::InitStmtContext: - case DeclaratorContext::TrailingReturnVarContext: + case DeclaratorContext::File: + case DeclaratorContext::Block: + case DeclaratorContext::ForInit: + case DeclaratorContext::SelectionInit: + case DeclaratorContext::TrailingReturnVar: return true; - case DeclaratorContext::ConditionContext: + case DeclaratorContext::Condition: // This may not be followed by a direct initializer, but it can't be a // function declaration either, and we'd prefer to perform a tentative // parse in order to produce the right diagnostic. return true; - case DeclaratorContext::KNRTypeListContext: - case DeclaratorContext::MemberContext: - case DeclaratorContext::PrototypeContext: - case DeclaratorContext::LambdaExprParameterContext: - case DeclaratorContext::ObjCParameterContext: - case DeclaratorContext::ObjCResultContext: - case DeclaratorContext::TemplateParamContext: - case DeclaratorContext::CXXCatchContext: - case DeclaratorContext::ObjCCatchContext: - case DeclaratorContext::TypeNameContext: - case DeclaratorContext::FunctionalCastContext: // FIXME - case DeclaratorContext::CXXNewContext: - case DeclaratorContext::AliasDeclContext: - case DeclaratorContext::AliasTemplateContext: - case DeclaratorContext::BlockLiteralContext: - case DeclaratorContext::LambdaExprContext: - case DeclaratorContext::ConversionIdContext: - case DeclaratorContext::TemplateArgContext: - case DeclaratorContext::TemplateTypeArgContext: - case DeclaratorContext::TrailingReturnContext: - case DeclaratorContext::RequiresExprContext: + case DeclaratorContext::KNRTypeList: + case DeclaratorContext::Member: + case DeclaratorContext::Prototype: + case DeclaratorContext::LambdaExprParameter: + case DeclaratorContext::ObjCParameter: + case DeclaratorContext::ObjCResult: + case DeclaratorContext::TemplateParam: + case DeclaratorContext::CXXCatch: + case DeclaratorContext::ObjCCatch: + case DeclaratorContext::TypeName: + case DeclaratorContext::FunctionalCast: // FIXME + case DeclaratorContext::CXXNew: + case DeclaratorContext::AliasDecl: + case DeclaratorContext::AliasTemplate: + case DeclaratorContext::BlockLiteral: + case DeclaratorContext::LambdaExpr: + case DeclaratorContext::ConversionId: + case DeclaratorContext::TemplateArg: + case DeclaratorContext::TemplateTypeArg: + case DeclaratorContext::TrailingReturn: + case DeclaratorContext::RequiresExpr: return false; } llvm_unreachable("unknown context kind!"); @@ -2352,35 +2351,35 @@ return false; switch (Context) { - case DeclaratorContext::FileContext: - case DeclaratorContext::MemberContext: - case DeclaratorContext::BlockContext: - case DeclaratorContext::ForContext: - case DeclaratorContext::InitStmtContext: + case DeclaratorContext::File: + case DeclaratorContext::Member: + case DeclaratorContext::Block: + case DeclaratorContext::ForInit: + case DeclaratorContext::SelectionInit: return true; - case DeclaratorContext::ConditionContext: - case DeclaratorContext::KNRTypeListContext: - case DeclaratorContext::TypeNameContext: - case DeclaratorContext::FunctionalCastContext: - case DeclaratorContext::AliasDeclContext: - case DeclaratorContext::AliasTemplateContext: - case DeclaratorContext::PrototypeContext: - case DeclaratorContext::LambdaExprParameterContext: - case DeclaratorContext::ObjCParameterContext: - case DeclaratorContext::ObjCResultContext: - case DeclaratorContext::TemplateParamContext: - case DeclaratorContext::CXXNewContext: - case DeclaratorContext::CXXCatchContext: - case DeclaratorContext::ObjCCatchContext: - case DeclaratorContext::BlockLiteralContext: - case DeclaratorContext::LambdaExprContext: - case DeclaratorContext::ConversionIdContext: - case DeclaratorContext::TemplateArgContext: - case DeclaratorContext::TemplateTypeArgContext: - case DeclaratorContext::TrailingReturnContext: - case DeclaratorContext::TrailingReturnVarContext: - case DeclaratorContext::RequiresExprContext: + case DeclaratorContext::Condition: + case DeclaratorContext::KNRTypeList: + case DeclaratorContext::TypeName: + case DeclaratorContext::FunctionalCast: + case DeclaratorContext::AliasDecl: + case DeclaratorContext::AliasTemplate: + case DeclaratorContext::Prototype: + case DeclaratorContext::LambdaExprParameter: + case DeclaratorContext::ObjCParameter: + case DeclaratorContext::ObjCResult: + case DeclaratorContext::TemplateParam: + case DeclaratorContext::CXXNew: + case DeclaratorContext::CXXCatch: + case DeclaratorContext::ObjCCatch: + case DeclaratorContext::BlockLiteral: + case DeclaratorContext::LambdaExpr: + case DeclaratorContext::ConversionId: + case DeclaratorContext::TemplateArg: + case DeclaratorContext::TemplateTypeArg: + case DeclaratorContext::TrailingReturn: + case DeclaratorContext::TrailingReturnVar: + case DeclaratorContext::RequiresExpr: return false; } llvm_unreachable("unknown context kind!"); @@ -2390,38 +2389,38 @@ /// expression could appear. bool isExpressionContext() const { switch (Context) { - case DeclaratorContext::FileContext: - case DeclaratorContext::KNRTypeListContext: - case DeclaratorContext::MemberContext: + case DeclaratorContext::File: + case DeclaratorContext::KNRTypeList: + case DeclaratorContext::Member: // FIXME: sizeof(...) permits an expression. - case DeclaratorContext::TypeNameContext: - - case DeclaratorContext::FunctionalCastContext: - case DeclaratorContext::AliasDeclContext: - case DeclaratorContext::AliasTemplateContext: - case DeclaratorContext::PrototypeContext: - case DeclaratorContext::LambdaExprParameterContext: - case DeclaratorContext::ObjCParameterContext: - case DeclaratorContext::ObjCResultContext: - case DeclaratorContext::TemplateParamContext: - case DeclaratorContext::CXXNewContext: - case DeclaratorContext::CXXCatchContext: - case DeclaratorContext::ObjCCatchContext: - case DeclaratorContext::BlockLiteralContext: - case DeclaratorContext::LambdaExprContext: - case DeclaratorContext::ConversionIdContext: - case DeclaratorContext::TrailingReturnContext: - case DeclaratorContext::TrailingReturnVarContext: - case DeclaratorContext::TemplateTypeArgContext: - case DeclaratorContext::RequiresExprContext: + case DeclaratorContext::TypeName: + + case DeclaratorContext::FunctionalCast: + case DeclaratorContext::AliasDecl: + case DeclaratorContext::AliasTemplate: + case DeclaratorContext::Prototype: + case DeclaratorContext::LambdaExprParameter: + case DeclaratorContext::ObjCParameter: + case DeclaratorContext::ObjCResult: + case DeclaratorContext::TemplateParam: + case DeclaratorContext::CXXNew: + case DeclaratorContext::CXXCatch: + case DeclaratorContext::ObjCCatch: + case DeclaratorContext::BlockLiteral: + case DeclaratorContext::LambdaExpr: + case DeclaratorContext::ConversionId: + case DeclaratorContext::TrailingReturn: + case DeclaratorContext::TrailingReturnVar: + case DeclaratorContext::TemplateTypeArg: + case DeclaratorContext::RequiresExpr: return false; - case DeclaratorContext::BlockContext: - case DeclaratorContext::ForContext: - case DeclaratorContext::InitStmtContext: - case DeclaratorContext::ConditionContext: - case DeclaratorContext::TemplateArgContext: + case DeclaratorContext::Block: + case DeclaratorContext::ForInit: + case DeclaratorContext::SelectionInit: + case DeclaratorContext::Condition: + case DeclaratorContext::TemplateArg: return true; } @@ -2581,7 +2580,7 @@ /// Returns true if this declares a real member and not a friend. bool isFirstDeclarationOfMember() { - return getContext() == DeclaratorContext::MemberContext && + return getContext() == DeclaratorContext::Member && !getDeclSpec().isFriendSpecified(); } @@ -2603,7 +2602,7 @@ Declarator D; Expr *BitfieldSize; explicit FieldDeclarator(const DeclSpec &DS) - : D(DS, DeclaratorContext::MemberContext), + : D(DS, DeclaratorContext::Member), BitfieldSize(nullptr) {} }; diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp --- a/clang/lib/Parse/ParseDecl.cpp +++ b/clang/lib/Parse/ParseDecl.cpp @@ -1773,11 +1773,11 @@ return getLangOpts().CPlusPlus; case tok::l_square: // Might be an attribute on an unnamed bit-field. - return Context == DeclaratorContext::MemberContext && + return Context == DeclaratorContext::Member && getLangOpts().CPlusPlus11 && NextToken().is(tok::l_square); case tok::colon: // Might be a typo for '::' or an unnamed bit-field. - return Context == DeclaratorContext::MemberContext || + return Context == DeclaratorContext::Member || getLangOpts().CPlusPlus; case tok::identifier: @@ -1804,9 +1804,9 @@ // At namespace scope, 'identifier:' is probably a typo for 'identifier::' // and in block scope it's probably a label. Inside a class definition, // this is a bit-field. - return Context == DeclaratorContext::MemberContext || + return Context == DeclaratorContext::Member || (getLangOpts().CPlusPlus && - Context == DeclaratorContext::FileContext); + Context == DeclaratorContext::File); case tok::identifier: // Possible virt-specifier. return getLangOpts().CPlusPlus11 && isCXX11VirtSpecifier(NextToken()); @@ -1964,7 +1964,7 @@ // Function definitions are only allowed at file scope and in C++ classes. // The C++ inline method definition case is handled elsewhere, so we only // need to handle the file scope definition case. - if (Context == DeclaratorContext::FileContext) { + if (Context == DeclaratorContext::File) { if (isStartOfFunctionDefinition(D)) { if (DS.getStorageClassSpec() == DeclSpec::SCS_typedef) { Diag(Tok, diag::err_function_declared_typedef); @@ -2043,7 +2043,7 @@ if (FirstDecl) DeclsInGroup.push_back(FirstDecl); - bool ExpectSemi = Context != DeclaratorContext::ForContext; + bool ExpectSemi = Context != DeclaratorContext::ForInit; // If we don't have a comma, it is either the end of the list (a ';') or an // error, bail out. @@ -2095,7 +2095,7 @@ *DeclEnd = Tok.getLocation(); if (ExpectSemi && - ExpectAndConsumeSemi(Context == DeclaratorContext::FileContext + ExpectAndConsumeSemi(Context == DeclaratorContext::File ? diag::err_invalid_token_after_toplevel_declarator : diag::err_expected_semi_declaration)) { // Okay, there was no semicolon and one was expected. If we see a @@ -2303,8 +2303,8 @@ if (Init.isInvalid()) { SmallVector StopTokens; StopTokens.push_back(tok::comma); - if (D.getContext() == DeclaratorContext::ForContext || - D.getContext() == DeclaratorContext::InitStmtContext) + if (D.getContext() == DeclaratorContext::ForInit || + D.getContext() == DeclaratorContext::SelectionInit) StopTokens.push_back(tok::r_paren); SkipUntil(StopTokens, StopAtSemi | StopBeforeMatch); Actions.ActOnInitializerError(ThisDecl); @@ -2710,20 +2710,20 @@ /// DeclaratorContext enumerator values. Parser::DeclSpecContext Parser::getDeclSpecContextFromDeclaratorContext(DeclaratorContext Context) { - if (Context == DeclaratorContext::MemberContext) + if (Context == DeclaratorContext::Member) return DeclSpecContext::DSC_class; - if (Context == DeclaratorContext::FileContext) + if (Context == DeclaratorContext::File) return DeclSpecContext::DSC_top_level; - if (Context == DeclaratorContext::TemplateParamContext) + if (Context == DeclaratorContext::TemplateParam) return DeclSpecContext::DSC_template_param; - if (Context == DeclaratorContext::TemplateArgContext || - Context == DeclaratorContext::TemplateTypeArgContext) + if (Context == DeclaratorContext::TemplateArg || + Context == DeclaratorContext::TemplateTypeArg) return DeclSpecContext::DSC_template_type_arg; - if (Context == DeclaratorContext::TrailingReturnContext || - Context == DeclaratorContext::TrailingReturnVarContext) + if (Context == DeclaratorContext::TrailingReturn || + Context == DeclaratorContext::TrailingReturnVar) return DeclSpecContext::DSC_trailing; - if (Context == DeclaratorContext::AliasDeclContext || - Context == DeclaratorContext::AliasTemplateContext) + if (Context == DeclaratorContext::AliasDecl || + Context == DeclaratorContext::AliasTemplate) return DeclSpecContext::DSC_alias_declaration; return DeclSpecContext::DSC_normal; } @@ -4474,7 +4474,7 @@ // declares 'enum E : int; E *p;' not 'enum E : int*; E p;'. DeclSpec DS(AttrFactory); ParseSpecifierQualifierList(DS, AS, DeclSpecContext::DSC_type_specifier); - Declarator DeclaratorInfo(DS, DeclaratorContext::TypeNameContext); + Declarator DeclaratorInfo(DS, DeclaratorContext::TypeName); BaseType = Actions.ActOnTypeName(getCurScope(), DeclaratorInfo); BaseRange = SourceRange(ColonLoc, DeclaratorInfo.getSourceRange().getEnd()); @@ -5575,8 +5575,8 @@ // since those are a C++11 feature, there is no rejects-valid issue there.) if (Kind == tok::ampamp) return Lang.CPlusPlus11 || - (TheContext != DeclaratorContext::ConversionIdContext && - TheContext != DeclaratorContext::CXXNewContext); + (TheContext != DeclaratorContext::ConversionId && + TheContext != DeclaratorContext::CXXNew); return false; } @@ -5631,8 +5631,8 @@ (NextToken().is(tok::coloncolon) || NextToken().is(tok::less))) || Tok.is(tok::annot_cxxscope))) { bool EnteringContext = - D.getContext() == DeclaratorContext::FileContext || - D.getContext() == DeclaratorContext::MemberContext; + D.getContext() == DeclaratorContext::File || + D.getContext() == DeclaratorContext::Member; CXXScopeSpec SS; ParseOptionalCXXScopeSpecifier(SS, /*ObjectType=*/nullptr, /*ObjectHadErrors=*/false, EnteringContext); @@ -5704,7 +5704,7 @@ // GNU attributes are not allowed here in a new-type-id, but Declspec and // C++11 attributes are allowed. unsigned Reqs = AR_CXX11AttributesParsed | AR_DeclspecAttributesParsed | - ((D.getContext() != DeclaratorContext::CXXNewContext) + ((D.getContext() != DeclaratorContext::CXXNew) ? AR_GNUAttributesParsed : AR_GNUAttributesParsedAndRejected); ParseTypeQualifierListOpt(DS, Reqs, true, !D.mayOmitIdentifier()); @@ -5854,15 +5854,15 @@ // this context it is a bitfield. Also in range-based for statement colon // may delimit for-range-declaration. ColonProtectionRAIIObject X( - *this, D.getContext() == DeclaratorContext::MemberContext || - (D.getContext() == DeclaratorContext::ForContext && + *this, D.getContext() == DeclaratorContext::Member || + (D.getContext() == DeclaratorContext::ForInit && getLangOpts().CPlusPlus11)); // ParseDeclaratorInternal might already have parsed the scope. if (D.getCXXScopeSpec().isEmpty()) { bool EnteringContext = - D.getContext() == DeclaratorContext::FileContext || - D.getContext() == DeclaratorContext::MemberContext; + D.getContext() == DeclaratorContext::File || + D.getContext() == DeclaratorContext::Member; ParseOptionalCXXScopeSpecifier( D.getCXXScopeSpec(), /*ObjectType=*/nullptr, /*ObjectHadErrors=*/false, EnteringContext); @@ -5892,9 +5892,9 @@ // been expanded or contains auto; otherwise, it is parsed as part of the // parameter-declaration-clause. if (Tok.is(tok::ellipsis) && D.getCXXScopeSpec().isEmpty() && - !((D.getContext() == DeclaratorContext::PrototypeContext || - D.getContext() == DeclaratorContext::LambdaExprParameterContext || - D.getContext() == DeclaratorContext::BlockLiteralContext) && + !((D.getContext() == DeclaratorContext::Prototype || + D.getContext() == DeclaratorContext::LambdaExprParameter || + D.getContext() == DeclaratorContext::BlockLiteral) && NextToken().is(tok::r_paren) && !D.hasGroupingParens() && !Actions.containsUnexpandedParameterPacks(D) && @@ -5926,15 +5926,15 @@ AllowDeductionGuide = false; } else if (D.getCXXScopeSpec().isSet()) { AllowConstructorName = - (D.getContext() == DeclaratorContext::FileContext || - D.getContext() == DeclaratorContext::MemberContext); + (D.getContext() == DeclaratorContext::File || + D.getContext() == DeclaratorContext::Member); AllowDeductionGuide = false; } else { AllowConstructorName = - (D.getContext() == DeclaratorContext::MemberContext); + (D.getContext() == DeclaratorContext::Member); AllowDeductionGuide = - (D.getContext() == DeclaratorContext::FileContext || - D.getContext() == DeclaratorContext::MemberContext); + (D.getContext() == DeclaratorContext::File || + D.getContext() == DeclaratorContext::Member); } bool HadScope = D.getCXXScopeSpec().isValid(); @@ -5990,16 +5990,16 @@ // An identifier within parens is unlikely to be intended to be anything // other than a name being "declared". DiagnoseIdentifier = true; - else if (D.getContext() == DeclaratorContext::TemplateArgContext) + else if (D.getContext() == DeclaratorContext::TemplateArg) // T is an accidental identifier; T'. DiagnoseIdentifier = NextToken().isOneOf(tok::comma, tok::greater, tok::greatergreater); - else if (D.getContext() == DeclaratorContext::AliasDeclContext || - D.getContext() == DeclaratorContext::AliasTemplateContext) + else if (D.getContext() == DeclaratorContext::AliasDecl || + D.getContext() == DeclaratorContext::AliasTemplate) // The most likely error is that the ';' was forgotten. DiagnoseIdentifier = NextToken().isOneOf(tok::comma, tok::semi); - else if ((D.getContext() == DeclaratorContext::TrailingReturnContext || - D.getContext() == DeclaratorContext::TrailingReturnVarContext) && + else if ((D.getContext() == DeclaratorContext::TrailingReturn || + D.getContext() == DeclaratorContext::TrailingReturnVar) && !isCXX11VirtSpecifier(Tok)) DiagnoseIdentifier = NextToken().isOneOf( tok::comma, tok::semi, tok::equal, tok::l_brace, tok::kw_try); @@ -6058,7 +6058,7 @@ LLVM_BUILTIN_TRAP; if (Tok.is(tok::l_square)) return ParseMisplacedBracketDeclarator(D); - if (D.getContext() == DeclaratorContext::MemberContext) { + if (D.getContext() == DeclaratorContext::Member) { // Objective-C++: Detect C++ keywords and try to prevent further errors by // treating these keyword as valid member names. if (getLangOpts().ObjC && getLangOpts().CPlusPlus && @@ -6351,9 +6351,9 @@ // FIXME: currently, "static" case isn't handled correctly. bool IsCXX11MemberFunction = getLangOpts().CPlusPlus11 && D.getDeclSpec().getStorageClassSpec() != DeclSpec::SCS_typedef && - (D.getContext() == DeclaratorContext::MemberContext + (D.getContext() == DeclaratorContext::Member ? !D.getDeclSpec().isFriendSpecified() - : D.getContext() == DeclaratorContext::FileContext && + : D.getContext() == DeclaratorContext::File && D.getCXXScopeSpec().isValid() && Actions.CurContext->isRecord()); if (!IsCXX11MemberFunction) @@ -6757,11 +6757,11 @@ // "LambdaExprParameterContext", because we must accept either // 'declarator' or 'abstract-declarator' here. Declarator ParmDeclarator( - DS, DeclaratorCtx == DeclaratorContext::RequiresExprContext - ? DeclaratorContext::RequiresExprContext - : DeclaratorCtx == DeclaratorContext::LambdaExprContext - ? DeclaratorContext::LambdaExprParameterContext - : DeclaratorContext::PrototypeContext); + DS, DeclaratorCtx == DeclaratorContext::RequiresExpr + ? DeclaratorContext::RequiresExpr + : DeclaratorCtx == DeclaratorContext::LambdaExpr + ? DeclaratorContext::LambdaExprParameter + : DeclaratorContext::Prototype); ParseDeclarator(ParmDeclarator); // Parse GNU attributes, if present. @@ -6840,7 +6840,7 @@ SourceLocation EqualLoc = Tok.getLocation(); // Parse the default argument - if (DeclaratorCtx == DeclaratorContext::MemberContext) { + if (DeclaratorCtx == DeclaratorContext::Member) { // If we're inside a class definition, cache the tokens // corresponding to the default argument. We'll actually parse // them when we see the end of the class definition. diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp --- a/clang/lib/Parse/ParseDeclCXX.cpp +++ b/clang/lib/Parse/ParseDeclCXX.cpp @@ -625,7 +625,7 @@ // nested-name-specifier, the name is [...] considered to name the // constructor. if (getLangOpts().CPlusPlus11 && - Context == DeclaratorContext::MemberContext && + Context == DeclaratorContext::Member && Tok.is(tok::identifier) && (NextToken().is(tok::semi) || NextToken().is(tok::comma) || NextToken().is(tok::ellipsis)) && @@ -836,8 +836,8 @@ Decl *DeclFromDeclSpec = nullptr; TypeResult TypeAlias = ParseTypeName( nullptr, - TemplateInfo.Kind ? DeclaratorContext::AliasTemplateContext - : DeclaratorContext::AliasDeclContext, + TemplateInfo.Kind ? DeclaratorContext::AliasTemplate + : DeclaratorContext::AliasDecl, AS, &DeclFromDeclSpec, &Attrs); if (OwnedType) *OwnedType = DeclFromDeclSpec; @@ -1140,7 +1140,7 @@ EndLocation = ParseDecltypeSpecifier(DS); - Declarator DeclaratorInfo(DS, DeclaratorContext::TypeNameContext); + Declarator DeclaratorInfo(DS, DeclaratorContext::TypeName); return Actions.ActOnTypeName(getCurScope(), DeclaratorInfo); } @@ -1232,7 +1232,7 @@ DS.SetTypeSpecType(TST_typename, IdLoc, PrevSpec, DiagID, Type, Actions.getASTContext().getPrintingPolicy()); - Declarator DeclaratorInfo(DS, DeclaratorContext::TypeNameContext); + Declarator DeclaratorInfo(DS, DeclaratorContext::TypeName); return Actions.ActOnTypeName(getCurScope(), DeclaratorInfo); } @@ -2566,7 +2566,7 @@ SourceLocation DeclEnd; return DeclGroupPtrTy::make( DeclGroupRef(ParseTemplateDeclarationOrSpecialization( - DeclaratorContext::MemberContext, DeclEnd, AccessAttrs, AS))); + DeclaratorContext::Member, DeclEnd, AccessAttrs, AS))); } // Handle: member-declaration ::= '__extension__' member-declaration @@ -2609,7 +2609,7 @@ } SourceLocation DeclEnd; // Otherwise, it must be a using-declaration or an alias-declaration. - return ParseUsingDeclaration(DeclaratorContext::MemberContext, TemplateInfo, + return ParseUsingDeclaration(DeclaratorContext::Member, TemplateInfo, UsingLoc, DeclEnd, AS); } @@ -2657,7 +2657,7 @@ return Actions.ConvertDeclToDeclGroup(TheDecl); } - ParsingDeclarator DeclaratorInfo(*this, DS, DeclaratorContext::MemberContext); + ParsingDeclarator DeclaratorInfo(*this, DS, DeclaratorContext::Member); if (TemplateInfo.TemplateParams) DeclaratorInfo.setTemplateParameterLists(TemplateParams); VirtSpecifiers VS; @@ -2929,7 +2929,7 @@ break; if (Tok.isAtStartOfLine() && - !MightBeDeclarator(DeclaratorContext::MemberContext)) { + !MightBeDeclarator(DeclaratorContext::Member)) { // This comma was followed by a line-break and something which can't be // the start of a declarator. The comma was probably a typo for a // semicolon. @@ -3844,8 +3844,8 @@ ConsumeToken(); return ParseTypeName(&Range, MayBeFollowedByDirectInit - ? DeclaratorContext::TrailingReturnVarContext - : DeclaratorContext::TrailingReturnContext); + ? DeclaratorContext::TrailingReturnVar + : DeclaratorContext::TrailingReturn); } /// Parse a requires-clause as part of a function declaration. diff --git a/clang/lib/Parse/ParseExpr.cpp b/clang/lib/Parse/ParseExpr.cpp --- a/clang/lib/Parse/ParseExpr.cpp +++ b/clang/lib/Parse/ParseExpr.cpp @@ -1211,7 +1211,7 @@ DS.SetTypeSpecType(TST_typename, ILoc, PrevSpec, DiagID, Typ, Actions.getASTContext().getPrintingPolicy()); - Declarator DeclaratorInfo(DS, DeclaratorContext::TypeNameContext); + Declarator DeclaratorInfo(DS, DeclaratorContext::TypeName); TypeResult Ty = Actions.ActOnTypeName(getCurScope(), DeclaratorInfo); if (Ty.isInvalid()) @@ -1485,7 +1485,7 @@ PrevSpec, DiagID, Type, Actions.getASTContext().getPrintingPolicy()); - Declarator DeclaratorInfo(DS, DeclaratorContext::TypeNameContext); + Declarator DeclaratorInfo(DS, DeclaratorContext::TypeName); TypeResult Ty = Actions.ActOnTypeName(getCurScope(), DeclaratorInfo); if (Ty.isInvalid()) break; @@ -2261,7 +2261,7 @@ if (isTypeIdUnambiguously()) { DeclSpec DS(AttrFactory); ParseSpecifierQualifierList(DS); - Declarator DeclaratorInfo(DS, DeclaratorContext::TypeNameContext); + Declarator DeclaratorInfo(DS, DeclaratorContext::TypeName); ParseDeclarator(DeclaratorInfo); SourceLocation LParenLoc = PP.getLocForEndOfToken(OpTok.getLocation()); @@ -2887,7 +2887,7 @@ // Parse the type declarator. DeclSpec DS(AttrFactory); ParseSpecifierQualifierList(DS); - Declarator DeclaratorInfo(DS, DeclaratorContext::TypeNameContext); + Declarator DeclaratorInfo(DS, DeclaratorContext::TypeName); ParseDeclarator(DeclaratorInfo); // If our type is followed by an identifier and either ':' or ']', then @@ -3413,7 +3413,7 @@ ParseSpecifierQualifierList(DS); // Parse the block-declarator. - Declarator DeclaratorInfo(DS, DeclaratorContext::BlockLiteralContext); + Declarator DeclaratorInfo(DS, DeclaratorContext::BlockLiteral); DeclaratorInfo.setFunctionDefinitionKind(FDK_Definition); ParseDeclarator(DeclaratorInfo); @@ -3452,7 +3452,7 @@ // Parse the return type if present. DeclSpec DS(AttrFactory); - Declarator ParamInfo(DS, DeclaratorContext::BlockLiteralContext); + Declarator ParamInfo(DS, DeclaratorContext::BlockLiteral); ParamInfo.setFunctionDefinitionKind(FDK_Definition); // FIXME: Since the return type isn't actually parsed, it can't be used to // fill ParamInfo with an initial valid range, so do it manually. diff --git a/clang/lib/Parse/ParseExprCXX.cpp b/clang/lib/Parse/ParseExprCXX.cpp --- a/clang/lib/Parse/ParseExprCXX.cpp +++ b/clang/lib/Parse/ParseExprCXX.cpp @@ -1242,7 +1242,7 @@ // Parse lambda-declarator[opt]. DeclSpec DS(AttrFactory); - Declarator D(DS, DeclaratorContext::LambdaExprContext); + Declarator D(DS, DeclaratorContext::LambdaExpr); TemplateParameterDepthRAII CurTemplateDepthTracker(TemplateParameterDepth); Actions.PushLambdaScope(); @@ -1557,7 +1557,7 @@ ParseSpecifierQualifierList(DS); // Parse the abstract-declarator, if present. - Declarator DeclaratorInfo(DS, DeclaratorContext::TypeNameContext); + Declarator DeclaratorInfo(DS, DeclaratorContext::TypeName); ParseDeclarator(DeclaratorInfo); SourceLocation RAngleBracketLoc = Tok.getLocation(); @@ -1883,7 +1883,7 @@ /// In C++1z onwards, the type specifier can also be a template-name. ExprResult Parser::ParseCXXTypeConstructExpression(const DeclSpec &DS) { - Declarator DeclaratorInfo(DS, DeclaratorContext::FunctionalCastContext); + Declarator DeclaratorInfo(DS, DeclaratorContext::FunctionalCast); ParsedType TypeRep = Actions.ActOnTypeName(getCurScope(), DeclaratorInfo).get(); assert((Tok.is(tok::l_paren) || @@ -2032,7 +2032,7 @@ WarnOnInit(); SourceLocation DeclStart = Tok.getLocation(), DeclEnd; DeclGroupPtrTy DG = - ParseSimpleDeclaration(DeclaratorContext::InitStmtContext, DeclEnd, + ParseSimpleDeclaration(DeclaratorContext::SelectionInit, DeclEnd, attrs, /*RequireSemi=*/true); *InitStmt = Actions.ActOnDeclStmt(DG, DeclStart, DeclEnd); return ParseCXXCondition(nullptr, Loc, CK); @@ -2042,7 +2042,7 @@ assert(FRI && "should not parse a for range declaration here"); SourceLocation DeclStart = Tok.getLocation(), DeclEnd; DeclGroupPtrTy DG = ParseSimpleDeclaration( - DeclaratorContext::ForContext, DeclEnd, attrs, false, FRI); + DeclaratorContext::ForInit, DeclEnd, attrs, false, FRI); FRI->LoopVar = Actions.ActOnDeclStmt(DG, DeclStart, Tok.getLocation()); return Sema::ConditionResult(); } @@ -2058,7 +2058,7 @@ ParseSpecifierQualifierList(DS, AS_none, DeclSpecContext::DSC_condition); // declarator - Declarator DeclaratorInfo(DS, DeclaratorContext::ConditionContext); + Declarator DeclaratorInfo(DS, DeclaratorContext::Condition); ParseDeclarator(DeclaratorInfo); // simple-asm-expr[opt] @@ -2699,7 +2699,7 @@ // Parse the conversion-declarator, which is merely a sequence of // ptr-operators. - Declarator D(DS, DeclaratorContext::ConversionIdContext); + Declarator D(DS, DeclaratorContext::ConversionId); ParseDeclaratorInternal(D, /*DirectDeclParser=*/nullptr); // Finish up the type. @@ -3057,7 +3057,7 @@ SourceRange TypeIdParens; DeclSpec DS(AttrFactory); - Declarator DeclaratorInfo(DS, DeclaratorContext::CXXNewContext); + Declarator DeclaratorInfo(DS, DeclaratorContext::CXXNew); if (Tok.is(tok::l_paren)) { // If it turns out to be a placement, we change the type location. BalancedDelimiterTracker T(*this, tok::l_paren); @@ -3379,7 +3379,7 @@ ParsedAttributes FirstArgAttrs(getAttrFactory()); SourceLocation EllipsisLoc; llvm::SmallVector LocalParameters; - ParseParameterDeclarationClause(DeclaratorContext::RequiresExprContext, + ParseParameterDeclarationClause(DeclaratorContext::RequiresExpr, FirstArgAttrs, LocalParameters, EllipsisLoc); if (EllipsisLoc.isValid()) @@ -3907,7 +3907,7 @@ if (ParseAs >= CompoundLiteral) { // Parse the type declarator. DeclSpec DS(AttrFactory); - Declarator DeclaratorInfo(DS, DeclaratorContext::TypeNameContext); + Declarator DeclaratorInfo(DS, DeclaratorContext::TypeName); { ColonProtectionRAIIObject InnerColonProtection(*this); ParseSpecifierQualifierList(DS); @@ -3985,7 +3985,7 @@ ParseSpecifierQualifierList(DS); // Parse the abstract-declarator, if present. - Declarator DeclaratorInfo(DS, DeclaratorContext::TypeNameContext); + Declarator DeclaratorInfo(DS, DeclaratorContext::TypeName); ParseDeclarator(DeclaratorInfo); if (ExpectAndConsume(tok::comma)) { diff --git a/clang/lib/Parse/ParseObjc.cpp b/clang/lib/Parse/ParseObjc.cpp --- a/clang/lib/Parse/ParseObjc.cpp +++ b/clang/lib/Parse/ParseObjc.cpp @@ -657,7 +657,7 @@ if (Tok.isOneOf(tok::kw_static_assert, tok::kw__Static_assert)) { SourceLocation DeclEnd; allTUVariables.push_back( - ParseDeclaration(DeclaratorContext::FileContext, DeclEnd, attrs)); + ParseDeclaration(DeclaratorContext::File, DeclEnd, attrs)); continue; } @@ -1141,13 +1141,13 @@ /// void Parser::ParseObjCTypeQualifierList(ObjCDeclSpec &DS, DeclaratorContext Context) { - assert(Context == DeclaratorContext::ObjCParameterContext || - Context == DeclaratorContext::ObjCResultContext); + assert(Context == DeclaratorContext::ObjCParameter || + Context == DeclaratorContext::ObjCResult); while (1) { if (Tok.is(tok::code_completion)) { Actions.CodeCompleteObjCPassingType(getCurScope(), DS, - Context == DeclaratorContext::ObjCParameterContext); + Context == DeclaratorContext::ObjCParameter); return cutOffParsing(); } @@ -1237,10 +1237,10 @@ ParsedType Parser::ParseObjCTypeName(ObjCDeclSpec &DS, DeclaratorContext context, ParsedAttributes *paramAttrs) { - assert(context == DeclaratorContext::ObjCParameterContext || - context == DeclaratorContext::ObjCResultContext); + assert(context == DeclaratorContext::ObjCParameter || + context == DeclaratorContext::ObjCResult); assert((paramAttrs != nullptr) == - (context == DeclaratorContext::ObjCParameterContext)); + (context == DeclaratorContext::ObjCParameter)); assert(Tok.is(tok::l_paren) && "expected ("); @@ -1259,7 +1259,7 @@ DeclSpec declSpec(AttrFactory); declSpec.setObjCQualifiers(&DS); DeclSpecContext dsContext = DeclSpecContext::DSC_normal; - if (context == DeclaratorContext::ObjCResultContext) + if (context == DeclaratorContext::ObjCResult) dsContext = DeclSpecContext::DSC_objc_method_result; ParseSpecifierQualifierList(declSpec, AS_none, dsContext); Declarator declarator(declSpec, context); @@ -1281,7 +1281,7 @@ // If we're parsing a parameter, steal all the decl attributes // and add them to the decl spec. - if (context == DeclaratorContext::ObjCParameterContext) + if (context == DeclaratorContext::ObjCParameter) takeDeclAttributes(*paramAttrs, declarator); } } @@ -1345,7 +1345,7 @@ ParsedType ReturnType; ObjCDeclSpec DSRet; if (Tok.is(tok::l_paren)) - ReturnType = ParseObjCTypeName(DSRet, DeclaratorContext::ObjCResultContext, + ReturnType = ParseObjCTypeName(DSRet, DeclaratorContext::ObjCResult, nullptr); // If attributes exist before the method, parse them. @@ -1408,7 +1408,7 @@ ArgInfo.Type = nullptr; if (Tok.is(tok::l_paren)) // Parse the argument type if present. ArgInfo.Type = ParseObjCTypeName(ArgInfo.DeclSpec, - DeclaratorContext::ObjCParameterContext, + DeclaratorContext::ObjCParameter, ¶mAttrs); // If attributes exist before the argument name, parse them. @@ -1485,7 +1485,7 @@ DeclSpec DS(AttrFactory); ParseDeclarationSpecifiers(DS); // Parse the declarator. - Declarator ParmDecl(DS, DeclaratorContext::PrototypeContext); + Declarator ParmDecl(DS, DeclaratorContext::Prototype); ParseDeclarator(ParmDecl); IdentifierInfo *ParmII = ParmDecl.getIdentifier(); Decl *Param = Actions.ActOnParamDeclarator(getCurScope(), ParmDecl); @@ -1692,7 +1692,7 @@ typeArg, Actions.getASTContext().getPrintingPolicy()); // Form a declarator to turn this into a type. - Declarator D(DS, DeclaratorContext::TypeNameContext); + Declarator D(DS, DeclaratorContext::TypeName); TypeResult fullTypeArg = Actions.ActOnTypeName(getCurScope(), D); if (fullTypeArg.isUsable()) { typeArgs.push_back(fullTypeArg.get()); @@ -2536,7 +2536,7 @@ if (Tok.isNot(tok::ellipsis)) { DeclSpec DS(AttrFactory); ParseDeclarationSpecifiers(DS); - Declarator ParmDecl(DS, DeclaratorContext::ObjCCatchContext); + Declarator ParmDecl(DS, DeclaratorContext::ObjCCatch); ParseDeclarator(ParmDecl); // Inform the actions module about the declarator, so it @@ -2952,7 +2952,7 @@ // We have a class message. Turn the simple-type-specifier or // typename-specifier we parsed into a type and parse the // remainder of the class message. - Declarator DeclaratorInfo(DS, DeclaratorContext::TypeNameContext); + Declarator DeclaratorInfo(DS, DeclaratorContext::TypeName); TypeResult Type = Actions.ActOnTypeName(getCurScope(), DeclaratorInfo); if (Type.isInvalid()) return true; diff --git a/clang/lib/Parse/ParseOpenMP.cpp b/clang/lib/Parse/ParseOpenMP.cpp --- a/clang/lib/Parse/ParseOpenMP.cpp +++ b/clang/lib/Parse/ParseOpenMP.cpp @@ -298,7 +298,7 @@ ColonProtectionRAIIObject ColonRAII(*this); SourceRange Range; TypeResult TR = - ParseTypeName(&Range, DeclaratorContext::PrototypeContext, AS); + ParseTypeName(&Range, DeclaratorContext::Prototype, AS); if (TR.isUsable()) { QualType ReductionType = Actions.ActOnOpenMPDeclareReductionType(Range.getBegin(), TR); @@ -624,7 +624,7 @@ ParseSpecifierQualifierList(DS, AS, DSC); // Parse the declarator. - DeclaratorContext Context = DeclaratorContext::PrototypeContext; + DeclaratorContext Context = DeclaratorContext::Prototype; Declarator DeclaratorInfo(DS, Context); ParseDeclarator(DeclaratorInfo); Range = DeclaratorInfo.getSourceRange(); diff --git a/clang/lib/Parse/ParseStmt.cpp b/clang/lib/Parse/ParseStmt.cpp --- a/clang/lib/Parse/ParseStmt.cpp +++ b/clang/lib/Parse/ParseStmt.cpp @@ -215,11 +215,11 @@ DeclGroupPtrTy Decl; if (GNUAttributeLoc.isValid()) { DeclStart = GNUAttributeLoc; - Decl = ParseDeclaration(DeclaratorContext::BlockContext, DeclEnd, Attrs, + Decl = ParseDeclaration(DeclaratorContext::Block, DeclEnd, Attrs, &GNUAttributeLoc); } else { Decl = - ParseDeclaration(DeclaratorContext::BlockContext, DeclEnd, Attrs); + ParseDeclaration(DeclaratorContext::Block, DeclEnd, Attrs); } if (Attrs.Range.getBegin().isValid()) DeclStart = Attrs.Range.getBegin(); @@ -1119,7 +1119,7 @@ SourceLocation DeclStart = Tok.getLocation(), DeclEnd; DeclGroupPtrTy Res = - ParseDeclaration(DeclaratorContext::BlockContext, DeclEnd, attrs); + ParseDeclaration(DeclaratorContext::Block, DeclEnd, attrs); R = Actions.ActOnDeclStmt(Res, DeclStart, DeclEnd); } else { // Otherwise this was a unary __extension__ marker. @@ -1872,7 +1872,7 @@ SourceLocation DeclStart = Tok.getLocation(), DeclEnd; DeclGroupPtrTy DG = ParseSimpleDeclaration( - DeclaratorContext::ForContext, DeclEnd, attrs, false, + DeclaratorContext::ForInit, DeclEnd, attrs, false, MightBeForRangeStmt ? &ForRangeInfo : nullptr); FirstPart = Actions.ActOnDeclStmt(DG, DeclStart, Tok.getLocation()); if (ForRangeInfo.ParsedForRangeDecl()) { @@ -2471,7 +2471,7 @@ if (ParseCXXTypeSpecifierSeq(DS)) return StmtError(); - Declarator ExDecl(DS, DeclaratorContext::CXXCatchContext); + Declarator ExDecl(DS, DeclaratorContext::CXXCatch); ParseDeclarator(ExDecl); ExceptionDecl = Actions.ActOnExceptionDeclarator(getCurScope(), ExDecl); } else diff --git a/clang/lib/Parse/ParseTemplate.cpp b/clang/lib/Parse/ParseTemplate.cpp --- a/clang/lib/Parse/ParseTemplate.cpp +++ b/clang/lib/Parse/ParseTemplate.cpp @@ -198,7 +198,7 @@ return ParseStaticAssertDeclaration(DeclEnd); } - if (Context == DeclaratorContext::MemberContext) { + if (Context == DeclaratorContext::Member) { // We are parsing a member template. ParseCXXClassMemberDeclaration(AS, AccessAttrs, TemplateInfo, &DiagsFromTParams); @@ -279,7 +279,7 @@ // Function definitions are only allowed at file scope and in C++ classes. // The C++ inline method definition case is handled elsewhere, so we only // need to handle the file scope definition case. - if (Context != DeclaratorContext::FileContext) { + if (Context != DeclaratorContext::File) { Diag(Tok, diag::err_function_definition_not_allowed); SkipMalformedDecl(); return nullptr; @@ -646,7 +646,7 @@ // probably meant to write the type of a NTTP. DeclSpec DS(getAttrFactory()); DS.SetTypeSpecError(); - Declarator D(DS, DeclaratorContext::TemplateParamContext); + Declarator D(DS, DeclaratorContext::TemplateParam); D.SetIdentifier(nullptr, Tok.getLocation()); D.setInvalidType(true); NamedDecl *ErrorParam = Actions.ActOnNonTypeTemplateParameter( @@ -822,7 +822,7 @@ ParsedType DefaultArg; if (TryConsumeToken(tok::equal, EqualLoc)) DefaultArg = ParseTypeName(/*Range=*/nullptr, - DeclaratorContext::TemplateTypeArgContext) + DeclaratorContext::TemplateTypeArg) .get(); NamedDecl *NewDecl = Actions.ActOnTypeParameter(getCurScope(), @@ -967,7 +967,7 @@ DeclSpecContext::DSC_template_param); // Parse this as a typename. - Declarator ParamDecl(DS, DeclaratorContext::TemplateParamContext); + Declarator ParamDecl(DS, DeclaratorContext::TemplateParam); ParseDeclarator(ParamDecl); if (DS.getTypeSpecType() == DeclSpec::TST_unspecified) { Diag(Tok.getLocation(), diag::err_expected_template_parameter); @@ -1527,7 +1527,7 @@ /*ExprContext=*/Sema::ExpressionEvaluationContextRecord::EK_TemplateArgument); if (isCXXTypeId(TypeIdAsTemplateArgument)) { TypeResult TypeArg = ParseTypeName( - /*Range=*/nullptr, DeclaratorContext::TemplateArgContext); + /*Range=*/nullptr, DeclaratorContext::TemplateArg); return Actions.ActOnTemplateTypeArgument(TypeArg); } diff --git a/clang/lib/Parse/Parser.cpp b/clang/lib/Parse/Parser.cpp --- a/clang/lib/Parse/Parser.cpp +++ b/clang/lib/Parse/Parser.cpp @@ -901,7 +901,7 @@ // A function definition cannot start with any of these keywords. { SourceLocation DeclEnd; - return ParseDeclaration(DeclaratorContext::FileContext, DeclEnd, attrs); + return ParseDeclaration(DeclaratorContext::File, DeclEnd, attrs); } case tok::kw_static: @@ -911,7 +911,7 @@ Diag(ConsumeToken(), diag::warn_static_inline_explicit_inst_ignored) << 0; SourceLocation DeclEnd; - return ParseDeclaration(DeclaratorContext::FileContext, DeclEnd, attrs); + return ParseDeclaration(DeclaratorContext::File, DeclEnd, attrs); } goto dont_know; @@ -922,7 +922,7 @@ // Inline namespaces. Allowed as an extension even in C++03. if (NextKind == tok::kw_namespace) { SourceLocation DeclEnd; - return ParseDeclaration(DeclaratorContext::FileContext, DeclEnd, attrs); + return ParseDeclaration(DeclaratorContext::File, DeclEnd, attrs); } // Parse (then ignore) 'inline' prior to a template instantiation. This is @@ -931,7 +931,7 @@ Diag(ConsumeToken(), diag::warn_static_inline_explicit_inst_ignored) << 1; SourceLocation DeclEnd; - return ParseDeclaration(DeclaratorContext::FileContext, DeclEnd, attrs); + return ParseDeclaration(DeclaratorContext::File, DeclEnd, attrs); } } goto dont_know; @@ -946,7 +946,7 @@ diag::ext_extern_template) << SourceRange(ExternLoc, TemplateLoc); SourceLocation DeclEnd; return Actions.ConvertDeclToDeclGroup( - ParseExplicitInstantiation(DeclaratorContext::FileContext, ExternLoc, + ParseExplicitInstantiation(DeclaratorContext::File, ExternLoc, TemplateLoc, DeclEnd, attrs)); } goto dont_know; @@ -1128,11 +1128,11 @@ if (getLangOpts().CPlusPlus && isTokenStringLiteral() && DS.getStorageClassSpec() == DeclSpec::SCS_extern && DS.getParsedSpecifiers() == DeclSpec::PQ_StorageClassSpecifier) { - Decl *TheDecl = ParseLinkage(DS, DeclaratorContext::FileContext); + Decl *TheDecl = ParseLinkage(DS, DeclaratorContext::File); return Actions.ConvertDeclToDeclGroup(TheDecl); } - return ParseDeclGroup(DS, DeclaratorContext::FileContext); + return ParseDeclGroup(DS, DeclaratorContext::File); } Parser::DeclGroupPtrTy @@ -1441,7 +1441,7 @@ } // Parse the first declarator attached to this declspec. - Declarator ParmDeclarator(DS, DeclaratorContext::KNRTypeListContext); + Declarator ParmDeclarator(DS, DeclaratorContext::KNRTypeList); ParseDeclarator(ParmDeclarator); // Handle the full declarator list. diff --git a/clang/lib/Sema/DeclSpec.cpp b/clang/lib/Sema/DeclSpec.cpp --- a/clang/lib/Sema/DeclSpec.cpp +++ b/clang/lib/Sema/DeclSpec.cpp @@ -408,7 +408,7 @@ } bool Declarator::isStaticMember() { - assert(getContext() == DeclaratorContext::MemberContext); + assert(getContext() == DeclaratorContext::Member); return getDeclSpec().getStorageClassSpec() == DeclSpec::SCS_static || (getName().Kind == UnqualifiedIdKind::IK_OperatorFunctionId && CXXMethodDecl::isStaticOverloadedOperator( diff --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp --- a/clang/lib/Sema/SemaCodeComplete.cpp +++ b/clang/lib/Sema/SemaCodeComplete.cpp @@ -5395,7 +5395,7 @@ AddTypeQualifierResults(DS, Results, LangOpts); if (LangOpts.CPlusPlus11) { Results.AddResult("noexcept"); - if (D.getContext() == DeclaratorContext::MemberContext && + if (D.getContext() == DeclaratorContext::Member && !D.isCtorOrDtor() && !D.isStaticMember()) { if (!VS || !VS->isFinalSpecified()) Results.AddResult("final"); diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -5160,7 +5160,7 @@ Diag(DS.getBeginLoc(), diag::ext_no_declarators) << DS.getSourceRange(); // Mock up a declarator. - Declarator Dc(DS, DeclaratorContext::MemberContext); + Declarator Dc(DS, DeclaratorContext::Member); TypeSourceInfo *TInfo = GetTypeForDeclarator(Dc, S); assert(TInfo && "couldn't build declarator info for anonymous struct/union"); @@ -5257,7 +5257,7 @@ assert(Record && "expected a record!"); // Mock up a declarator. - Declarator Dc(DS, DeclaratorContext::TypeNameContext); + Declarator Dc(DS, DeclaratorContext::TypeName); TypeSourceInfo *TInfo = GetTypeForDeclarator(Dc, S); assert(TInfo && "couldn't build declarator info for anonymous struct"); @@ -12764,7 +12764,7 @@ DS.SetTypeSpecType(DeclSpec::TST_auto, IdentLoc, PrevSpec, DiagID, getPrintingPolicy()); - Declarator D(DS, DeclaratorContext::ForContext); + Declarator D(DS, DeclaratorContext::ForInit); D.SetIdentifier(Ident, IdentLoc); D.takeAttributes(Attrs, AttrEnd); @@ -13738,7 +13738,7 @@ // Use the identifier location for the type source range. DS.SetRangeStart(FTI.Params[i].IdentLoc); DS.SetRangeEnd(FTI.Params[i].IdentLoc); - Declarator ParamD(DS, DeclaratorContext::KNRTypeListContext); + Declarator ParamD(DS, DeclaratorContext::KNRTypeList); ParamD.SetIdentifier(FTI.Params[i].Ident, FTI.Params[i].IdentLoc); FTI.Params[i].Param = ActOnParamDeclarator(S, ParamD); } @@ -14675,7 +14675,7 @@ (void)Error; // Silence warning. assert(!Error && "Error setting up implicit decl!"); SourceLocation NoLoc; - Declarator D(DS, DeclaratorContext::BlockContext); + Declarator D(DS, DeclaratorContext::Block); D.AddTypeInfo(DeclaratorChunk::getFunction(/*HasProto=*/false, /*IsAmbiguous=*/false, /*LParenLoc=*/NoLoc, diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -734,7 +734,7 @@ Diag(Decomp.getLSquareLoc(), !getLangOpts().CPlusPlus17 ? diag::ext_decomp_decl - : D.getContext() == DeclaratorContext::ConditionContext + : D.getContext() == DeclaratorContext::Condition ? diag::ext_decomp_decl_cond : diag::warn_cxx14_compat_decomp_decl) << Decomp.getSourceRange(); @@ -16331,7 +16331,7 @@ // Try to convert the decl specifier to a type. This works for // friend templates because ActOnTag never produces a ClassTemplateDecl // for a TUK_Friend. - Declarator TheDeclarator(DS, DeclaratorContext::MemberContext); + Declarator TheDeclarator(DS, DeclaratorContext::Member); TypeSourceInfo *TSI = GetTypeForDeclarator(TheDeclarator, S); QualType T = TSI->getType(); if (TheDeclarator.isInvalidType()) diff --git a/clang/lib/Sema/SemaDeclObjC.cpp b/clang/lib/Sema/SemaDeclObjC.cpp --- a/clang/lib/Sema/SemaDeclObjC.cpp +++ b/clang/lib/Sema/SemaDeclObjC.cpp @@ -1586,7 +1586,7 @@ DS.SetRangeEnd(loc); // Form the declarator. - Declarator D(DS, DeclaratorContext::TypeNameContext); + Declarator D(DS, DeclaratorContext::TypeName); // If we have a typedef of an Objective-C class type that is missing a '*', // add the '*'. diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -15091,7 +15091,7 @@ Scope *CurScope) { assert(ParamInfo.getIdentifier() == nullptr && "block-id should have no identifier!"); - assert(ParamInfo.getContext() == DeclaratorContext::BlockLiteralContext); + assert(ParamInfo.getContext() == DeclaratorContext::BlockLiteral); BlockScopeInfo *CurBlock = getCurBlock(); TypeSourceInfo *Sig = GetTypeForDeclarator(ParamInfo, CurScope); diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp --- a/clang/lib/Sema/SemaType.cpp +++ b/clang/lib/Sema/SemaType.cpp @@ -50,7 +50,7 @@ /// isOmittedBlockReturnType - Return true if this declarator is missing a /// return type because this is a omitted return type on a block literal. static bool isOmittedBlockReturnType(const Declarator &D) { - if (D.getContext() != DeclaratorContext::BlockLiteralContext || + if (D.getContext() != DeclaratorContext::BlockLiteral || D.getDeclSpec().hasTypeSpecifier()) return false; @@ -1348,12 +1348,12 @@ // The declspec is always missing in a lambda expr context; it is either // specified with a trailing return type or inferred. if (S.getLangOpts().CPlusPlus14 && - declarator.getContext() == DeclaratorContext::LambdaExprContext) { + declarator.getContext() == DeclaratorContext::LambdaExpr) { // In C++1y, a lambda's implicit return type is 'auto'. Result = Context.getAutoDeductType(); break; } else if (declarator.getContext() == - DeclaratorContext::LambdaExprContext || + DeclaratorContext::LambdaExpr || checkOmittedBlockReturnType(S, declarator, Context.DependentTy)) { Result = Context.DependentTy; @@ -1741,7 +1741,7 @@ // Before we process any type attributes, synthesize a block literal // function declarator if necessary. - if (declarator.getContext() == DeclaratorContext::BlockLiteralContext) + if (declarator.getContext() == DeclaratorContext::BlockLiteral) maybeSynthesizeBlockSignature(state, Result); // Apply any type attributes from the decl spec. This may cause the @@ -3306,21 +3306,21 @@ bool IsDeducedReturnType = false; switch (D.getContext()) { - case DeclaratorContext::LambdaExprContext: + case DeclaratorContext::LambdaExpr: // Declared return type of a lambda-declarator is implicit and is always // 'auto'. break; - case DeclaratorContext::ObjCParameterContext: - case DeclaratorContext::ObjCResultContext: + case DeclaratorContext::ObjCParameter: + case DeclaratorContext::ObjCResult: Error = 0; break; - case DeclaratorContext::RequiresExprContext: + case DeclaratorContext::RequiresExpr: Error = 22; break; - case DeclaratorContext::PrototypeContext: - case DeclaratorContext::LambdaExprParameterContext: { + case DeclaratorContext::Prototype: + case DeclaratorContext::LambdaExprParameter: { InventedTemplateParameterInfo *Info = nullptr; - if (D.getContext() == DeclaratorContext::PrototypeContext) { + if (D.getContext() == DeclaratorContext::Prototype) { // With concepts we allow 'auto' in function parameters. if (!SemaRef.getLangOpts().CPlusPlus20 || !Auto || Auto->getKeyword() != AutoTypeKeyword::Auto) { @@ -3350,7 +3350,7 @@ T = InventTemplateParameter(state, T, nullptr, Auto, *Info).first; break; } - case DeclaratorContext::MemberContext: { + case DeclaratorContext::Member: { if (D.getDeclSpec().getStorageClassSpec() == DeclSpec::SCS_static || D.isFunctionDeclarator()) break; @@ -3370,21 +3370,21 @@ Error = 20; // Friend type break; } - case DeclaratorContext::CXXCatchContext: - case DeclaratorContext::ObjCCatchContext: + case DeclaratorContext::CXXCatch: + case DeclaratorContext::ObjCCatch: Error = 7; // Exception declaration break; - case DeclaratorContext::TemplateParamContext: + case DeclaratorContext::TemplateParam: if (isa(Deduced) && !SemaRef.getLangOpts().CPlusPlus20) Error = 19; // Template parameter (until C++20) else if (!SemaRef.getLangOpts().CPlusPlus17) Error = 8; // Template parameter (until C++17) break; - case DeclaratorContext::BlockLiteralContext: + case DeclaratorContext::BlockLiteral: Error = 9; // Block literal break; - case DeclaratorContext::TemplateArgContext: + case DeclaratorContext::TemplateArg: // Within a template argument list, a deduced template specialization // type will be reinterpreted as a template template argument. if (isa(Deduced) && @@ -3392,47 +3392,47 @@ D.getDeclSpec().getParsedSpecifiers() == DeclSpec::PQ_TypeSpecifier) break; LLVM_FALLTHROUGH; - case DeclaratorContext::TemplateTypeArgContext: + case DeclaratorContext::TemplateTypeArg: Error = 10; // Template type argument break; - case DeclaratorContext::AliasDeclContext: - case DeclaratorContext::AliasTemplateContext: + case DeclaratorContext::AliasDecl: + case DeclaratorContext::AliasTemplate: Error = 12; // Type alias break; - case DeclaratorContext::TrailingReturnContext: - case DeclaratorContext::TrailingReturnVarContext: + case DeclaratorContext::TrailingReturn: + case DeclaratorContext::TrailingReturnVar: if (!SemaRef.getLangOpts().CPlusPlus14 || !IsCXXAutoType) Error = 13; // Function return type IsDeducedReturnType = true; break; - case DeclaratorContext::ConversionIdContext: + case DeclaratorContext::ConversionId: if (!SemaRef.getLangOpts().CPlusPlus14 || !IsCXXAutoType) Error = 14; // conversion-type-id IsDeducedReturnType = true; break; - case DeclaratorContext::FunctionalCastContext: + case DeclaratorContext::FunctionalCast: if (isa(Deduced)) break; LLVM_FALLTHROUGH; - case DeclaratorContext::TypeNameContext: + case DeclaratorContext::TypeName: Error = 15; // Generic break; - case DeclaratorContext::FileContext: - case DeclaratorContext::BlockContext: - case DeclaratorContext::ForContext: - case DeclaratorContext::InitStmtContext: - case DeclaratorContext::ConditionContext: + case DeclaratorContext::File: + case DeclaratorContext::Block: + case DeclaratorContext::ForInit: + case DeclaratorContext::SelectionInit: + case DeclaratorContext::Condition: // FIXME: P0091R3 (erroneously) does not permit class template argument // deduction in conditions, for-init-statements, and other declarations // that are not simple-declarations. break; - case DeclaratorContext::CXXNewContext: + case DeclaratorContext::CXXNew: // FIXME: P0091R3 does not permit class template argument deduction here, // but we follow GCC and allow it anyway. if (!IsCXXAutoType && !isa(Deduced)) Error = 17; // 'new' type break; - case DeclaratorContext::KNRTypeListContext: + case DeclaratorContext::KNRTypeList: Error = 18; // K&R function parameter break; } @@ -3475,12 +3475,12 @@ T = SemaRef.Context.IntTy; D.setInvalidType(true); - } else if (Auto && D.getContext() != DeclaratorContext::LambdaExprContext) { + } else if (Auto && D.getContext() != DeclaratorContext::LambdaExpr) { // If there was a trailing return type, we already got // warn_cxx98_compat_trailing_return_type in the parser. SemaRef.Diag(AutoRange.getBegin(), D.getContext() == - DeclaratorContext::LambdaExprParameterContext + DeclaratorContext::LambdaExprParameter ? diag::warn_cxx11_compat_generic_lambda : IsDeducedReturnType ? diag::warn_cxx11_compat_deduced_return_type @@ -3495,50 +3495,50 @@ // or enumeration in a type-specifier-seq. unsigned DiagID = 0; switch (D.getContext()) { - case DeclaratorContext::TrailingReturnContext: - case DeclaratorContext::TrailingReturnVarContext: + case DeclaratorContext::TrailingReturn: + case DeclaratorContext::TrailingReturnVar: // Class and enumeration definitions are syntactically not allowed in // trailing return types. llvm_unreachable("parser should not have allowed this"); break; - case DeclaratorContext::FileContext: - case DeclaratorContext::MemberContext: - case DeclaratorContext::BlockContext: - case DeclaratorContext::ForContext: - case DeclaratorContext::InitStmtContext: - case DeclaratorContext::BlockLiteralContext: - case DeclaratorContext::LambdaExprContext: + case DeclaratorContext::File: + case DeclaratorContext::Member: + case DeclaratorContext::Block: + case DeclaratorContext::ForInit: + case DeclaratorContext::SelectionInit: + case DeclaratorContext::BlockLiteral: + case DeclaratorContext::LambdaExpr: // C++11 [dcl.type]p3: // A type-specifier-seq shall not define a class or enumeration unless // it appears in the type-id of an alias-declaration (7.1.3) that is not // the declaration of a template-declaration. - case DeclaratorContext::AliasDeclContext: + case DeclaratorContext::AliasDecl: break; - case DeclaratorContext::AliasTemplateContext: + case DeclaratorContext::AliasTemplate: DiagID = diag::err_type_defined_in_alias_template; break; - case DeclaratorContext::TypeNameContext: - case DeclaratorContext::FunctionalCastContext: - case DeclaratorContext::ConversionIdContext: - case DeclaratorContext::TemplateParamContext: - case DeclaratorContext::CXXNewContext: - case DeclaratorContext::CXXCatchContext: - case DeclaratorContext::ObjCCatchContext: - case DeclaratorContext::TemplateArgContext: - case DeclaratorContext::TemplateTypeArgContext: + case DeclaratorContext::TypeName: + case DeclaratorContext::FunctionalCast: + case DeclaratorContext::ConversionId: + case DeclaratorContext::TemplateParam: + case DeclaratorContext::CXXNew: + case DeclaratorContext::CXXCatch: + case DeclaratorContext::ObjCCatch: + case DeclaratorContext::TemplateArg: + case DeclaratorContext::TemplateTypeArg: DiagID = diag::err_type_defined_in_type_specifier; break; - case DeclaratorContext::PrototypeContext: - case DeclaratorContext::LambdaExprParameterContext: - case DeclaratorContext::ObjCParameterContext: - case DeclaratorContext::ObjCResultContext: - case DeclaratorContext::KNRTypeListContext: - case DeclaratorContext::RequiresExprContext: + case DeclaratorContext::Prototype: + case DeclaratorContext::LambdaExprParameter: + case DeclaratorContext::ObjCParameter: + case DeclaratorContext::ObjCResult: + case DeclaratorContext::KNRTypeList: + case DeclaratorContext::RequiresExpr: // C++ [dcl.fct]p6: // Types shall not be defined in return or parameter types. DiagID = diag::err_type_defined_in_param_type; break; - case DeclaratorContext::ConditionContext: + case DeclaratorContext::Condition: // C++ 6.4p2: // The type-specifier-seq shall not contain typedef and shall not declare // a new class or enumeration. @@ -3587,7 +3587,7 @@ // Inside a condition, a direct initializer is not permitted. We allow one to // be parsed in order to give better diagnostics in condition parsing. - if (D.getContext() == DeclaratorContext::ConditionContext) + if (D.getContext() == DeclaratorContext::Condition) return; SourceRange ParenRange(DeclType.Loc, DeclType.EndLoc); @@ -3703,7 +3703,7 @@ case DeclaratorChunk::Function: // In a new-type-id, function chunks require parentheses. - if (D.getContext() == DeclaratorContext::CXXNewContext) + if (D.getContext() == DeclaratorContext::CXXNew) return; // FIXME: "A(f())" deserves a vexing-parse warning, not just a // redundant-parens warning, but we don't know whether the function @@ -3820,7 +3820,7 @@ // in a member pointer. IsCXXInstanceMethod = D.getTypeObject(I).Kind == DeclaratorChunk::MemberPointer; - } else if (D.getContext() == DeclaratorContext::LambdaExprContext) { + } else if (D.getContext() == DeclaratorContext::LambdaExpr) { // This can only be a call operator for a lambda, which is an instance // method. IsCXXInstanceMethod = true; @@ -4363,8 +4363,8 @@ // Does this declaration declare a typedef-name? bool IsTypedefName = D.getDeclSpec().getStorageClassSpec() == DeclSpec::SCS_typedef || - D.getContext() == DeclaratorContext::AliasDeclContext || - D.getContext() == DeclaratorContext::AliasTemplateContext; + D.getContext() == DeclaratorContext::AliasDecl || + D.getContext() == DeclaratorContext::AliasTemplate; // Does T refer to a function type with a cv-qualifier or a ref-qualifier? bool IsQualifiedFunction = T->isFunctionProtoType() && @@ -4493,15 +4493,15 @@ } else { bool isFunctionOrMethod = false; switch (auto context = state.getDeclarator().getContext()) { - case DeclaratorContext::ObjCParameterContext: - case DeclaratorContext::ObjCResultContext: - case DeclaratorContext::PrototypeContext: - case DeclaratorContext::TrailingReturnContext: - case DeclaratorContext::TrailingReturnVarContext: + case DeclaratorContext::ObjCParameter: + case DeclaratorContext::ObjCResult: + case DeclaratorContext::Prototype: + case DeclaratorContext::TrailingReturn: + case DeclaratorContext::TrailingReturnVar: isFunctionOrMethod = true; LLVM_FALLTHROUGH; - case DeclaratorContext::MemberContext: + case DeclaratorContext::Member: if (state.getDeclarator().isObjCIvar() && !isFunctionOrMethod) { complainAboutMissingNullability = CAMN_No; break; @@ -4515,8 +4515,8 @@ LLVM_FALLTHROUGH; - case DeclaratorContext::FileContext: - case DeclaratorContext::KNRTypeListContext: { + case DeclaratorContext::File: + case DeclaratorContext::KNRTypeList: { complainAboutMissingNullability = CAMN_Yes; // Nullability inference depends on the type and declarator. @@ -4533,8 +4533,8 @@ complainAboutInferringWithinChunk = wrappingKind; inferNullability = NullabilityKind::NonNull; inferNullabilityCS = - (context == DeclaratorContext::ObjCParameterContext || - context == DeclaratorContext::ObjCResultContext); + (context == DeclaratorContext::ObjCParameter || + context == DeclaratorContext::ObjCResult); } break; @@ -4570,28 +4570,28 @@ break; } - case DeclaratorContext::ConversionIdContext: + case DeclaratorContext::ConversionId: complainAboutMissingNullability = CAMN_Yes; break; - case DeclaratorContext::AliasDeclContext: - case DeclaratorContext::AliasTemplateContext: - case DeclaratorContext::BlockContext: - case DeclaratorContext::BlockLiteralContext: - case DeclaratorContext::ConditionContext: - case DeclaratorContext::CXXCatchContext: - case DeclaratorContext::CXXNewContext: - case DeclaratorContext::ForContext: - case DeclaratorContext::InitStmtContext: - case DeclaratorContext::LambdaExprContext: - case DeclaratorContext::LambdaExprParameterContext: - case DeclaratorContext::ObjCCatchContext: - case DeclaratorContext::TemplateParamContext: - case DeclaratorContext::TemplateArgContext: - case DeclaratorContext::TemplateTypeArgContext: - case DeclaratorContext::TypeNameContext: - case DeclaratorContext::FunctionalCastContext: - case DeclaratorContext::RequiresExprContext: + case DeclaratorContext::AliasDecl: + case DeclaratorContext::AliasTemplate: + case DeclaratorContext::Block: + case DeclaratorContext::BlockLiteral: + case DeclaratorContext::Condition: + case DeclaratorContext::CXXCatch: + case DeclaratorContext::CXXNew: + case DeclaratorContext::ForInit: + case DeclaratorContext::SelectionInit: + case DeclaratorContext::LambdaExpr: + case DeclaratorContext::LambdaExprParameter: + case DeclaratorContext::ObjCCatch: + case DeclaratorContext::TemplateParam: + case DeclaratorContext::TemplateArg: + case DeclaratorContext::TemplateTypeArg: + case DeclaratorContext::TypeName: + case DeclaratorContext::FunctionalCast: + case DeclaratorContext::RequiresExpr: // Don't infer in these contexts. break; } @@ -4828,7 +4828,7 @@ // array type, ... if (ASM == ArrayType::Static || ATI.TypeQuals) { if (!(D.isPrototypeContext() || - D.getContext() == DeclaratorContext::KNRTypeListContext)) { + D.getContext() == DeclaratorContext::KNRTypeList)) { S.Diag(DeclType.Loc, diag::err_array_static_outside_prototype) << (ASM == ArrayType::Static ? "'static'" : "type qualifier"); // Remove the 'static' and the type qualifiers. @@ -4853,7 +4853,7 @@ // Allow arrays of auto if we are a generic lambda parameter. // i.e. [](auto (&array)[5]) { return array[0]; }; OK if (AT && - D.getContext() != DeclaratorContext::LambdaExprParameterContext) { + D.getContext() != DeclaratorContext::LambdaExprParameter) { // We've already diagnosed this for decltype(auto). if (!AT->isDecltypeAuto()) S.Diag(DeclType.Loc, diag::err_illegal_decl_array_of_auto) @@ -4916,7 +4916,7 @@ << D.getSourceRange(); D.setInvalidType(true); } - } else if (D.getContext() != DeclaratorContext::LambdaExprContext && + } else if (D.getContext() != DeclaratorContext::LambdaExpr && (T.hasQualifiers() || !isa(T) || cast(T)->getKeyword() != AutoTypeKeyword::Auto || @@ -4936,10 +4936,10 @@ // invent a template parameter for it, for cases like // `auto f() -> C auto` or `[](auto (*p) -> auto) {}`. InventedTemplateParameterInfo *InventedParamInfo = nullptr; - if (D.getContext() == DeclaratorContext::PrototypeContext) + if (D.getContext() == DeclaratorContext::Prototype) InventedParamInfo = &S.InventedParameterInfos.back(); else if (D.getContext() == - DeclaratorContext::LambdaExprParameterContext) + DeclaratorContext::LambdaExprParameter) InventedParamInfo = S.getCurLambda(); if (InventedParamInfo) { std::tie(T, TInfo) = InventTemplateParameter( @@ -4961,7 +4961,7 @@ // Last processing chunk in block context means this function chunk // represents the block. if (chunkIndex == 0 && - D.getContext() == DeclaratorContext::BlockLiteralContext) + D.getContext() == DeclaratorContext::BlockLiteral) diagID = diag::err_block_returning_array_function; S.Diag(DeclType.Loc, diagID) << T->isFunctionType() << T; T = Context.IntTy; @@ -5102,8 +5102,8 @@ if (IsTypedefName && FTI.getExceptionSpecType() && !LangOpts.CPlusPlus17) S.Diag(FTI.getExceptionSpecLocBeg(), diag::err_exception_spec_in_typedef) - << (D.getContext() == DeclaratorContext::AliasDeclContext || - D.getContext() == DeclaratorContext::AliasTemplateContext); + << (D.getContext() == DeclaratorContext::AliasDecl || + D.getContext() == DeclaratorContext::AliasTemplate); // If we see "T var();" or "T var(T());" at block scope, it is probably // an attempt to initialize a variable, not a function declaration. @@ -5284,9 +5284,9 @@ .getScopeRep() ->getKind() == NestedNameSpecifier::TypeSpec) || state.getDeclarator().getContext() == - DeclaratorContext::MemberContext || + DeclaratorContext::Member || state.getDeclarator().getContext() == - DeclaratorContext::LambdaExprContext; + DeclaratorContext::LambdaExpr; }; if (state.getSema().getLangOpts().OpenCLCPlusPlus && IsClassMember()) { @@ -5453,8 +5453,8 @@ if (D.getName().getKind() == UnqualifiedIdKind::IK_DeductionGuideName) Kind = DeductionGuide; else if (!D.getCXXScopeSpec().isSet()) { - if ((D.getContext() == DeclaratorContext::MemberContext || - D.getContext() == DeclaratorContext::LambdaExprContext) && + if ((D.getContext() == DeclaratorContext::Member || + D.getContext() == DeclaratorContext::LambdaExpr) && !D.getDeclSpec().isFriendSpecified()) Kind = Member; } else { @@ -5483,8 +5483,8 @@ !(Kind == Member && D.getDeclSpec().getStorageClassSpec() != DeclSpec::SCS_static) && !IsTypedefName && - D.getContext() != DeclaratorContext::TemplateArgContext && - D.getContext() != DeclaratorContext::TemplateTypeArgContext) { + D.getContext() != DeclaratorContext::TemplateArg && + D.getContext() != DeclaratorContext::TemplateTypeArg) { SourceLocation Loc = D.getBeginLoc(); SourceRange RemovalRange; unsigned I; @@ -5546,8 +5546,8 @@ // C++2a [dcl.fct]p4: // A parameter with volatile-qualified type is deprecated if (T.isVolatileQualified() && S.getLangOpts().CPlusPlus20 && - (D.getContext() == DeclaratorContext::PrototypeContext || - D.getContext() == DeclaratorContext::LambdaExprParameterContext)) + (D.getContext() == DeclaratorContext::Prototype || + D.getContext() == DeclaratorContext::LambdaExprParameter)) S.Diag(D.getIdentifierLoc(), diag::warn_deprecated_volatile_param) << T; // If there was an ellipsis in the declarator, the declaration declares a @@ -5558,9 +5558,9 @@ // only be used in a parameter-declaration. Such a parameter-declaration // is a parameter pack (14.5.3). [...] switch (D.getContext()) { - case DeclaratorContext::PrototypeContext: - case DeclaratorContext::LambdaExprParameterContext: - case DeclaratorContext::RequiresExprContext: + case DeclaratorContext::Prototype: + case DeclaratorContext::LambdaExprParameter: + case DeclaratorContext::RequiresExpr: // C++0x [dcl.fct]p13: // [...] When it is part of a parameter-declaration-clause, the // parameter pack is a function parameter pack (14.5.3). The type T @@ -5580,7 +5580,7 @@ T = Context.getPackExpansionType(T, None, /*ExpectPackInType=*/false); } break; - case DeclaratorContext::TemplateParamContext: + case DeclaratorContext::TemplateParam: // C++0x [temp.param]p15: // If a template-parameter is a [...] is a parameter-declaration that // declares a parameter pack (8.3.5), then the template-parameter is a @@ -5598,31 +5598,31 @@ : diag::ext_variadic_templates); break; - case DeclaratorContext::FileContext: - case DeclaratorContext::KNRTypeListContext: - case DeclaratorContext::ObjCParameterContext: // FIXME: special diagnostic + case DeclaratorContext::File: + case DeclaratorContext::KNRTypeList: + case DeclaratorContext::ObjCParameter: // FIXME: special diagnostic // here? - case DeclaratorContext::ObjCResultContext: // FIXME: special diagnostic + case DeclaratorContext::ObjCResult: // FIXME: special diagnostic // here? - case DeclaratorContext::TypeNameContext: - case DeclaratorContext::FunctionalCastContext: - case DeclaratorContext::CXXNewContext: - case DeclaratorContext::AliasDeclContext: - case DeclaratorContext::AliasTemplateContext: - case DeclaratorContext::MemberContext: - case DeclaratorContext::BlockContext: - case DeclaratorContext::ForContext: - case DeclaratorContext::InitStmtContext: - case DeclaratorContext::ConditionContext: - case DeclaratorContext::CXXCatchContext: - case DeclaratorContext::ObjCCatchContext: - case DeclaratorContext::BlockLiteralContext: - case DeclaratorContext::LambdaExprContext: - case DeclaratorContext::ConversionIdContext: - case DeclaratorContext::TrailingReturnContext: - case DeclaratorContext::TrailingReturnVarContext: - case DeclaratorContext::TemplateArgContext: - case DeclaratorContext::TemplateTypeArgContext: + case DeclaratorContext::TypeName: + case DeclaratorContext::FunctionalCast: + case DeclaratorContext::CXXNew: + case DeclaratorContext::AliasDecl: + case DeclaratorContext::AliasTemplate: + case DeclaratorContext::Member: + case DeclaratorContext::Block: + case DeclaratorContext::ForInit: + case DeclaratorContext::SelectionInit: + case DeclaratorContext::Condition: + case DeclaratorContext::CXXCatch: + case DeclaratorContext::ObjCCatch: + case DeclaratorContext::BlockLiteral: + case DeclaratorContext::LambdaExpr: + case DeclaratorContext::ConversionId: + case DeclaratorContext::TrailingReturn: + case DeclaratorContext::TrailingReturnVar: + case DeclaratorContext::TemplateArg: + case DeclaratorContext::TemplateTypeArg: // FIXME: We may want to allow parameter packs in block-literal contexts // in the future. S.Diag(D.getEllipsisLoc(), @@ -6283,9 +6283,9 @@ // to apply them to the actual parameter declaration. // Likewise, we don't want to do this for alias declarations, because // we are actually going to build a declaration from this eventually. - if (D.getContext() != DeclaratorContext::ObjCParameterContext && - D.getContext() != DeclaratorContext::AliasDeclContext && - D.getContext() != DeclaratorContext::AliasTemplateContext) + if (D.getContext() != DeclaratorContext::ObjCParameter && + D.getContext() != DeclaratorContext::AliasDecl && + D.getContext() != DeclaratorContext::AliasTemplate) checkUnusedDeclAttributes(D); if (getLangOpts().CPlusPlus) {