2011-07-14 12:54:23 +08:00
// RUN: %clang_cc1 -fsyntax-only -verify %s
// FIXME: The diagnostics and recovery here are very, very poor.
// PR10355
2011-08-04 04:36:05 +08:00
template < typename T > void template_id1 ( ) { / / expected - note { { ' template_id1 ' declared here } } \
2011-10-12 07:14:30 +08:00
// expected-note {{possible target for call}}
2011-08-04 04:36:05 +08:00
template_id2 < > t ; / / expected - error { { no template named ' template_id2 ' ; did you mean ' template_id1 ' ? } } \
/ / expected - error { { expected ' ; ' after expression } } \
2011-10-12 07:14:30 +08:00
/ / expected - error { { reference to overloaded function could not be resolved ; did you mean to call it ? } } \
2011-08-04 04:36:05 +08:00
// expected-error {{use of undeclared identifier 't'}}
2011-07-14 12:54:23 +08:00
}
2012-03-27 00:54:18 +08:00
// FIXME: It would be nice if we could get this correction right.
namespace PR12297 {
namespace A {
typedef short T ;
namespace B {
typedef short T ;
2013-07-03 07:47:35 +08:00
T global ( ) ; // expected-note {{'::PR12297::global' declared here}}
2012-03-27 00:54:18 +08:00
}
}
using namespace A : : B ;
2013-07-03 07:47:35 +08:00
// FIXME: Adding '::PR12297::' is not needed as removing 'A::' is sufficient
2013-08-09 12:35:01 +08:00
T A : : global ( ) ; // expected-error {{out-of-line declaration of 'global' does not match any declaration in namespace 'PR12297::A'; did you mean '::PR12297::global'?}}
2012-03-27 00:54:18 +08:00
}