[PATCH] D147744: [clang][Sema] Add MultiLevelTemplateArgumentList::dump()
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rGf799901c06c0: [Clang][Sema] Add MultiLevelTemplateArgumentList::dump (authored by alexander-shaposhnikov). Changed prior to commit: https://reviews.llvm.org/D147744?vs=511551=511775#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D147744/new/ https://reviews.llvm.org/D147744 Files: clang/include/clang/Sema/Template.h Index: clang/include/clang/Sema/Template.h === --- clang/include/clang/Sema/Template.h +++ clang/include/clang/Sema/Template.h @@ -261,6 +261,23 @@ } ArgListsIterator end() { return TemplateArgumentLists.end(); } ConstArgListsIterator end() const { return TemplateArgumentLists.end(); } + +LLVM_DUMP_METHOD void dump() const { + LangOptions LO; + LO.CPlusPlus = true; + LO.Bool = true; + PrintingPolicy PP(LO); + llvm::errs() << "NumRetainedOuterLevels: " << NumRetainedOuterLevels + << "\n"; + for (unsigned Depth = NumRetainedOuterLevels; Depth < getNumLevels(); + ++Depth) { +llvm::errs() << Depth << ": "; +printTemplateArgumentList( +llvm::errs(), +TemplateArgumentLists[getNumLevels() - Depth - 1].Args, PP); +llvm::errs() << "\n"; + } +} }; /// The context in which partial ordering of function templates occurs. Index: clang/include/clang/Sema/Template.h === --- clang/include/clang/Sema/Template.h +++ clang/include/clang/Sema/Template.h @@ -261,6 +261,23 @@ } ArgListsIterator end() { return TemplateArgumentLists.end(); } ConstArgListsIterator end() const { return TemplateArgumentLists.end(); } + +LLVM_DUMP_METHOD void dump() const { + LangOptions LO; + LO.CPlusPlus = true; + LO.Bool = true; + PrintingPolicy PP(LO); + llvm::errs() << "NumRetainedOuterLevels: " << NumRetainedOuterLevels + << "\n"; + for (unsigned Depth = NumRetainedOuterLevels; Depth < getNumLevels(); + ++Depth) { +llvm::errs() << Depth << ": "; +printTemplateArgumentList( +llvm::errs(), +TemplateArgumentLists[getNumLevels() - Depth - 1].Args, PP); +llvm::errs() << "\n"; + } +} }; /// The context in which partial ordering of function templates occurs. ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D147744: [clang][Sema] Add MultiLevelTemplateArgumentList::dump()
erichkeane accepted this revision. erichkeane added a comment. This revision is now accepted and ready to land. I'm happy with this, I think it is useful here. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D147744/new/ https://reviews.llvm.org/D147744 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D147744: [clang][Sema] Add MultiLevelTemplateArgumentList::dump()
alexander-shaposhnikov added a comment. for template struct X { template struct Y { int f() requires(I2 == 1) { return 1; } int f() requires(I2 == 2) { return 1; } }; }; this would print the following: NumRetainedOuterLevels: 0 0: 1: Comment at: clang/include/clang/Sema/Template.h:271 + llvm::errs() << "NumRetainedOuterLevels: " << NumRetainedOuterLevels << "\n"; + for (unsigned Depth = NumRetainedOuterLevels; Depth < getNumLevels(); ++Depth) { +llvm::errs() << Depth << ": "; https://github.com/llvm/llvm-project/blob/2279f77d2855d9caa0ece466462d34bcfdf4fb3d/clang/include/clang/Sema/Template.h#L155 (just in case) Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D147744/new/ https://reviews.llvm.org/D147744 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D147744: [clang][Sema] Add MultiLevelTemplateArgumentList::dump()
alexander-shaposhnikov updated this revision to Diff 511551. alexander-shaposhnikov added a comment. Address comments Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D147744/new/ https://reviews.llvm.org/D147744 Files: clang/include/clang/Sema/Template.h Index: clang/include/clang/Sema/Template.h === --- clang/include/clang/Sema/Template.h +++ clang/include/clang/Sema/Template.h @@ -261,6 +261,19 @@ } ArgListsIterator end() { return TemplateArgumentLists.end(); } ConstArgListsIterator end() const { return TemplateArgumentLists.end(); } + +LLVM_DUMP_METHOD void dump() const { + LangOptions LO; + LO.CPlusPlus = true; + LO.Bool = true; + PrintingPolicy PP(LO); + llvm::errs() << "NumRetainedOuterLevels: " << NumRetainedOuterLevels << "\n"; + for (unsigned Depth = NumRetainedOuterLevels; Depth < getNumLevels(); ++Depth) { +llvm::errs() << Depth << ": "; +printTemplateArgumentList(llvm::errs(), TemplateArgumentLists[getNumLevels() - Depth - 1].Args, PP); +llvm::errs() << "\n"; + } +} }; /// The context in which partial ordering of function templates occurs. Index: clang/include/clang/Sema/Template.h === --- clang/include/clang/Sema/Template.h +++ clang/include/clang/Sema/Template.h @@ -261,6 +261,19 @@ } ArgListsIterator end() { return TemplateArgumentLists.end(); } ConstArgListsIterator end() const { return TemplateArgumentLists.end(); } + +LLVM_DUMP_METHOD void dump() const { + LangOptions LO; + LO.CPlusPlus = true; + LO.Bool = true; + PrintingPolicy PP(LO); + llvm::errs() << "NumRetainedOuterLevels: " << NumRetainedOuterLevels << "\n"; + for (unsigned Depth = NumRetainedOuterLevels; Depth < getNumLevels(); ++Depth) { +llvm::errs() << Depth << ": "; +printTemplateArgumentList(llvm::errs(), TemplateArgumentLists[getNumLevels() - Depth - 1].Args, PP); +llvm::errs() << "\n"; + } +} }; /// The context in which partial ordering of function templates occurs. ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D147744: [clang][Sema] Add MultiLevelTemplateArgumentList::dump()
rsmith added inline comments. Comment at: clang/include/clang/Sema/Template.h:265 + +LLVM_DUMP_METHOD void dump() const { + LangOptions LO; I think it would be useful to also print out the number of retained outer levels. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D147744/new/ https://reviews.llvm.org/D147744 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D147744: [clang][Sema] Add MultiLevelTemplateArgumentList::dump()
erichkeane added a comment. Also, this prints backwards: it'll print 'inner to outer', but I suspect most people will expect 'outer to inner'. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D147744/new/ https://reviews.llvm.org/D147744 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D147744: [clang][Sema] Add MultiLevelTemplateArgumentList::dump()
erichkeane added a comment. I like the idea of this, this is really useful. Can you show what the output looks like? It might be valuable to print the 'depth' before each list as well. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D147744/new/ https://reviews.llvm.org/D147744 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D147744: [clang][Sema] Add MultiLevelTemplateArgumentList::dump()
alexander-shaposhnikov created this revision. alexander-shaposhnikov added reviewers: erichkeane, rsmith. alexander-shaposhnikov created this object with visibility "All Users". Herald added a project: All. alexander-shaposhnikov requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Add MultiLevelTemplateArgumentList::dump() (similarly to TemplateArgument::dump). NFC. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D147744 Files: clang/include/clang/Sema/Template.h Index: clang/include/clang/Sema/Template.h === --- clang/include/clang/Sema/Template.h +++ clang/include/clang/Sema/Template.h @@ -261,6 +261,17 @@ } ArgListsIterator end() { return TemplateArgumentLists.end(); } ConstArgListsIterator end() const { return TemplateArgumentLists.end(); } + +LLVM_DUMP_METHOD void dump() const { + LangOptions LO; + LO.CPlusPlus = true; + LO.Bool = true; + PrintingPolicy PP(LO); + for (const ArgumentListLevel : TemplateArgumentLists) { +printTemplateArgumentList(llvm::errs(), ArgListLevel.Args, PP); +llvm::errs() << "\n"; + } +} }; /// The context in which partial ordering of function templates occurs. Index: clang/include/clang/Sema/Template.h === --- clang/include/clang/Sema/Template.h +++ clang/include/clang/Sema/Template.h @@ -261,6 +261,17 @@ } ArgListsIterator end() { return TemplateArgumentLists.end(); } ConstArgListsIterator end() const { return TemplateArgumentLists.end(); } + +LLVM_DUMP_METHOD void dump() const { + LangOptions LO; + LO.CPlusPlus = true; + LO.Bool = true; + PrintingPolicy PP(LO); + for (const ArgumentListLevel : TemplateArgumentLists) { +printTemplateArgumentList(llvm::errs(), ArgListLevel.Args, PP); +llvm::errs() << "\n"; + } +} }; /// The context in which partial ordering of function templates occurs. ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits