зеркало из https://github.com/microsoft/clang-1.git
Added tests for template keyword presence.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149177 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
82e6411d00
Коммит
bd2b6f0e57
|
@ -11,3 +11,122 @@ void g() {
|
|||
// CHECK: N::f<double>
|
||||
void (*fp)(int) = N::f<double>;
|
||||
}
|
||||
|
||||
|
||||
// (NNS qualified) DeclRefExpr.
|
||||
namespace DRE {
|
||||
|
||||
template <typename T>
|
||||
void foo();
|
||||
|
||||
void test() {
|
||||
// CHECK: DRE::foo<int>;
|
||||
DRE::foo<int>;
|
||||
// CHECK: DRE::template foo<int>;
|
||||
DRE::template foo<int>;
|
||||
// CHECK: DRE::foo<int>();
|
||||
DRE::foo<int>();
|
||||
// CHECK: DRE::template foo<int>();
|
||||
DRE::template foo<int>();
|
||||
}
|
||||
|
||||
} // namespace DRE
|
||||
|
||||
|
||||
// MemberExpr.
|
||||
namespace ME {
|
||||
|
||||
struct S {
|
||||
template <typename T>
|
||||
void mem();
|
||||
};
|
||||
|
||||
void test() {
|
||||
S s;
|
||||
// CHECK: s.mem<int>();
|
||||
s.mem<int>();
|
||||
// CHECK: s.template mem<int>();
|
||||
s.template mem<int>();
|
||||
}
|
||||
|
||||
} // namespace ME
|
||||
|
||||
|
||||
// UnresolvedLookupExpr.
|
||||
namespace ULE {
|
||||
|
||||
template <typename T>
|
||||
int foo();
|
||||
|
||||
template <typename T>
|
||||
void test() {
|
||||
// CHECK: ULE::foo<T>;
|
||||
ULE::foo<T>;
|
||||
// CHECK: ULE::template foo<T>;
|
||||
ULE::template foo<T>;
|
||||
}
|
||||
|
||||
} // namespace ULE
|
||||
|
||||
|
||||
// UnresolvedMemberExpr.
|
||||
namespace UME {
|
||||
|
||||
struct S {
|
||||
template <typename T>
|
||||
void mem();
|
||||
};
|
||||
|
||||
template <typename U>
|
||||
void test() {
|
||||
S s;
|
||||
// CHECK: s.mem<U>();
|
||||
s.mem<U>();
|
||||
// CHECK: s.template mem<U>();
|
||||
s.template mem<U>();
|
||||
}
|
||||
|
||||
} // namespace UME
|
||||
|
||||
|
||||
// DependentScopeDeclRefExpr.
|
||||
namespace DSDRE {
|
||||
|
||||
template <typename T>
|
||||
struct S;
|
||||
|
||||
template <typename T>
|
||||
void test() {
|
||||
// CHECK: S<T>::foo;
|
||||
S<T>::foo;
|
||||
// CHECK: S<T>::template foo;
|
||||
S<T>::template foo;
|
||||
// CHECK: S<T>::template foo<>;
|
||||
S<T>::template foo<>;
|
||||
// CHECK: S<T>::template foo<T>;
|
||||
S<T>::template foo<T>;
|
||||
}
|
||||
|
||||
} // namespace DSDRE
|
||||
|
||||
|
||||
// DependentScopeMemberExpr.
|
||||
namespace DSME {
|
||||
|
||||
template <typename T>
|
||||
struct S;
|
||||
|
||||
template <typename T>
|
||||
void test() {
|
||||
S<T> s;
|
||||
// CHECK: s.foo;
|
||||
s.foo;
|
||||
// CHECK: s.template foo;
|
||||
s.template foo;
|
||||
// CHECK: s.template foo<>;
|
||||
s.template foo<>;
|
||||
// CHECK: s.template foo<T>;
|
||||
s.template foo<T>;
|
||||
}
|
||||
|
||||
} // namespace DSME
|
||||
|
|
Загрузка…
Ссылка в новой задаче