summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorAlp Toker <alp@nuanti.com>2014-01-06 12:54:51 +0000
committerAlp Toker <alp@nuanti.com>2014-01-06 12:54:51 +0000
commite9ab39da866ec3c45f819ef1a9d40c714ef3d3ba (patch)
tree99a76b2a64e6eafc1ec68f79a593241ac46c8278 /clang
parent01d65e1387c09743324d481a0a71402061976a0e (diff)
downloadbcm5719-llvm-e9ab39da866ec3c45f819ef1a9d40c714ef3d3ba.tar.gz
bcm5719-llvm-e9ab39da866ec3c45f819ef1a9d40c714ef3d3ba.zip
Correct underlying integer type of enum TokenKind
This matches up the underlying type against the actual storage type 'unsigned short' and lets us get rid of some casts while we're at it. Effort is made to keep this building in pre-C++11 but as with other features Token will be less efficiently packed in in legacy configurations. llvm-svn: 198607
Diffstat (limited to 'clang')
-rw-r--r--clang/include/clang/Basic/Diagnostic.h2
-rw-r--r--clang/include/clang/Basic/TokenKinds.h2
-rw-r--r--clang/include/clang/Lex/Token.h13
3 files changed, 7 insertions, 10 deletions
diff --git a/clang/include/clang/Basic/Diagnostic.h b/clang/include/clang/Basic/Diagnostic.h
index 97f2e80244c..c04d2fd9b7b 100644
--- a/clang/include/clang/Basic/Diagnostic.h
+++ b/clang/include/clang/Basic/Diagnostic.h
@@ -40,7 +40,7 @@ namespace clang {
class StoredDiagnostic;
#if LLVM_HAS_STRONG_ENUMS
namespace tok {
- enum TokenKind : unsigned;
+ enum TokenKind : unsigned short;
}
#endif
diff --git a/clang/include/clang/Basic/TokenKinds.h b/clang/include/clang/Basic/TokenKinds.h
index f7a5f9eef92..5ba168e2155 100644
--- a/clang/include/clang/Basic/TokenKinds.h
+++ b/clang/include/clang/Basic/TokenKinds.h
@@ -22,7 +22,7 @@ namespace clang {
namespace tok {
/// \brief Provides a simple uniform namespace for tokens from all C languages.
-enum TokenKind LLVM_ENUM_INT_TYPE(unsigned) {
+enum TokenKind LLVM_ENUM_INT_TYPE(unsigned short) {
#define TOK(X) X,
#include "clang/Basic/TokenKinds.def"
NUM_TOKENS
diff --git a/clang/include/clang/Lex/Token.h b/clang/include/clang/Lex/Token.h
index 4f6391d6502..580bb128c5e 100644
--- a/clang/include/clang/Lex/Token.h
+++ b/clang/include/clang/Lex/Token.h
@@ -62,8 +62,7 @@ class Token {
void *PtrData;
/// Kind - The actual flavor of token this is.
- ///
- unsigned short Kind;
+ tok::TokenKind Kind;
/// Flags - Bits we track about this token, members of the TokenFlags enum.
unsigned char Flags;
@@ -83,13 +82,13 @@ public:
IgnoredComma = 0x80 // This comma is not a macro argument separator (MS).
};
- tok::TokenKind getKind() const { return (tok::TokenKind)Kind; }
+ tok::TokenKind getKind() const { return Kind; }
void setKind(tok::TokenKind K) { Kind = K; }
/// is/isNot - Predicates to check if this token is a specific kind, as in
/// "if (Tok.is(tok::l_brace)) {...}".
- bool is(tok::TokenKind K) const { return Kind == (unsigned) K; }
- bool isNot(tok::TokenKind K) const { return Kind != (unsigned) K; }
+ bool is(tok::TokenKind K) const { return Kind == K; }
+ bool isNot(tok::TokenKind K) const { return Kind != K; }
/// \brief Return true if this is a raw identifier (when lexing
/// in raw mode) or a non-keyword identifier (when lexing in non-raw mode).
@@ -145,9 +144,7 @@ public:
setAnnotationEndLoc(R.getEnd());
}
- const char *getName() const {
- return tok::getTokenName( (tok::TokenKind) Kind);
- }
+ const char *getName() const { return tok::getTokenName(Kind); }
/// \brief Reset all flags to cleared.
void startToken() {
OpenPOWER on IntegriCloud