sethp wrote:

Thanks for the feedback! I've definitely found it helpful trying to puzzle out 
why one of my static_asserts is failing, though it's certainly a far less 
complete solution than the document @tahonermann shared. 

The output from `printPretty` will definitely fall apart for a complex 
structure (especially one with e.g. multiple bases, or lots of similar fields). 
Still, this change seems like an overall improvement to me: it's still quite 
possible to cut a complex struct comparison up into multiple `static_assert`s. 
Right now I feel more or less compelled to cut every comparison down to asserts 
on built-in types, and this output was intended to raise that floor up to "a 
struct with a handful of fields and an `operator==`." 

That said, I'm receiving approximately $0 from Big `printPretty` lobbying 
groups, so I'm happy to walk the structure however we feel 
`ConvertAPValueToString` ought to do the conversion. I do quite like how 
`clangd` does its inline initializer hints, so maybe something like:

```
Expression evaluates to '{x: 1, y: 2} == {x: 3, y: 4}'
```

for the original example, or for a `int[2]`:

```
Expression evaluates to '{[0]=1, [1]=2} == ...'
```

What do you think?

https://github.com/llvm/llvm-project/pull/74852
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to