Home | History | Annotate | Download | only in SemaCXX
      1 // RUN: %clang_cc1 -fsyntax-only -verify %s -DNONE -Wno-gnu
      2 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s -DNONE -Wno-gnu
      3 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s -DNONE -Wno-gnu
      4 
      5 // RUN: %clang_cc1 -fsyntax-only -verify %s -DALL -Wgnu
      6 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s -DALL -Wgnu
      7 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s -DALL -Wgnu
      8 
      9 // RUN: %clang_cc1 -fsyntax-only -verify %s -DALL -Wno-gnu \
     10 // RUN:   -Wgnu-anonymous-struct -Wredeclared-class-member \
     11 // RUN:   -Wgnu-flexible-array-union-member -Wgnu-folding-constant \
     12 // RUN:   -Wgnu-empty-struct
     13 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s -DALL -Wno-gnu \
     14 // RUN:   -Wgnu-anonymous-struct -Wredeclared-class-member \
     15 // RUN:   -Wgnu-flexible-array-union-member -Wgnu-folding-constant \
     16 // RUN:   -Wgnu-empty-struct
     17 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s -DALL -Wno-gnu \
     18 // RUN:   -Wgnu-anonymous-struct -Wredeclared-class-member \
     19 // RUN:   -Wgnu-flexible-array-union-member -Wgnu-folding-constant \
     20 // RUN:   -Wgnu-empty-struct
     21 
     22 // RUN: %clang_cc1 -fsyntax-only -verify %s -DNONE -Wgnu \
     23 // RUN:   -Wno-gnu-anonymous-struct -Wno-redeclared-class-member \
     24 // RUN:   -Wno-gnu-flexible-array-union-member -Wno-gnu-folding-constant \
     25 // RUN:   -Wno-gnu-empty-struct
     26 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s -DNONE -Wgnu \
     27 // RUN:   -Wno-gnu-anonymous-struct -Wno-redeclared-class-member \
     28 // RUN:   -Wno-gnu-flexible-array-union-member -Wno-gnu-folding-constant \
     29 // RUN:   -Wno-gnu-empty-struct
     30 // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s -DNONE -Wgnu \
     31 // RUN:   -Wno-gnu-anonymous-struct -Wno-redeclared-class-member \
     32 // RUN:   -Wno-gnu-flexible-array-union-member -Wno-gnu-folding-constant \
     33 // RUN:   -Wno-gnu-empty-struct
     34 
     35 // Additional disabled tests:
     36 // %clang_cc1 -fsyntax-only -verify %s -DANONYMOUSSTRUCT -Wno-gnu -Wgnu-anonymous-struct
     37 // %clang_cc1 -fsyntax-only -verify %s -DREDECLAREDCLASSMEMBER -Wno-gnu -Wredeclared-class-member
     38 // %clang_cc1 -fsyntax-only -verify %s -DFLEXIBLEARRAYUNIONMEMBER -Wno-gnu -Wgnu-flexible-array-union-member
     39 // %clang_cc1 -fsyntax-only -verify %s -DFOLDINGCONSTANT -Wno-gnu -Wgnu-folding-constant
     40 // %clang_cc1 -fsyntax-only -verify %s -DEMPTYSTRUCT -Wno-gnu -Wgnu-empty-struct
     41 
     42 #if NONE
     43 // expected-no-diagnostics
     44 #endif
     45 
     46 
     47 #if ALL || ANONYMOUSSTRUCT
     48 // expected-warning@+5 {{anonymous structs are a GNU extension}}
     49 #endif
     50 
     51 struct as {
     52   int x;
     53   struct {
     54     int a;
     55     float b;
     56   };
     57 };
     58 
     59 
     60 #if ALL || REDECLAREDCLASSMEMBER
     61 // expected-note@+6 {{previous declaration is here}}
     62 // expected-warning@+6 {{class member cannot be redeclared}}
     63 #endif
     64 
     65 namespace rcm {
     66   class A {
     67     class X;
     68     class X;
     69     class X {};
     70   };
     71 }
     72 
     73 
     74 #if ALL || FLEXIBLEARRAYUNIONMEMBER
     75 // expected-warning@+6 {{flexible array member 'c1' in a union is a GNU extension}}
     76 #endif
     77 
     78 struct faum {
     79    int l;
     80    union {
     81        int c1[];
     82    };
     83 };
     84 
     85 
     86 #if (ALL || FOLDINGCONSTANT) && (__cplusplus <= 199711L) // C++03 or earlier modes
     87 // expected-warning@+4 {{in-class initializer for static data member is not a constant expression; folding it to a constant is a GNU extension}}
     88 #endif
     89 
     90 struct fic {
     91   static const int B = int(0.75 * 1000 * 1000);
     92 };
     93 
     94 
     95 #if ALL || EMPTYSTRUCT
     96 // expected-warning@+3 {{flexible array member 'a' in otherwise empty struct is a GNU extension}}
     97 #endif
     98 
     99 struct ofam {int a[];};
    100 
    101