tahonermann added inline comments.

================
Comment at: clang/test/SemaCXX/static-assert-cxx26.cpp:304
+static_assert('\u{9}' == (char)1, ""); // expected-error {{failed}} \
+                                       // expected-note {{evaluates to ''\t' 
(0x09, 9) == '<U+0001>' (0x01, 1)'}}
+static_assert((char8_t)-128 == (char8_t)-123, ""); // expected-error 
{{failed}} \
----------------
cor3ntin wrote:
> tahonermann wrote:
> > Is the expected note up to date? I don't see code that would generate the 
> > `<U+0001>` output. Am I just missing it? Since U+0001 is a valid, though 
> > non-printable, character, I would expect more `'\u0001'`.
> See elsewhere in the discussion. this formating is pre existing and managed 
> at the DiagnosticEngine level (pushEscapedString). the reason it's not 
> `\u0001` is 1/ to avoid  reusing c++ syntactic elements for something that 
> comes from diagnostics and is not represented as an escaped sequence in 
> source 2/ `\u00011` is unreadable, and `\U000000001` is also not helpful :)
> 
Thanks for the explanation. I'm not sure that I agree with the rationale for 
(1) though. We're already putting the value in single quotes and representing 
some values with escapes in many of these cases when the value isn't produced 
by an escape sequence (or even a character/string literal); why exclude 
`\uXXXX`? I agree with the rationale for (2); we could use `'\u{1}'` in that 
case.


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

https://reviews.llvm.org/D155610

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

Reply via email to