Home | History | Annotate | Download | only in PCH
      1 // Test this without pch.
      2 // RUN: %clang_cc1 %s -include %s -verify -fsyntax-only -Wuninitialized
      3 
      4 // Test with pch.
      5 // RUN: %clang_cc1 %s -emit-pch -o %t
      6 // RUN: %clang_cc1 %s -include-pch %t -verify -fsyntax-only -Wuninitialized
      7 
      8 #ifndef HEADER
      9 #define HEADER
     10 
     11 #pragma clang diagnostic push
     12 #pragma clang diagnostic ignored "-Wuninitialized"
     13 template <typename T>
     14 struct TS1 {
     15     void m() {
     16       T a;
     17       T b = a;
     18     }
     19 };
     20 #pragma clang diagnostic pop
     21 
     22 #else
     23 
     24 
     25 template <typename T>
     26 struct TS2 {
     27     void m() {
     28       T a;
     29       T b = a; // expected-warning {{variable 'a' is uninitialized}} \
     30                   expected-note@41 {{in instantiation of member function}} \
     31                   expected-note@28 {{initialize the variable 'a' to silence}}
     32     }
     33 };
     34 
     35 void f() {
     36     TS1<int> ts1;
     37     ts1.m();
     38 
     39 
     40     TS2<int> ts2;
     41     ts2.m();
     42 }
     43 
     44 #endif
     45