li.zhe.hua added a comment.

In D149677#4319646 <https://reviews.llvm.org/D149677#4319646>, @aaron.ballman 
wrote:

> Will this new printing policy be used in tree?

Not initially, no. (I'm understanding "in tree" as "in the LLVM project".)

Some additional context: I'm working on a refactoring tool to, in part, 
deprecate an alias by replacing it with its definition. That functionality by 
itself could be provided through something like a clang-tidy, so I say 
"initially".



================
Comment at: clang/include/clang/AST/PrettyPrinter.h:143-145
+  /// Ignore qualifiers as specified by elaborated type sugar, instead letting
+  /// the underlying type handle printing the qualifiers.
+  unsigned IgnoreElaboratedQualifiers : 1;
----------------
aaron.ballman wrote:
> The name is somewhat confusing to me, because tag names are also elaborations 
> and those are handled by `SuppressTagKeyword` -- so what is the interaction 
> between those when the user specifies true for `IgnoreElaboratedQualifiers` 
> and false for `SuppressTagKeyword`?
Ah, I hadn't considered tag names. Let me see...

I tried this out with the template specialization test case I added. If I have

```
using Alias = struct a::S<struct b::Foo>;
```

then printing the aliased type of `Alias` with true for 
`IgnoreElaboratedQualifiers` and false for `SuppressTagKeyword` gives 
`"S<struct shared::b::Foo>"`. (I'm guessing that printing the template 
specialization with `SuppressTagKeyword` disabled is weird or unexpected?) So 
it would seem that `SuppressTagKeyword` still functions, as long as the 
desugared type supports it?

Back to the topic of names, it seems like "qualifiers" is not sufficient, as it 
also ignores elaborated tag keywords. Perhaps `IgnoreElaboration`?

---
Note: I initially had the name as `IgnoreElaboratedTypes`, but there was also 
the [[ 
https://github.com/llvm/llvm-project/blob/1b05e74982242da81d257f660302585cee691f3b/clang/lib/AST/TypePrinter.cpp#L1559-L1568
 | tag definition printing logic ]] that I didn't fully understand, so I 
thought just saying "qualifiers" would be more correct.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D149677

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to