diff options
author | Faisal Vali <faisalv@yahoo.com> | 2018-01-01 15:42:13 +0000 |
---|---|---|
committer | Faisal Vali <faisalv@yahoo.com> | 2018-01-01 15:42:13 +0000 |
commit | 9d3d610d0582353d28b16c1d3acbd20773a93ab7 (patch) | |
tree | b4fc18c9d9401b9247eb41dc5c73d1bf0ff75052 /include | |
parent | 5f7f2c06ee10be2b2b9f53d61d12d06fb7be3ff6 (diff) |
[NFC] Modernize enums TypeSpecifierWidth, TypeSpecifierSign & TypeSpecifierType into scoped enums with underlying types.
- Since these enums are used as bit-fields - for the bit-fields to be interpreted as unsigned, the underlying type must be specified as unsigned.
Previous failed attempt - wherein I did not specify an underlying type - was the sum of:
https://reviews.llvm.org/rC321614
https://reviews.llvm.org/rC321615
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@321622 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/clang/AST/Type.h | 4 | ||||
-rw-r--r-- | include/clang/AST/TypeLoc.h | 16 | ||||
-rw-r--r-- | include/clang/Basic/Specifiers.h | 16 | ||||
-rw-r--r-- | include/clang/Parse/Parser.h | 9 | ||||
-rw-r--r-- | include/clang/Sema/DeclSpec.h | 88 | ||||
-rw-r--r-- | include/clang/Sema/Sema.h | 33 |
6 files changed, 83 insertions, 83 deletions
diff --git a/include/clang/AST/Type.h b/include/clang/AST/Type.h index 882878bb7e..cd71bef9c5 100644 --- a/include/clang/AST/Type.h +++ b/include/clang/AST/Type.h @@ -4747,11 +4747,11 @@ public: } /// Converts a type specifier (DeclSpec::TST) into an elaborated type keyword. - static ElaboratedTypeKeyword getKeywordForTypeSpec(unsigned TypeSpec); + static ElaboratedTypeKeyword getKeywordForTypeSpec(TypeSpecifierType TypeSpec); /// Converts a type specifier (DeclSpec::TST) into a tag type kind. /// It is an error to provide a type specifier which *isn't* a tag kind here. - static TagTypeKind getTagTypeKindForTypeSpec(unsigned TypeSpec); + static TagTypeKind getTagTypeKindForTypeSpec(TypeSpecifierType TypeSpec); /// Converts a TagTypeKind into an elaborated type keyword. static ElaboratedTypeKeyword getKeywordForTagTypeKind(TagTypeKind Tag); diff --git a/include/clang/AST/TypeLoc.h b/include/clang/AST/TypeLoc.h index b805160a27..dca4fcffcb 100644 --- a/include/clang/AST/TypeLoc.h +++ b/include/clang/AST/TypeLoc.h @@ -598,11 +598,11 @@ public: if (needsExtraLocalData()) return static_cast<TypeSpecifierSign>(getWrittenBuiltinSpecs().Sign); else - return TSS_unspecified; + return TypeSpecifierSign::TSS_unspecified; } bool hasWrittenSignSpec() const { - return getWrittenSignSpec() != TSS_unspecified; + return getWrittenSignSpec() != TypeSpecifierSign::TSS_unspecified; } void setWrittenSignSpec(TypeSpecifierSign written) { @@ -614,11 +614,11 @@ public: if (needsExtraLocalData()) return static_cast<TypeSpecifierWidth>(getWrittenBuiltinSpecs().Width); else - return TSW_unspecified; + return TypeSpecifierWidth::TSW_unspecified; } bool hasWrittenWidthSpec() const { - return getWrittenWidthSpec() != TSW_unspecified; + return getWrittenWidthSpec() != TypeSpecifierWidth::TSW_unspecified; } void setWrittenWidthSpec(TypeSpecifierWidth written) { @@ -629,7 +629,7 @@ public: TypeSpecifierType getWrittenTypeSpec() const; bool hasWrittenTypeSpec() const { - return getWrittenTypeSpec() != TST_unspecified; + return getWrittenTypeSpec() != TypeSpecifierType::TST_unspecified; } void setWrittenTypeSpec(TypeSpecifierType written) { @@ -653,9 +653,9 @@ public: setBuiltinLoc(Loc); if (needsExtraLocalData()) { WrittenBuiltinSpecs &wbs = getWrittenBuiltinSpecs(); - wbs.Sign = TSS_unspecified; - wbs.Width = TSW_unspecified; - wbs.Type = TST_unspecified; + wbs.Sign = TypeSpecifierSign::TSS_unspecified; + wbs.Width = TypeSpecifierWidth::TSW_unspecified; + wbs.Type = TypeSpecifierType::TST_unspecified; wbs.ModeAttr = false; } } diff --git a/include/clang/Basic/Specifiers.h b/include/clang/Basic/Specifiers.h index 377534baab..55b8599732 100644 --- a/include/clang/Basic/Specifiers.h +++ b/include/clang/Basic/Specifiers.h @@ -22,7 +22,7 @@ namespace clang { /// \brief Specifies the width of a type, e.g., short, long, or long long. - enum TypeSpecifierWidth { + enum class TypeSpecifierWidth : unsigned char { TSW_unspecified, TSW_short, TSW_long, @@ -30,7 +30,7 @@ namespace clang { }; /// \brief Specifies the signedness of a type, e.g., signed or unsigned. - enum TypeSpecifierSign { + enum class TypeSpecifierSign : unsigned char { TSS_unspecified, TSS_signed, TSS_unsigned @@ -42,7 +42,7 @@ namespace clang { }; /// \brief Specifies the kind of type. - enum TypeSpecifierType { + enum class TypeSpecifierType : unsigned char { TST_unspecified, TST_void, TST_char, @@ -83,10 +83,12 @@ namespace clang { /// \brief Structure that packs information about the type specifiers that /// were written in a particular type specifier sequence. struct WrittenBuiltinSpecs { - static_assert(TST_error < 1 << 6, "Type bitfield not wide enough for TST"); - /*DeclSpec::TST*/ unsigned Type : 6; - /*DeclSpec::TSS*/ unsigned Sign : 2; - /*DeclSpec::TSW*/ unsigned Width : 2; + static_assert(static_cast<unsigned int>(TypeSpecifierType::TST_error) < + (1 << 6), + "Type bitfield not wide enough for TST"); + /*DeclSpec::TST*/ TypeSpecifierType Type : 6; + /*DeclSpec::TSS*/ TypeSpecifierSign Sign : 2; + /*DeclSpec::TSW*/ TypeSpecifierWidth Width : 2; unsigned ModeAttr : 1; }; diff --git a/include/clang/Parse/Parser.h b/include/clang/Parse/Parser.h index a606d78530..800c73ee8f 100644 --- a/include/clang/Parse/Parser.h +++ b/include/clang/Parse/Parser.h @@ -828,7 +828,8 @@ private: }; /// \brief Consume any extra semi-colons until the end of the line. - void ConsumeExtraSemi(ExtraSemiKind Kind, unsigned TST = TST_unspecified); + void ConsumeExtraSemi(ExtraSemiKind Kind, + TypeSpecifierType TST = TypeSpecifierType::TST_unspecified); /// Return false if the next token is an identifier. An 'expected identifier' /// error is emitted otherwise. @@ -1975,7 +1976,7 @@ private: const ParsedTemplateInfo &TemplateInfo, AccessSpecifier AS, DeclSpecContext DSC); void ParseEnumBody(SourceLocation StartLoc, Decl *TagDecl); - void ParseStructUnionBody(SourceLocation StartLoc, unsigned TagType, + void ParseStructUnionBody(SourceLocation StartLoc, TypeSpecifierType TagType, Decl *TagDecl); void ParseStructDeclaration( @@ -2575,12 +2576,12 @@ private: ParsedAttributesWithRange &Attributes); void SkipCXXMemberSpecification(SourceLocation StartLoc, SourceLocation AttrFixitLoc, - unsigned TagType, + TypeSpecifierType TagType, Decl *TagDecl); void ParseCXXMemberSpecification(SourceLocation StartLoc, SourceLocation AttrFixitLoc, ParsedAttributesWithRange &Attrs, - unsigned TagType, + TypeSpecifierType TagType, Decl *TagDecl); ExprResult ParseCXXMemberInitializer(Decl *D, bool IsFunction, SourceLocation &EqualLoc); diff --git a/include/clang/Sema/DeclSpec.h b/include/clang/Sema/DeclSpec.h index 2e7411337b..1940a3caa3 100644 --- a/include/clang/Sema/DeclSpec.h +++ b/include/clang/Sema/DeclSpec.h @@ -250,10 +250,10 @@ public: // Import type specifier width enumeration and constants. typedef TypeSpecifierWidth TSW; - static const TSW TSW_unspecified = clang::TSW_unspecified; - static const TSW TSW_short = clang::TSW_short; - static const TSW TSW_long = clang::TSW_long; - static const TSW TSW_longlong = clang::TSW_longlong; + static const TSW TSW_unspecified = TypeSpecifierWidth::TSW_unspecified; + static const TSW TSW_short = TypeSpecifierWidth::TSW_short; + static const TSW TSW_long = TypeSpecifierWidth::TSW_long; + static const TSW TSW_longlong = TypeSpecifierWidth::TSW_longlong; enum TSC { TSC_unspecified, @@ -263,48 +263,48 @@ public: // Import type specifier sign enumeration and constants. typedef TypeSpecifierSign TSS; - static const TSS TSS_unspecified = clang::TSS_unspecified; - static const TSS TSS_signed = clang::TSS_signed; - static const TSS TSS_unsigned = clang::TSS_unsigned; + static const TSS TSS_unspecified = TypeSpecifierSign::TSS_unspecified; + static const TSS TSS_signed = TypeSpecifierSign::TSS_signed; + static const TSS TSS_unsigned = TypeSpecifierSign::TSS_unsigned; // Import type specifier type enumeration and constants. typedef TypeSpecifierType TST; - static const TST TST_unspecified = clang::TST_unspecified; - static const TST TST_void = clang::TST_void; - static const TST TST_char = clang::TST_char; - static const TST TST_wchar = clang::TST_wchar; - static const TST TST_char16 = clang::TST_char16; - static const TST TST_char32 = clang::TST_char32; - static const TST TST_int = clang::TST_int; - static const TST TST_int128 = clang::TST_int128; - static const TST TST_half = clang::TST_half; - static const TST TST_float = clang::TST_float; - static const TST TST_double = clang::TST_double; - static const TST TST_float16 = clang::TST_Float16; - static const TST TST_float128 = clang::TST_float128; - static const TST TST_bool = clang::TST_bool; - static const TST TST_decimal32 = clang::TST_decimal32; - static const TST TST_decimal64 = clang::TST_decimal64; - static const TST TST_decimal128 = clang::TST_decimal128; - static const TST TST_enum = clang::TST_enum; - static const TST TST_union = clang::TST_union; - static const TST TST_struct = clang::TST_struct; - static const TST TST_interface = clang::TST_interface; - static const TST TST_class = clang::TST_class; - static const TST TST_typename = clang::TST_typename; - static const TST TST_typeofType = clang::TST_typeofType; - static const TST TST_typeofExpr = clang::TST_typeofExpr; - static const TST TST_decltype = clang::TST_decltype; - static const TST TST_decltype_auto = clang::TST_decltype_auto; - static const TST TST_underlyingType = clang::TST_underlyingType; - static const TST TST_auto = clang::TST_auto; - static const TST TST_auto_type = clang::TST_auto_type; - static const TST TST_unknown_anytype = clang::TST_unknown_anytype; - static const TST TST_atomic = clang::TST_atomic; + static const TST TST_unspecified = TypeSpecifierType::TST_unspecified; + static const TST TST_void = TypeSpecifierType::TST_void; + static const TST TST_char = TypeSpecifierType::TST_char; + static const TST TST_wchar = TypeSpecifierType::TST_wchar; + static const TST TST_char16 = TypeSpecifierType::TST_char16; + static const TST TST_char32 = TypeSpecifierType::TST_char32; + static const TST TST_int = TypeSpecifierType::TST_int; + static const TST TST_int128 = TypeSpecifierType::TST_int128; + static const TST TST_half = TypeSpecifierType::TST_half; + static const TST TST_float = TypeSpecifierType::TST_float; + static const TST TST_double = TypeSpecifierType::TST_double; + static const TST TST_float16 = TypeSpecifierType::TST_Float16; + static const TST TST_float128 = TypeSpecifierType::TST_float128; + static const TST TST_bool = TypeSpecifierType::TST_bool; + static const TST TST_decimal32 = TypeSpecifierType::TST_decimal32; + static const TST TST_decimal64 = TypeSpecifierType::TST_decimal64; + static const TST TST_decimal128 = TypeSpecifierType::TST_decimal128; + static const TST TST_enum = TypeSpecifierType::TST_enum; + static const TST TST_union = TypeSpecifierType::TST_union; + static const TST TST_struct = TypeSpecifierType::TST_struct; + static const TST TST_interface = TypeSpecifierType::TST_interface; + static const TST TST_class = TypeSpecifierType::TST_class; + static const TST TST_typename = TypeSpecifierType::TST_typename; + static const TST TST_typeofType = TypeSpecifierType::TST_typeofType; + static const TST TST_typeofExpr = TypeSpecifierType::TST_typeofExpr; + static const TST TST_decltype = TypeSpecifierType::TST_decltype; + static const TST TST_decltype_auto = TypeSpecifierType::TST_decltype_auto; + static const TST TST_underlyingType = TypeSpecifierType::TST_underlyingType; + static const TST TST_auto = TypeSpecifierType::TST_auto; + static const TST TST_auto_type = TypeSpecifierType::TST_auto_type; + static const TST TST_unknown_anytype = TypeSpecifierType::TST_unknown_anytype; + static const TST TST_atomic = TypeSpecifierType::TST_atomic; #define GENERIC_IMAGE_TYPE(ImgType, Id) \ - static const TST TST_##ImgType##_t = clang::TST_##ImgType##_t; + static const TST TST_##ImgType##_t = TypeSpecifierType::TST_##ImgType##_t; #include "clang/Basic/OpenCLImageTypes.def" - static const TST TST_error = clang::TST_error; + static const TST TST_error = TypeSpecifierType::TST_error; // type-qualifiers enum TQ { // NOTE: These flags must be kept in sync with Qualifiers::TQ. @@ -335,10 +335,10 @@ private: unsigned SCS_extern_in_linkage_spec : 1; // type-specifier - /*TSW*/unsigned TypeSpecWidth : 2; + /*TSW*/TypeSpecifierWidth TypeSpecWidth : 2; /*TSC*/unsigned TypeSpecComplex : 2; - /*TSS*/unsigned TypeSpecSign : 2; - /*TST*/unsigned TypeSpecType : 6; + /*TSS*/TypeSpecifierSign TypeSpecSign : 2; + /*TST*/TypeSpecifierType TypeSpecType : 6; unsigned TypeAltiVecVector : 1; unsigned TypeAltiVecPixel : 1; unsigned TypeAltiVecBool : 1; diff --git a/include/clang/Sema/Sema.h b/include/clang/Sema/Sema.h index 9cbe8e5cd6..d03827a12a 100644 --- a/include/clang/Sema/Sema.h +++ b/include/clang/Sema/Sema.h @@ -2182,7 +2182,7 @@ public: TUK_Friend // Friend declaration: 'friend struct foo;' }; - Decl *ActOnTag(Scope *S, unsigned TagSpec, TagUseKind TUK, + Decl *ActOnTag(Scope *S, TypeSpecifierType TagSpec, TagUseKind TUK, SourceLocation KWLoc, CXXScopeSpec &SS, IdentifierInfo *Name, SourceLocation NameLoc, AttributeList *Attr, AccessSpecifier AS, SourceLocation ModulePrivateLoc, @@ -2193,14 +2193,14 @@ public: SkipBodyInfo *SkipBody = nullptr); Decl *ActOnTemplatedFriendTag(Scope *S, SourceLocation FriendLoc, - unsigned TagSpec, SourceLocation TagLoc, + TypeSpecifierType TagSpec, SourceLocation TagLoc, CXXScopeSpec &SS, IdentifierInfo *Name, SourceLocation NameLoc, AttributeList *Attr, MultiTemplateParamsArg TempParamLists); TypeResult ActOnDependentTag(Scope *S, - unsigned TagSpec, + TypeSpecifierType TagSpec, TagUseKind TUK, const CXXScopeSpec &SS, IdentifierInfo *Name, @@ -6123,17 +6123,14 @@ public: ArrayRef<TemplateParameterList *> ParamLists, bool IsFriend, bool &IsMemberSpecialization, bool &Invalid); - DeclResult CheckClassTemplate(Scope *S, unsigned TagSpec, TagUseKind TUK, - SourceLocation KWLoc, CXXScopeSpec &SS, - IdentifierInfo *Name, SourceLocation NameLoc, - AttributeList *Attr, - TemplateParameterList *TemplateParams, - AccessSpecifier AS, - SourceLocation ModulePrivateLoc, - SourceLocation FriendLoc, - unsigned NumOuterTemplateParamLists, - TemplateParameterList **OuterTemplateParamLists, - SkipBodyInfo *SkipBody = nullptr); + DeclResult CheckClassTemplate( + Scope *S, TypeSpecifierType TagSpec, TagUseKind TUK, SourceLocation KWLoc, + CXXScopeSpec &SS, IdentifierInfo *Name, SourceLocation NameLoc, + AttributeList *Attr, TemplateParameterList *TemplateParams, + AccessSpecifier AS, SourceLocation ModulePrivateLoc, + SourceLocation FriendLoc, unsigned NumOuterTemplateParamLists, + TemplateParameterList **OuterTemplateParamLists, + SkipBodyInfo *SkipBody = nullptr); TemplateArgumentLoc getTrivialTemplateArgumentLoc(const TemplateArgument &Arg, QualType NTTPType, @@ -6204,7 +6201,7 @@ public: TemplateTy &Template, bool AllowInjectedClassName = false); DeclResult - ActOnClassTemplateSpecialization(Scope *S, unsigned TagSpec, TagUseKind TUK, + ActOnClassTemplateSpecialization(Scope *S, TypeSpecifierType TagSpec, TagUseKind TUK, SourceLocation KWLoc, SourceLocation ModulePrivateLoc, TemplateIdAnnotation &TemplateId, @@ -6247,7 +6244,7 @@ public: ActOnExplicitInstantiation(Scope *S, SourceLocation ExternLoc, SourceLocation TemplateLoc, - unsigned TagSpec, + TypeSpecifierType TagSpec, SourceLocation KWLoc, const CXXScopeSpec &SS, TemplateTy Template, @@ -6261,7 +6258,7 @@ public: ActOnExplicitInstantiation(Scope *S, SourceLocation ExternLoc, SourceLocation TemplateLoc, - unsigned TagSpec, + TypeSpecifierType TagSpec, SourceLocation KWLoc, CXXScopeSpec &SS, IdentifierInfo *Name, @@ -10155,7 +10152,7 @@ public: SourceLocation OpLoc, bool IsArrow, bool IsBaseExprStatement); void CodeCompletePostfixExpression(Scope *S, ExprResult LHS); - void CodeCompleteTag(Scope *S, unsigned TagSpec); + void CodeCompleteTag(Scope *S, TypeSpecifierType TagSpec); void CodeCompleteTypeQualifiers(DeclSpec &DS); void CodeCompleteFunctionQualifiers(DeclSpec &DS, Declarator &D, const VirtSpecifiers *VS = nullptr); |