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">,
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;
72
73def remark_module_import : Remark<
74 "importing module '%0'%select{| into '%3'}2 from '%1'">,
75 InGroup<ModuleImport>;
76
77def err_imported_module_not_found : Error<
78 "module '%0' in AST file '%1' %select{(imported by AST file '%2') |}4"
79 "is not defined in any loaded module map file; "
80 "maybe you need to load '%3'?">, DefaultFatal;
81def note_imported_by_pch_module_not_found : Note<
82 "consider adding '%0' to the header search path">;
83def err_imported_module_modmap_changed : Error<
84 "module '%0' %select{in|imported by}4 AST file '%1' found in a different module map file"
85 " (%2) than when the importing AST file was built (%3)">, DefaultFatal;
86def err_imported_module_relocated : Error<
87 "module '%0' was built in directory '%1' but now resides in "
88 "directory '%2'">, DefaultFatal;
89def err_module_different_modmap : Error<
90 "module '%0' %select{uses|does not use}1 additional module map '%2'"
91 "%select{| not}1 used when the module was built">;
92
93def err_pch_macro_def_undef : Error<
94 "macro '%0' was %select{defined|undef'd}1 in the precompiled header but "
95 "%select{undef'd|defined}1 on the command line">;
96def err_pch_macro_def_conflict : Error<
97 "definition of macro '%0' differs between the precompiled header ('%1') "
98 "and the command line ('%2')">;
99def err_pch_undef : Error<
100 "%select{command line contains|precompiled header was built with}0 "
101 "'-undef' but %select{precompiled header was not built with it|"
102 "it is not present on the command line}0">;
103def err_pch_pp_detailed_record : Error<
104 "%select{command line contains|precompiled header was built with}0 "
105 "'-detailed-preprocessing-record' but %select{precompiled header was not "
106 "built with it|it is not present on the command line}0">;
107
108def err_module_odr_violation_missing_decl : Error<
109 "%q0 from module '%1' is not present in definition of %q2"
110 "%select{ in module '%4'| provided earlier}3">, NoSFINAE;
111def note_module_odr_violation_no_possible_decls : Note<
112 "definition has no member %0">;
113def note_module_odr_violation_possible_decl : Note<
114 "declaration of %0 does not match">;
115def err_module_odr_violation_different_definitions : Error<
116 "%q0 has different definitions in different modules; "
117 "%select{definition in module '%2' is here|defined here}1">;
118def note_first_module_difference : Note<
119 "in first definition, possible difference is here">;
120def note_module_odr_violation_different_definitions : Note<
121 "definition in module '%0' is here">;
122def note_second_module_difference : Note<
123 "in second definition, possible difference is here">;
124
125def err_module_odr_violation_different_instantiations : Error<
126 "instantiation of %q0 is different in different modules">;
127
128def err_module_odr_violation_definition_data : Error <
129 "%q0 has different definitions in different modules; first difference is "
130 "%select{definition in module '%2'|defined here}1 found "
131 "%select{"
132 "%4 base %plural{1:class|:classes}4|"
133 "%4 virtual base %plural{1:class|:classes}4|"
134 "%ordinal4 base class with type %5|"
135 "%ordinal4 %select{non-virtual|virtual}5 base class %6|"
136 "%ordinal4 base class %5 with "
137 "%select{public|protected|private|no}6 access specifier}3">;
138
139def note_module_odr_violation_definition_data : Note <
140 "but in '%0' found "
141 "%select{"
142 "%2 base %plural{1:class|:classes}2|"
143 "%2 virtual base %plural{1:class|:classes}2|"
144 "%ordinal2 base class with different type %3|"
145 "%ordinal2 %select{non-virtual|virtual}3 base class %4|"
146 "%ordinal2 base class %3 with "
147 "%select{public|protected|private|no}4 access specifier}1">;
148
149def err_module_odr_violation_template_parameter : Error <
150 "%q0 has different definitions in different modules; first difference is "
151 "%select{definition in module '%2'|defined here}1 found "
152 "%select{"
153 "unnamed template parameter|"
154 "template parameter %4|"
155 "template parameter with %select{no |}4default argument|"
156 "template parameter with default argument}3">;
157
158
159def note_module_odr_violation_template_parameter : Note <
160 "but in '%0' found "
161 "%select{"
162 "unnamed template parameter %2|"
163 "template parameter %2|"
164 "template parameter with %select{no |}2default argument|"
165 "template parameter with different default argument}1">;
166
167def err_module_odr_violation_mismatch_decl : Error<
168 "%q0 has different definitions in different modules; first difference is "
169 "%select{definition in module '%2'|defined here}1 found "
170 "%select{end of class|public access specifier|private access specifier|"
171 "protected access specifier|static assert|field|method|type alias|typedef|"
172 "data member|friend declaration|function template}3">;
173def note_module_odr_violation_mismatch_decl : Note<"but in '%0' found "
174 "%select{end of class|public access specifier|private access specifier|"
175 "protected access specifier|static assert|field|method|type alias|typedef|"
176 "data member|friend declaration|function template}1">;
177
178def err_module_odr_violation_mismatch_decl_diff : Error<
179 "%q0 has different definitions in different modules; first difference is "
180 "%select{definition in module '%2'|defined here}1 found "
181 "%select{"
182 "static assert with condition|"
183 "static assert with message|"
184 "static assert with %select{|no }4message|"
185 "field %4|"
186 "field %4 with type %5|"
187 "%select{non-|}5bitfield %4|"
188 "bitfield %4 with one width expression|"
189 "%select{non-|}5mutable field %4|"
190 "field %4 with %select{no|an}5 initalizer|"
191 "field %4 with an initializer|"
192 "%select{method %5|constructor|destructor}4|"
193 "%select{method %5|constructor|destructor}4 "
194 "is %select{not deleted|deleted}6|"
195 "%select{method %5|constructor|destructor}4 "
196 "is %select{not defaulted|defaulted}6|"
197 "%select{method %5|constructor|destructor}4 "
198 "is %select{|pure }6%select{not virtual|virtual}7|"
199 "%select{method %5|constructor|destructor}4 "
200 "is %select{not static|static}6|"
201 "%select{method %5|constructor|destructor}4 "
202 "is %select{not volatile|volatile}6|"
203 "%select{method %5|constructor|destructor}4 "
204 "is %select{not const|const}6|"
205 "%select{method %5|constructor|destructor}4 "
206 "is %select{not inline|inline}6|"
207 "%select{method %5|constructor|destructor}4 "
208 "that has %6 parameter%s6|"
209 "%select{method %5|constructor|destructor}4 "
210 "with %ordinal6 parameter of type %7%select{| decayed from %9}8|"
211 "%select{method %5|constructor|destructor}4 "
212 "with %ordinal6 parameter named %7|"
213 "%select{method %5|constructor|destructor}4 "
214 "with %ordinal6 parameter with%select{out|}7 a default argument|"
215 "%select{method %5|constructor|destructor}4 "
216 "with %ordinal6 parameter with a default argument|"
217 "%select{method %5|constructor|destructor}4 "
218 "with %select{no |}6template arguments|"
219 "%select{method %5|constructor|destructor}4 "
220 "with %6 template argument%s6|"
221 "%select{method %5|constructor|destructor}4 "
222 "with %6 for %ordinal7 template argument|"
223 "%select{method %5|constructor|destructor}4 "
224 "with %select{no body|body}6|"
225 "%select{method %5|constructor|destructor}4 "
226 "with body|"
227 "%select{typedef|type alias}4 name %5|"
228 "%select{typedef|type alias}4 %5 with underlying type %6|"
229 "data member with name %4|"
230 "data member %4 with type %5|"
231 "data member %4 with%select{out|}5 an initializer|"
232 "data member %4 with an initializer|"
233 "data member %4 %select{is constexpr|is not constexpr}5|"
234 "friend %select{class|function}4|"
235 "friend %4|"
236 "friend function %4|"
237 "function template %4 with %5 template parameter%s5|"
238 "function template %4 with %ordinal5 template parameter being a "
239 "%select{type|non-type|template}6 template parameter|"
240 "function template %4 with %ordinal5 template parameter "
241 "%select{with no name|named %7}6|"
242 "function template %4 with %ordinal5 template parameter with "
243 "%select{no |}6default argument|"
244 "function template %4 with %ordinal5 template parameter with "
245 "default argument %6|"
246 "function template %4 with %ordinal5 template parameter with one type|"
247 "function template %4 with %ordinal5 template parameter %select{not |}6"
248 "being a template parameter pack|"
249 "}3">;
250
251def note_module_odr_violation_mismatch_decl_diff : Note<"but in '%0' found "
252 "%select{"
253 "static assert with different condition|"
254 "static assert with different message|"
255 "static assert with %select{|no }2message|"
256 "field %2|"
257 "field %2 with type %3|"
258 "%select{non-|}3bitfield %2|"
259 "bitfield %2 with different width expression|"
260 "%select{non-|}3mutable field %2|"
261 "field %2 with %select{no|an}3 initializer|"
262 "field %2 with a different initializer|"
263 "%select{method %3|constructor|destructor}2|"
264 "%select{method %3|constructor|destructor}2 "
265 "is %select{not deleted|deleted}4|"
266 "%select{method %3|constructor|destructor}2 "
267 "is %select{not defaulted|defaulted}4|"
268 "%select{method %3|constructor|destructor}2 "
269 "is %select{|pure }4%select{not virtual|virtual}5|"
270 "%select{method %3|constructor|destructor}2 "
271 "is %select{not static|static}4|"
272 "%select{method %3|constructor|destructor}2 "
273 "is %select{not volatile|volatile}4|"
274 "%select{method %3|constructor|destructor}2 "
275 "is %select{not const|const}4|"
276 "%select{method %3|constructor|destructor}2 "
277 "is %select{not inline|inline}4|"
278 "%select{method %3|constructor|destructor}2 "
279 "that has %4 parameter%s4|"
280 "%select{method %3|constructor|destructor}2 "
281 "with %ordinal4 parameter of type %5%select{| decayed from %7}6|"
282 "%select{method %3|constructor|destructor}2 "
283 "with %ordinal4 parameter named %5|"
284 "%select{method %3|constructor|destructor}2 "
285 "with %ordinal4 parameter with%select{out|}5 a default argument|"
286 "%select{method %3|constructor|destructor}2 "
287 "with %ordinal4 parameter with a different default argument|"
288 "%select{method %3|constructor|destructor}2 "
289 "with %select{no |}4template arguments|"
290 "%select{method %3|constructor|destructor}2 "
291 "with %4 template argument%s4|"
292 "%select{method %3|constructor|destructor}2 "
293 "with %4 for %ordinal5 template argument|"
294 "%select{method %3|constructor|destructor}2 "
295 "with %select{no body|body}4|"
296 "%select{method %3|constructor|destructor}2 "
297 "with different body|"
298 "%select{typedef|type alias}2 name %3|"
299 "%select{typedef|type alias}2 %3 with different underlying type %4|"
300 "data member with name %2|"
301 "data member %2 with different type %3|"
302 "data member %2 with%select{out|}3 an initializer|"
303 "data member %2 with a different initializer|"
304 "data member %2 %select{is constexpr|is not constexpr}3|"
305 "friend %select{class|function}2|"
306 "friend %2|"
307 "friend function %2|"
308 "function template %2 with %3 template parameter%s3|"
309 "function template %2 with %ordinal3 template paramter being a "
310 "%select{type|non-type|template}4 template parameter|"
311 "function template %2 with %ordinal3 template parameter "
312 "%select{with no name|named %5}4|"
313 "function template %2 with %ordinal3 template parameter with "
314 "%select{no |}4default argument|"
315 "function template %2 with %ordinal3 template parameter with "
316 "default argument %4|"
317 "function template %2 with %ordinal3 template parameter with different type|"
318 "function template %2 with %ordinal3 template parameter %select{not |}4"
319 "being a template parameter pack|"
320 "}1">;
321
322def err_module_odr_violation_function : Error<
323 "%q0 has different definitions in different modules; "
324 "%select{definition in module '%2'|defined here}1 "
325 "first difference is "
326 "%select{"
327 "return type is %4|"
328 "%ordinal4 parameter with name %5|"
329 "%ordinal4 parameter with type %5%select{| decayed from %7}6|"
330 "%ordinal4 parameter with%select{out|}5 a default argument|"
331 "%ordinal4 parameter with a default argument|"
332 "function body"
333 "}3">;
334
335def note_module_odr_violation_function : Note<"but in '%0' found "
336 "%select{"
337 "different return type %2|"
338 "%ordinal2 parameter with name %3|"
339 "%ordinal2 parameter with type %3%select{| decayed from %5}4|"
340 "%ordinal2 parameter with%select{out|}3 a default argument|"
341 "%ordinal2 parameter with a different default argument|"
342 "a different body"
343 "}1">;
344
345def err_module_odr_violation_enum : Error<
346 "%q0 has different definitions in different modules; "
347 "%select{definition in module '%2'|defined here}1 "
348 "first difference is "
349 "%select{"
350 "enum that is %select{not scoped|scoped}4|"
351 "enum scoped with keyword %select{struct|class}4|"
352 "enum %select{without|with}4 specified type|"
353 "enum with specified type %4|"
354 "enum with %4 element%s4|"
355 "%ordinal4 element has name %5|"
356 "%ordinal4 element %5 %select{has|does not have}6 an initilizer|"
357 "%ordinal4 element %5 has an initializer|"
358 "}3">;
359
360def note_module_odr_violation_enum : Note<"but in '%0' found "
361 "%select{"
362 "enum that is %select{not scoped|scoped}2|"
363 "enum scoped with keyword %select{struct|class}2|"
364 "enum %select{without|with}2 specified type|"
365 "enum with specified type %2|"
366 "enum with %2 element%s2|"
367 "%ordinal2 element has name %3|"
368 "%ordinal2 element %3 %select{has|does not have}4 an initializer|"
369 "%ordinal2 element %3 has different initializer|"
370 "}1">;
371
372def err_module_odr_violation_mismatch_decl_unknown : Error<
373 "%q0 %select{with definition in module '%2'|defined here}1 has different "
374 "definitions in different modules; first difference is this "
375 "%select{||||static assert|field|method|type alias|typedef|data member|"
376 "friend declaration|unexpected decl}3">;
377def note_module_odr_violation_mismatch_decl_unknown : Note<
378 "but in '%0' found "
379 "%select{||||different static assert|different field|different method|"
380 "different type alias|different typedef|different data member|"
381 "different friend declaration|another unexpected decl}1">;
382
383def warn_duplicate_module_file_extension : Warning<
384 "duplicate module file extension block name '%0'">,
385 InGroup<ModuleFileExtension>;
386
387def warn_module_system_bit_conflict : Warning<
388 "module file '%0' was validated as a system module and is now being imported "
389 "as a non-system module; any difference in diagnostic options will be ignored">,
390 InGroup<ModuleConflict>;
391} // let CategoryName
392
393let CategoryName = "AST Serialization Issue" in {
394def warn_module_uses_date_time : Warning<
395 "%select{precompiled header|module}0 uses __DATE__ or __TIME__">,
396 InGroup<DiagGroup<"pch-date-time">>;
397def err_module_no_size_mtime_for_header : Error<
398 "cannot emit module %0: %select{size|mtime}1 must be explicitly specified "
399 "for missing header file \"%2\"">;
400def err_module_unable_to_hash_content : Error<
401 "failed to hash content for '%0' because memory buffer cannot be retrieved">;
402} // let CategoryName
403} // let Component
404
405