11c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola// RUN: %clang_cc1 -fsyntax-only -verify -Wall %s
21c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola
31c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindolanamespace test1 {
41c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola  static int abc = 42; // expected-warning {{variable 'abc' is not needed and will not be emitted}}
51c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola  template <typename T>
61c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola  int foo(void) {
71c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola    return abc;
81c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola  }
91c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola}
101c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola
111c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindolanamespace test2 {
121c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola  struct bah {
131c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola  };
141c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola  namespace {
151c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola    struct foo : bah {
161c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola      static char bar;
171c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola      virtual void zed();
181c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola    };
191c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola    void foo::zed() {
201c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola      bar++;
211c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola    }
221c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola    char foo::bar=0;
231c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola  }
241c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola  bah *getfoo() {
251c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola    return new foo();
261c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola  }
271c80b522e45243d91838bb9b549f844b762cd2bfRafael Espindola}
28