Home | History | Annotate | Download | only in SemaCXX
      1 // RUN: %clang -Wmissing-variable-declarations -fsyntax-only -Xclang -verify %s
      2 
      3 // Variable declarations that should trigger a warning.
      4 int vbad1; // expected-warning{{no previous extern declaration for non-static variable 'vbad1'}}
      5 int vbad2 = 10; // expected-warning{{no previous extern declaration for non-static variable 'vbad2'}}
      6 
      7 namespace x {
      8   int vbad3; // expected-warning{{no previous extern declaration for non-static variable 'vbad3'}}
      9 }
     10 
     11 // Variable declarations that should not trigger a warning.
     12 static int vgood1;
     13 extern int vgood2;
     14 int vgood2;
     15 static struct {
     16   int mgood1;
     17 } vgood3;
     18 
     19 // Functions should never trigger a warning.
     20 void fgood1(void);
     21 void fgood2(void) {
     22   int lgood1;
     23   static int lgood2;
     24 }
     25 static void fgood3(void) {
     26   int lgood3;
     27   static int lgood4;
     28 }
     29 
     30 // Structures, namespaces and classes should be unaffected.
     31 struct sgood1 {
     32   int mgood2;
     33 };
     34 struct {
     35   int mgood3;
     36 } sgood2;
     37 class CGood1 {
     38   static int MGood1;
     39 };
     40 int CGood1::MGood1;
     41 namespace {
     42   int mgood4;
     43 }
     44 
     45 class C {
     46   void test() {
     47     static int x = 0; // no-warn
     48   }
     49 };
     50