1 // RUN: %clang_cc1 -fsyntax-only -ast-print %s -std=c++11 | FileCheck %s
3 // Make sure that for template value arguments that are unscoped enumerators,
4 // no qualified enum information is included in their name, as their visibility
5 // is global. In the case of scoped enumerators, they must include information
6 // about their enum enclosing scope.
9 template<E1 v
> struct tmpl_1
{};
10 // CHECK: template<> struct tmpl_1<e1>
11 tmpl_1
<E1::e1
> TMPL_1
; // Name must be 'e1'.
13 namespace nsp_1
{ enum E2
{ e2
}; }
14 template<nsp_1::E2 v
> struct tmpl_2
{};
15 // CHECK: template<> struct tmpl_2<nsp_1::e2>
16 tmpl_2
<nsp_1::E2::e2
> TMPL_2
; // Name must be 'nsp_1::e2'.
19 template<E3 v
> struct tmpl_3
{};
20 // CHECK: template<> struct tmpl_3<E3::e3>
21 tmpl_3
<E3::e3
> TMPL_3
; // Name must be 'E3::e3'.
23 namespace nsp_2
{ enum class E4
{ e4
}; }
24 template<nsp_2::E4 v
> struct tmpl_4
{};
25 // CHECK: template<> struct tmpl_4<nsp_2::E4::e4>
26 tmpl_4
<nsp_2::E4::e4
> TMPL_4
; // Name must be 'nsp_2::E4::e4'.