// RUN: %clang_cc1 -fsyntax-only -verify -Wall %s namespace test1 { static int abc = 42; // expected-warning {{variable 'abc' is not needed and will not be emitted}} namespace { template int abc_template = 0; template <> int abc_template = 0; // expected-warning {{variable 'abc_template' is not needed and will not be emitted}} } // namespace template int foo(void) { return abc + abc_template + abc_template; } } namespace test2 { struct bah { }; namespace { struct foo : bah { static char bar; virtual void zed(); }; void foo::zed() { bar++; } char foo::bar=0; } bah *getfoo() { return new foo(); } }