| // RUN: %clang_cc1 -fsyntax-only -Wunused-variable -verify %s |
| template<typename T> void f() { |
| T t; |
| t = 17; |
| } |
| |
| // PR5407 |
| struct A { A(); }; |
| struct B { ~B(); }; |
| void f() { |
| A a; |
| B b; |
| } |
| |
| // PR5531 |
| namespace PR5531 { |
| struct A { |
| }; |
| |
| struct B { |
| B(int); |
| }; |
| |
| struct C { |
| ~C(); |
| }; |
| |
| void test() { |
| A(); |
| B(17); |
| C(); |
| } |
| } |
| |
| template<typename T> |
| struct X0 { }; |
| |
| template<typename T> |
| void test_dependent_init(T *p) { |
| X0<int> i(p); |
| (void)i; |
| } |
| |
| namespace PR6948 { |
| template<typename T> class X; |
| |
| void f() { |
| X<char> str (read_from_file()); // expected-error{{use of undeclared identifier 'read_from_file'}} |
| } |
| } |
| |
| void unused_local_static() { |
| static int x = 0; |
| static int y = 0; // expected-warning{{unused variable 'y'}} |
| #pragma unused(x) |
| } |
| |
| // PR10168 |
| namespace PR10168 { |
| // We expect a warning in the definition only for non-dependent variables, and |
| // a warning in the instantiation only for dependent variables. |
| template<typename T> |
| struct S { |
| void f() { |
| int a; // expected-warning {{unused variable 'a'}} |
| T b; // expected-warning 2{{unused variable 'b'}} |
| } |
| }; |
| |
| template<typename T> |
| void f() { |
| int a; // expected-warning {{unused variable 'a'}} |
| T b; // expected-warning 2{{unused variable 'b'}} |
| } |
| |
| void g() { |
| S<int>().f(); // expected-note {{here}} |
| S<char>().f(); // expected-note {{here}} |
| f<int>(); // expected-note {{here}} |
| f<char>(); // expected-note {{here}} |
| } |
| } |