| /* Copyright 2007 Free Software Foundation, Inc. |
| Contributed by Ollie Wild <aaw@google.com>. */ |
| |
| /* { dg-do preprocess } */ |
| /* { dg-options -fdirectives-only } */ |
| |
| /* Tests scan_translation_unit_directives_only()'s handling of corner cases. */ |
| |
| /* Ignore directives inside block comments... |
| #error directive inside block comment |
| */ |
| |
| // Escaped newline doesn't terminate line comment \ |
| #error directive inside line comment |
| |
| /* A comment canot start inside a string. */ |
| const char *c1 = "/*"; |
| #define NOT_IN_COMMENT |
| const char *c2 = "*/"; |
| #ifndef NOT_IN_COMMENT |
| #error Comment started inside a string literal |
| #endif |
| |
| /* Escaped newline handling. */ |
| int i; \ |
| #error ignored escaped newline |
| \ |
| \ |
| #define BOL |
| #ifndef BOL |
| #error escaped newline did not preserve beginning of line |
| #endif |
| |
| /* Handles \\ properly at the end of a string. */ |
| "string ends in \\"/* |
| #error Missed string terminator. |
| */ |
| |
| /* Handles macro expansion in preprocessing directives. */ |
| #define HEADER "dir-only-1.h" |
| #include HEADER |
| #ifndef GOT_HEADER |
| #error Failed to include header. |
| #endif |
| |
| /\ |
| * |
| #define IN_COMMENT |
| */ |
| #ifdef IN_COMMENT |
| #error Escaped newline breaks block comment initiator. |
| #endif |
| |
| /* |
| *\ |
| / |
| #define NOT_IN_COMMENT2 |
| /**/ |
| #ifndef NOT_IN_COMMENT2 |
| #error Escaped newline breaks block comment terminator. |
| #endif |
| |
| /* Test escaped newline inside character escape sequence. */ |
| "\\ |
| \"/* |
| #error Missed string terminator |
| */ |
| |
| /* Block comments don't mask trailing preprocessing |
| directive. */ #define NOT_MASKED |
| #ifndef NOT_MASKED |
| #error Comment masks trailing directive. |
| #endif |