@@ -199,20 +199,34 @@ let CategoryName = "VTable ABI Issue" in {
199199}
200200
201201// Importing ASTs
202+ def err_odr_variable_type_inconsistent : Error<
203+ "external variable %0 declared with incompatible types in different "
204+ "translation units (%1 vs. %2)">;
202205def warn_odr_variable_type_inconsistent : Warning<
203206 "external variable %0 declared with incompatible types in different "
204- "translation units (%1 vs. %2)">, InGroup<OneDefinitionRule>;
207+ "translation units (%1 vs. %2)">,
208+ InGroup<ODR>;
209+ def err_odr_variable_multiple_def : Error<
210+ "external variable %0 defined in multiple translation units">;
205211def warn_odr_variable_multiple_def : Warning<
206212 "external variable %0 defined in multiple translation units">,
207- InGroup<OneDefinitionRule >;
213+ InGroup<ODR >;
208214def note_odr_value_here : Note<"declared here with type %0">;
209215def note_odr_defined_here : Note<"also defined here">;
216+ def err_odr_function_type_inconsistent : Error<
217+ "external function %0 declared with incompatible types in different "
218+ "translation units (%1 vs. %2)">;
210219def warn_odr_function_type_inconsistent : Warning<
211220 "external function %0 declared with incompatible types in different "
212- "translation units (%1 vs. %2)">, InGroup<OneDefinitionRule>;
221+ "translation units (%1 vs. %2)">,
222+ InGroup<ODR>;
223+ def err_odr_tag_type_inconsistent
224+ : Error<"type %0 has incompatible definitions in different translation "
225+ "units">;
213226def warn_odr_tag_type_inconsistent
214227 : Warning<"type %0 has incompatible definitions in different translation "
215- "units">, InGroup<OneDefinitionRule>;
228+ "units">,
229+ InGroup<ODR>;
216230def note_odr_tag_kind_here: Note<
217231 "%0 is a %select{struct|interface|union|class|enum}1 here">;
218232def note_odr_field : Note<"field %0 has type %1 here">;
@@ -228,69 +242,116 @@ def note_odr_number_of_bases : Note<
228242 "class has %0 base %plural{1:class|:classes}0">;
229243def note_odr_enumerator : Note<"enumerator %0 with value %1 here">;
230244def note_odr_missing_enumerator : Note<"no corresponding enumerator here">;
231-
245+ def err_odr_field_type_inconsistent : Error<
246+ "field %0 declared with incompatible types in different "
247+ "translation units (%1 vs. %2)">;
232248def warn_odr_field_type_inconsistent : Warning<
233249 "field %0 declared with incompatible types in different "
234- "translation units (%1 vs. %2)">, InGroup<OneDefinitionRule>;
250+ "translation units (%1 vs. %2)">,
251+ InGroup<ODR>;
235252
236253// Importing Objective-C ASTs
254+ def err_odr_ivar_type_inconsistent : Error<
255+ "instance variable %0 declared with incompatible types in different "
256+ "translation units (%1 vs. %2)">;
237257def warn_odr_ivar_type_inconsistent : Warning<
238258 "instance variable %0 declared with incompatible types in different "
239- "translation units (%1 vs. %2)">, InGroup<OneDefinitionRule>;
259+ "translation units (%1 vs. %2)">,
260+ InGroup<ODR>;
261+ def err_odr_objc_superclass_inconsistent : Error<
262+ "class %0 has incompatible superclasses">;
240263def warn_odr_objc_superclass_inconsistent : Warning<
241- "class %0 has incompatible superclasses">, InGroup<OneDefinitionRule>;
264+ "class %0 has incompatible superclasses">,
265+ InGroup<ODR>;
242266def note_odr_objc_superclass : Note<"inherits from superclass %0 here">;
243267def note_odr_objc_missing_superclass : Note<"no corresponding superclass here">;
268+ def err_odr_objc_method_result_type_inconsistent : Error<
269+ "%select{class|instance}0 method %1 has incompatible result types in "
270+ "different translation units (%2 vs. %3)">;
244271def warn_odr_objc_method_result_type_inconsistent : Warning<
245272 "%select{class|instance}0 method %1 has incompatible result types in "
246- "different translation units (%2 vs. %3)">, InGroup<OneDefinitionRule>;
273+ "different translation units (%2 vs. %3)">,
274+ InGroup<ODR>;
275+ def err_odr_objc_method_num_params_inconsistent : Error<
276+ "%select{class|instance}0 method %1 has a different number of parameters in "
277+ "different translation units (%2 vs. %3)">;
247278def warn_odr_objc_method_num_params_inconsistent : Warning<
248279 "%select{class|instance}0 method %1 has a different number of parameters in "
249- "different translation units (%2 vs. %3)">, InGroup<OneDefinitionRule>;
280+ "different translation units (%2 vs. %3)">,
281+ InGroup<ODR>;
282+ def err_odr_objc_method_param_type_inconsistent : Error<
283+ "%select{class|instance}0 method %1 has a parameter with a different types "
284+ "in different translation units (%2 vs. %3)">;
250285def warn_odr_objc_method_param_type_inconsistent : Warning<
251286 "%select{class|instance}0 method %1 has a parameter with a different types "
252- "in different translation units (%2 vs. %3)">, InGroup<OneDefinitionRule>;
287+ "in different translation units (%2 vs. %3)">,
288+ InGroup<ODR>;
289+ def err_odr_objc_method_variadic_inconsistent : Error<
290+ "%select{class|instance}0 method %1 is variadic in one translation unit "
291+ "and not variadic in another">;
253292def warn_odr_objc_method_variadic_inconsistent : Warning<
254293 "%select{class|instance}0 method %1 is variadic in one translation unit "
255- "and not variadic in another">, InGroup<OneDefinitionRule>;
294+ "and not variadic in another">,
295+ InGroup<ODR>;
256296def note_odr_objc_method_here : Note<
257297 "%select{class|instance}0 method %1 also declared here">;
298+ def err_odr_objc_property_type_inconsistent : Error<
299+ "property %0 declared with incompatible types in different "
300+ "translation units (%1 vs. %2)">;
258301def warn_odr_objc_property_type_inconsistent : Warning<
259302 "property %0 declared with incompatible types in different "
260- "translation units (%1 vs. %2)">, InGroup<OneDefinitionRule>;
303+ "translation units (%1 vs. %2)">,
304+ InGroup<ODR>;
305+ def err_odr_objc_property_impl_kind_inconsistent : Error<
306+ "property %0 is implemented with %select{@synthesize|@dynamic}1 in one "
307+ "translation but %select{@dynamic|@synthesize}1 in another translation unit">;
261308def warn_odr_objc_property_impl_kind_inconsistent : Warning<
262309 "property %0 is implemented with %select{@synthesize|@dynamic}1 in one "
263310 "translation but %select{@dynamic|@synthesize}1 in another translation unit">,
264- InGroup<OneDefinitionRule >;
311+ InGroup<ODR >;
265312def note_odr_objc_property_impl_kind : Note<
266313 "property %0 is implemented with %select{@synthesize|@dynamic}1 here">;
314+ def err_odr_objc_synthesize_ivar_inconsistent : Error<
315+ "property %0 is synthesized to different ivars in different translation "
316+ "units (%1 vs. %2)">;
267317def warn_odr_objc_synthesize_ivar_inconsistent : Warning<
268318 "property %0 is synthesized to different ivars in different translation "
269- "units (%1 vs. %2)">, InGroup<OneDefinitionRule>;
319+ "units (%1 vs. %2)">,
320+ InGroup<ODR>;
270321def note_odr_objc_synthesize_ivar_here : Note<
271322 "property is synthesized to ivar %0 here">;
272323
273324// Importing C++ ASTs
274325def note_odr_friend : Note<"friend declared here">;
275326def note_odr_missing_friend : Note<"no corresponding friend here">;
327+ def err_odr_different_num_template_parameters : Error<
328+ "template parameter lists have a different number of parameters (%0 vs %1)">;
276329def warn_odr_different_num_template_parameters : Warning<
277330 "template parameter lists have a different number of parameters (%0 vs %1)">,
278- InGroup<OneDefinitionRule >;
331+ InGroup<ODR >;
279332def note_odr_template_parameter_list : Note<
280333 "template parameter list also declared here">;
334+ def err_odr_different_template_parameter_kind : Error<
335+ "template parameter has different kinds in different translation units">;
281336def warn_odr_different_template_parameter_kind : Warning<
282337 "template parameter has different kinds in different translation units">,
283- InGroup<OneDefinitionRule >;
338+ InGroup<ODR >;
284339def note_odr_template_parameter_here : Note<
285340 "template parameter declared here">;
341+ def err_odr_parameter_pack_non_pack : Error<
342+ "parameter kind mismatch; parameter is %select{not a|a}0 parameter pack">;
286343def warn_odr_parameter_pack_non_pack : Warning<
287344 "parameter kind mismatch; parameter is %select{not a|a}0 parameter pack">,
288- InGroup<OneDefinitionRule >;
345+ InGroup<ODR >;
289346def note_odr_parameter_pack_non_pack : Note<
290347 "%select{parameter|parameter pack}0 declared here">;
348+ def err_odr_non_type_parameter_type_inconsistent : Error<
349+ "non-type template parameter declared with incompatible types in different "
350+ "translation units (%0 vs. %1)">;
291351def warn_odr_non_type_parameter_type_inconsistent : Warning<
292352 "non-type template parameter declared with incompatible types in different "
293- "translation units (%0 vs. %1)">, InGroup<OneDefinitionRule>;
353+ "translation units (%0 vs. %1)">,
354+ InGroup<ODR>;
294355def err_unsupported_ast_node: Error<"cannot import unsupported AST node %0">;
295356def warn_ast_importer_missing_decl_in_decl_context : Warning<
296357 "missing %0Decl in imported DeclContext <%1:%2:%3>">;
0 commit comments