[ODRHash][NFC] Add missing 'select' case for `ODRMismatchDecl`.
authorVolodymyr Sapsai <vsapsai@apple.com>
Fri, 27 May 2022 21:05:12 +0000 (14:05 -0700)
committerVolodymyr Sapsai <vsapsai@apple.com>
Mon, 30 May 2022 17:07:03 +0000 (10:07 -0700)
No test changes because `err_module_odr_violation_mismatch_decl_unknown`
is a catch-all when custom diagnostic is missing. And missing custom
diagnostic we should fix by implementing it, not by improving the
general case. But if we pass enum value not covered by 'select', clang
can crash, so protect against that.

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

clang/include/clang/Basic/DiagnosticSerializationKinds.td

index 3fcdb61..33eba6c 100644 (file)
@@ -375,12 +375,14 @@ def err_module_odr_violation_mismatch_decl_unknown : Error<
   "%q0 %select{with definition in module '%2'|defined here}1 has different "
   "definitions in different modules; first difference is this "
   "%select{||||static assert|field|method|type alias|typedef|data member|"
-  "friend declaration|unexpected decl}3">;
+  "friend declaration|function template|"
+  "unexpected decl}3">;
 def note_module_odr_violation_mismatch_decl_unknown : Note<
   "but in '%0' found "
   "%select{||||different static assert|different field|different method|"
   "different type alias|different typedef|different data member|"
-  "different friend declaration|another unexpected decl}1">;
+  "different friend declaration|different function template|"
+  "another unexpected decl}1">;
 
 def warn_duplicate_module_file_extension : Warning<
   "duplicate module file extension block name '%0'">,