xref: /llvm-project/clang/test/C/C23/n2940.c (revision 50c81128de8616117118564eff22cf508cba7848)
1 // RUN: %clang_cc1 -verify=no-trigraphs -std=c23 %s
2 // RUN: %clang_cc1 -verify=no-trigraphs -std=gnu23 %s
3 // RUN: %clang_cc1 -verify=no-trigraphs -std=gnu17 %s
4 // RUN: %clang_cc1 -verify=no-trigraphs -std=gnu11 %s
5 // RUN: %clang_cc1 -verify=no-trigraphs -std=gnu99 %s
6 // RUN: %clang_cc1 -verify=no-trigraphs -std=gnu89 %s
7 // RUN: %clang_cc1 -verify=trigraphs -std=c17 %s
8 // RUN: %clang_cc1 -verify=trigraphs -std=c11 %s
9 // RUN: %clang_cc1 -verify=trigraphs -std=c99 %s
10 // RUN: %clang_cc1 -verify=trigraphs -std=c89 %s
11 // RUN: %clang_cc1 -verify=trigraphs -std=c23 -ftrigraphs %s
12 
13 /* WG14 N2940: Clang 18
14  * Removing trigraphs??!
15  */
16 
17 // Trigraphs are enabled by default in any conforming C mode before C23, but
18 // are otherwise disabled (in all GNU modes, and in C23 or later).
19 // The ??= trigraph, if supported, will become the # character, which is a null
20 // preprocessor directive that does nothing.
21 
22 ??=
23 // no-trigraphs-warning@-1 {{trigraph ignored}} \
24    no-trigraphs-error@-1 {{expected identifier or '('}} \
25    trigraphs-warning@-1 {{trigraph converted to '#' character}}
26 
27