[clang-tidy] Reject invalid enum initializers in C files
authorRichard <legalize@xmission.com>
Sat, 14 May 2022 23:57:10 +0000 (17:57 -0600)
committerRichard <legalize@xmission.com>
Thu, 2 Jun 2022 04:25:39 +0000 (22:25 -0600)
commitb418ef5cb90b32657dee46b068ac367787a8d2d6
tree51a9213ae75a8677a64983fe1fae8b61e7f9002d
parent6eab5cade71459bc187eeeb364b9a94972c05696
[clang-tidy] Reject invalid enum initializers in C files

C requires that enum values fit into an int.  Scan the macro tokens
present in an initializing expression and reject macros that contain
tokens that have suffixes making them larger than int.

C forbids the comma operator in enum initializing expressions, so
optionally reject comma operator.

Differential Revision: https://reviews.llvm.org/D125622

Fixes #55467
clang-tools-extra/clang-tidy/modernize/IntegralLiteralExpressionMatcher.cpp
clang-tools-extra/clang-tidy/modernize/IntegralLiteralExpressionMatcher.h
clang-tools-extra/clang-tidy/modernize/MacroToEnumCheck.cpp
clang-tools-extra/test/clang-tidy/checkers/modernize-macro-to-enum.c [new file with mode: 0644]
clang-tools-extra/test/clang-tidy/checkers/modernize-macro-to-enum.cpp
clang-tools-extra/unittests/clang-tidy/ModernizeModuleTest.cpp