Home | History | Annotate | Download | only in SemaCXX
      1 // RUN: %clang_cc1 -fsyntax-only -verify -Wunused -Wunused-member-function %s
      2 
      3 static void f1(); // expected-warning{{unused}}
      4 
      5 namespace {
      6   void f2();  // expected-warning{{unused}}
      7 
      8   void f3() { }  // expected-warning{{unused}}
      9 
     10   struct S {
     11     void m1() { }  // expected-warning{{unused}}
     12     void m2();  // expected-warning{{unused}}
     13     void m3();
     14     S(const S&);
     15     void operator=(const S&);
     16   };
     17 
     18   template <typename T>
     19   struct TS {
     20     void m();
     21   };
     22   template <> void TS<int>::m() { }  // expected-warning{{unused}}
     23 
     24   template <typename T>
     25   void tf() { }
     26   template <> void tf<int>() { }  // expected-warning{{unused}}
     27 
     28   struct VS {
     29     virtual void vm() { }
     30   };
     31 
     32   struct SVS : public VS {
     33     void vm() { }
     34   };
     35 }
     36 
     37 void S::m3() { }  // expected-warning{{unused}}
     38 
     39 static inline void f4() { }
     40 const unsigned int cx = 0;
     41 
     42 static int x1;  // expected-warning{{unused}}
     43 
     44 namespace {
     45   int x2;  // expected-warning{{unused}}
     46 
     47   struct S2 {
     48     static int x;  // expected-warning{{unused}}
     49   };
     50 
     51   template <typename T>
     52   struct TS2 {
     53     static int x;
     54   };
     55   template <> int TS2<int>::x;  // expected-warning{{unused}}
     56 }
     57 
     58 namespace PR8841 {
     59   // Ensure that friends of class templates are considered to have a dependent
     60   // context and not marked unused.
     61   namespace {
     62     template <typename T> struct X {
     63       friend bool operator==(const X&, const X&) { return false; }
     64     };
     65   }
     66   template <typename T> void template_test(X<T> x) {
     67     (void)(x == x);
     68   }
     69   void test() {
     70     X<int> x;
     71     template_test(x);
     72   }
     73 }
     74 
     75 namespace test4 {
     76   namespace { struct A {}; }
     77 
     78   void test(A a); // expected-warning {{unused function}}
     79   extern "C" void test4(A a);
     80 }
     81 
     82 namespace rdar8733476 {
     83   static void foo() { } // expected-warning {{not needed and will not be emitted}}
     84 
     85   template <int>
     86   void bar() {
     87     foo();
     88   }
     89 }
     90