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
This commit is contained in:
parent
18103407c6
commit
54654d29cb
3 changed files with 26 additions and 3 deletions
|
@ -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
|
||||
|
|
|
@ -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++)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue