[PATCH] D155610: [Clang][ExprConstant] Print integer instead of character on static assertion failure
Tom Honermann via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 19 09:27:39 PDT 2023
tahonermann added inline comments.
================
Comment at: clang/test/Lexer/cxx1z-trigraphs.cpp:24
// expected-error at 11 {{}} expected-warning at 11 {{trigraph ignored}}
-// expected-error at 13 {{failed}} expected-warning at 13 {{trigraph ignored}} expected-note at 13 {{evaluates to ''?' == '#''}}
+// expected-error at 13 {{failed}} expected-warning at 13 {{trigraph ignored}} expected-note at 13 {{evaluates to '63 == 35'}}
// expected-error at 16 {{}}
----------------
aaron.ballman wrote:
> I think the original diagnostic was actually more understandable as it relates more closely to what's written in the static assertion. I could imagine something like `evaluates to '?' (63) == '#' (35)` would also be reasonable.
I agree. I would also be ok with printing the integer value as primary with the character as secondary:
evaluates to 63 ('?') == 35 ('#')
There are two kinds of non-printable characters:
# Control characters (including new-line)
# character values that don't correspond to a character (e.g., lone trailing characters or invalid code unit values).
For the first case, I would support printing them as either C escapes or universal-character-names. e.g.,
evaluates to 0 ('\0') == 1 (\u0001)
For the second case, I would support printing them as C hex escapes. e.g,
evaluates to -128 ('\x80') == -123 ('\x85')
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D155610/new/
https://reviews.llvm.org/D155610
More information about the cfe-commits
mailing list