• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
f3()8   void f3() { }  // expected-warning{{unused}}
9 
10   struct S {
m1__anon927bfc570111::S11     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   };
m()22   template <> void TS<int>::m() { }  // expected-warning{{unused}}
23 
24   template <typename T>
tf()25   void tf() { }
tf()26   template <> void tf<int>() { }  // expected-warning{{unused}}
27 
28   struct VS {
vm__anon927bfc570111::VS29     virtual void vm() { }
30   };
31 
32   struct SVS : public VS {
vm__anon927bfc570111::SVS33     void vm() { }
34   };
35 }
36 
m3()37 void S::m3() { }  // expected-warning{{unused}}
38 
f4()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 {
operator ==(const X &,const X &)63       friend bool operator==(const X&, const X&) { return false; }
64     };
65   }
template_test(X<T> x)66   template <typename T> void template_test(X<T> x) {
67     (void)(x == x);
68   }
test()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 {
foo()83   static void foo() { } // expected-warning {{not needed and will not be emitted}}
84 
85   template <int>
bar()86   void bar() {
87     foo();
88   }
89 }
90