[PATCH] D147744: [clang][Sema] Add MultiLevelTemplateArgumentList::dump()

2023-04-07 Thread Alexander Shaposhnikov via Phabricator via cfe-commits
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()

2023-04-06 Thread Erich Keane via Phabricator via cfe-commits
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()

2023-04-06 Thread Alexander Shaposhnikov via Phabricator via cfe-commits
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()

2023-04-06 Thread Alexander Shaposhnikov via Phabricator via cfe-commits
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()

2023-04-06 Thread Richard Smith - zygoloid via Phabricator via cfe-commits
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()

2023-04-06 Thread Erich Keane via Phabricator via cfe-commits
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()

2023-04-06 Thread Erich Keane via Phabricator via cfe-commits
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()

2023-04-06 Thread Alexander Shaposhnikov via Phabricator via cfe-commits
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