summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorFaisal Vali <faisalv@yahoo.com>2018-01-01 02:49:17 +0000
committerFaisal Vali <faisalv@yahoo.com>2018-01-01 02:49:17 +0000
commit20f9e21530dc55f3d9e5910787cdc49f17c060ff (patch)
tree7d42b4e238627fc67e8dee298b276ce0fdf26169 /include
parent7e33c74d98d421c7a7db2c02f168a0bc8bbc59dc (diff)
Revert r321614 and r321615
- the enum changes to TypeSpecifierType are breaking some tests - and will require a more careful integration. Sorry about rushing these changes - thought I could sneak them in prior to heading out for new years ;) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@321616 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/clang/AST/Type.h4
-rw-r--r--include/clang/AST/TypeLoc.h16
-rw-r--r--include/clang/Basic/Specifiers.h15
-rw-r--r--include/clang/Parse/Parser.h9
-rw-r--r--include/clang/Sema/DeclSpec.h88
-rw-r--r--include/clang/Sema/Sema.h33
6 files changed, 83 insertions, 82 deletions
diff --git a/include/clang/AST/Type.h b/include/clang/AST/Type.h
index cd71bef9c5..882878bb7e 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(TypeSpecifierType TypeSpec);
+ static ElaboratedTypeKeyword getKeywordForTypeSpec(unsigned 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(TypeSpecifierType TypeSpec);
+ static TagTypeKind getTagTypeKindForTypeSpec(unsigned 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 dca4fcffcb..b805160a27 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 TypeSpecifierSign::TSS_unspecified;
+ return TSS_unspecified;
}
bool hasWrittenSignSpec() const {
- return getWrittenSignSpec() != TypeSpecifierSign::TSS_unspecified;
+ return getWrittenSignSpec() != TSS_unspecified;
}
void setWrittenSignSpec(TypeSpecifierSign written) {
@@ -614,11 +614,11 @@ public:
if (needsExtraLocalData())
return static_cast<TypeSpecifierWidth>(getWrittenBuiltinSpecs().Width);
else
- return TypeSpecifierWidth::TSW_unspecified;
+ return TSW_unspecified;
}
bool hasWrittenWidthSpec() const {
- return getWrittenWidthSpec() != TypeSpecifierWidth::TSW_unspecified;
+ return getWrittenWidthSpec() != TSW_unspecified;
}
void setWrittenWidthSpec(TypeSpecifierWidth written) {
@@ -629,7 +629,7 @@ public:
TypeSpecifierType getWrittenTypeSpec() const;
bool hasWrittenTypeSpec() const {
- return getWrittenTypeSpec() != TypeSpecifierType::TST_unspecified;
+ return getWrittenTypeSpec() != TST_unspecified;
}
void setWrittenTypeSpec(TypeSpecifierType written) {
@@ -653,9 +653,9 @@ public:
setBuiltinLoc(Loc);
if (needsExtraLocalData()) {
WrittenBuiltinSpecs &wbs = getWrittenBuiltinSpecs();
- wbs.Sign = TypeSpecifierSign::TSS_unspecified;
- wbs.Width = TypeSpecifierWidth::TSW_unspecified;
- wbs.Type = TypeSpecifierType::TST_unspecified;
+ wbs.Sign = TSS_unspecified;
+ wbs.Width = TSW_unspecified;
+ wbs.Type = TST_unspecified;
wbs.ModeAttr = false;
}
}
diff --git a/include/clang/Basic/Specifiers.h b/include/clang/Basic/Specifiers.h
index 79792ee3f4..377534baab 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 class TypeSpecifierWidth {
+ enum TypeSpecifierWidth {
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 class TypeSpecifierSign {
+ enum TypeSpecifierSign {
TSS_unspecified,
TSS_signed,
TSS_unsigned
@@ -42,7 +42,7 @@ namespace clang {
};
/// \brief Specifies the kind of type.
- enum class TypeSpecifierType {
+ enum TypeSpecifierType {
TST_unspecified,
TST_void,
TST_char,
@@ -83,11 +83,10 @@ namespace clang {
/// \brief Structure that packs information about the type specifiers that
/// were written in a particular type specifier sequence.
struct WrittenBuiltinSpecs {
- static_assert(static_cast<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;
+ 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;
unsigned ModeAttr : 1;
};
diff --git a/include/clang/Parse/Parser.h b/include/clang/Parse/Parser.h
index 800c73ee8f..a606d78530 100644
--- a/include/clang/Parse/Parser.h
+++ b/include/clang/Parse/Parser.h
@@ -828,8 +828,7 @@ private:
};
/// \brief Consume any extra semi-colons until the end of the line.
- void ConsumeExtraSemi(ExtraSemiKind Kind,
- TypeSpecifierType TST = TypeSpecifierType::TST_unspecified);
+ void ConsumeExtraSemi(ExtraSemiKind Kind, unsigned TST = TST_unspecified);
/// Return false if the next token is an identifier. An 'expected identifier'
/// error is emitted otherwise.
@@ -1976,7 +1975,7 @@ private:
const ParsedTemplateInfo &TemplateInfo,
AccessSpecifier AS, DeclSpecContext DSC);
void ParseEnumBody(SourceLocation StartLoc, Decl *TagDecl);
- void ParseStructUnionBody(SourceLocation StartLoc, TypeSpecifierType TagType,
+ void ParseStructUnionBody(SourceLocation StartLoc, unsigned TagType,
Decl *TagDecl);
void ParseStructDeclaration(
@@ -2576,12 +2575,12 @@ private:
ParsedAttributesWithRange &Attributes);
void SkipCXXMemberSpecification(SourceLocation StartLoc,
SourceLocation AttrFixitLoc,
- TypeSpecifierType TagType,
+ unsigned TagType,
Decl *TagDecl);
void ParseCXXMemberSpecification(SourceLocation StartLoc,
SourceLocation AttrFixitLoc,
ParsedAttributesWithRange &Attrs,
- TypeSpecifierType TagType,
+ unsigned 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 1940a3caa3..2e7411337b 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 = 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;
+ 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;
enum TSC {
TSC_unspecified,
@@ -263,48 +263,48 @@ public:
// Import type specifier sign enumeration and constants.
typedef TypeSpecifierSign TSS;
- static const TSS TSS_unspecified = TypeSpecifierSign::TSS_unspecified;
- static const TSS TSS_signed = TypeSpecifierSign::TSS_signed;
- static const TSS TSS_unsigned = TypeSpecifierSign::TSS_unsigned;
+ static const TSS TSS_unspecified = clang::TSS_unspecified;
+ static const TSS TSS_signed = clang::TSS_signed;
+ static const TSS TSS_unsigned = clang::TSS_unsigned;
// Import type specifier type enumeration and constants.
typedef TypeSpecifierType TST;
- 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;
+ 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;
#define GENERIC_IMAGE_TYPE(ImgType, Id) \
- static const TST TST_##ImgType##_t = TypeSpecifierType::TST_##ImgType##_t;
+ static const TST TST_##ImgType##_t = clang::TST_##ImgType##_t;
#include "clang/Basic/OpenCLImageTypes.def"
- static const TST TST_error = TypeSpecifierType::TST_error;
+ static const TST TST_error = clang::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*/TypeSpecifierWidth TypeSpecWidth : 2;
+ /*TSW*/unsigned TypeSpecWidth : 2;
/*TSC*/unsigned TypeSpecComplex : 2;
- /*TSS*/TypeSpecifierSign TypeSpecSign : 2;
- /*TST*/TypeSpecifierType TypeSpecType : 6;
+ /*TSS*/unsigned TypeSpecSign : 2;
+ /*TST*/unsigned 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 d03827a12a..9cbe8e5cd6 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, TypeSpecifierType TagSpec, TagUseKind TUK,
+ Decl *ActOnTag(Scope *S, unsigned 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,
- TypeSpecifierType TagSpec, SourceLocation TagLoc,
+ unsigned TagSpec, SourceLocation TagLoc,
CXXScopeSpec &SS,
IdentifierInfo *Name, SourceLocation NameLoc,
AttributeList *Attr,
MultiTemplateParamsArg TempParamLists);
TypeResult ActOnDependentTag(Scope *S,
- TypeSpecifierType TagSpec,
+ unsigned TagSpec,
TagUseKind TUK,
const CXXScopeSpec &SS,
IdentifierInfo *Name,
@@ -6123,14 +6123,17 @@ public:
ArrayRef<TemplateParameterList *> ParamLists,
bool IsFriend, bool &IsMemberSpecialization, bool &Invalid);
- 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);
+ 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);
TemplateArgumentLoc getTrivialTemplateArgumentLoc(const TemplateArgument &Arg,
QualType NTTPType,
@@ -6201,7 +6204,7 @@ public:
TemplateTy &Template, bool AllowInjectedClassName = false);
DeclResult
- ActOnClassTemplateSpecialization(Scope *S, TypeSpecifierType TagSpec, TagUseKind TUK,
+ ActOnClassTemplateSpecialization(Scope *S, unsigned TagSpec, TagUseKind TUK,
SourceLocation KWLoc,
SourceLocation ModulePrivateLoc,
TemplateIdAnnotation &TemplateId,
@@ -6244,7 +6247,7 @@ public:
ActOnExplicitInstantiation(Scope *S,
SourceLocation ExternLoc,
SourceLocation TemplateLoc,
- TypeSpecifierType TagSpec,
+ unsigned TagSpec,
SourceLocation KWLoc,
const CXXScopeSpec &SS,
TemplateTy Template,
@@ -6258,7 +6261,7 @@ public:
ActOnExplicitInstantiation(Scope *S,
SourceLocation ExternLoc,
SourceLocation TemplateLoc,
- TypeSpecifierType TagSpec,
+ unsigned TagSpec,
SourceLocation KWLoc,
CXXScopeSpec &SS,
IdentifierInfo *Name,
@@ -10152,7 +10155,7 @@ public:
SourceLocation OpLoc, bool IsArrow,
bool IsBaseExprStatement);
void CodeCompletePostfixExpression(Scope *S, ExprResult LHS);
- void CodeCompleteTag(Scope *S, TypeSpecifierType TagSpec);
+ void CodeCompleteTag(Scope *S, unsigned TagSpec);
void CodeCompleteTypeQualifiers(DeclSpec &DS);
void CodeCompleteFunctionQualifiers(DeclSpec &DS, Declarator &D,
const VirtSpecifiers *VS = nullptr);