diff options
| -rw-r--r-- | clang/test/SemaTemplate/default-expr-arguments-3.cpp | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/clang/test/SemaTemplate/default-expr-arguments-3.cpp b/clang/test/SemaTemplate/default-expr-arguments-3.cpp index 3fd6bcd1bde..9dc3b134300 100644 --- a/clang/test/SemaTemplate/default-expr-arguments-3.cpp +++ b/clang/test/SemaTemplate/default-expr-arguments-3.cpp @@ -1,10 +1,12 @@ -// FIXME: Remove the next line after a bit; this test used to -// write a .ll file and that confuses the bots. The next line -// cleans that up. -// RUN: rm -f %S/default-expr-arguments-3.ll -// RUN: %clang_cc1 -std=c++14 -verify %s +// RUN: %clang_cc1 -std=c++14 -verify -ast-dump %s | FileCheck %s // expected-no-diagnostics +// CHECK: FunctionDecl {{.*}} used func 'void (void)' +// CHECK-NEXT: TemplateArgument type 'int' +// CHECK: LambdaExpr {{.*}} 'class (lambda at +// CHECK: ParmVarDecl {{.*}} used f 'enum foo' cinit +// CHECK-NEXT: DeclRefExpr {{.*}} 'enum foo' EnumConstant {{.*}} 'a' 'enum foo' + namespace PR28795 { template<typename T> void func() { @@ -18,6 +20,12 @@ namespace PR28795 { } } +// CHECK: ClassTemplateSpecializationDecl {{.*}} struct class2 definition +// CHECK-NEXT: TemplateArgument type 'int' +// CHECK: LambdaExpr {{.*}} 'class (lambda at +// CHECK: ParmVarDecl {{.*}} used f 'enum foo' cinit +// CHECK-NEXT: DeclRefExpr {{.*}} 'enum foo' EnumConstant {{.*}} 'a' 'enum foo' + // Template struct case: template <class T> struct class2 { void bar() { @@ -28,6 +36,14 @@ template <class T> struct class2 { template struct class2<int>; +// CHECK: FunctionTemplateDecl {{.*}} f1 +// CHECK-NEXT: TemplateTypeParmDecl {{.*}} typename T +// CHECK-NEXT: FunctionDecl {{.*}} f1 'void (void)' +// CHECK: FunctionDecl {{.*}} f1 'void (void)' +// CHECK-NEXT: TemplateArgument type 'int' +// CHECK: ParmVarDecl {{.*}} n 'enum foo' cinit +// CHECK-NEXT: DeclRefExpr {{.*}} 'enum foo' EnumConstant {{.*}} 'a' 'enum foo' + template<typename T> void f1() { enum class foo { a, b }; |

