| // RUN: %clang_cc1 -fsyntax-only -verify %s |
| |
| // PR3990 |
| namespace N { |
| struct Wibble { |
| }; |
| |
| typedef Wibble foo; |
| } |
| using namespace N; |
| |
| foo::bar x; // expected-error{{no type named 'bar' in 'struct N::Wibble'}} |
| |
| void f() { |
| foo::bar = 4; // expected-error{{no member named 'bar' in 'struct N::Wibble'}} |
| } |
| |
| template<typename T> |
| struct A { |
| typedef T type; |
| |
| type f(); |
| }; |
| |
| template<typename T> |
| A<T>::type g(T t) { return t; } // expected-error{{missing 'typename'}} |
| |
| template<typename T> |
| A<T>::type A<T>::f() { return type(); } // expected-error{{missing 'typename'}} |