dblaikie added a comment.

In D134453#3871458 <https://reviews.llvm.org/D134453#3871458>, @dblaikie wrote:

> In D134453#3871414 <https://reviews.llvm.org/D134453#3871414>, @aaron.ballman 
> wrote:
>
>> In D134453#3871386 <https://reviews.llvm.org/D134453#3871386>, @dblaikie 
>> wrote:
>>
>>>> In terms of next steps, I think we should try to see if there's a "clear" 
>>>> path forward in terms of printing the types vs not printing the types. If 
>>>> we find one, then great, we go that way. But if we don't seem to have a 
>>>> clear path forward (relatively quickly; I don't think we want to drag this 
>>>> discussion on for months trying to find the perfect answer), then I think 
>>>> I'm fine with the patch as-is. It fixes the issue of `t<{}>` (with empty 
>>>> braces specifically) while retaining the status quo in other areas, but 
>>>> still exposes useful functionality through the additional printing policy. 
>>>> Does that sound reasonable?
>>>
>>> If you reckon (1) is better overall anyway - happy enough to defer to your 
>>> opinion there and go with that, skip/omit the printing policy.
>>
>> Okay, thanks for that! I'm still happy to consider alternatives if we can 
>> think of any, FWIW.
>>
>>> I think the policy is like adding off-by-default warnings, and supporting a 
>>> use case (using the string name for reflection when we'd recommend the AST) 
>>> I don't think we want to encourage/support.
>>
>> That's a fair point. So if we find no better approach, drop the policy and 
>> just always print types.
>
> Yeah - I don't think I have any better ideas that are reasonably within reach 
> for a newer contributor nor worth holding up fixing the `t1<{}>` bug for.
>
> Yeah, for type comparisons/fancy template type diffing we could trim things 
> down if we aren't already(we probably aren't), but that doesn't address the 
> cases where the name appears alone and not as part of a comparison. And when 
> there's no particular context, I can't think of any cues we could use to 
> decide which nested names "matter".
>
> (rabbit hole/tangent: Arguably what might be more useful to the user might be 
> a name that's not even usable in C++ - using the member variable names, as 
> well as the type names, though that'd be even more verbose... like 
> `t1<t2{.length=3, .width=7}>` - which, I guess, if you had user defined types 
> for some kind of extra type safety, would get as verbose as 
> `t1<Shape{Length{.length = 3}, Width{.width = 5}}>` though I would expect 
> that would be the minority)

Correction, apparently that is valid syntax, which is nice: 
https://godbolt.org/z/xaYYo3fva


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D134453

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

Reply via email to