diff options
author | Douglas Gregor <dgregor@osl.iu.edu> | 2007-01-25 04:02:36 +0000 |
---|---|---|
committer | Doug Gregor <dgregor@gcc.gnu.org> | 2007-01-25 04:02:36 +0000 |
commit | 54654d29cb254b75a486c33b0a2bbdbddb526f33 (patch) | |
tree | 8719ff17fe366c09f62ada22587f82ead23564a7 /gcc/cp | |
parent | 18103407c6e0e824c5c92ac0a07e6baca6f71f43 (diff) | |
download | gcc-54654d29cb254b75a486c33b0a2bbdbddb526f33.zip gcc-54654d29cb254b75a486c33b0a2bbdbddb526f33.tar.gz gcc-54654d29cb254b75a486c33b0a2bbdbddb526f33.tar.bz2 |
lex.c (D_CPP0X): Rename.
2007-01-24 Douglas Gregor <dgregor@osl.iu.edu>
* lex.c (D_CPP0X): Rename.
(D_CXX0X): To this.
(reswords): D_CPP0X -> D_CXX0X.
(init_reswords): Ditto.
* parser.c (cp_lexer_get_preprocessor_token): Warn about the use
of C++0x keywords as identifiers.
From-SVN: r121161
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/cp/lex.c | 6 | ||||
-rw-r--r-- | gcc/cp/parser.c | 14 |
3 files changed, 26 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index afc66a8..e04ee5a 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,12 @@ +2007-01-24 Douglas Gregor <dgregor@osl.iu.edu> + + * lex.c (D_CPP0X): Rename. + (D_CXX0X): To this. + (reswords): D_CPP0X -> D_CXX0X. + (init_reswords): Ditto. + * parser.c (cp_lexer_get_preprocessor_token): Warn about the use + of C++0x keywords as identifiers. + 2007-01-23 Simon Martin <simartin@users.sourceforge.net> PR c++/27492 diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index 27a17c3..db78a47 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -176,7 +176,7 @@ struct resword #define D_EXT 0x01 /* GCC extension */ #define D_ASM 0x02 /* in C99, but has a switch to turn it off */ #define D_OBJC 0x04 /* Objective C++ only */ -#define D_CPP0X 0x08 /* C++0x only */ +#define D_CXX0X 0x08 /* C++0x only */ CONSTRAINT(ridbits_fit, RID_LAST_MODIFIER < sizeof(unsigned long) * CHAR_BIT); @@ -260,7 +260,7 @@ static const struct resword reswords[] = { "signed", RID_SIGNED, 0 }, { "sizeof", RID_SIZEOF, 0 }, { "static", RID_STATIC, 0 }, - { "static_assert", RID_STATIC_ASSERT, D_CPP0X }, + { "static_assert", RID_STATIC_ASSERT, D_CXX0X }, { "static_cast", RID_STATCAST, 0 }, { "struct", RID_STRUCT, 0 }, { "switch", RID_SWITCH, 0 }, @@ -317,7 +317,7 @@ init_reswords (void) int mask = ((flag_no_asm ? D_ASM : 0) | D_OBJC | (flag_no_gnu_keywords ? D_EXT : 0) - | (flag_cpp0x ? 0 : D_CPP0X)); + | (flag_cpp0x ? 0 : D_CXX0X)); ridpointers = GGC_CNEWVEC (tree, (int) RID_MAX); for (i = 0; i < ARRAY_SIZE (reswords); i++) diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 40009c2..fa18e20 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -443,6 +443,20 @@ cp_lexer_get_preprocessor_token (cp_lexer *lexer ATTRIBUTE_UNUSED , } else { + if (warn_cxx0x_compat + && C_RID_CODE (token->u.value) >= RID_FIRST_CXX0X + && C_RID_CODE (token->u.value) <= RID_LAST_CXX0X) + { + /* Warn about the C++0x keyword (but still treat it as + an identifier). */ + warning (0, "identifier %<%s%> will become a keyword in C++0x", + IDENTIFIER_POINTER (token->u.value)); + + /* Clear out the C_RID_CODE so we don't warn about this + particular identifier-turned-keyword again. */ + C_RID_CODE (token->u.value) = RID_MAX; + } + token->ambiguous_p = false; token->keyword = RID_MAX; } |