| // RUN: %clang -emit-llvm -g -S %s -o - | FileCheck %s |
| |
| //CHECK: TC<int> |
| //CHECK: DW_TAG_template_type_parameter |
| |
| template<typename T> |
| class TC { |
| public: |
| TC(const TC &) {} |
| TC() {} |
| }; |
| |
| TC<int> tci; |
| |
| //CHECK: TU<2> |
| //CHECK: DW_TAG_template_value_parameter |
| template<unsigned > |
| class TU { |
| int b; |
| }; |
| |
| TU<2> u2; |
| |
| // PR9600 |
| template<typename T> class vector {}; |
| class Foo; |
| typedef vector<Foo*> FooVector[3]; |
| struct Test { |
| virtual void foo(FooVector *); |
| }; |
| static Test test; |
| |
| // PR9608 |
| template <int i> struct TheTemplate { |
| struct Empty2 {}; |
| typedef const Empty2 DependentType[i]; |
| TheTemplate() {} |
| }; |
| |
| class TheTemplateTest : public TheTemplate<42> { |
| TheTemplateTest(); |
| void method(const TheTemplate<42>::DependentType *) {} |
| }; |
| |
| TheTemplateTest::TheTemplateTest() : TheTemplate<42>() {} |
| |