1/* Copyright 2007 Free Software Foundation, Inc. 2 Contributed by Ollie Wild <aaw@google.com>. */ 3 4/* { dg-do preprocess } */ 5/* { dg-options -fdirectives-only } */ 6 7/* Tests scan_translation_unit_directives_only()'s handling of corner cases. */ 8 9/* Ignore directives inside block comments... 10#error directive inside block comment 11*/ 12 13// Escaped newline doesn't terminate line comment \ 14#error directive inside line comment 15 16/* A comment canot start inside a string. */ 17const char *c1 = "/*"; 18#define NOT_IN_COMMENT 19const char *c2 = "*/"; 20#ifndef NOT_IN_COMMENT 21#error Comment started inside a string literal 22#endif 23 24/* Escaped newline handling. */ 25int i; \ 26#error ignored escaped newline 27 \ 28 \ 29#define BOL 30#ifndef BOL 31#error escaped newline did not preserve beginning of line 32#endif 33 34/* Handles \\ properly at the end of a string. */ 35"string ends in \\"/* 36#error Missed string terminator. 37*/ 38 39/* Handles macro expansion in preprocessing directives. */ 40#define HEADER "dir-only-1.h" 41#include HEADER 42#ifndef GOT_HEADER 43#error Failed to include header. 44#endif 45 46/\ 47* 48#define IN_COMMENT 49*/ 50#ifdef IN_COMMENT 51#error Escaped newline breaks block comment initiator. 52#endif 53 54/* 55*\ 56/ 57#define NOT_IN_COMMENT2 58/**/ 59#ifndef NOT_IN_COMMENT2 60#error Escaped newline breaks block comment terminator. 61#endif 62 63/* Test escaped newline inside character escape sequence. */ 64"\\ 65\"/* 66#error Missed string terminator 67*/ 68 69/* Block comments don't mask trailing preprocessing 70 directive. */ #define NOT_MASKED 71#ifndef NOT_MASKED 72#error Comment masks trailing directive. 73#endif 74