[PATCH] D55933: [Sema] Do not print default template parameters.

Arthur O'Dwyer via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 4 10:16:49 PST 2019


Quuxplusone added inline comments.


================
Comment at: lib/AST/TypePrinter.cpp:179
+    // `X<Some::Class>` gets canonicalized to `X<float, int>`. We disable
+    // canonicalization so that `printTag()`` can see the template parameters as
+    // written.
----------------
courbet wrote:
> Quuxplusone wrote:
> > Nit: there's an extra ` on this line.
> > 
> > I think I vaguely understand the purpose of this switch now. It feels ugly, but I have no concrete suggestion for improvement. Do you not need a case here to delay canonicalization of `X<Some::Class>&` also?
> Indeed. Fixed + added tests.
And `void(*)(X<Some::Class>)`?  And possibly `int[X<Some::Class>::value]`, but I think that might be what `Type::DependentSizedArray` is doing in there. And `void (^)(X<Some::Class>)` in Objective-C++.

Surely there should be a list somewhere of all the "compound types" that need to go here. And then this starts feeling a lot like the visitor pattern. I still don't know how it _should_ look, but this switch is feeling ickier and ickier.


Repository:
  rC Clang

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55933/new/

https://reviews.llvm.org/D55933





More information about the cfe-commits mailing list