// RUN: %clang_cc1 -fsyntax-only -verify %s
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
// PR3990
using namespace N;
foo::bar x; // expected-error{{no type named 'bar' in 'N::Wibble'}}
void
int ; // expected-error{{no type named 'bar' in 'N::Wibble'}}
int ; // expected-error{{did you mean 'double'?}}
int ; // expected-error{{unknown type name 'zapotron'}}
int ; // expected-error{{did you mean 'zeppelin'?}}
;
A<T>::type // expected-error{{missing 'typename'}}
A<T>::type // expected-error{{missing 'typename'}}
void // expected-error{{missing 'typename'}}
void // expected-error{{missing 'typename'}}
void // expected-error{{missing 'typename'}}
void // expected-error{{missing 'typename'}}
void // expected-error{{missing 'typename'}}
void // expected-error{{missing 'typename'}}
void // expected-error{{missing 'typename'}}
void // expected-error{{missing 'typename'}}
int *p;
int ; // expected-error{{unknown type name 'undeclared'}}
int ; // expected-error{{undeclared identifier}}
int ; // expected-error{{unknown type name 'undeclared'}}
int ; // expected-error{{undeclared identifier}}
int * // expected-error{{unknown type name 'UnknownType'}}
int ; // ok
A<T>::type // expected-error{{missing 'typename'}}
; // ok
int // expected-error{{missing 'typename'}}
int // expected-error{{missing 'typename'}}
int ; // expected-error{{missing 'typename'}}
int ; // expected-error{{missing 'typename'}}
int ;
// expected-warning@-2 {{variable templates are a C++14 extension}}
int throw; // expected-error{{missing 'typename'}}
int ; // expected-error{{missing 'typename'}}
//expected-warning@-2 {{deleted function definitions are a C++11 extension}}
int ; // expected-error{{missing 'typename'}}
// FIXME: We can tell this was intended to be a function because it does not
// have a dependent nested name specifier.
int ;
// expected-warning@-2 {{variable templates are a C++14 extension}}
// FIXME: We know which type specifier should have been specified here. Provide
// a fix-it to add 'typename A<T>::type'
A<T> // expected-error{{a type specifier is required}}