mirror of
https://github.com/gcc-mirror/gcc.git
synced 2024-11-21 13:40:47 +00:00
charset.c (_cpp_valid_ucn): In identifiers, reject a partial UCN rather than printing an error.
2005-03-15 Geoffrey Keating <geoffk@apple.com> * charset.c (_cpp_valid_ucn): In identifiers, reject a partial UCN rather than printing an error. Index: gcc/testsuite/ChangeLog 2005-03-15 Geoffrey Keating <geoffk@apple.com> * gcc.dg/cpp/ucnid-7.c: New. From-SVN: r96546
This commit is contained in:
parent
2532808d17
commit
c79e602b63
@ -1,3 +1,7 @@
|
||||
2005-03-15 Geoffrey Keating <geoffk@apple.com>
|
||||
|
||||
* gcc.dg/cpp/ucnid-7.c: New.
|
||||
|
||||
2005-03-15 Janis Johnson <janis187@us.ibm.com>
|
||||
Dorit Naishlos <dorit@il.ibm.com>
|
||||
|
||||
|
5
gcc/testsuite/gcc.dg/cpp/ucnid-7.c
Normal file
5
gcc/testsuite/gcc.dg/cpp/ucnid-7.c
Normal file
@ -0,0 +1,5 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-std=c99" } */
|
||||
#define a b(
|
||||
#define b(x) q
|
||||
int a\U0000000z );
|
@ -1,3 +1,8 @@
|
||||
2005-03-15 Geoffrey Keating <geoffk@apple.com>
|
||||
|
||||
* charset.c (_cpp_valid_ucn): In identifiers, reject a partial
|
||||
UCN rather than printing an error.
|
||||
|
||||
2005-03-14 Geoffrey Keating <geoffk@apple.com>
|
||||
|
||||
* lex.c (forms_identifier_p): Disable UCNs in C89 mode.
|
||||
|
@ -923,9 +923,8 @@ ucn_valid_in_identifier (cpp_reader *pfile, cppchar_t c,
|
||||
program is ill-formed.
|
||||
|
||||
*PSTR must be preceded by "\u" or "\U"; it is assumed that the
|
||||
buffer end is delimited by a non-hex digit. Returns zero if UCNs
|
||||
are not part of the relevant standard, or if the string beginning
|
||||
at *PSTR doesn't syntactically match the form 'NNNN' or 'NNNNNNNN'.
|
||||
buffer end is delimited by a non-hex digit. Returns zero if the
|
||||
UCN has not been consumed.
|
||||
|
||||
Otherwise the nonzero value of the UCN, whether valid or invalid,
|
||||
is returned. Diagnostics are emitted for invalid values. PSTR
|
||||
@ -974,10 +973,15 @@ _cpp_valid_ucn (cpp_reader *pfile, const uchar **pstr,
|
||||
}
|
||||
while (--length && str < limit);
|
||||
|
||||
/* Partial UCNs are not valid in strings, but decompose into
|
||||
multiple tokens in identifiers, so we can't give a helpful
|
||||
error message in that case. */
|
||||
if (length && identifier_pos)
|
||||
return 0;
|
||||
|
||||
*pstr = str;
|
||||
if (length)
|
||||
{
|
||||
/* We'll error when we try it out as the start of an identifier. */
|
||||
cpp_error (pfile, CPP_DL_ERROR,
|
||||
"incomplete universal character name %.*s",
|
||||
(int) (str - base), base);
|
||||
|
Loading…
Reference in New Issue
Block a user