[clang] [AST] Dump explicit template arguments for UnreslovedLookupExpr. (PR #90466)
https://github.com/hokein edited https://github.com/llvm/llvm-project/pull/90466 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [AST] Dump explicit template arguments for UnreslovedLookupExpr. (PR #90466)
https://github.com/hokein closed https://github.com/llvm/llvm-project/pull/90466 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [AST] Dump explicit template arguments for UnreslovedLookupExpr. (PR #90466)
@@ -107,3 +107,17 @@ auto FooFunc(C auto V) -> C decltype(auto) { } } + +namespace dump_unreslove_lookup_arguments { hokein wrote: ah, good catch. I moved to a generic place, ast-dump-templates.cpp. https://github.com/llvm/llvm-project/pull/90466 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [AST] Dump explicit template arguments for UnreslovedLookupExpr. (PR #90466)
https://github.com/hokein updated https://github.com/llvm/llvm-project/pull/90466 >From b584fab7f2283535d4a04bc55efec6ff508870de Mon Sep 17 00:00:00 2001 From: Haojian Wu Date: Mon, 29 Apr 2024 15:04:01 +0200 Subject: [PATCH 1/2] [AST] Dump explicit template arguments for UnreslovedLookupExpr. Having them dump is useful for ad-hoc debugging. --- clang/include/clang/AST/ASTNodeTraverser.h| 6 ++ clang/test/AST/ast-dump-concepts.cpp | 14 +++ ...dump-template-json-win32-mangler-crash.cpp | 88 +++ 3 files changed, 108 insertions(+) diff --git a/clang/include/clang/AST/ASTNodeTraverser.h b/clang/include/clang/AST/ASTNodeTraverser.h index 216dc9eef08b62..cf7493ac37852b 100644 --- a/clang/include/clang/AST/ASTNodeTraverser.h +++ b/clang/include/clang/AST/ASTNodeTraverser.h @@ -844,6 +844,12 @@ class ASTNodeTraverser } } + void VisitUnresolvedLookupExpr(const UnresolvedLookupExpr* E) { +if (E->hasExplicitTemplateArgs()) + for (auto Arg : E->template_arguments()) +Visit(Arg.getArgument()); + } + void VisitRequiresExpr(const RequiresExpr *E) { for (auto *D : E->getLocalParameters()) Visit(D); diff --git a/clang/test/AST/ast-dump-concepts.cpp b/clang/test/AST/ast-dump-concepts.cpp index 5bb174e3548ed2..01064b76f6d462 100644 --- a/clang/test/AST/ast-dump-concepts.cpp +++ b/clang/test/AST/ast-dump-concepts.cpp @@ -107,3 +107,17 @@ auto FooFunc(C auto V) -> C decltype(auto) { } } + +namespace dump_unreslove_lookup_arguments { +template +constexpr bool C = true; + +template +requires(C) +// CHECK: ParenExpr {{.*}} '' lvalue +// CHECK-NEXT: `-UnresolvedLookupExpr {{.*}} '' lvalue (no ADL) = 'C' +// CHECK-NEXT: `-TemplateArgument type 'T' +// CHECK-NEXT: `-TemplateTypeParmType {{.*}} 'T' +// CHECK-NEXT: `-TemplateTypeParm {{.*}} 'T' +struct Foo {}; +} diff --git a/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp b/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp index cf740516db6f4b..5ac55d269dce48 100644 --- a/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp +++ b/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp @@ -1846,6 +1846,42 @@ int main() // CHECK-NEXT: "kind": "VarTemplateDecl", // CHECK-NEXT: "name": "is_const_v" // CHECK-NEXT: } +// CHECK-NEXT:], +// CHECK-NEXT:"inner": [ +// CHECK-NEXT: { +// CHECK-NEXT: "kind": "TemplateArgument", +// CHECK-NEXT: "type": { +// CHECK-NEXT: "qualType": "const _Ty" +// CHECK-NEXT: }, +// CHECK-NEXT: "inner": [ +// CHECK-NEXT: { +// CHECK-NEXT:"id": "0x{{.*}}", +// CHECK-NEXT:"kind": "QualType", +// CHECK-NEXT:"type": { +// CHECK-NEXT: "qualType": "const _Ty" +// CHECK-NEXT:}, +// CHECK-NEXT:"qualifiers": "const", +// CHECK-NEXT:"inner": [ +// CHECK-NEXT: { +// CHECK-NEXT: "id": "0x{{.*}}", +// CHECK-NEXT: "kind": "TemplateTypeParmType", +// CHECK-NEXT: "type": { +// CHECK-NEXT: "qualType": "_Ty" +// CHECK-NEXT: }, +// CHECK-NEXT: "isDependent": true, +// CHECK-NEXT: "isInstantiationDependent": true, +// CHECK-NEXT: "depth": 0, +// CHECK-NEXT: "index": 0, +// CHECK-NEXT: "decl": { +// CHECK-NEXT: "id": "0x{{.*}}", +// CHECK-NEXT: "kind": "TemplateTypeParmDecl", +// CHECK-NEXT: "name": "_Ty" +// CHECK-NEXT: } +// CHECK-NEXT: } +// CHECK-NEXT:] +// CHECK-NEXT: } +// CHECK-NEXT: ] +// CHECK-NEXT: } // CHECK-NEXT:] // CHECK-NEXT: } // CHECK-NEXT: ] @@ -1900,6 +1936,32 @@ int main() // CHECK-NEXT: "kind": "VarTemplateDecl", // CHECK-NEXT: "name": "is_reference_v" // CHECK-NEXT: } +// CHECK-NEXT:], +// CHECK-NEXT:"inner": [ +// CHECK-NEXT: { +// CHECK-NEXT: "kind": "TemplateArgument", +// CHECK-NEXT: "type": { +// CHECK-NEXT: "qualType": "_Ty" +// CHECK-NEXT: }, +// CHECK-NEXT: "inner": [ +// CHECK-NEXT: { +// CHECK-NEXT:"id": "0x{{.*}}", +// CHECK-NEXT:"kind": "TemplateTypeParmType", +// CHECK-NEXT:"type": { +// CHECK-NEXT: "qualType": "_Ty" +// CHECK-NEXT:}, +// CHECK-NEXT:"isDependent": true, +// CHECK-NEXT:"isInstantiationDependent": true, +// CHECK-NEXT:"depth": 0, +// CHECK-NEXT:"index": 0, +// CHECK-NEXT:
[clang] [AST] Dump explicit template arguments for UnreslovedLookupExpr. (PR #90466)
https://github.com/erichkeane approved this pull request. https://github.com/llvm/llvm-project/pull/90466 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [AST] Dump explicit template arguments for UnreslovedLookupExpr. (PR #90466)
https://github.com/hokein updated https://github.com/llvm/llvm-project/pull/90466 >From b584fab7f2283535d4a04bc55efec6ff508870de Mon Sep 17 00:00:00 2001 From: Haojian Wu Date: Mon, 29 Apr 2024 15:04:01 +0200 Subject: [PATCH 1/2] [AST] Dump explicit template arguments for UnreslovedLookupExpr. Having them dump is useful for ad-hoc debugging. --- clang/include/clang/AST/ASTNodeTraverser.h| 6 ++ clang/test/AST/ast-dump-concepts.cpp | 14 +++ ...dump-template-json-win32-mangler-crash.cpp | 88 +++ 3 files changed, 108 insertions(+) diff --git a/clang/include/clang/AST/ASTNodeTraverser.h b/clang/include/clang/AST/ASTNodeTraverser.h index 216dc9eef08b62..cf7493ac37852b 100644 --- a/clang/include/clang/AST/ASTNodeTraverser.h +++ b/clang/include/clang/AST/ASTNodeTraverser.h @@ -844,6 +844,12 @@ class ASTNodeTraverser } } + void VisitUnresolvedLookupExpr(const UnresolvedLookupExpr* E) { +if (E->hasExplicitTemplateArgs()) + for (auto Arg : E->template_arguments()) +Visit(Arg.getArgument()); + } + void VisitRequiresExpr(const RequiresExpr *E) { for (auto *D : E->getLocalParameters()) Visit(D); diff --git a/clang/test/AST/ast-dump-concepts.cpp b/clang/test/AST/ast-dump-concepts.cpp index 5bb174e3548ed2..01064b76f6d462 100644 --- a/clang/test/AST/ast-dump-concepts.cpp +++ b/clang/test/AST/ast-dump-concepts.cpp @@ -107,3 +107,17 @@ auto FooFunc(C auto V) -> C decltype(auto) { } } + +namespace dump_unreslove_lookup_arguments { +template +constexpr bool C = true; + +template +requires(C) +// CHECK: ParenExpr {{.*}} '' lvalue +// CHECK-NEXT: `-UnresolvedLookupExpr {{.*}} '' lvalue (no ADL) = 'C' +// CHECK-NEXT: `-TemplateArgument type 'T' +// CHECK-NEXT: `-TemplateTypeParmType {{.*}} 'T' +// CHECK-NEXT: `-TemplateTypeParm {{.*}} 'T' +struct Foo {}; +} diff --git a/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp b/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp index cf740516db6f4b..5ac55d269dce48 100644 --- a/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp +++ b/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp @@ -1846,6 +1846,42 @@ int main() // CHECK-NEXT: "kind": "VarTemplateDecl", // CHECK-NEXT: "name": "is_const_v" // CHECK-NEXT: } +// CHECK-NEXT:], +// CHECK-NEXT:"inner": [ +// CHECK-NEXT: { +// CHECK-NEXT: "kind": "TemplateArgument", +// CHECK-NEXT: "type": { +// CHECK-NEXT: "qualType": "const _Ty" +// CHECK-NEXT: }, +// CHECK-NEXT: "inner": [ +// CHECK-NEXT: { +// CHECK-NEXT:"id": "0x{{.*}}", +// CHECK-NEXT:"kind": "QualType", +// CHECK-NEXT:"type": { +// CHECK-NEXT: "qualType": "const _Ty" +// CHECK-NEXT:}, +// CHECK-NEXT:"qualifiers": "const", +// CHECK-NEXT:"inner": [ +// CHECK-NEXT: { +// CHECK-NEXT: "id": "0x{{.*}}", +// CHECK-NEXT: "kind": "TemplateTypeParmType", +// CHECK-NEXT: "type": { +// CHECK-NEXT: "qualType": "_Ty" +// CHECK-NEXT: }, +// CHECK-NEXT: "isDependent": true, +// CHECK-NEXT: "isInstantiationDependent": true, +// CHECK-NEXT: "depth": 0, +// CHECK-NEXT: "index": 0, +// CHECK-NEXT: "decl": { +// CHECK-NEXT: "id": "0x{{.*}}", +// CHECK-NEXT: "kind": "TemplateTypeParmDecl", +// CHECK-NEXT: "name": "_Ty" +// CHECK-NEXT: } +// CHECK-NEXT: } +// CHECK-NEXT:] +// CHECK-NEXT: } +// CHECK-NEXT: ] +// CHECK-NEXT: } // CHECK-NEXT:] // CHECK-NEXT: } // CHECK-NEXT: ] @@ -1900,6 +1936,32 @@ int main() // CHECK-NEXT: "kind": "VarTemplateDecl", // CHECK-NEXT: "name": "is_reference_v" // CHECK-NEXT: } +// CHECK-NEXT:], +// CHECK-NEXT:"inner": [ +// CHECK-NEXT: { +// CHECK-NEXT: "kind": "TemplateArgument", +// CHECK-NEXT: "type": { +// CHECK-NEXT: "qualType": "_Ty" +// CHECK-NEXT: }, +// CHECK-NEXT: "inner": [ +// CHECK-NEXT: { +// CHECK-NEXT:"id": "0x{{.*}}", +// CHECK-NEXT:"kind": "TemplateTypeParmType", +// CHECK-NEXT:"type": { +// CHECK-NEXT: "qualType": "_Ty" +// CHECK-NEXT:}, +// CHECK-NEXT:"isDependent": true, +// CHECK-NEXT:"isInstantiationDependent": true, +// CHECK-NEXT:"depth": 0, +// CHECK-NEXT:"index": 0, +// CHECK-NEXT:
[clang] [AST] Dump explicit template arguments for UnreslovedLookupExpr. (PR #90466)
@@ -107,3 +107,17 @@ auto FooFunc(C auto V) -> C decltype(auto) { } } + +namespace dump_unreslove_lookup_arguments { erichkeane wrote: This is the wrong file for this, it is meant for `concepts`, which this isn't really related to. https://github.com/llvm/llvm-project/pull/90466 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [AST] Dump explicit template arguments for UnreslovedLookupExpr. (PR #90466)
github-actions[bot] wrote: :warning: C/C++ code formatter, clang-format found issues in your code. :warning: You can test this locally with the following command: ``bash git-clang-format --diff 83bc7b57714dc2f6b33c188f2b95a0025468ba51 b584fab7f2283535d4a04bc55efec6ff508870de -- clang/include/clang/AST/ASTNodeTraverser.h clang/test/AST/ast-dump-concepts.cpp clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp `` View the diff from clang-format here. ``diff diff --git a/clang/include/clang/AST/ASTNodeTraverser.h b/clang/include/clang/AST/ASTNodeTraverser.h index cf7493ac37..bf7c204e4a 100644 --- a/clang/include/clang/AST/ASTNodeTraverser.h +++ b/clang/include/clang/AST/ASTNodeTraverser.h @@ -844,7 +844,7 @@ public: } } - void VisitUnresolvedLookupExpr(const UnresolvedLookupExpr* E) { + void VisitUnresolvedLookupExpr(const UnresolvedLookupExpr *E) { if (E->hasExplicitTemplateArgs()) for (auto Arg : E->template_arguments()) Visit(Arg.getArgument()); `` https://github.com/llvm/llvm-project/pull/90466 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [AST] Dump explicit template arguments for UnreslovedLookupExpr. (PR #90466)
llvmbot wrote: @llvm/pr-subscribers-clang Author: Haojian Wu (hokein) Changes Having them dump is useful for ad-hoc debugging (context: https://github.com/llvm/llvm-project/issues/90046) --- Full diff: https://github.com/llvm/llvm-project/pull/90466.diff 3 Files Affected: - (modified) clang/include/clang/AST/ASTNodeTraverser.h (+6) - (modified) clang/test/AST/ast-dump-concepts.cpp (+14) - (modified) clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp (+88) ``diff diff --git a/clang/include/clang/AST/ASTNodeTraverser.h b/clang/include/clang/AST/ASTNodeTraverser.h index 216dc9eef08b62..cf7493ac37852b 100644 --- a/clang/include/clang/AST/ASTNodeTraverser.h +++ b/clang/include/clang/AST/ASTNodeTraverser.h @@ -844,6 +844,12 @@ class ASTNodeTraverser } } + void VisitUnresolvedLookupExpr(const UnresolvedLookupExpr* E) { +if (E->hasExplicitTemplateArgs()) + for (auto Arg : E->template_arguments()) +Visit(Arg.getArgument()); + } + void VisitRequiresExpr(const RequiresExpr *E) { for (auto *D : E->getLocalParameters()) Visit(D); diff --git a/clang/test/AST/ast-dump-concepts.cpp b/clang/test/AST/ast-dump-concepts.cpp index 5bb174e3548ed2..01064b76f6d462 100644 --- a/clang/test/AST/ast-dump-concepts.cpp +++ b/clang/test/AST/ast-dump-concepts.cpp @@ -107,3 +107,17 @@ auto FooFunc(C auto V) -> C decltype(auto) { } } + +namespace dump_unreslove_lookup_arguments { +template +constexpr bool C = true; + +template +requires(C) +// CHECK: ParenExpr {{.*}} '' lvalue +// CHECK-NEXT: `-UnresolvedLookupExpr {{.*}} '' lvalue (no ADL) = 'C' +// CHECK-NEXT: `-TemplateArgument type 'T' +// CHECK-NEXT: `-TemplateTypeParmType {{.*}} 'T' +// CHECK-NEXT: `-TemplateTypeParm {{.*}} 'T' +struct Foo {}; +} diff --git a/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp b/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp index cf740516db6f4b..5ac55d269dce48 100644 --- a/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp +++ b/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp @@ -1846,6 +1846,42 @@ int main() // CHECK-NEXT: "kind": "VarTemplateDecl", // CHECK-NEXT: "name": "is_const_v" // CHECK-NEXT: } +// CHECK-NEXT:], +// CHECK-NEXT:"inner": [ +// CHECK-NEXT: { +// CHECK-NEXT: "kind": "TemplateArgument", +// CHECK-NEXT: "type": { +// CHECK-NEXT: "qualType": "const _Ty" +// CHECK-NEXT: }, +// CHECK-NEXT: "inner": [ +// CHECK-NEXT: { +// CHECK-NEXT:"id": "0x{{.*}}", +// CHECK-NEXT:"kind": "QualType", +// CHECK-NEXT:"type": { +// CHECK-NEXT: "qualType": "const _Ty" +// CHECK-NEXT:}, +// CHECK-NEXT:"qualifiers": "const", +// CHECK-NEXT:"inner": [ +// CHECK-NEXT: { +// CHECK-NEXT: "id": "0x{{.*}}", +// CHECK-NEXT: "kind": "TemplateTypeParmType", +// CHECK-NEXT: "type": { +// CHECK-NEXT: "qualType": "_Ty" +// CHECK-NEXT: }, +// CHECK-NEXT: "isDependent": true, +// CHECK-NEXT: "isInstantiationDependent": true, +// CHECK-NEXT: "depth": 0, +// CHECK-NEXT: "index": 0, +// CHECK-NEXT: "decl": { +// CHECK-NEXT: "id": "0x{{.*}}", +// CHECK-NEXT: "kind": "TemplateTypeParmDecl", +// CHECK-NEXT: "name": "_Ty" +// CHECK-NEXT: } +// CHECK-NEXT: } +// CHECK-NEXT:] +// CHECK-NEXT: } +// CHECK-NEXT: ] +// CHECK-NEXT: } // CHECK-NEXT:] // CHECK-NEXT: } // CHECK-NEXT: ] @@ -1900,6 +1936,32 @@ int main() // CHECK-NEXT: "kind": "VarTemplateDecl", // CHECK-NEXT: "name": "is_reference_v" // CHECK-NEXT: } +// CHECK-NEXT:], +// CHECK-NEXT:"inner": [ +// CHECK-NEXT: { +// CHECK-NEXT: "kind": "TemplateArgument", +// CHECK-NEXT: "type": { +// CHECK-NEXT: "qualType": "_Ty" +// CHECK-NEXT: }, +// CHECK-NEXT: "inner": [ +// CHECK-NEXT: { +// CHECK-NEXT:"id": "0x{{.*}}", +// CHECK-NEXT:"kind": "TemplateTypeParmType", +// CHECK-NEXT:"type": { +// CHECK-NEXT: "qualType": "_Ty" +// CHECK-NEXT:}, +// CHECK-NEXT:"isDependent": true, +// CHECK-NEXT:"isInstantiationDependent": true, +// CHECK-NEXT:"depth": 0, +// CHECK-NEXT:"index": 0, +// CHECK-NEXT:"decl": { +// CHECK-NEXT: "id": "0x{
[clang] [AST] Dump explicit template arguments for UnreslovedLookupExpr. (PR #90466)
https://github.com/hokein created https://github.com/llvm/llvm-project/pull/90466 Having them dump is useful for ad-hoc debugging (context: https://github.com/llvm/llvm-project/issues/90046) >From b584fab7f2283535d4a04bc55efec6ff508870de Mon Sep 17 00:00:00 2001 From: Haojian Wu Date: Mon, 29 Apr 2024 15:04:01 +0200 Subject: [PATCH] [AST] Dump explicit template arguments for UnreslovedLookupExpr. Having them dump is useful for ad-hoc debugging. --- clang/include/clang/AST/ASTNodeTraverser.h| 6 ++ clang/test/AST/ast-dump-concepts.cpp | 14 +++ ...dump-template-json-win32-mangler-crash.cpp | 88 +++ 3 files changed, 108 insertions(+) diff --git a/clang/include/clang/AST/ASTNodeTraverser.h b/clang/include/clang/AST/ASTNodeTraverser.h index 216dc9eef08b62..cf7493ac37852b 100644 --- a/clang/include/clang/AST/ASTNodeTraverser.h +++ b/clang/include/clang/AST/ASTNodeTraverser.h @@ -844,6 +844,12 @@ class ASTNodeTraverser } } + void VisitUnresolvedLookupExpr(const UnresolvedLookupExpr* E) { +if (E->hasExplicitTemplateArgs()) + for (auto Arg : E->template_arguments()) +Visit(Arg.getArgument()); + } + void VisitRequiresExpr(const RequiresExpr *E) { for (auto *D : E->getLocalParameters()) Visit(D); diff --git a/clang/test/AST/ast-dump-concepts.cpp b/clang/test/AST/ast-dump-concepts.cpp index 5bb174e3548ed2..01064b76f6d462 100644 --- a/clang/test/AST/ast-dump-concepts.cpp +++ b/clang/test/AST/ast-dump-concepts.cpp @@ -107,3 +107,17 @@ auto FooFunc(C auto V) -> C decltype(auto) { } } + +namespace dump_unreslove_lookup_arguments { +template +constexpr bool C = true; + +template +requires(C) +// CHECK: ParenExpr {{.*}} '' lvalue +// CHECK-NEXT: `-UnresolvedLookupExpr {{.*}} '' lvalue (no ADL) = 'C' +// CHECK-NEXT: `-TemplateArgument type 'T' +// CHECK-NEXT: `-TemplateTypeParmType {{.*}} 'T' +// CHECK-NEXT: `-TemplateTypeParm {{.*}} 'T' +struct Foo {}; +} diff --git a/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp b/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp index cf740516db6f4b..5ac55d269dce48 100644 --- a/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp +++ b/clang/test/AST/ast-dump-template-json-win32-mangler-crash.cpp @@ -1846,6 +1846,42 @@ int main() // CHECK-NEXT: "kind": "VarTemplateDecl", // CHECK-NEXT: "name": "is_const_v" // CHECK-NEXT: } +// CHECK-NEXT:], +// CHECK-NEXT:"inner": [ +// CHECK-NEXT: { +// CHECK-NEXT: "kind": "TemplateArgument", +// CHECK-NEXT: "type": { +// CHECK-NEXT: "qualType": "const _Ty" +// CHECK-NEXT: }, +// CHECK-NEXT: "inner": [ +// CHECK-NEXT: { +// CHECK-NEXT:"id": "0x{{.*}}", +// CHECK-NEXT:"kind": "QualType", +// CHECK-NEXT:"type": { +// CHECK-NEXT: "qualType": "const _Ty" +// CHECK-NEXT:}, +// CHECK-NEXT:"qualifiers": "const", +// CHECK-NEXT:"inner": [ +// CHECK-NEXT: { +// CHECK-NEXT: "id": "0x{{.*}}", +// CHECK-NEXT: "kind": "TemplateTypeParmType", +// CHECK-NEXT: "type": { +// CHECK-NEXT: "qualType": "_Ty" +// CHECK-NEXT: }, +// CHECK-NEXT: "isDependent": true, +// CHECK-NEXT: "isInstantiationDependent": true, +// CHECK-NEXT: "depth": 0, +// CHECK-NEXT: "index": 0, +// CHECK-NEXT: "decl": { +// CHECK-NEXT: "id": "0x{{.*}}", +// CHECK-NEXT: "kind": "TemplateTypeParmDecl", +// CHECK-NEXT: "name": "_Ty" +// CHECK-NEXT: } +// CHECK-NEXT: } +// CHECK-NEXT:] +// CHECK-NEXT: } +// CHECK-NEXT: ] +// CHECK-NEXT: } // CHECK-NEXT:] // CHECK-NEXT: } // CHECK-NEXT: ] @@ -1900,6 +1936,32 @@ int main() // CHECK-NEXT: "kind": "VarTemplateDecl", // CHECK-NEXT: "name": "is_reference_v" // CHECK-NEXT: } +// CHECK-NEXT:], +// CHECK-NEXT:"inner": [ +// CHECK-NEXT: { +// CHECK-NEXT: "kind": "TemplateArgument", +// CHECK-NEXT: "type": { +// CHECK-NEXT: "qualType": "_Ty" +// CHECK-NEXT: }, +// CHECK-NEXT: "inner": [ +// CHECK-NEXT: { +// CHECK-NEXT:"id": "0x{{.*}}", +// CHECK-NEXT:"kind": "TemplateTypeParmType", +// CHECK-NEXT:"type": { +// CHECK-NEXT: "qualType": "_Ty" +// CHECK-NEXT:}, +// CHECK-NEXT:"isDependent": true, +// CHECK-NEXT:"isInstantiationDependent":