tradcpp.c (rescan): Do not recognize directives when the # is indented.
* tradcpp.c (rescan): Do not recognize directives when the # is indented. * gcc.dg/cpp/tr-direct.c: New test. From-SVN: r35139
This commit is contained in:
parent
0fab9d0a5d
commit
53fdf0be63
@ -1,3 +1,8 @@
|
||||
2000-07-19 Zack Weinberg <zack@wolery.cumb.org>
|
||||
|
||||
* tradcpp.c (rescan): Do not recognize directives when the #
|
||||
is indented.
|
||||
|
||||
2000-07-19 Zack Weinberg <zack@wolery.cumb.org>
|
||||
|
||||
Implement C++ named operators.
|
||||
|
@ -1,5 +1,7 @@
|
||||
2000-07-19 Zack Weinberg <zack@wolery.cumb.org>
|
||||
|
||||
* gcc.dg/cpp/tr-direct.c: New test.
|
||||
|
||||
* gcc.dg/cpp/directiv.c, gcc.dg/cpp/macsyntx.c,
|
||||
gcc.dg/cpp/undef1.c: Tweak error regexps.
|
||||
|
||||
|
11
gcc/testsuite/gcc.dg/cpp/tr-direct.c
Normal file
11
gcc/testsuite/gcc.dg/cpp/tr-direct.c
Normal file
@ -0,0 +1,11 @@
|
||||
/* Test for some basic aspects of -traditional directive processing. */
|
||||
|
||||
/* { dg-do preprocess } */
|
||||
/* { dg-options -traditional } */
|
||||
|
||||
/* There is no #error directive. */
|
||||
|
||||
#error bad /* { dg-bogus "bad" } */
|
||||
|
||||
/* Directives with their #s indented are not recognized. */
|
||||
#if 0 /* { dg-bogus "unterminated" } */
|
@ -1187,32 +1187,11 @@ do { ip = &instack[indepth]; \
|
||||
if (ident_length)
|
||||
goto specialchar;
|
||||
|
||||
/* # keyword: a # must be first nonblank char on the line */
|
||||
/* # keyword: a # must be the first char on the line */
|
||||
if (beg_of_line == 0)
|
||||
goto randomchar;
|
||||
{
|
||||
U_CHAR *bp;
|
||||
|
||||
/* Scan from start of line, skipping whitespace, comments
|
||||
and backslash-newlines, and see if we reach this #.
|
||||
If not, this # is not special. */
|
||||
bp = beg_of_line;
|
||||
while (1) {
|
||||
if (is_hor_space[*bp])
|
||||
bp++;
|
||||
else if (*bp == '\\' && bp[1] == '\n')
|
||||
bp += 2;
|
||||
else if (*bp == '/' && (newline_fix (bp + 1), bp[1]) == '*') {
|
||||
bp += 2;
|
||||
while (!(*bp == '*' && (newline_fix (bp + 1), bp[1]) == '/'))
|
||||
bp++;
|
||||
bp += 1;
|
||||
}
|
||||
else break;
|
||||
}
|
||||
if (bp + 1 != ibp)
|
||||
goto randomchar;
|
||||
}
|
||||
if (beg_of_line + 1 != ibp)
|
||||
goto randomchar;
|
||||
|
||||
/* This # can start a directive. */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user