]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/SemaCXX/warn-unused-filescoped.cpp
Vendor import of clang trunk r161861:
[FreeBSD/FreeBSD.git] / test / SemaCXX / warn-unused-filescoped.cpp
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 }