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