1//==--- DiagnosticSerializationKinds.td - serialization diagnostics -------===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8 9let Component = "Serialization" in { 10let CategoryName = "AST Deserialization Issue" in { 11 12def err_fe_unable_to_read_pch_file : Error< 13 "unable to read PCH file %0: '%1'">; 14def err_fe_not_a_pch_file : Error< 15 "input is not a PCH file: '%0'">; 16def err_fe_pch_malformed : Error< 17 "malformed or corrupted AST file: '%0'">, DefaultFatal; 18def err_fe_pch_malformed_block : Error< 19 "malformed block record in PCH file: '%0'">, DefaultFatal; 20def err_fe_ast_file_modified : Error< 21 "file '%0' has been modified since the " 22 "%select{precompiled header|module file|AST file}1 '%2' was built" 23 ": %select{size|mtime|content}3 changed%select{| (was %5, now %6)}4">, 24 DefaultFatal; 25def err_fe_pch_file_overridden : Error< 26 "file '%0' from the precompiled header has been overridden">; 27def note_pch_required_by : Note<"'%0' required by '%1'">; 28def note_pch_rebuild_required : Note<"please rebuild precompiled header '%0'">; 29def note_module_cache_path : Note< 30 "after modifying system headers, please delete the module cache at '%0'">; 31 32def err_pch_targetopt_mismatch : Error< 33 "PCH file was compiled for the %0 '%1' but the current translation " 34 "unit is being compiled for target '%2'">; 35def err_pch_targetopt_feature_mismatch : Error< 36 "%select{AST file was|current translation unit is}0 compiled with the target " 37 "feature '%1' but the %select{current translation unit is|AST file was}0 " 38 "not">; 39def err_pch_langopt_mismatch : Error<"%0 was %select{disabled|enabled}1 in " 40 "PCH file but is currently %select{disabled|enabled}2">; 41def err_pch_langopt_value_mismatch : Error< 42 "%0 differs in PCH file vs. current file">; 43def err_pch_diagopt_mismatch : Error<"%0 is currently enabled, but was not in " 44 "the PCH file">; 45def err_pch_modulecache_mismatch : Error<"PCH was compiled with module cache " 46 "path '%0', but the path is currently '%1'">; 47 48def err_pch_version_too_old : Error< 49 "PCH file uses an older PCH format that is no longer supported">; 50def err_pch_version_too_new : Error< 51 "PCH file uses a newer PCH format that cannot be read">; 52def err_pch_different_branch : Error< 53 "PCH file built from a different branch (%0) than the compiler (%1)">; 54def err_pch_with_compiler_errors : Error< 55 "PCH file contains compiler errors">; 56 57def err_module_file_conflict : Error< 58 "module '%0' is defined in both '%1' and '%2'">, DefaultFatal; 59def err_ast_file_not_found : Error< 60 "%select{PCH|module|AST}0 file '%1' not found%select{|: %3}2">, DefaultFatal; 61def err_ast_file_out_of_date : Error< 62 "%select{PCH|module|AST}0 file '%1' is out of date and " 63 "needs to be rebuilt%select{|: %3}2">, DefaultFatal; 64def err_ast_file_invalid : Error< 65 "file '%1' is not a valid precompiled %select{PCH|module|AST}0 file">, DefaultFatal; 66def note_module_file_imported_by : Note< 67 "imported by %select{|module '%2' in }1'%0'">; 68def err_module_file_not_module : Error< 69 "AST file '%0' was not built as a module">, DefaultFatal; 70def err_module_file_missing_top_level_submodule : Error< 71 "module file '%0' is missing its top-level submodule">, DefaultFatal; 72def note_module_file_conflict : Note< 73 "this is generally caused by modules with the same name found in multiple " 74 "paths">; 75 76def remark_module_import : Remark< 77 "importing module '%0'%select{| into '%3'}2 from '%1'">, 78 InGroup<ModuleImport>; 79 80def err_imported_module_not_found : Error< 81 "module '%0' in AST file '%1' %select{(imported by AST file '%2') |}4" 82 "is not defined in any loaded module map file; " 83 "maybe you need to load '%3'?">, DefaultFatal; 84def note_imported_by_pch_module_not_found : Note< 85 "consider adding '%0' to the header search path">; 86def err_imported_module_modmap_changed : Error< 87 "module '%0' %select{in|imported by}4 AST file '%1' found in a different module map file" 88 " (%2) than when the importing AST file was built (%3)">, DefaultFatal; 89def err_imported_module_relocated : Error< 90 "module '%0' was built in directory '%1' but now resides in " 91 "directory '%2'">, DefaultFatal; 92def err_module_different_modmap : Error< 93 "module '%0' %select{uses|does not use}1 additional module map '%2'" 94 "%select{| not}1 used when the module was built">; 95 96def err_pch_macro_def_undef : Error< 97 "macro '%0' was %select{defined|undef'd}1 in the precompiled header but " 98 "%select{undef'd|defined}1 on the command line">; 99def err_pch_macro_def_conflict : Error< 100 "definition of macro '%0' differs between the precompiled header ('%1') " 101 "and the command line ('%2')">; 102def err_pch_undef : Error< 103 "%select{command line contains|precompiled header was built with}0 " 104 "'-undef' but %select{precompiled header was not built with it|" 105 "it is not present on the command line}0">; 106def err_pch_pp_detailed_record : Error< 107 "%select{command line contains|precompiled header was built with}0 " 108 "'-detailed-preprocessing-record' but %select{precompiled header was not " 109 "built with it|it is not present on the command line}0">; 110 111def err_module_odr_violation_missing_decl : Error< 112 "%q0 from module '%1' is not present in definition of %q2" 113 "%select{ in module '%4'| provided earlier}3">, NoSFINAE; 114def note_module_odr_violation_no_possible_decls : Note< 115 "definition has no member %0">; 116def note_module_odr_violation_possible_decl : Note< 117 "declaration of %0 does not match">; 118def err_module_odr_violation_different_definitions : Error< 119 "%q0 has different definitions in different modules; " 120 "%select{definition in module '%2' is here|defined here}1">; 121def note_first_module_difference : Note< 122 "in first definition, possible difference is here">; 123def note_module_odr_violation_different_definitions : Note< 124 "definition in module '%0' is here">; 125def note_second_module_difference : Note< 126 "in second definition, possible difference is here">; 127 128def err_module_odr_violation_different_instantiations : Error< 129 "instantiation of %q0 is different in different modules">; 130 131def err_module_odr_violation_definition_data : Error < 132 "%q0 has different definitions in different modules; first difference is " 133 "%select{definition in module '%2'|defined here}1 found " 134 "%select{" 135 "%4 base %plural{1:class|:classes}4|" 136 "%4 virtual base %plural{1:class|:classes}4|" 137 "%ordinal4 base class with type %5|" 138 "%ordinal4 %select{non-virtual|virtual}5 base class %6|" 139 "%ordinal4 base class %5 with " 140 "%select{public|protected|private|no}6 access specifier}3">; 141 142def note_module_odr_violation_definition_data : Note < 143 "but in '%0' found " 144 "%select{" 145 "%2 base %plural{1:class|:classes}2|" 146 "%2 virtual base %plural{1:class|:classes}2|" 147 "%ordinal2 base class with different type %3|" 148 "%ordinal2 %select{non-virtual|virtual}3 base class %4|" 149 "%ordinal2 base class %3 with " 150 "%select{public|protected|private|no}4 access specifier}1">; 151 152def err_module_odr_violation_template_parameter : Error < 153 "%q0 has different definitions in different modules; first difference is " 154 "%select{definition in module '%2'|defined here}1 found " 155 "%select{" 156 "unnamed template parameter|" 157 "template parameter %5|" 158 "template parameter with %select{no |}4default argument|" 159 "template parameter with default argument}3">; 160 161def note_module_odr_violation_template_parameter : Note < 162 "but in '%0' found " 163 "%select{" 164 "unnamed template parameter %2|" 165 "template parameter %3|" 166 "template parameter with %select{no |}2default argument|" 167 "template parameter with different default argument}1">; 168 169def err_module_odr_violation_mismatch_decl : Error< 170 "%q0 has different definitions in different modules; first difference is " 171 "%select{definition in module '%2'|defined here}1 found " 172 "%select{end of class|public access specifier|private access specifier|" 173 "protected access specifier|static assert|field|method|type alias|typedef|" 174 "data member|friend declaration|function template}3">; 175def note_module_odr_violation_mismatch_decl : Note<"but in '%0' found " 176 "%select{end of class|public access specifier|private access specifier|" 177 "protected access specifier|static assert|field|method|type alias|typedef|" 178 "data member|friend declaration|function template}1">; 179 180def err_module_odr_violation_record : Error< 181 "%q0 has different definitions in different modules; first difference is " 182 "%select{definition in module '%2'|defined here}1 found " 183 "%select{" 184 "static assert with condition|" 185 "static assert with message|" 186 "static assert with %select{|no }4message|" 187 "%select{method %5|constructor|destructor}4|" 188 "%select{method %5|constructor|destructor}4 " 189 "is %select{not deleted|deleted}6|" 190 "%select{method %5|constructor|destructor}4 " 191 "is %select{not defaulted|defaulted}6|" 192 "%select{method %5|constructor|destructor}4 " 193 "is %select{|pure }6%select{not virtual|virtual}7|" 194 "%select{method %5|constructor|destructor}4 " 195 "is %select{not static|static}6|" 196 "%select{method %5|constructor|destructor}4 " 197 "is %select{not volatile|volatile}6|" 198 "%select{method %5|constructor|destructor}4 " 199 "is %select{not const|const}6|" 200 "%select{method %5|constructor|destructor}4 " 201 "is %select{not inline|inline}6|" 202 "%select{method %5|constructor|destructor}4 " 203 "that has %6 parameter%s6|" 204 "%select{method %5|constructor|destructor}4 " 205 "with %ordinal6 parameter of type %7%select{| decayed from %9}8|" 206 "%select{method %5|constructor|destructor}4 " 207 "with %ordinal6 parameter named %7|" 208 "%select{method %5|constructor|destructor}4 " 209 "with %ordinal6 parameter with%select{out|}7 a default argument|" 210 "%select{method %5|constructor|destructor}4 " 211 "with %ordinal6 parameter with a default argument|" 212 "%select{method %5|constructor|destructor}4 " 213 "with %select{no |}6template arguments|" 214 "%select{method %5|constructor|destructor}4 " 215 "with %6 template argument%s6|" 216 "%select{method %5|constructor|destructor}4 " 217 "with %6 for %ordinal7 template argument|" 218 "%select{method %5|constructor|destructor}4 " 219 "with %select{no body|body}6|" 220 "%select{method %5|constructor|destructor}4 " 221 "with body|" 222 "friend %select{class|function}4|" 223 "friend %4|" 224 "friend function %4|" 225 "function template %4 with %5 template parameter%s5|" 226 "function template %4 with %ordinal5 template parameter being a " 227 "%select{type|non-type|template}6 template parameter|" 228 "function template %4 with %ordinal5 template parameter " 229 "%select{with no name|named %7}6|" 230 "function template %4 with %ordinal5 template parameter with " 231 "%select{no |}6default argument|" 232 "function template %4 with %ordinal5 template parameter with " 233 "default argument %6|" 234 "function template %4 with %ordinal5 template parameter with one type|" 235 "function template %4 with %ordinal5 template parameter %select{not |}6" 236 "being a template parameter pack|" 237 "}3">; 238 239def note_module_odr_violation_record : Note<"but in '%0' found " 240 "%select{" 241 "static assert with different condition|" 242 "static assert with different message|" 243 "static assert with %select{|no }2message|" 244 "%select{method %3|constructor|destructor}2|" 245 "%select{method %3|constructor|destructor}2 " 246 "is %select{not deleted|deleted}4|" 247 "%select{method %3|constructor|destructor}2 " 248 "is %select{not defaulted|defaulted}4|" 249 "%select{method %3|constructor|destructor}2 " 250 "is %select{|pure }4%select{not virtual|virtual}5|" 251 "%select{method %3|constructor|destructor}2 " 252 "is %select{not static|static}4|" 253 "%select{method %3|constructor|destructor}2 " 254 "is %select{not volatile|volatile}4|" 255 "%select{method %3|constructor|destructor}2 " 256 "is %select{not const|const}4|" 257 "%select{method %3|constructor|destructor}2 " 258 "is %select{not inline|inline}4|" 259 "%select{method %3|constructor|destructor}2 " 260 "that has %4 parameter%s4|" 261 "%select{method %3|constructor|destructor}2 " 262 "with %ordinal4 parameter of type %5%select{| decayed from %7}6|" 263 "%select{method %3|constructor|destructor}2 " 264 "with %ordinal4 parameter named %5|" 265 "%select{method %3|constructor|destructor}2 " 266 "with %ordinal4 parameter with%select{out|}5 a default argument|" 267 "%select{method %3|constructor|destructor}2 " 268 "with %ordinal4 parameter with a different default argument|" 269 "%select{method %3|constructor|destructor}2 " 270 "with %select{no |}4template arguments|" 271 "%select{method %3|constructor|destructor}2 " 272 "with %4 template argument%s4|" 273 "%select{method %3|constructor|destructor}2 " 274 "with %4 for %ordinal5 template argument|" 275 "%select{method %3|constructor|destructor}2 " 276 "with %select{no body|body}4|" 277 "%select{method %3|constructor|destructor}2 " 278 "with different body|" 279 "friend %select{class|function}2|" 280 "friend %2|" 281 "friend function %2|" 282 "function template %2 with %3 template parameter%s3|" 283 "function template %2 with %ordinal3 template paramter being a " 284 "%select{type|non-type|template}4 template parameter|" 285 "function template %2 with %ordinal3 template parameter " 286 "%select{with no name|named %5}4|" 287 "function template %2 with %ordinal3 template parameter with " 288 "%select{no |}4default argument|" 289 "function template %2 with %ordinal3 template parameter with " 290 "default argument %4|" 291 "function template %2 with %ordinal3 template parameter with different type|" 292 "function template %2 with %ordinal3 template parameter %select{not |}4" 293 "being a template parameter pack|" 294 "}1">; 295 296def err_module_odr_violation_field : Error< 297 "%q0 has different definitions in different modules; first difference is " 298 "%select{definition in module '%2'|defined here}1 found " 299 "%select{" 300 "field %4|" 301 "field %4 with type %5|" 302 "%select{non-|}5bitfield %4|" 303 "bitfield %4 with one width expression|" 304 "%select{non-|}5mutable field %4|" 305 "field %4 with %select{no|an}5 initalizer|" 306 "field %4 with an initializer" 307 "}3">; 308def note_module_odr_violation_field : Note<"but in '%0' found " 309 "%select{" 310 "field %2|" 311 "field %2 with type %3|" 312 "%select{non-|}3bitfield %2|" 313 "bitfield %2 with different width expression|" 314 "%select{non-|}3mutable field %2|" 315 "field %2 with %select{no|an}3 initializer|" 316 "field %2 with a different initializer" 317 "}1">; 318 319def err_module_odr_violation_typedef : Error< 320 "%q0 has different definitions in different modules; first difference is " 321 "%select{definition in module '%2'|defined here}1 found " 322 "%select{" 323 "%select{typedef|type alias}4 name %5|" 324 "%select{typedef|type alias}4 %5 with underlying type %6" 325 "}3">; 326def note_module_odr_violation_typedef : Note<"but in '%0' found " 327 "%select{" 328 "%select{typedef|type alias}2 name %3|" 329 "%select{typedef|type alias}2 %3 with different underlying type %4" 330 "}1">; 331 332def err_module_odr_violation_variable : Error< 333 "%q0 has different definitions in different modules; first difference is " 334 "%select{definition in module '%2'|defined here}1 found " 335 "%select{" 336 "data member with name %4|" 337 "data member %4 with type %5|" 338 "data member %4 with%select{out|}5 an initializer|" 339 "data member %4 with an initializer|" 340 "data member %4 %select{is constexpr|is not constexpr}5" 341 "}3">; 342def note_module_odr_violation_variable : Note<"but in '%0' found " 343 "%select{" 344 "data member with name %2|" 345 "data member %2 with different type %3|" 346 "data member %2 with%select{out|}3 an initializer|" 347 "data member %2 with a different initializer|" 348 "data member %2 %select{is constexpr|is not constexpr}3" 349 "}1">; 350 351def err_module_odr_violation_function : Error< 352 "%q0 has different definitions in different modules; " 353 "%select{definition in module '%2'|defined here}1 " 354 "first difference is " 355 "%select{" 356 "return type is %4|" 357 "%ordinal4 parameter with name %5|" 358 "%ordinal4 parameter with type %5%select{| decayed from %7}6|" 359 "%ordinal4 parameter with%select{out|}5 a default argument|" 360 "%ordinal4 parameter with a default argument|" 361 "function body" 362 "}3">; 363 364def note_module_odr_violation_function : Note<"but in '%0' found " 365 "%select{" 366 "different return type %2|" 367 "%ordinal2 parameter with name %3|" 368 "%ordinal2 parameter with type %3%select{| decayed from %5}4|" 369 "%ordinal2 parameter with%select{out|}3 a default argument|" 370 "%ordinal2 parameter with a different default argument|" 371 "a different body" 372 "}1">; 373 374def err_module_odr_violation_enum : Error< 375 "%q0 has different definitions in different modules; " 376 "%select{definition in module '%2'|defined here}1 " 377 "first difference is " 378 "%select{" 379 "enum that is %select{not scoped|scoped}4|" 380 "enum scoped with keyword %select{struct|class}4|" 381 "enum %select{without|with}4 specified type|" 382 "enum with specified type %4|" 383 "enum with %4 element%s4|" 384 "%ordinal4 element has name %5|" 385 "%ordinal4 element %5 %select{has|does not have}6 an initializer|" 386 "%ordinal4 element %5 has an initializer|" 387 "}3">; 388 389def note_module_odr_violation_enum : Note<"but in '%0' found " 390 "%select{" 391 "enum that is %select{not scoped|scoped}2|" 392 "enum scoped with keyword %select{struct|class}2|" 393 "enum %select{without|with}2 specified type|" 394 "enum with specified type %2|" 395 "enum with %2 element%s2|" 396 "%ordinal2 element has name %3|" 397 "%ordinal2 element %3 %select{has|does not have}4 an initializer|" 398 "%ordinal2 element %3 has different initializer|" 399 "}1">; 400 401def err_module_odr_violation_mismatch_decl_unknown : Error< 402 "%q0 %select{with definition in module '%2'|defined here}1 has different " 403 "definitions in different modules; first difference is this " 404 "%select{||||static assert|field|method|type alias|typedef|data member|" 405 "friend declaration|function template|" 406 "unexpected decl}3">; 407def note_module_odr_violation_mismatch_decl_unknown : Note< 408 "but in '%0' found " 409 "%select{||||different static assert|different field|different method|" 410 "different type alias|different typedef|different data member|" 411 "different friend declaration|different function template|" 412 "another unexpected decl}1">; 413 414def warn_duplicate_module_file_extension : Warning< 415 "duplicate module file extension block name '%0'">, 416 InGroup<ModuleFileExtension>; 417 418def warn_module_system_bit_conflict : Warning< 419 "module file '%0' was validated as a system module and is now being imported " 420 "as a non-system module; any difference in diagnostic options will be ignored">, 421 InGroup<ModuleConflict>; 422} // let CategoryName 423 424let CategoryName = "AST Serialization Issue" in { 425def warn_module_uses_date_time : Warning< 426 "%select{precompiled header|module}0 uses __DATE__ or __TIME__">, 427 InGroup<DiagGroup<"pch-date-time">>; 428def err_module_no_size_mtime_for_header : Error< 429 "cannot emit module %0: %select{size|mtime}1 must be explicitly specified " 430 "for missing header file \"%2\"">; 431def err_module_unable_to_hash_content : Error< 432 "failed to hash content for '%0' because memory buffer cannot be retrieved">; 433} // let CategoryName 434} // let Component 435 436