1 // RUN: %clang_cc1 -fsyntax-only -verify -Wall %s
2 
3 namespace test1 {
f()4   static void f() {} // expected-warning {{is not needed and will not be emitted}}
5   static void f();
6   template <typename T>
foo()7   void foo() {
8     f();
9   }
10 }
11 
12 namespace test2 {
f()13   static void f() {}
14   static void f();
g()15   static void g() { f(); }
h()16   void h() { g(); }
17 }
18 
19 namespace test3 {
20   static void f();
21   template<typename T>
g()22   static void g() {
23     f();
24   }
f()25   static void f() {
26   }
h()27   void h() {
28     g<int>();
29   }
30 }
31 
32 namespace test4 {
33   static void f();
34   static void f();
35   template<typename T>
g()36   static void g() {
37     f();
38   }
f()39   static void f() {
40   }
h()41   void h() {
42     g<int>();
43   }
44 }
45 
46 namespace test4 {
47   static void func();
bar()48   void bar() {
49     void func();
50     func();
51   }
func()52   static void func() {}
53 }
54