Add dump tests for inherited default template parameters
authorStephen Kelly <steveire@gmail.com>
Wed, 5 Dec 2018 20:21:13 +0000 (20:21 +0000)
committerStephen Kelly <steveire@gmail.com>
Wed, 5 Dec 2018 20:21:13 +0000 (20:21 +0000)
llvm-svn: 348408

clang/test/AST/ast-dump-decl.cpp

index adab912..7f3859c 100644 (file)
@@ -263,6 +263,15 @@ namespace testClassTemplateDecl {
   template<typename T1> class TestClassTemplatePartial<T1, A> {\r
     int j;\r
   };\r
+\r
+  template<typename T = int> struct TestTemplateDefaultType;\r
+  template<typename T> struct TestTemplateDefaultType { };\r
+\r
+  template<int I = 42> struct TestTemplateDefaultNonType;\r
+  template<int I> struct TestTemplateDefaultNonType { };\r
+\r
+  template<template<typename> class TT = TestClassTemplate> struct TestTemplateTemplateDefaultType;\r
+  template<template<typename> class TT> struct TestTemplateTemplateDefaultType { };\r
 }\r
 // CHECK:      ClassTemplateDecl{{.*}} TestClassTemplate\r
 // CHECK-NEXT:   TemplateTypeParmDecl\r
@@ -316,6 +325,24 @@ namespace testClassTemplateDecl {
 // CHECK-NEXT:   CXXRecordDecl{{.*}} class TestClassTemplatePartial\r
 // CHECK-NEXT:   FieldDecl{{.*}} j\r
 \r
+// CHECK:      ClassTemplateDecl 0x{{[^ ]*}} prev 0x{{[^ ]*}} {{.*}} TestTemplateDefaultType\r
+// CHECK-NEXT:   TemplateTypeParmDecl\r
+// CHECK-NEXT:     TemplateArgument type 'int'\r
+// CHECK-NEXT:     inherited from TemplateTypeParm 0x{{[^ ]*}} 'T'\r
+\r
+// CHECK:      ClassTemplateDecl 0x{{[^ ]*}} prev 0x{{[^ ]*}} {{.*}} TestTemplateDefaultNonType\r
+// CHECK-NEXT:   NonTypeTemplateParmDecl\r
+// CHECK-NEXT:     TemplateArgument expr\r
+// CHECK-NEXT:       ConstantExpr\r
+// CHECK-NEXT:         IntegerLiteral\r
+// CHECK-NEXT:     inherited from NonTypeTemplateParm 0x{{[^ ]*}} 'I' 'int'\r
+\r
+// CHECK:      ClassTemplateDecl 0x{{[^ ]*}} prev 0x{{[^ ]*}} {{.*}} TestTemplateTemplateDefaultType\r
+// CHECK-NEXT:   TemplateTemplateParmDecl\r
+// CHECK-NEXT:     TemplateTypeParmDecl\r
+// CHECK-NEXT:     TemplateArgument\r
+// CHECK-NEXT:     inherited from TemplateTemplateParm 0x{{[^ ]*}} 'TT'\r
+\r
 // PR15220 dump instantiation only once\r
 namespace testCanonicalTemplate {\r
   class A {};\r