Author: Vlad Serebrennikov Date: 2025-05-02T07:45:22+03:00 New Revision: 8089c3d1edf0f880415bfbc155571f4a43fcdf17
URL: https://github.com/llvm/llvm-project/commit/8089c3d1edf0f880415bfbc155571f4a43fcdf17 DIFF: https://github.com/llvm/llvm-project/commit/8089c3d1edf0f880415bfbc155571f4a43fcdf17.diff LOG: [clang][NFC] Convert `Sema::NonTagKind` to scoped enum Added: Modified: clang/include/clang/Sema/Sema.h clang/lib/Sema/SemaDecl.cpp clang/lib/Sema/SemaTemplate.cpp clang/lib/Sema/TreeTransform.h Removed: ################################################################################ diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h index aaff8e656b746..e641a4ac865d0 100644 --- a/clang/include/clang/Sema/Sema.h +++ b/clang/include/clang/Sema/Sema.h @@ -595,6 +595,20 @@ enum class PointerAuthDiscArgKind { Extra, }; +/// Common ways to introduce type names without a tag for use in diagnostics. +/// Keep in sync with err_tag_reference_non_tag. +enum class NonTagKind { + NonStruct, + NonClass, + NonUnion, + NonEnum, + Typedef, + TypeAlias, + Template, + TypeAliasTemplate, + TemplateTemplateArgument, +}; + /// Sema - This implements semantic analysis and AST building for C. /// \nosubgrouping class Sema final : public SemaBase { @@ -3975,20 +3989,6 @@ class Sema final : public SemaBase { Decl *BuildMicrosoftCAnonymousStruct(Scope *S, DeclSpec &DS, RecordDecl *Record); - /// Common ways to introduce type names without a tag for use in diagnostics. - /// Keep in sync with err_tag_reference_non_tag. - enum NonTagKind { - NTK_NonStruct, - NTK_NonClass, - NTK_NonUnion, - NTK_NonEnum, - NTK_Typedef, - NTK_TypeAlias, - NTK_Template, - NTK_TypeAliasTemplate, - NTK_TemplateTemplateArgument, - }; - /// Given a non-tag type declaration, returns an enum useful for indicating /// what kind of non-tag type this is. NonTagKind getNonTagTypeDeclKind(const Decl *D, TagTypeKind TTK); diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 85c5f4c375c3d..d4c0fe62653ad 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -17198,27 +17198,27 @@ static bool isClassCompatTagKind(TagTypeKind Tag) Tag == TagTypeKind::Interface; } -Sema::NonTagKind Sema::getNonTagTypeDeclKind(const Decl *PrevDecl, - TagTypeKind TTK) { +NonTagKind Sema::getNonTagTypeDeclKind(const Decl *PrevDecl, TagTypeKind TTK) { if (isa<TypedefDecl>(PrevDecl)) - return NTK_Typedef; + return NonTagKind::Typedef; else if (isa<TypeAliasDecl>(PrevDecl)) - return NTK_TypeAlias; + return NonTagKind::TypeAlias; else if (isa<ClassTemplateDecl>(PrevDecl)) - return NTK_Template; + return NonTagKind::Template; else if (isa<TypeAliasTemplateDecl>(PrevDecl)) - return NTK_TypeAliasTemplate; + return NonTagKind::TypeAliasTemplate; else if (isa<TemplateTemplateParmDecl>(PrevDecl)) - return NTK_TemplateTemplateArgument; + return NonTagKind::TemplateTemplateArgument; switch (TTK) { case TagTypeKind::Struct: case TagTypeKind::Interface: case TagTypeKind::Class: - return getLangOpts().CPlusPlus ? NTK_NonClass : NTK_NonStruct; + return getLangOpts().CPlusPlus ? NonTagKind::NonClass + : NonTagKind::NonStruct; case TagTypeKind::Union: - return NTK_NonUnion; + return NonTagKind::NonUnion; case TagTypeKind::Enum: - return NTK_NonEnum; + return NonTagKind::NonEnum; } llvm_unreachable("invalid TTK"); } diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index 6a258caffb7a2..c062837ed830a 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -3911,7 +3911,7 @@ TypeResult Sema::ActOnTagTemplateIdType(TagUseKind TUK, // resolves to an alias template specialization, the // elaborated-type-specifier is ill-formed. Diag(TemplateLoc, diag::err_tag_reference_non_tag) - << TAT << NTK_TypeAliasTemplate << TagKind; + << TAT << NonTagKind::TypeAliasTemplate << TagKind; Diag(TAT->getLocation(), diag::note_declared_at); } diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 7743ce0a62e1f..967b44e997837 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -1221,7 +1221,7 @@ class TreeTransform { case LookupResultKind::FoundOverloaded: case LookupResultKind::FoundUnresolvedValue: { NamedDecl *SomeDecl = Result.getRepresentativeDecl(); - Sema::NonTagKind NTK = SemaRef.getNonTagTypeDeclKind(SomeDecl, Kind); + NonTagKind NTK = SemaRef.getNonTagTypeDeclKind(SomeDecl, Kind); SemaRef.Diag(IdLoc, diag::err_tag_reference_non_tag) << SomeDecl << NTK << Kind; SemaRef.Diag(SomeDecl->getLocation(), diag::note_declared_at); @@ -7509,7 +7509,7 @@ TreeTransform<Derived>::TransformElaboratedType(TypeLocBuilder &TLB, Template.getAsTemplateDecl())) { SemaRef.Diag(TL.getNamedTypeLoc().getBeginLoc(), diag::err_tag_reference_non_tag) - << TAT << Sema::NTK_TypeAliasTemplate + << TAT << NonTagKind::TypeAliasTemplate << ElaboratedType::getTagTypeKindForKeyword(T->getKeyword()); SemaRef.Diag(TAT->getLocation(), diag::note_declared_at); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits