(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
Wbidi-chars-4.c
       1  /* PR preprocessor/103026 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-Wbidi-chars=any,ucn -Wno-multichar -Wno-overflow" } */
       4  /* Test all bidi chars in various contexts (identifiers, comments,
       5     string literals, character constants), both UCN and UTF-8.  The bidi
       6     chars here are properly terminated, except for the character constants.  */
       7  
       8  /* a b c LRE‪ 1 2 3 PDF‬ x y z */
       9  /* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
      10  /* a b c RLE‫ 1 2 3 PDF‬ x y z */
      11  /* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
      12  /* a b c LRO‭ 1 2 3 PDF‬ x y z */
      13  /* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
      14  /* a b c RLO‮ 1 2 3 PDF‬ x y z */
      15  /* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
      16  /* a b c LRI⁦ 1 2 3 PDI⁩ x y z */
      17  /* { dg-warning "U\\+2066" "" { target *-*-* } .-1 } */
      18  /* a b c RLI⁧ 1 2 3 PDI⁩ x y */
      19  /* { dg-warning "U\\+2067" "" { target *-*-* } .-1 } */
      20  /* a b c FSI⁨ 1 2 3 PDI⁩ x y z */
      21  /* { dg-warning "U\\+2068" "" { target *-*-* } .-1 } */
      22  
      23  /* Same but C++ comments instead.  */
      24  // a b c LRE‪ 1 2 3 PDF‬ x y z
      25  /* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
      26  // a b c RLE‫ 1 2 3 PDF‬ x y z
      27  /* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
      28  // a b c LRO‭ 1 2 3 PDF‬ x y z
      29  /* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
      30  // a b c RLO‮ 1 2 3 PDF‬ x y z
      31  /* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
      32  // a b c LRI⁦ 1 2 3 PDI⁩ x y z
      33  /* { dg-warning "U\\+2066" "" { target *-*-* } .-1 } */
      34  // a b c RLI⁧ 1 2 3 PDI⁩ x y
      35  /* { dg-warning "U\\+2067" "" { target *-*-* } .-1 } */
      36  // a b c FSI⁨ 1 2 3 PDI⁩ x y z
      37  /* { dg-warning "U\\+2068" "" { target *-*-* } .-1 } */
      38  
      39  /* Here we're closing an unopened context, warn when =any.  */
      40  /* a b c PDI⁩ x y z */
      41  /* { dg-warning "U\\+2069" "" { target *-*-* } .-1 } */
      42  /* a b c PDF‬ x y z */
      43  /* { dg-warning "U\\+202C" "" { target *-*-* } .-1 } */
      44  // a b c PDI⁩ x y z
      45  /* { dg-warning "U\\+2069" "" { target *-*-* } .-1 } */
      46  // a b c PDF‬ x y z
      47  /* { dg-warning "U\\+202C" "" { target *-*-* } .-1 } */
      48  
      49  /* Multiline comments.  */
      50  /* a b c PDI⁩ x y z
      51     */
      52  /* { dg-warning "U\\+2069" "" { target *-*-* } .-2 } */
      53  /* a b c PDF‬ x y z
      54     */
      55  /* { dg-warning "U\\+202C" "" { target *-*-* } .-2 } */
      56  /* first
      57     a b c PDI⁩ x y z
      58     */
      59  /* { dg-warning "U\\+2069" "" { target *-*-* } .-2 } */
      60  /* first
      61     a b c PDF‬ x y z
      62     */
      63  /* { dg-warning "U\\+202C" "" { target *-*-* } .-2 } */
      64  /* first
      65     a b c PDI⁩ x y z */
      66  /* { dg-warning "U\\+2069" "" { target *-*-* } .-1 } */
      67  /* first
      68     a b c PDF‬ x y z */
      69  /* { dg-warning "U\\+202C" "" { target *-*-* } .-1 } */
      70  
      71  void
      72  g1 ()
      73  {
      74    const char *s1 = "a b c LRE‪ 1 2 3 PDF‬ x y z";
      75  /* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
      76    const char *s2 = "a b c RLE‫ 1 2 3 PDF‬ x y z";
      77  /* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
      78    const char *s3 = "a b c LRO‭ 1 2 3 PDF‬ x y z";
      79  /* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
      80    const char *s4 = "a b c RLO‮ 1 2 3 PDF‬ x y z";
      81  /* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
      82    const char *s5 = "a b c LRI⁦ 1 2 3 PDI⁩ x y z";
      83  /* { dg-warning "U\\+2066" "" { target *-*-* } .-1 } */
      84    const char *s6 = "a b c RLI⁧ 1 2 3 PDI⁩ x y z";
      85  /* { dg-warning "U\\+2067" "" { target *-*-* } .-1 } */
      86    const char *s7 = "a b c FSI⁨ 1 2 3 PDI⁩ x y z";
      87  /* { dg-warning "U\\+2068" "" { target *-*-* } .-1 } */
      88    const char *s8 = "a b c PDI⁩ x y z";
      89  /* { dg-warning "U\\+2069" "" { target *-*-* } .-1 } */
      90    const char *s9 = "a b c PDF‬ x y z";
      91  /* { dg-warning "U\\+202C" "" { target *-*-* } .-1 } */
      92  
      93    const char *s10 = "a b c LRE\u202a 1 2 3 PDF\u202c x y z";
      94  /* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
      95    const char *s11 = "a b c LRE\u202A 1 2 3 PDF\u202c x y z";
      96  /* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
      97    const char *s12 = "a b c RLE\u202b 1 2 3 PDF\u202c x y z";
      98  /* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
      99    const char *s13 = "a b c RLE\u202B 1 2 3 PDF\u202c x y z";
     100  /* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
     101    const char *s14 = "a b c LRO\u202d 1 2 3 PDF\u202c x y z";
     102  /* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
     103    const char *s15 = "a b c LRO\u202D 1 2 3 PDF\u202c x y z";
     104  /* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
     105    const char *s16 = "a b c RLO\u202e 1 2 3 PDF\u202c x y z";
     106  /* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
     107    const char *s17 = "a b c RLO\u202E 1 2 3 PDF\u202c x y z";
     108  /* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
     109    const char *s18 = "a b c LRI\u2066 1 2 3 PDI\u2069 x y z";
     110  /* { dg-warning "U\\+2066" "" { target *-*-* } .-1 } */
     111    const char *s19 = "a b c RLI\u2067 1 2 3 PDI\u2069 x y z";
     112  /* { dg-warning "U\\+2067" "" { target *-*-* } .-1 } */
     113    const char *s20 = "a b c FSI\u2068 1 2 3 PDI\u2069 x y z";
     114  /* { dg-warning "U\\+2068" "" { target *-*-* } .-1 } */
     115  }
     116  
     117  void
     118  g2 ()
     119  {
     120    const char c1 = '\u202a';
     121  /* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
     122    const char c2 = '\u202A';
     123  /* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
     124    const char c3 = '\u202b';
     125  /* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
     126    const char c4 = '\u202B';
     127  /* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
     128    const char c5 = '\u202d';
     129  /* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
     130    const char c6 = '\u202D';
     131  /* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
     132    const char c7 = '\u202e';
     133  /* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
     134    const char c8 = '\u202E';
     135  /* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
     136    const char c9 = '\u2066';
     137  /* { dg-warning "U\\+2066" "" { target *-*-* } .-1 } */
     138    const char c10 = '\u2067';
     139  /* { dg-warning "U\\+2067" "" { target *-*-* } .-1 } */
     140    const char c11 = '\u2068';
     141  /* { dg-warning "U\\+2068" "" { target *-*-* } .-1 } */
     142  }
     143  
     144  int a‪b‬c;
     145  /* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
     146  int a‫b‬c;
     147  /* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
     148  int a‭b‬c;
     149  /* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
     150  int a‮b‬c;
     151  /* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
     152  int a⁦b⁩c;
     153  /* { dg-warning "U\\+2066" "" { target *-*-* } .-1 } */
     154  int a⁧b⁩c;
     155  /* { dg-warning "U\\+2067" "" { target *-*-* } .-1 } */
     156  int a⁨b⁩c;
     157  /* { dg-warning "U\\+2068" "" { target *-*-* } .-1 } */
     158  int A‬X;
     159  /* { dg-warning "U\\+202C" "" { target *-*-* } .-1 } */
     160  int A\u202cY;
     161  /* { dg-warning "U\\+202C" "" { target *-*-* } .-1 } */
     162  int A\u202CY2;
     163  /* { dg-warning "U\\+202C" "" { target *-*-* } .-1 } */
     164  
     165  int d\u202ae\u202cf;
     166  /* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
     167  int d\u202Ae\u202cf2;
     168  /* { dg-warning "U\\+202A" "" { target *-*-* } .-1 } */
     169  int d\u202be\u202cf;
     170  /* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
     171  int d\u202Be\u202cf2;
     172  /* { dg-warning "U\\+202B" "" { target *-*-* } .-1 } */
     173  int d\u202de\u202cf;
     174  /* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
     175  int d\u202De\u202cf2;
     176  /* { dg-warning "U\\+202D" "" { target *-*-* } .-1 } */
     177  int d\u202ee\u202cf;
     178  /* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
     179  int d\u202Ee\u202cf2;
     180  /* { dg-warning "U\\+202E" "" { target *-*-* } .-1 } */
     181  int d\u2066e\u2069f;
     182  /* { dg-warning "U\\+2066" "" { target *-*-* } .-1 } */
     183  int d\u2067e\u2069f;
     184  /* { dg-warning "U\\+2067" "" { target *-*-* } .-1 } */
     185  int d\u2068e\u2069f;
     186  /* { dg-warning "U\\+2068" "" { target *-*-* } .-1 } */
     187  int X\u2069;
     188  /* { dg-warning "U\\+2069" "" { target *-*-* } .-1 } */