* cpphash.h (struct_lexer_state): Delete was_skipping. Move skipping here from struct cpp_reader. * cpplex.c (parse_identifier): Update. (_cpp_lex_token): Don't skip tokens in a directive. * cpplib.c (struct if_stack): Update. (start_directive, end_directive): Don't change skipping state. (_cpp_handle_directive): Update. (do_ifdef, do_ifndef, do_if, do_elif): Similarly. (do_else, do_endif): Update; only check for excess tokens if not in a skipped conditional block. (push_conditional): Update for new struct if_stack. * gcc.dg/cpp/extratokens.c: Fix. * gcc.dg/cpp/skipping2.c: New tests. From-SVN: r44380
15 lines
443 B
C
15 lines
443 B
C
/* Copyright (C) 2001 Free Software Foundation, Inc. */
|
|
|
|
/* { dg-do preprocess } */
|
|
|
|
/* Tests that excess tokens in skipped conditional blocks don't warn. */
|
|
|
|
/* Source: Neil Booth, 25 Jul 2001. */
|
|
|
|
#if 0
|
|
#if foo
|
|
#else foo /* { dg-bogus "extra tokens" "extra tokens in skipped block" } */
|
|
#endif foo /* { dg-bogus "extra tokens" "extra tokens in skipped block" } */
|
|
#endif bar /* { dg-warning "extra tokens" "tokens after #endif" } */
|
|
|