[RISCV] Simplify usage of SplatPat_simm5_plus1. NFC (#125340)
[llvm-project.git] / clang / test / SemaTemplate / elaborated-type-specifier.cpp
blob27b3f36ee14dd8ed15681628d16c0b392d958bf3
1 // RUN: %clang_cc1 -fsyntax-only -verify %s
3 namespace PR6915 {
4 template <typename T>
5 class D {
6 enum T::X v; // expected-error{{use of 'X' with tag type that does not match previous declaration}} \
7 // expected-error{{no enum named 'X' in 'PR6915::D3'}}
8 };
10 struct D1 {
11 enum X { value };
13 struct D2 {
14 class X { }; // expected-note{{previous use is here}}
16 struct D3 { };
18 template class D<D1>;
19 template class D<D2>; // expected-note{{in instantiation of}}
20 template class D<D3>; // expected-note{{in instantiation of}}
23 template<typename T>
24 struct DeclOrDef {
25 enum T::foo; // expected-error{{nested name specifier for a declaration cannot depend on a template parameter}}
26 // expected-error@-1{{forward declaration of enum cannot have a nested name specifier}}
27 enum T::bar { // expected-error{{nested name specifier for a declaration cannot depend on a template parameter}}
28 value
32 namespace PR6649 {
33 template <typename T> struct foo {
34 class T::bar; // expected-error{{nested name specifier for a declaration cannot depend on a template parameter}}
35 // expected-error@-1{{forward declaration of class cannot have a nested name specifier}}
36 class T::bar { int x; }; // expected-error{{nested name specifier for a declaration cannot depend on a template parameter}}
40 namespace rdar8568507 {
41 template <class T> struct A *makeA(T t);