================
@@ -36,7 +36,7 @@ using r1i2 = r1<char>; // expected-error {{constraints not
satisfied for class t
template<typename... Ts> requires
false_v<requires (Ts... ts) {requires ((sizeof(ts) == 2) && ...);}>
// expected-note@-1 {{because 'false_v<requires (short ts, unsigned short ts)
{ requires (sizeof (ts) == 2) && (sizeof (ts) == 2); }>'}}
-// expected-note@-2 {{because 'false_v<requires (short ts) { requires (sizeof
(ts) == 2); }>' evaluated to false}}
+// expected-note@-2 {{because 'false_v<requires (short ts) { requires sizeof
(ts) == 2; }>' evaluated to false}}
----------------
erichkeane wrote:
So there is no reason that shouldn't still work fine, right? The AST is
already 'set', other than the instantiated items, so no 'reparsing' can happen
where the paren expr would matter, as the decltype would already be set as to
whether it is a expr or type based variant, right? Though it is the one I'm
least sure about.
The only thing I could come up with that this MIGHT cause an issue (which, not
ruling out the Decltype above!), is a case where we do a ast-print, and
re-parse. But this requires our ast-print to produce 'compile-able code',
which isn't necessarily the case anyway. Also, to re-parse somehow a template
instantiation.
THOUGH, looking back at `ActOnDecltypeExpression` (called when transforming the
`DecltypeType`, there IS a check for the `ParenExpr`, so I think you've found a
reason we shouldn't do this. It seems wasteful to make `ParenExpr` store a bit
for this just for hte diagnostic, but hopefully this will be useful for
something else in the future, but I think we HAVE to.
https://github.com/llvm/llvm-project/pull/110761
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits