1//==--- DiagnosticSemaKinds.td - libsema diagnostics ----------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10//===----------------------------------------------------------------------===// 11// Semantic Analysis 12//===----------------------------------------------------------------------===// 13 14let Component = "Sema" in { 15let CategoryName = "Semantic Issue" in { 16 17def note_previous_decl : Note<"%0 declared here">; 18def note_entity_declared_at : Note<"%0 declared here">; 19def note_callee_decl : Note<"%0 declared here">; 20def note_defined_here : Note<"%0 defined here">; 21 22// For loop analysis 23def warn_variables_not_in_loop_body : Warning< 24 "variable%select{s| %1|s %1 and %2|s %1, %2, and %3|s %1, %2, %3, and %4}0 " 25 "used in loop condition not modified in loop body">, 26 InGroup<ForLoopAnalysis>, DefaultIgnore; 27def warn_redundant_loop_iteration : Warning< 28 "variable %0 is %select{decremented|incremented}1 both in the loop header " 29 "and in the loop body">, 30 InGroup<ForLoopAnalysis>, DefaultIgnore; 31def note_loop_iteration_here : Note<"%select{decremented|incremented}0 here">; 32 33def warn_duplicate_enum_values : Warning< 34 "element %0 has been implicitly assigned %1 which another element has " 35 "been assigned">, InGroup<DiagGroup<"duplicate-enum">>, DefaultIgnore; 36def note_duplicate_element : Note<"element %0 also has value %1">; 37 38// Absolute value functions 39def warn_unsigned_abs : Warning< 40 "taking the absolute value of unsigned type %0 has no effect">, 41 InGroup<AbsoluteValue>; 42def note_remove_abs : Note< 43 "remove the call to '%0' since unsigned values cannot be negative">; 44def warn_abs_too_small : Warning< 45 "absolute value function %0 given an argument of type %1 but has parameter " 46 "of type %2 which may cause truncation of value">, InGroup<AbsoluteValue>; 47def warn_wrong_absolute_value_type : Warning< 48 "using %select{integer|floating point|complex}1 absolute value function %0 " 49 "when argument is of %select{integer|floating point|complex}2 type">, 50 InGroup<AbsoluteValue>; 51def note_replace_abs_function : Note<"use function '%0' instead">; 52def warn_pointer_abs : Warning< 53 "taking the absolute value of %select{pointer|function|array}0 type %1 is suspicious">, 54 InGroup<AbsoluteValue>; 55 56def warn_infinite_recursive_function : Warning< 57 "all paths through this function will call itself">, 58 InGroup<InfiniteRecursion>, DefaultIgnore; 59 60def warn_comma_operator : Warning<"possible misuse of comma operator here">, 61 InGroup<DiagGroup<"comma">>, DefaultIgnore; 62def note_cast_to_void : Note<"cast expression to void to silence warning">; 63 64// Constant expressions 65def err_expr_not_ice : Error< 66 "expression is not an %select{integer|integral}0 constant expression">; 67def ext_expr_not_ice : Extension< 68 "expression is not an %select{integer|integral}0 constant expression; " 69 "folding it to a constant is a GNU extension">, InGroup<GNUFoldingConstant>; 70def err_typecheck_converted_constant_expression : Error< 71 "value of type %0 is not implicitly convertible to %1">; 72def err_typecheck_converted_constant_expression_disallowed : Error< 73 "conversion from %0 to %1 is not allowed in a converted constant expression">; 74def err_typecheck_converted_constant_expression_indirect : Error< 75 "conversion from %0 to %1 in converted constant expression would " 76 "bind reference to a temporary">; 77def err_expr_not_cce : Error< 78 "%select{case value|enumerator value|non-type template argument|" 79 "array size|constexpr if condition}0 " 80 "is not a constant expression">; 81def ext_cce_narrowing : ExtWarn< 82 "%select{case value|enumerator value|non-type template argument|" 83 "array size|constexpr if condition}0 " 84 "%select{cannot be narrowed from type %2 to %3|" 85 "evaluates to %2, which cannot be narrowed to type %3}1">, 86 InGroup<CXX11Narrowing>, DefaultError, SFINAEFailure; 87def err_ice_not_integral : Error< 88 "integral constant expression must have integral or unscoped enumeration " 89 "type, not %0">; 90def err_ice_incomplete_type : Error< 91 "integral constant expression has incomplete class type %0">; 92def err_ice_explicit_conversion : Error< 93 "integral constant expression requires explicit conversion from %0 to %1">; 94def note_ice_conversion_here : Note< 95 "conversion to %select{integral|enumeration}0 type %1 declared here">; 96def err_ice_ambiguous_conversion : Error< 97 "ambiguous conversion from type %0 to an integral or unscoped " 98 "enumeration type">; 99def err_ice_too_large : Error< 100 "integer constant expression evaluates to value %0 that cannot be " 101 "represented in a %1-bit %select{signed|unsigned}2 integer type">; 102def err_expr_not_string_literal : Error<"expression is not a string literal">; 103 104// Semantic analysis of constant literals. 105def ext_predef_outside_function : Warning< 106 "predefined identifier is only valid inside function">, 107 InGroup<DiagGroup<"predefined-identifier-outside-function">>; 108def warn_float_overflow : Warning< 109 "magnitude of floating-point constant too large for type %0; maximum is %1">, 110 InGroup<LiteralRange>; 111def warn_float_underflow : Warning< 112 "magnitude of floating-point constant too small for type %0; minimum is %1">, 113 InGroup<LiteralRange>; 114def warn_double_const_requires_fp64 : Warning< 115 "double precision constant requires cl_khr_fp64, casting to single precision">; 116def err_half_const_requires_fp16 : Error< 117 "half precision constant requires cl_khr_fp16">; 118 119// C99 variable-length arrays 120def ext_vla : Extension<"variable length arrays are a C99 feature">, 121 InGroup<VLAExtension>; 122def warn_vla_used : Warning<"variable length array used">, 123 InGroup<VLA>, DefaultIgnore; 124def err_vla_in_sfinae : Error< 125 "variable length array cannot be formed during template argument deduction">; 126def err_array_star_in_function_definition : Error< 127 "variable length array must be bound in function definition">; 128def err_vla_decl_in_file_scope : Error< 129 "variable length array declaration not allowed at file scope">; 130def err_vla_decl_has_static_storage : Error< 131 "variable length array declaration cannot have 'static' storage duration">; 132def err_vla_decl_has_extern_linkage : Error< 133 "variable length array declaration cannot have 'extern' linkage">; 134def ext_vla_folded_to_constant : Extension< 135 "variable length array folded to constant array as an extension">, InGroup<GNUFoldingConstant>; 136 137// C99 variably modified types 138def err_variably_modified_template_arg : Error< 139 "variably modified type %0 cannot be used as a template argument">; 140def err_variably_modified_nontype_template_param : Error< 141 "non-type template parameter of variably modified type %0">; 142def err_variably_modified_new_type : Error< 143 "'new' cannot allocate object of variably modified type %0">; 144 145// C99 Designated Initializers 146def ext_designated_init : Extension< 147 "designated initializers are a C99 feature">, InGroup<C99>; 148def err_array_designator_negative : Error< 149 "array designator value '%0' is negative">; 150def err_array_designator_empty_range : Error< 151 "array designator range [%0, %1] is empty">; 152def err_array_designator_non_array : Error< 153 "array designator cannot initialize non-array type %0">; 154def err_array_designator_too_large : Error< 155 "array designator index (%0) exceeds array bounds (%1)">; 156def err_field_designator_non_aggr : Error< 157 "field designator cannot initialize a " 158 "%select{non-struct, non-union|non-class}0 type %1">; 159def err_field_designator_unknown : Error< 160 "field designator %0 does not refer to any field in type %1">; 161def err_field_designator_nonfield : Error< 162 "field designator %0 does not refer to a non-static data member">; 163def note_field_designator_found : Note<"field designator refers here">; 164def err_designator_for_scalar_init : Error< 165 "designator in initializer for scalar type %0">; 166def warn_subobject_initializer_overrides : Warning< 167 "subobject initialization overrides initialization of other fields " 168 "within its enclosing subobject">, InGroup<InitializerOverrides>; 169def warn_initializer_overrides : Warning< 170 "initializer overrides prior initialization of this subobject">, 171 InGroup<InitializerOverrides>; 172def note_previous_initializer : Note< 173 "previous initialization %select{|with side effects }0is here" 174 "%select{| (side effects may not occur at run time)}0">; 175def err_designator_into_flexible_array_member : Error< 176 "designator into flexible array member subobject">; 177def note_flexible_array_member : Note< 178 "initialized flexible array member %0 is here">; 179def ext_flexible_array_init : Extension< 180 "flexible array initialization is a GNU extension">, InGroup<GNUFlexibleArrayInitializer>; 181 182// Declarations. 183def ext_duplicate_declspec : ExtWarn<"duplicate '%0' declaration specifier">, 184 InGroup<DuplicateDeclSpecifier>; 185def warn_duplicate_declspec : Warning<"duplicate '%0' declaration specifier">, 186 InGroup<DuplicateDeclSpecifier>; 187def ext_plain_complex : ExtWarn< 188 "plain '_Complex' requires a type specifier; assuming '_Complex double'">; 189def ext_integer_complex : Extension< 190 "complex integer types are a GNU extension">, InGroup<GNUComplexInteger>; 191 192def err_invalid_sign_spec : Error<"'%0' cannot be signed or unsigned">; 193def err_invalid_width_spec : Error< 194 "'%select{|short|long|long long}0 %1' is invalid">; 195def err_invalid_complex_spec : Error<"'_Complex %0' is invalid">; 196def err_friend_decl_spec : Error<"'%0' is invalid in friend declarations">; 197 198def ext_auto_type_specifier : ExtWarn< 199 "'auto' type specifier is a C++11 extension">, InGroup<CXX11>; 200def warn_auto_storage_class : Warning< 201 "'auto' storage class specifier is redundant and incompatible with C++11">, 202 InGroup<CXX11Compat>, DefaultIgnore; 203 204def warn_deprecated_register : Warning< 205 "'register' storage class specifier is deprecated " 206 "and incompatible with C++1z">, InGroup<DeprecatedRegister>; 207def ext_register_storage_class : ExtWarn< 208 "ISO C++1z does not allow 'register' storage class specifier">, 209 DefaultError, InGroup<Register>; 210 211def err_invalid_decl_spec_combination : Error< 212 "cannot combine with previous '%0' declaration specifier">; 213def err_invalid_vector_decl_spec_combination : Error< 214 "cannot combine with previous '%0' declaration specifier. " 215 "'__vector' must be first">; 216def err_invalid_pixel_decl_spec_combination : Error< 217 "'__pixel' must be preceded by '__vector'. " 218 "'%0' declaration specifier not allowed here">; 219def err_invalid_vector_bool_decl_spec : Error< 220 "cannot use '%0' with '__vector bool'">; 221def err_invalid_vector_long_decl_spec : Error< 222 "cannot use 'long' with '__vector'">; 223def err_invalid_vector_float_decl_spec : Error< 224 "cannot use 'float' with '__vector'">; 225def err_invalid_vector_double_decl_spec : Error < 226 "use of 'double' with '__vector' requires VSX support to be enabled " 227 "(available on POWER7 or later)">; 228def err_invalid_vector_long_long_decl_spec : Error < 229 "use of 'long long' with '__vector bool' requires VSX support (available on " 230 "POWER7 or later) or extended Altivec support (available on POWER8 or later) " 231 "to be enabled">; 232def err_invalid_vector_long_double_decl_spec : Error< 233 "cannot use 'long double' with '__vector'">; 234def warn_vector_long_decl_spec_combination : Warning< 235 "Use of 'long' with '__vector' is deprecated">, InGroup<Deprecated>; 236 237def err_use_of_tag_name_without_tag : Error< 238 "must use '%1' tag to refer to type %0%select{| in this scope}2">; 239 240def err_redeclaration_different_type : Error< 241 "redeclaration of %0 with a different type%diff{: $ vs $|}1,2">; 242def err_bad_variable_name : Error< 243 "%0 cannot be the name of a variable or data member">; 244def err_bad_parameter_name : Error< 245 "%0 cannot be the name of a parameter">; 246def err_parameter_name_omitted : Error<"parameter name omitted">; 247def err_anyx86_interrupt_attribute : Error< 248 "%select{x86|x86-64}0 'interrupt' attribute only applies to functions that " 249 "have %select{a 'void' return type|" 250 "only a pointer parameter optionally followed by an integer parameter|" 251 "a pointer as the first parameter|a %2 type as the second parameter}1">; 252def err_anyx86_interrupt_called : Error< 253 "interrupt service routine cannot be called directly">; 254def warn_mips_interrupt_attribute : Warning< 255 "MIPS 'interrupt' attribute only applies to functions that have " 256 "%select{no parameters|a 'void' return type}0">, 257 InGroup<IgnoredAttributes>; 258def warn_unused_parameter : Warning<"unused parameter %0">, 259 InGroup<UnusedParameter>, DefaultIgnore; 260def warn_unused_variable : Warning<"unused variable %0">, 261 InGroup<UnusedVariable>, DefaultIgnore; 262def warn_unused_local_typedef : Warning< 263 "unused %select{typedef|type alias}0 %1">, 264 InGroup<UnusedLocalTypedef>, DefaultIgnore; 265def warn_unused_property_backing_ivar : 266 Warning<"ivar %0 which backs the property is not " 267 "referenced in this property's accessor">, 268 InGroup<UnusedPropertyIvar>, DefaultIgnore; 269def warn_unused_const_variable : Warning<"unused variable %0">, 270 InGroup<UnusedConstVariable>, DefaultIgnore; 271def warn_unused_exception_param : Warning<"unused exception parameter %0">, 272 InGroup<UnusedExceptionParameter>, DefaultIgnore; 273def warn_decl_in_param_list : Warning< 274 "declaration of %0 will not be visible outside of this function">, 275 InGroup<Visibility>; 276def warn_redefinition_in_param_list : Warning< 277 "redefinition of %0 will not be visible outside of this function">, 278 InGroup<Visibility>; 279def warn_empty_parens_are_function_decl : Warning< 280 "empty parentheses interpreted as a function declaration">, 281 InGroup<VexingParse>; 282def warn_parens_disambiguated_as_function_declaration : Warning< 283 "parentheses were disambiguated as a function declaration">, 284 InGroup<VexingParse>; 285def note_additional_parens_for_variable_declaration : Note< 286 "add a pair of parentheses to declare a variable">; 287def note_empty_parens_function_call : Note< 288 "change this ',' to a ';' to call %0">; 289def note_empty_parens_default_ctor : Note< 290 "remove parentheses to declare a variable">; 291def note_empty_parens_zero_initialize : Note< 292 "replace parentheses with an initializer to declare a variable">; 293def warn_unused_function : Warning<"unused function %0">, 294 InGroup<UnusedFunction>, DefaultIgnore; 295def warn_unused_member_function : Warning<"unused member function %0">, 296 InGroup<UnusedMemberFunction>, DefaultIgnore; 297def warn_used_but_marked_unused: Warning<"%0 was marked unused but was used">, 298 InGroup<UsedButMarkedUnused>, DefaultIgnore; 299def warn_unneeded_internal_decl : Warning< 300 "%select{function|variable}0 %1 is not needed and will not be emitted">, 301 InGroup<UnneededInternalDecl>, DefaultIgnore; 302def warn_unneeded_static_internal_decl : Warning< 303 "'static' function %0 declared in header file " 304 "should be declared 'static inline'">, 305 InGroup<UnneededInternalDecl>, DefaultIgnore; 306def warn_unneeded_member_function : Warning< 307 "member function %0 is not needed and will not be emitted">, 308 InGroup<UnneededMemberFunction>, DefaultIgnore; 309def warn_unused_private_field: Warning<"private field %0 is not used">, 310 InGroup<UnusedPrivateField>, DefaultIgnore; 311 312def warn_parameter_size: Warning< 313 "%0 is a large (%1 bytes) pass-by-value argument; " 314 "pass it by reference instead ?">, InGroup<LargeByValueCopy>; 315def warn_return_value_size: Warning< 316 "return value of %0 is a large (%1 bytes) pass-by-value object; " 317 "pass it by reference instead ?">, InGroup<LargeByValueCopy>; 318def warn_return_value_udt: Warning< 319 "%0 has C-linkage specified, but returns user-defined type %1 which is " 320 "incompatible with C">, InGroup<ReturnTypeCLinkage>; 321def warn_return_value_udt_incomplete: Warning< 322 "%0 has C-linkage specified, but returns incomplete type %1 which could be " 323 "incompatible with C">, InGroup<ReturnTypeCLinkage>; 324def warn_implicit_function_decl : Warning< 325 "implicit declaration of function %0">, 326 InGroup<ImplicitFunctionDeclare>, DefaultIgnore; 327def ext_implicit_function_decl : ExtWarn< 328 "implicit declaration of function %0 is invalid in C99">, 329 InGroup<ImplicitFunctionDeclare>; 330def note_function_suggestion : Note<"did you mean %0?">; 331 332def err_ellipsis_first_param : Error< 333 "ISO C requires a named parameter before '...'">; 334def err_declarator_need_ident : Error<"declarator requires an identifier">; 335def err_language_linkage_spec_unknown : Error<"unknown linkage language">; 336def err_language_linkage_spec_not_ascii : Error< 337 "string literal in language linkage specifier cannot have an " 338 "encoding-prefix">; 339def warn_use_out_of_scope_declaration : Warning< 340 "use of out-of-scope declaration of %0">; 341def err_inline_non_function : Error< 342 "'inline' can only appear on functions%select{| and non-local variables}0">; 343def err_noreturn_non_function : Error< 344 "'_Noreturn' can only appear on functions">; 345def warn_qual_return_type : Warning< 346 "'%0' type qualifier%s1 on return type %plural{1:has|:have}1 no effect">, 347 InGroup<IgnoredQualifiers>, DefaultIgnore; 348def warn_deprecated_redundant_constexpr_static_def : Warning< 349 "out-of-line definition of constexpr static data member is redundant " 350 "in C++17 and is deprecated">, 351 InGroup<Deprecated>, DefaultIgnore; 352 353def warn_decl_shadow : 354 Warning<"declaration shadows a %select{" 355 "local variable|" 356 "variable in %2|" 357 "static data member of %2|" 358 "field of %2}1">, 359 InGroup<Shadow>, DefaultIgnore; 360def warn_ctor_parm_shadows_field: 361 Warning<"constructor parameter %0 shadows the field %1 of %2">, 362 InGroup<ShadowFieldInConstructor>, DefaultIgnore; 363def warn_modifying_shadowing_decl : 364 Warning<"modifying constructor parameter %0 that shadows a " 365 "field of %1">, 366 InGroup<ShadowFieldInConstructorModified>, DefaultIgnore; 367 368 369// C++ using declarations 370def err_using_requires_qualname : Error< 371 "using declaration requires a qualified name">; 372def err_using_typename_non_type : Error< 373 "'typename' keyword used on a non-type">; 374def err_using_dependent_value_is_type : Error< 375 "dependent using declaration resolved to type without 'typename'">; 376def err_using_decl_nested_name_specifier_is_not_class : Error< 377 "using declaration in class refers into '%0', which is not a class">; 378def err_using_decl_nested_name_specifier_is_current_class : Error< 379 "using declaration refers to its own class">; 380def err_using_decl_nested_name_specifier_is_not_base_class : Error< 381 "using declaration refers into '%0', which is not a base class of %1">; 382def err_using_decl_constructor_not_in_direct_base : Error< 383 "%0 is not a direct base of %1, cannot inherit constructors">; 384def err_using_decl_can_not_refer_to_class_member : Error< 385 "using declaration cannot refer to class member">; 386def err_ambiguous_inherited_constructor : Error< 387 "constructor of %0 inherited from multiple base class subobjects">; 388def note_ambiguous_inherited_constructor_using : Note< 389 "inherited from base class %0 here">; 390def note_using_decl_class_member_workaround : Note< 391 "use %select{an alias declaration|a typedef declaration|a reference|" 392 "a const variable|a constexpr variable}0 instead">; 393def err_using_decl_can_not_refer_to_namespace : Error< 394 "using declaration cannot refer to a namespace">; 395def err_using_decl_can_not_refer_to_scoped_enum : Error< 396 "using declaration cannot refer to a scoped enumerator">; 397def err_using_decl_constructor : Error< 398 "using declaration cannot refer to a constructor">; 399def warn_cxx98_compat_using_decl_constructor : Warning< 400 "inheriting constructors are incompatible with C++98">, 401 InGroup<CXX98Compat>, DefaultIgnore; 402def err_using_decl_destructor : Error< 403 "using declaration cannot refer to a destructor">; 404def err_using_decl_template_id : Error< 405 "using declaration cannot refer to a template specialization">; 406def note_using_decl_target : Note<"target of using declaration">; 407def note_using_decl_conflict : Note<"conflicting declaration">; 408def err_using_decl_redeclaration : Error<"redeclaration of using declaration">; 409def err_using_decl_conflict : Error< 410 "target of using declaration conflicts with declaration already in scope">; 411def err_using_decl_conflict_reverse : Error< 412 "declaration conflicts with target of using declaration already in scope">; 413def note_using_decl : Note<"%select{|previous }0using declaration">; 414 415def warn_access_decl_deprecated : Warning< 416 "access declarations are deprecated; use using declarations instead">, 417 InGroup<Deprecated>; 418def err_access_decl : Error< 419 "ISO C++11 does not allow access declarations; " 420 "use using declarations instead">; 421def warn_exception_spec_deprecated : Warning< 422 "dynamic exception specifications are deprecated">, 423 InGroup<Deprecated>, DefaultIgnore; 424def note_exception_spec_deprecated : Note<"use '%0' instead">; 425def warn_deprecated_copy_operation : Warning< 426 "definition of implicit copy %select{constructor|assignment operator}1 " 427 "for %0 is deprecated because it has a user-declared " 428 "%select{copy %select{assignment operator|constructor}1|destructor}2">, 429 InGroup<Deprecated>, DefaultIgnore; 430 431def warn_global_constructor : Warning< 432 "declaration requires a global constructor">, 433 InGroup<GlobalConstructors>, DefaultIgnore; 434def warn_global_destructor : Warning< 435 "declaration requires a global destructor">, 436 InGroup<GlobalConstructors>, DefaultIgnore; 437def warn_exit_time_destructor : Warning< 438 "declaration requires an exit-time destructor">, 439 InGroup<ExitTimeDestructors>, DefaultIgnore; 440 441def err_invalid_thread : Error< 442 "'%0' is only allowed on variable declarations">; 443def err_thread_non_global : Error< 444 "'%0' variables must have global storage">; 445def err_thread_unsupported : Error< 446 "thread-local storage is not supported for the current target">; 447 448def warn_maybe_falloff_nonvoid_function : Warning< 449 "control may reach end of non-void function">, 450 InGroup<ReturnType>; 451def warn_falloff_nonvoid_function : Warning< 452 "control reaches end of non-void function">, 453 InGroup<ReturnType>; 454def err_maybe_falloff_nonvoid_block : Error< 455 "control may reach end of non-void block">; 456def err_falloff_nonvoid_block : Error< 457 "control reaches end of non-void block">; 458def warn_suggest_noreturn_function : Warning< 459 "%select{function|method}0 %1 could be declared with attribute 'noreturn'">, 460 InGroup<MissingNoreturn>, DefaultIgnore; 461def warn_suggest_noreturn_block : Warning< 462 "block could be declared with attribute 'noreturn'">, 463 InGroup<MissingNoreturn>, DefaultIgnore; 464 465// Unreachable code. 466def warn_unreachable : Warning< 467 "code will never be executed">, 468 InGroup<UnreachableCode>, DefaultIgnore; 469def warn_unreachable_break : Warning< 470 "'break' will never be executed">, 471 InGroup<UnreachableCodeBreak>, DefaultIgnore; 472def warn_unreachable_return : Warning< 473 "'return' will never be executed">, 474 InGroup<UnreachableCodeReturn>, DefaultIgnore; 475def warn_unreachable_loop_increment : Warning< 476 "loop will run at most once (loop increment never executed)">, 477 InGroup<UnreachableCodeLoopIncrement>, DefaultIgnore; 478def note_unreachable_silence : Note< 479 "silence by adding parentheses to mark code as explicitly dead">; 480 481/// Built-in functions. 482def ext_implicit_lib_function_decl : ExtWarn< 483 "implicitly declaring library function '%0' with type %1">, 484 InGroup<ImplicitFunctionDeclare>; 485def note_include_header_or_declare : Note< 486 "include the header <%0> or explicitly provide a declaration for '%1'">; 487def note_previous_builtin_declaration : Note<"%0 is a builtin with type %1">; 488def warn_implicit_decl_requires_sysheader : Warning< 489 "declaration of built-in function '%1' requires inclusion of the header <%0>">, 490 InGroup<BuiltinRequiresHeader>; 491def warn_redecl_library_builtin : Warning< 492 "incompatible redeclaration of library function %0">, 493 InGroup<DiagGroup<"incompatible-library-redeclaration">>; 494def err_builtin_definition : Error<"definition of builtin function %0">; 495def err_arm_invalid_specialreg : Error<"invalid special register for builtin">; 496def err_invalid_cpu_supports : Error<"invalid cpu feature string for builtin">; 497def err_builtin_needs_feature : Error<"%0 needs target feature %1">; 498def err_function_needs_feature 499 : Error<"always_inline function %1 requires target feature '%2', but would " 500 "be inlined into function %0 that is compiled without support for " 501 "'%2'">; 502def warn_builtin_unknown : Warning<"use of unknown builtin %0">, 503 InGroup<ImplicitFunctionDeclare>, DefaultError; 504def warn_dyn_class_memaccess : Warning< 505 "%select{destination for|source of|first operand of|second operand of}0 this " 506 "%1 call is a pointer to %select{|class containing a }2dynamic class %3; " 507 "vtable pointer will be %select{overwritten|copied|moved|compared}4">, 508 InGroup<DiagGroup<"dynamic-class-memaccess">>; 509def note_bad_memaccess_silence : Note< 510 "explicitly cast the pointer to silence this warning">; 511def warn_sizeof_pointer_expr_memaccess : Warning< 512 "'%0' call operates on objects of type %1 while the size is based on a " 513 "different type %2">, 514 InGroup<SizeofPointerMemaccess>; 515def warn_sizeof_pointer_expr_memaccess_note : Note< 516 "did you mean to %select{dereference the argument to 'sizeof' (and multiply " 517 "it by the number of elements)|remove the addressof in the argument to " 518 "'sizeof' (and multiply it by the number of elements)|provide an explicit " 519 "length}0?">; 520def warn_sizeof_pointer_type_memaccess : Warning< 521 "argument to 'sizeof' in %0 call is the same pointer type %1 as the " 522 "%select{destination|source}2; expected %3 or an explicit length">, 523 InGroup<SizeofPointerMemaccess>; 524def warn_strlcpycat_wrong_size : Warning< 525 "size argument in %0 call appears to be size of the source; " 526 "expected the size of the destination">, 527 InGroup<DiagGroup<"strlcpy-strlcat-size">>; 528def note_strlcpycat_wrong_size : Note< 529 "change size argument to be the size of the destination">; 530def warn_memsize_comparison : Warning< 531 "size argument in %0 call is a comparison">, 532 InGroup<DiagGroup<"memsize-comparison">>; 533def note_memsize_comparison_paren : Note< 534 "did you mean to compare the result of %0 instead?">; 535def note_memsize_comparison_cast_silence : Note< 536 "explicitly cast the argument to size_t to silence this warning">; 537 538def warn_strncat_large_size : Warning< 539 "the value of the size argument in 'strncat' is too large, might lead to a " 540 "buffer overflow">, InGroup<StrncatSize>; 541def warn_strncat_src_size : Warning<"size argument in 'strncat' call appears " 542 "to be size of the source">, InGroup<StrncatSize>; 543def warn_strncat_wrong_size : Warning< 544 "the value of the size argument to 'strncat' is wrong">, InGroup<StrncatSize>; 545def note_strncat_wrong_size : Note< 546 "change the argument to be the free space in the destination buffer minus " 547 "the terminating null byte">; 548 549def warn_assume_side_effects : Warning< 550 "the argument to %0 has side effects that will be discarded">, 551 InGroup<DiagGroup<"assume">>; 552 553def warn_memcpy_chk_overflow : Warning< 554 "%0 will always overflow destination buffer">, 555 InGroup<DiagGroup<"builtin-memcpy-chk-size">>; 556 557/// main() 558// static main() is not an error in C, just in C++. 559def warn_static_main : Warning<"'main' should not be declared static">, 560 InGroup<Main>; 561def err_static_main : Error<"'main' is not allowed to be declared static">; 562def err_inline_main : Error<"'main' is not allowed to be declared inline">; 563def ext_variadic_main : ExtWarn< 564 "'main' is not allowed to be declared variadic">, InGroup<Main>; 565def ext_noreturn_main : ExtWarn< 566 "'main' is not allowed to be declared _Noreturn">, InGroup<Main>; 567def note_main_remove_noreturn : Note<"remove '_Noreturn'">; 568def err_constexpr_main : Error< 569 "'main' is not allowed to be declared constexpr">; 570def err_deleted_main : Error<"'main' is not allowed to be deleted">; 571def err_mainlike_template_decl : Error<"%0 cannot be a template">; 572def err_main_returns_nonint : Error<"'main' must return 'int'">; 573def ext_main_returns_nonint : ExtWarn<"return type of 'main' is not 'int'">, 574 InGroup<MainReturnType>; 575def note_main_change_return_type : Note<"change return type to 'int'">; 576def err_main_surplus_args : Error<"too many parameters (%0) for 'main': " 577 "must be 0, 2, or 3">; 578def warn_main_one_arg : Warning<"only one parameter on 'main' declaration">, 579 InGroup<Main>; 580def err_main_arg_wrong : Error<"%select{first|second|third|fourth}0 " 581 "parameter of 'main' (%select{argument count|argument array|environment|" 582 "platform-specific data}0) must be of type %1">; 583def err_main_global_variable : 584 Error<"main cannot be declared as global variable">; 585def warn_main_redefined : Warning<"variable named 'main' with external linkage " 586 "has undefined behavior">, InGroup<Main>; 587def ext_main_used : Extension< 588 "ISO C++ does not allow 'main' to be used by a program">, InGroup<Main>; 589 590/// parser diagnostics 591def ext_no_declarators : ExtWarn<"declaration does not declare anything">, 592 InGroup<MissingDeclarations>; 593def ext_typedef_without_a_name : ExtWarn<"typedef requires a name">, 594 InGroup<MissingDeclarations>; 595def err_typedef_not_identifier : Error<"typedef name must be an identifier">; 596def err_typedef_changes_linkage : Error<"unsupported: typedef changes linkage" 597 " of anonymous type, but linkage was already computed">; 598def note_typedef_changes_linkage : Note<"use a tag name here to establish " 599 "linkage prior to definition">; 600def err_statically_allocated_object : Error< 601 "interface type cannot be statically allocated">; 602def err_object_cannot_be_passed_returned_by_value : Error< 603 "interface type %1 cannot be %select{returned|passed}0 by value" 604 "; did you forget * in %1?">; 605def err_parameters_retval_cannot_have_fp16_type : Error< 606 "%select{parameters|function return value}0 cannot have __fp16 type; did you forget * ?">; 607def err_opencl_half_load_store : Error< 608 "%select{loading directly from|assigning directly to}0 pointer to type %1 is not allowed">; 609def err_opencl_cast_to_half : Error<"casting to type %0 is not allowed">; 610def err_opencl_half_declaration : Error< 611 "declaring variable of type %0 is not allowed">; 612def err_opencl_half_param : Error< 613 "declaring function parameter of type %0 is not allowed; did you forget * ?">; 614def err_opencl_invalid_return : Error< 615 "declaring function return value of type %0 is not allowed %select{; did you forget * ?|}1">; 616def warn_enum_value_overflow : Warning<"overflow in enumeration value">; 617def warn_pragma_options_align_reset_failed : Warning< 618 "#pragma options align=reset failed: %0">, 619 InGroup<IgnoredPragmas>; 620def err_pragma_options_align_mac68k_target_unsupported : Error< 621 "mac68k alignment pragma is not supported on this target">; 622def warn_pragma_pack_invalid_alignment : Warning< 623 "expected #pragma pack parameter to be '1', '2', '4', '8', or '16'">, 624 InGroup<IgnoredPragmas>; 625// Follow the Microsoft implementation. 626def warn_pragma_pack_show : Warning<"value of #pragma pack(show) == %0">; 627def warn_pragma_pack_pop_identifer_and_alignment : Warning< 628 "specifying both a name and alignment to 'pop' is undefined">; 629def warn_pragma_pop_failed : Warning<"#pragma %0(pop, ...) failed: %1">, 630 InGroup<IgnoredPragmas>; 631def warn_cxx_ms_struct : 632 Warning<"ms_struct may not produce Microsoft-compatible layouts for classes " 633 "with base classes or virtual functions">, 634 DefaultError, InGroup<IncompatibleMSStruct>; 635def err_section_conflict : Error<"%0 causes a section type conflict with %1">; 636def err_no_base_classes : Error<"invalid use of '__super', %0 has no base classes">; 637def err_invalid_super_scope : Error<"invalid use of '__super', " 638 "this keyword can only be used inside class or member function scope">; 639def err_super_in_lambda_unsupported : Error< 640 "use of '__super' inside a lambda is unsupported">; 641 642def warn_pragma_unused_undeclared_var : Warning< 643 "undeclared variable %0 used as an argument for '#pragma unused'">, 644 InGroup<IgnoredPragmas>; 645def warn_pragma_unused_expected_var_arg : Warning< 646 "only variables can be arguments to '#pragma unused'">, 647 InGroup<IgnoredPragmas>; 648def err_pragma_push_visibility_mismatch : Error< 649 "#pragma visibility push with no matching #pragma visibility pop">; 650def note_surrounding_namespace_ends_here : Note< 651 "surrounding namespace with visibility attribute ends here">; 652def err_pragma_pop_visibility_mismatch : Error< 653 "#pragma visibility pop with no matching #pragma visibility push">; 654def note_surrounding_namespace_starts_here : Note< 655 "surrounding namespace with visibility attribute starts here">; 656def err_pragma_loop_invalid_argument_type : Error< 657 "invalid argument of type %0; expected an integer type">; 658def err_pragma_loop_invalid_argument_value : Error< 659 "%select{invalid value '%0'; must be positive|value '%0' is too large}1">; 660def err_pragma_loop_compatibility : Error< 661 "%select{incompatible|duplicate}0 directives '%1' and '%2'">; 662def err_pragma_loop_precedes_nonloop : Error< 663 "expected a for, while, or do-while loop to follow '%0'">; 664 665/// Objective-C parser diagnostics 666def err_duplicate_class_def : Error< 667 "duplicate interface definition for class %0">; 668def err_undef_superclass : Error< 669 "cannot find interface declaration for %0, superclass of %1">; 670def err_forward_superclass : Error< 671 "attempting to use the forward class %0 as superclass of %1">; 672def err_no_nsconstant_string_class : Error< 673 "cannot find interface declaration for %0">; 674def err_recursive_superclass : Error< 675 "trying to recursively use %0 as superclass of %1">; 676def err_conflicting_aliasing_type : Error<"conflicting types for alias %0">; 677def warn_undef_interface : Warning<"cannot find interface declaration for %0">; 678def warn_duplicate_protocol_def : Warning<"duplicate protocol definition of %0 is ignored">; 679def err_protocol_has_circular_dependency : Error< 680 "protocol has circular dependency">; 681def err_undeclared_protocol : Error<"cannot find protocol declaration for %0">; 682def warn_undef_protocolref : Warning<"cannot find protocol definition for %0">; 683def warn_atprotocol_protocol : Warning< 684 "@protocol is using a forward protocol declaration of %0">, InGroup<AtProtocol>; 685def warn_readonly_property : Warning< 686 "attribute 'readonly' of property %0 restricts attribute " 687 "'readwrite' of property inherited from %1">, 688 InGroup<PropertyAttr>; 689 690def warn_property_attribute : Warning< 691 "'%1' attribute on property %0 does not match the property inherited from %2">, 692 InGroup<PropertyAttr>; 693def warn_property_types_are_incompatible : Warning< 694 "property type %0 is incompatible with type %1 inherited from %2">, 695 InGroup<DiagGroup<"incompatible-property-type">>; 696def warn_protocol_property_mismatch : Warning< 697 "property of type %0 was selected for synthesis">, 698 InGroup<DiagGroup<"protocol-property-synthesis-ambiguity">>; 699def err_undef_interface : Error<"cannot find interface declaration for %0">; 700def err_category_forward_interface : Error< 701 "cannot define %select{category|class extension}0 for undefined class %1">; 702def err_class_extension_after_impl : Error< 703 "cannot declare class extension for %0 after class implementation">; 704def note_implementation_declared : Note< 705 "class implementation is declared here">; 706def note_while_in_implementation : Note< 707 "detected while default synthesizing properties in class implementation">; 708def note_class_declared : Note< 709 "class is declared here">; 710def note_receiver_class_declared : Note< 711 "receiver is instance of class declared here">; 712def note_receiver_expr_here : Note< 713 "receiver expression is here">; 714def note_receiver_is_id : Note< 715 "receiver is treated with 'id' type for purpose of method lookup">; 716def note_suppressed_class_declare : Note< 717 "class with specified objc_requires_property_definitions attribute is declared here">; 718def err_objc_root_class_subclass : Error< 719 "objc_root_class attribute may only be specified on a root class declaration">; 720def warn_objc_root_class_missing : Warning< 721 "class %0 defined without specifying a base class">, 722 InGroup<ObjCRootClass>; 723def err_objc_runtime_visible_category : Error< 724 "cannot implement a category for class %0 that is only visible via the " 725 "Objective-C runtime">; 726def err_objc_runtime_visible_subclass : Error< 727 "cannot implement subclass %0 of a superclass %1 that is only visible via the " 728 "Objective-C runtime">; 729def note_objc_needs_superclass : Note< 730 "add a super class to fix this problem">; 731def warn_dup_category_def : Warning< 732 "duplicate definition of category %1 on interface %0">; 733def err_conflicting_super_class : Error<"conflicting super class name %0">; 734def err_dup_implementation_class : Error<"reimplementation of class %0">; 735def err_dup_implementation_category : Error< 736 "reimplementation of category %1 for class %0">; 737def err_conflicting_ivar_type : Error< 738 "instance variable %0 has conflicting type%diff{: $ vs $|}1,2">; 739def err_duplicate_ivar_declaration : Error< 740 "instance variable is already declared">; 741def warn_on_superclass_use : Warning< 742 "class implementation may not have super class">; 743def err_conflicting_ivar_bitwidth : Error< 744 "instance variable %0 has conflicting bit-field width">; 745def err_conflicting_ivar_name : Error< 746 "conflicting instance variable names: %0 vs %1">; 747def err_inconsistent_ivar_count : Error< 748 "inconsistent number of instance variables specified">; 749def warn_undef_method_impl : Warning<"method definition for %0 not found">, 750 InGroup<DiagGroup<"incomplete-implementation">>; 751 752def warn_conflicting_overriding_ret_types : Warning< 753 "conflicting return type in " 754 "declaration of %0%diff{: $ vs $|}1,2">, 755 InGroup<OverridingMethodMismatch>, DefaultIgnore; 756 757def warn_conflicting_ret_types : Warning< 758 "conflicting return type in " 759 "implementation of %0%diff{: $ vs $|}1,2">, 760 InGroup<MismatchedReturnTypes>; 761 762def warn_conflicting_overriding_ret_type_modifiers : Warning< 763 "conflicting distributed object modifiers on return type " 764 "in declaration of %0">, 765 InGroup<OverridingMethodMismatch>, DefaultIgnore; 766 767def warn_conflicting_ret_type_modifiers : Warning< 768 "conflicting distributed object modifiers on return type " 769 "in implementation of %0">, 770 InGroup<DistributedObjectModifiers>; 771 772def warn_non_covariant_overriding_ret_types : Warning< 773 "conflicting return type in " 774 "declaration of %0: %1 vs %2">, 775 InGroup<OverridingMethodMismatch>, DefaultIgnore; 776 777def warn_non_covariant_ret_types : Warning< 778 "conflicting return type in " 779 "implementation of %0: %1 vs %2">, 780 InGroup<MethodSignatures>, DefaultIgnore; 781 782def warn_conflicting_overriding_param_types : Warning< 783 "conflicting parameter types in " 784 "declaration of %0%diff{: $ vs $|}1,2">, 785 InGroup<OverridingMethodMismatch>, DefaultIgnore; 786 787def warn_conflicting_param_types : Warning< 788 "conflicting parameter types in " 789 "implementation of %0%diff{: $ vs $|}1,2">, 790 InGroup<MismatchedParameterTypes>; 791 792def warn_conflicting_param_modifiers : Warning< 793 "conflicting distributed object modifiers on parameter type " 794 "in implementation of %0">, 795 InGroup<DistributedObjectModifiers>; 796 797def warn_conflicting_overriding_param_modifiers : Warning< 798 "conflicting distributed object modifiers on parameter type " 799 "in declaration of %0">, 800 InGroup<OverridingMethodMismatch>, DefaultIgnore; 801 802def warn_non_contravariant_overriding_param_types : Warning< 803 "conflicting parameter types in " 804 "declaration of %0: %1 vs %2">, 805 InGroup<OverridingMethodMismatch>, DefaultIgnore; 806 807def warn_non_contravariant_param_types : Warning< 808 "conflicting parameter types in " 809 "implementation of %0: %1 vs %2">, 810 InGroup<MethodSignatures>, DefaultIgnore; 811 812def warn_conflicting_overriding_variadic :Warning< 813 "conflicting variadic declaration of method and its " 814 "implementation">, 815 InGroup<OverridingMethodMismatch>, DefaultIgnore; 816 817def warn_conflicting_variadic :Warning< 818 "conflicting variadic declaration of method and its " 819 "implementation">; 820 821def warn_category_method_impl_match:Warning< 822 "category is implementing a method which will also be implemented" 823 " by its primary class">, InGroup<ObjCProtocolMethodImpl>; 824 825def warn_implements_nscopying : Warning< 826"default assign attribute on property %0 which implements " 827"NSCopying protocol is not appropriate with -fobjc-gc[-only]">; 828 829def warn_multiple_method_decl : Warning<"multiple methods named %0 found">, 830 InGroup<ObjCMultipleMethodNames>; 831def warn_strict_multiple_method_decl : Warning< 832 "multiple methods named %0 found">, InGroup<StrictSelector>, DefaultIgnore; 833def warn_accessor_property_type_mismatch : Warning< 834 "type of property %0 does not match type of accessor %1">; 835def not_conv_function_declared_at : Note<"type conversion function declared here">; 836def note_method_declared_at : Note<"method %0 declared here">; 837def note_property_attribute : Note<"property %0 is declared " 838 "%select{deprecated|unavailable|partial}1 here">; 839def err_setter_type_void : Error<"type of setter must be void">; 840def err_duplicate_method_decl : Error<"duplicate declaration of method %0">; 841def warn_duplicate_method_decl : 842 Warning<"multiple declarations of method %0 found and ignored">, 843 InGroup<MethodDuplicate>, DefaultIgnore; 844def warn_objc_cdirective_format_string : 845 Warning<"using %0 directive in %select{NSString|CFString}1 " 846 "which is being passed as a formatting argument to the formatting " 847 "%select{method|CFfunction}2">, 848 InGroup<ObjCCStringFormat>, DefaultIgnore; 849def err_objc_var_decl_inclass : 850 Error<"cannot declare variable inside @interface or @protocol">; 851def error_missing_method_context : Error< 852 "missing context for method declaration">; 853def err_objc_property_attr_mutually_exclusive : Error< 854 "property attributes '%0' and '%1' are mutually exclusive">; 855def err_objc_property_requires_object : Error< 856 "property with '%0' attribute must be of object type">; 857def warn_objc_property_no_assignment_attribute : Warning< 858 "no 'assign', 'retain', or 'copy' attribute is specified - " 859 "'assign' is assumed">, 860 InGroup<ObjCPropertyNoAttribute>; 861def warn_objc_isa_use : Warning< 862 "direct access to Objective-C's isa is deprecated in favor of " 863 "object_getClass()">, InGroup<DeprecatedObjCIsaUsage>; 864def warn_objc_isa_assign : Warning< 865 "assignment to Objective-C's isa is deprecated in favor of " 866 "object_setClass()">, InGroup<DeprecatedObjCIsaUsage>; 867def warn_objc_pointer_masking : Warning< 868 "bitmasking for introspection of Objective-C object pointers is strongly " 869 "discouraged">, 870 InGroup<ObjCPointerIntrospect>; 871def warn_objc_pointer_masking_performSelector : Warning<warn_objc_pointer_masking.Text>, 872 InGroup<ObjCPointerIntrospectPerformSelector>; 873def warn_objc_property_default_assign_on_object : Warning< 874 "default property attribute 'assign' not appropriate for non-GC object">, 875 InGroup<ObjCPropertyNoAttribute>; 876def warn_property_attr_mismatch : Warning< 877 "property attribute in class extension does not match the primary class">, 878 InGroup<PropertyAttr>; 879def warn_property_implicitly_mismatched : Warning < 880 "primary property declaration is implicitly strong while redeclaration " 881 "in class extension is weak">, 882 InGroup<DiagGroup<"objc-property-implicit-mismatch">>; 883def warn_objc_property_copy_missing_on_block : Warning< 884 "'copy' attribute must be specified for the block property " 885 "when -fobjc-gc-only is specified">; 886def warn_objc_property_retain_of_block : Warning< 887 "retain'ed block property does not copy the block " 888 "- use copy attribute instead">, InGroup<ObjCRetainBlockProperty>; 889def warn_objc_readonly_property_has_setter : Warning< 890 "setter cannot be specified for a readonly property">, 891 InGroup<ObjCReadonlyPropertyHasSetter>; 892def warn_atomic_property_rule : Warning< 893 "writable atomic property %0 cannot pair a synthesized %select{getter|setter}1 " 894 "with a user defined %select{getter|setter}2">, 895 InGroup<DiagGroup<"atomic-property-with-user-defined-accessor">>; 896def note_atomic_property_fixup_suggest : Note<"setter and getter must both be " 897 "synthesized, or both be user defined,or the property must be nonatomic">; 898def err_atomic_property_nontrivial_assign_op : Error< 899 "atomic property of reference type %0 cannot have non-trivial assignment" 900 " operator">; 901def warn_cocoa_naming_owned_rule : Warning< 902 "property follows Cocoa naming" 903 " convention for returning 'owned' objects">, 904 InGroup<DiagGroup<"objc-property-matches-cocoa-ownership-rule">>; 905def err_cocoa_naming_owned_rule : Error< 906 "property follows Cocoa naming" 907 " convention for returning 'owned' objects">; 908def note_cocoa_naming_declare_family : Note< 909 "explicitly declare getter %objcinstance0 with '%1' to return an 'unowned' " 910 "object">; 911def warn_auto_synthesizing_protocol_property :Warning< 912 "auto property synthesis will not synthesize property %0" 913 " declared in protocol %1">, 914 InGroup<DiagGroup<"objc-protocol-property-synthesis">>; 915def warn_no_autosynthesis_shared_ivar_property : Warning < 916 "auto property synthesis will not synthesize property " 917 "%0 because it cannot share an ivar with another synthesized property">, 918 InGroup<ObjCNoPropertyAutoSynthesis>; 919def warn_no_autosynthesis_property : Warning< 920 "auto property synthesis will not synthesize property " 921 "%0 because it is 'readwrite' but it will be synthesized 'readonly' " 922 "via another property">, 923 InGroup<ObjCNoPropertyAutoSynthesis>; 924def warn_autosynthesis_property_in_superclass : Warning< 925 "auto property synthesis will not synthesize property " 926 "%0; it will be implemented by its superclass, use @dynamic to " 927 "acknowledge intention">, 928 InGroup<ObjCNoPropertyAutoSynthesis>; 929def warn_autosynthesis_property_ivar_match :Warning< 930 "autosynthesized property %0 will use %select{|synthesized}1 instance variable " 931 "%2, not existing instance variable %3">, 932 InGroup<DiagGroup<"objc-autosynthesis-property-ivar-name-match">>; 933def warn_missing_explicit_synthesis : Warning < 934 "auto property synthesis is synthesizing property not explicitly synthesized">, 935 InGroup<DiagGroup<"objc-missing-property-synthesis">>, DefaultIgnore; 936def warn_property_getter_owning_mismatch : Warning< 937 "property declared as returning non-retained objects" 938 "; getter returning retained objects">; 939def warn_property_redecl_getter_mismatch : Warning< 940 "getter name mismatch between property redeclaration (%1) and its original " 941 "declaration (%0)">, InGroup<PropertyAttr>; 942def error_property_setter_ambiguous_use : Error< 943 "synthesized properties %0 and %1 both claim setter %2 -" 944 " use of this setter will cause unexpected behavior">; 945def warn_default_atomic_custom_getter_setter : Warning< 946 "atomic by default property %0 has a user defined %select{getter|setter}1 " 947 "(property should be marked 'atomic' if this is intended)">, 948 InGroup<CustomAtomic>, DefaultIgnore; 949def err_use_continuation_class : Error< 950 "illegal redeclaration of property in class extension %0" 951 " (attribute must be 'readwrite', while its primary must be 'readonly')">; 952def err_type_mismatch_continuation_class : Error< 953 "type of property %0 in class extension does not match " 954 "property type in primary class">; 955def err_use_continuation_class_redeclaration_readwrite : Error< 956 "illegal redeclaration of 'readwrite' property in class extension %0" 957 " (perhaps you intended this to be a 'readwrite' redeclaration of a " 958 "'readonly' public property?)">; 959def err_continuation_class : Error<"class extension has no primary class">; 960def err_property_type : Error<"property cannot have array or function type %0">; 961def error_missing_property_context : Error< 962 "missing context for property implementation declaration">; 963def error_bad_property_decl : Error< 964 "property implementation must have its declaration in interface %0 or one of " 965 "its extensions">; 966def error_category_property : Error< 967 "property declared in category %0 cannot be implemented in " 968 "class implementation">; 969def note_property_declare : Note< 970 "property declared here">; 971def note_protocol_property_declare : Note< 972 "it could also be property of type %0 declared here">; 973def note_property_synthesize : Note< 974 "property synthesized here">; 975def error_synthesize_category_decl : Error< 976 "@synthesize not allowed in a category's implementation">; 977def error_synthesize_on_class_property : Error< 978 "@synthesize not allowed on a class property %0">; 979def error_reference_property : Error< 980 "property of reference type is not supported">; 981def error_missing_property_interface : Error< 982 "property implementation in a category with no category declaration">; 983def error_bad_category_property_decl : Error< 984 "property implementation must have its declaration in the category %0">; 985def error_bad_property_context : Error< 986 "property implementation must be in a class or category implementation">; 987def error_missing_property_ivar_decl : Error< 988 "synthesized property %0 must either be named the same as a compatible" 989 " instance variable or must explicitly name an instance variable">; 990def err_arc_perform_selector_retains : Error< 991 "performSelector names a selector which retains the object">; 992def warn_arc_perform_selector_leaks : Warning< 993 "performSelector may cause a leak because its selector is unknown">, 994 InGroup<DiagGroup<"arc-performSelector-leaks">>; 995def warn_dealloc_in_category : Warning< 996"-dealloc is being overridden in a category">, 997InGroup<DeallocInCategory>; 998def err_gc_weak_property_strong_type : Error< 999 "weak attribute declared on a __strong type property in GC mode">; 1000def warn_arc_repeated_use_of_weak : Warning < 1001 "weak %select{variable|property|implicit property|instance variable}0 %1 is " 1002 "accessed multiple times in this %select{function|method|block|lambda}2 " 1003 "but may be unpredictably set to nil; assign to a strong variable to keep " 1004 "the object alive">, 1005 InGroup<ARCRepeatedUseOfWeak>, DefaultIgnore; 1006def warn_implicitly_retains_self : Warning < 1007 "block implicitly retains 'self'; explicitly mention 'self' to indicate " 1008 "this is intended behavior">, 1009 InGroup<DiagGroup<"implicit-retain-self">>, DefaultIgnore; 1010def warn_arc_possible_repeated_use_of_weak : Warning < 1011 "weak %select{variable|property|implicit property|instance variable}0 %1 may " 1012 "be accessed multiple times in this %select{function|method|block|lambda}2 " 1013 "and may be unpredictably set to nil; assign to a strong variable to keep " 1014 "the object alive">, 1015 InGroup<ARCRepeatedUseOfWeakMaybe>, DefaultIgnore; 1016def note_arc_weak_also_accessed_here : Note< 1017 "also accessed here">; 1018def err_incomplete_synthesized_property : Error< 1019 "cannot synthesize property %0 with incomplete type %1">; 1020 1021def error_property_ivar_type : Error< 1022 "type of property %0 (%1) does not match type of instance variable %2 (%3)">; 1023def error_property_accessor_type : Error< 1024 "type of property %0 (%1) does not match type of accessor %2 (%3)">; 1025def error_ivar_in_superclass_use : Error< 1026 "property %0 attempting to use instance variable %1 declared in super class %2">; 1027def error_weak_property : Error< 1028 "existing instance variable %1 for __weak property %0 must be __weak">; 1029def error_strong_property : Error< 1030 "existing instance variable %1 for strong property %0 may not be __weak">; 1031def error_dynamic_property_ivar_decl : Error< 1032 "dynamic property cannot have instance variable specification">; 1033def error_duplicate_ivar_use : Error< 1034 "synthesized properties %0 and %1 both claim instance variable %2">; 1035def error_property_implemented : Error<"property %0 is already implemented">; 1036def warn_objc_missing_super_call : Warning< 1037 "method possibly missing a [super %0] call">, 1038 InGroup<ObjCMissingSuperCalls>; 1039def error_dealloc_bad_result_type : Error< 1040 "dealloc return type must be correctly specified as 'void' under ARC, " 1041 "instead of %0">; 1042def warn_undeclared_selector : Warning< 1043 "undeclared selector %0">, InGroup<UndeclaredSelector>, DefaultIgnore; 1044def warn_undeclared_selector_with_typo : Warning< 1045 "undeclared selector %0; did you mean %1?">, 1046 InGroup<UndeclaredSelector>, DefaultIgnore; 1047def warn_implicit_atomic_property : Warning< 1048 "property is assumed atomic by default">, InGroup<ImplicitAtomic>, DefaultIgnore; 1049def note_auto_readonly_iboutlet_fixup_suggest : Note< 1050 "property should be changed to be readwrite">; 1051def warn_auto_readonly_iboutlet_property : Warning< 1052 "readonly IBOutlet property %0 when auto-synthesized may " 1053 "not work correctly with 'nib' loader">, 1054 InGroup<DiagGroup<"readonly-iboutlet-property">>; 1055def warn_auto_implicit_atomic_property : Warning< 1056 "property is assumed atomic when auto-synthesizing the property">, 1057 InGroup<ImplicitAtomic>, DefaultIgnore; 1058def warn_unimplemented_selector: Warning< 1059 "no method with selector %0 is implemented in this translation unit">, 1060 InGroup<Selector>, DefaultIgnore; 1061def warn_unimplemented_protocol_method : Warning< 1062 "method %0 in protocol %1 not implemented">, InGroup<Protocol>; 1063def warning_multiple_selectors: Warning< 1064 "several methods with selector %0 of mismatched types are found " 1065 "for the @selector expression">, 1066 InGroup<SelectorTypeMismatch>, DefaultIgnore; 1067 1068def err_objc_kindof_nonobject : Error< 1069 "'__kindof' specifier cannot be applied to non-object type %0">; 1070def err_objc_kindof_wrong_position : Error< 1071 "'__kindof' type specifier must precede the declarator">; 1072 1073// C++ declarations 1074def err_static_assert_expression_is_not_constant : Error< 1075 "static_assert expression is not an integral constant expression">; 1076def err_static_assert_failed : Error<"static_assert failed%select{ %1|}0">; 1077def ext_static_assert_no_message : ExtWarn< 1078 "static_assert with no message is a C++1z extension">, InGroup<CXX1z>; 1079def warn_cxx14_compat_static_assert_no_message : Warning< 1080 "static_assert with no message is incompatible with C++ standards before C++1z">, 1081 DefaultIgnore, InGroup<CXXPre1zCompat>; 1082 1083def ext_inline_variable : ExtWarn< 1084 "inline variables are a C++1z extension">, InGroup<CXX1z>; 1085def warn_cxx14_compat_inline_variable : Warning< 1086 "inline variables are incompatible with C++ standards before C++1z">, 1087 DefaultIgnore, InGroup<CXXPre1zCompat>; 1088 1089def warn_inline_namespace_reopened_noninline : Warning< 1090 "inline namespace cannot be reopened as a non-inline namespace">; 1091def err_inline_namespace_mismatch : Error< 1092 "%select{|non-}0inline namespace " 1093 "cannot be reopened as %select{non-|}0inline">; 1094 1095def err_unexpected_friend : Error< 1096 "friends can only be classes or functions">; 1097def ext_enum_friend : ExtWarn< 1098 "befriending enumeration type %0 is a C++11 extension">, InGroup<CXX11>; 1099def warn_cxx98_compat_enum_friend : Warning< 1100 "befriending enumeration type %0 is incompatible with C++98">, 1101 InGroup<CXX98Compat>, DefaultIgnore; 1102def ext_nonclass_type_friend : ExtWarn< 1103 "non-class friend type %0 is a C++11 extension">, InGroup<CXX11>; 1104def warn_cxx98_compat_nonclass_type_friend : Warning< 1105 "non-class friend type %0 is incompatible with C++98">, 1106 InGroup<CXX98Compat>, DefaultIgnore; 1107def err_friend_is_member : Error< 1108 "friends cannot be members of the declaring class">; 1109def warn_cxx98_compat_friend_is_member : Warning< 1110 "friend declaration naming a member of the declaring class is incompatible " 1111 "with C++98">, InGroup<CXX98Compat>, DefaultIgnore; 1112def ext_unelaborated_friend_type : ExtWarn< 1113 "unelaborated friend declaration is a C++11 extension; specify " 1114 "'%select{struct|interface|union|class|enum}0' to befriend %1">, 1115 InGroup<CXX11>; 1116def warn_cxx98_compat_unelaborated_friend_type : Warning< 1117 "befriending %1 without '%select{struct|interface|union|class|enum}0' " 1118 "keyword is incompatible with C++98">, InGroup<CXX98Compat>, DefaultIgnore; 1119def err_qualified_friend_not_found : Error< 1120 "no function named %0 with type %1 was found in the specified scope">; 1121def err_introducing_special_friend : Error< 1122 "must use a qualified name when declaring a %select{constructor|" 1123 "destructor|conversion operator}0 as a friend">; 1124def err_tagless_friend_type_template : Error< 1125 "friend type templates must use an elaborated type">; 1126def err_no_matching_local_friend : Error< 1127 "no matching function found in local scope">; 1128def err_no_matching_local_friend_suggest : Error< 1129 "no matching function %0 found in local scope; did you mean %3?">; 1130def err_partial_specialization_friend : Error< 1131 "partial specialization cannot be declared as a friend">; 1132def err_qualified_friend_def : Error< 1133 "friend function definition cannot be qualified with '%0'">; 1134def err_friend_def_in_local_class : Error< 1135 "friend function cannot be defined in a local class">; 1136def err_friend_not_first_in_declaration : Error< 1137 "'friend' must appear first in a non-function declaration">; 1138def err_using_decl_friend : Error< 1139 "cannot befriend target of using declaration">; 1140def warn_template_qualified_friend_unsupported : Warning< 1141 "dependent nested name specifier '%0' for friend class declaration is " 1142 "not supported; turning off access control for %1">, 1143 InGroup<UnsupportedFriend>; 1144def warn_template_qualified_friend_ignored : Warning< 1145 "dependent nested name specifier '%0' for friend template declaration is " 1146 "not supported; ignoring this friend declaration">, 1147 InGroup<UnsupportedFriend>; 1148def ext_friend_tag_redecl_outside_namespace : ExtWarn< 1149 "unqualified friend declaration referring to type outside of the nearest " 1150 "enclosing namespace is a Microsoft extension; add a nested name specifier">, 1151 InGroup<MicrosoftUnqualifiedFriend>; 1152def err_pure_friend : Error<"friend declaration cannot have a pure-specifier">; 1153 1154def err_invalid_member_in_interface : Error< 1155 "%select{data member |non-public member function |static member function |" 1156 "user-declared constructor|user-declared destructor|operator |" 1157 "nested class }0%1 is not permitted within an interface type">; 1158def err_invalid_base_in_interface : Error< 1159 "interface type cannot inherit from " 1160 "%select{'struct|non-public 'interface|'class}0 %1'">; 1161 1162def err_abstract_type_in_decl : Error< 1163 "%select{return|parameter|variable|field|instance variable|" 1164 "synthesized instance variable}0 type %1 is an abstract class">; 1165def err_allocation_of_abstract_type : Error< 1166 "allocating an object of abstract class type %0">; 1167def err_throw_abstract_type : Error< 1168 "cannot throw an object of abstract type %0">; 1169def err_array_of_abstract_type : Error<"array of abstract class type %0">; 1170def err_capture_of_abstract_type : Error< 1171 "by-copy capture of value of abstract type %0">; 1172def err_capture_of_incomplete_type : Error< 1173 "by-copy capture of variable %0 with incomplete type %1">; 1174def err_capture_default_non_local : Error< 1175 "non-local lambda expression cannot have a capture-default">; 1176 1177def err_multiple_final_overriders : Error< 1178 "virtual function %q0 has more than one final overrider in %1">; 1179def note_final_overrider : Note<"final overrider of %q0 in %1">; 1180 1181def err_type_defined_in_type_specifier : Error< 1182 "%0 cannot be defined in a type specifier">; 1183def err_type_defined_in_result_type : Error< 1184 "%0 cannot be defined in the result type of a function">; 1185def err_type_defined_in_param_type : Error< 1186 "%0 cannot be defined in a parameter type">; 1187def err_type_defined_in_alias_template : Error< 1188 "%0 cannot be defined in a type alias template">; 1189def err_type_defined_in_condition : Error< 1190 "%0 cannot be defined in a condition">; 1191 1192def note_pure_virtual_function : Note< 1193 "unimplemented pure virtual method %0 in %1">; 1194 1195def note_pure_qualified_call_kext : Note< 1196 "qualified call to %0::%1 is treated as a virtual call to %1 due to -fapple-kext">; 1197 1198def err_deleted_decl_not_first : Error< 1199 "deleted definition must be first declaration">; 1200 1201def err_deleted_override : Error< 1202 "deleted function %0 cannot override a non-deleted function">; 1203 1204def err_non_deleted_override : Error< 1205 "non-deleted function %0 cannot override a deleted function">; 1206 1207def warn_weak_vtable : Warning< 1208 "%0 has no out-of-line virtual method definitions; its vtable will be " 1209 "emitted in every translation unit">, 1210 InGroup<DiagGroup<"weak-vtables">>, DefaultIgnore; 1211def warn_weak_template_vtable : Warning< 1212 "explicit template instantiation %0 will emit a vtable in every " 1213 "translation unit">, 1214 InGroup<DiagGroup<"weak-template-vtables">>, DefaultIgnore; 1215 1216def ext_using_undefined_std : ExtWarn< 1217 "using directive refers to implicitly-defined namespace 'std'">; 1218 1219// C++ exception specifications 1220def err_exception_spec_in_typedef : Error< 1221 "exception specifications are not allowed in %select{typedefs|type aliases}0">; 1222def err_distant_exception_spec : Error< 1223 "exception specifications are not allowed beyond a single level " 1224 "of indirection">; 1225def err_incomplete_in_exception_spec : Error< 1226 "%select{|pointer to |reference to }0incomplete type %1 is not allowed " 1227 "in exception specification">; 1228def ext_incomplete_in_exception_spec : ExtWarn<err_incomplete_in_exception_spec.Text>, 1229 InGroup<MicrosoftExceptionSpec>; 1230def err_rref_in_exception_spec : Error< 1231 "rvalue reference type %0 is not allowed in exception specification">; 1232def err_mismatched_exception_spec : Error< 1233 "exception specification in declaration does not match previous declaration">; 1234def ext_mismatched_exception_spec : ExtWarn<err_mismatched_exception_spec.Text>, 1235 InGroup<MicrosoftExceptionSpec>; 1236def err_override_exception_spec : Error< 1237 "exception specification of overriding function is more lax than " 1238 "base version">; 1239def ext_override_exception_spec : ExtWarn<err_override_exception_spec.Text>, 1240 InGroup<MicrosoftExceptionSpec>; 1241def err_incompatible_exception_specs : Error< 1242 "target exception specification is not superset of source">; 1243def err_deep_exception_specs_differ : Error< 1244 "exception specifications of %select{return|argument}0 types differ">; 1245def err_missing_exception_specification : Error< 1246 "%0 is missing exception specification '%1'">; 1247def ext_missing_exception_specification : ExtWarn< 1248 err_missing_exception_specification.Text>, 1249 InGroup<DiagGroup<"missing-exception-spec">>; 1250def ext_ms_missing_exception_specification : ExtWarn< 1251 err_missing_exception_specification.Text>, 1252 InGroup<MicrosoftExceptionSpec>; 1253def err_noexcept_needs_constant_expression : Error< 1254 "argument to noexcept specifier must be a constant expression">; 1255def err_exception_spec_not_parsed : Error< 1256 "exception specification is not available until end of class definition">; 1257 1258// C++ access checking 1259def err_class_redeclared_with_different_access : Error< 1260 "%0 redeclared with '%1' access">; 1261def err_access : Error< 1262 "%1 is a %select{private|protected}0 member of %3">, AccessControl; 1263def ext_ms_using_declaration_inaccessible : ExtWarn< 1264 "using declaration referring to inaccessible member '%0' (which refers " 1265 "to accessible member '%1') is a Microsoft compatibility extension">, 1266 AccessControl, InGroup<MicrosoftUsingDecl>; 1267def err_access_ctor : Error< 1268 "calling a %select{private|protected}0 constructor of class %2">, 1269 AccessControl; 1270def ext_rvalue_to_reference_access_ctor : Extension< 1271 "C++98 requires an accessible copy constructor for class %2 when binding " 1272 "a reference to a temporary; was %select{private|protected}0">, 1273 AccessControl, InGroup<BindToTemporaryCopy>; 1274def err_access_base_ctor : Error< 1275 // The ERRORs represent other special members that aren't constructors, in 1276 // hopes that someone will bother noticing and reporting if they appear 1277 "%select{base class|inherited virtual base class}0 %1 has %select{private|" 1278 "protected}3 %select{default |copy |move |*ERROR* |*ERROR* " 1279 "|*ERROR*|}2constructor">, AccessControl; 1280def err_access_field_ctor : Error< 1281 // The ERRORs represent other special members that aren't constructors, in 1282 // hopes that someone will bother noticing and reporting if they appear 1283 "field of type %0 has %select{private|protected}2 " 1284 "%select{default |copy |move |*ERROR* |*ERROR* |*ERROR* |}1constructor">, 1285 AccessControl; 1286def err_access_friend_function : Error< 1287 "friend function %1 is a %select{private|protected}0 member of %3">, 1288 AccessControl; 1289 1290def err_access_dtor : Error< 1291 "calling a %select{private|protected}1 destructor of class %0">, 1292 AccessControl; 1293def err_access_dtor_base : 1294 Error<"base class %0 has %select{private|protected}1 destructor">, 1295 AccessControl; 1296def err_access_dtor_vbase : 1297 Error<"inherited virtual base class %1 has " 1298 "%select{private|protected}2 destructor">, 1299 AccessControl; 1300def err_access_dtor_temp : 1301 Error<"temporary of type %0 has %select{private|protected}1 destructor">, 1302 AccessControl; 1303def err_access_dtor_exception : 1304 Error<"exception object of type %0 has %select{private|protected}1 " 1305 "destructor">, AccessControl; 1306def err_access_dtor_field : 1307 Error<"field of type %1 has %select{private|protected}2 destructor">, 1308 AccessControl; 1309def err_access_dtor_var : 1310 Error<"variable of type %1 has %select{private|protected}2 destructor">, 1311 AccessControl; 1312def err_access_dtor_ivar : 1313 Error<"instance variable of type %0 has %select{private|protected}1 " 1314 "destructor">, 1315 AccessControl; 1316def note_previous_access_declaration : Note< 1317 "previously declared '%1' here">; 1318def note_access_natural : Note< 1319 "%select{|implicitly }1declared %select{private|protected}0 here">; 1320def note_access_constrained_by_path : Note< 1321 "constrained by %select{|implicitly }1%select{private|protected}0" 1322 " inheritance here">; 1323def note_access_protected_restricted_noobject : Note< 1324 "must name member using the type of the current context %0">; 1325def note_access_protected_restricted_ctordtor : Note< 1326 "protected %select{constructor|destructor}0 can only be used to " 1327 "%select{construct|destroy}0 a base class subobject">; 1328def note_access_protected_restricted_object : Note< 1329 "can only access this member on an object of type %0">; 1330def warn_cxx98_compat_sfinae_access_control : Warning< 1331 "substitution failure due to access control is incompatible with C++98">, 1332 InGroup<CXX98Compat>, DefaultIgnore, NoSFINAE; 1333 1334// C++ name lookup 1335def err_incomplete_nested_name_spec : Error< 1336 "incomplete type %0 named in nested name specifier">; 1337def err_dependent_nested_name_spec : Error< 1338 "nested name specifier for a declaration cannot depend on a template " 1339 "parameter">; 1340def err_nested_name_member_ref_lookup_ambiguous : Error< 1341 "lookup of %0 in member access expression is ambiguous">; 1342def ext_nested_name_member_ref_lookup_ambiguous : ExtWarn< 1343 "lookup of %0 in member access expression is ambiguous; using member of %1">, 1344 InGroup<AmbigMemberTemplate>; 1345def note_ambig_member_ref_object_type : Note< 1346 "lookup in the object type %0 refers here">; 1347def note_ambig_member_ref_scope : Note< 1348 "lookup from the current scope refers here">; 1349def err_qualified_member_nonclass : Error< 1350 "qualified member access refers to a member in %0">; 1351def err_incomplete_member_access : Error< 1352 "member access into incomplete type %0">; 1353def err_incomplete_type : Error< 1354 "incomplete type %0 where a complete type is required">; 1355def warn_cxx98_compat_enum_nested_name_spec : Warning< 1356 "enumeration type in nested name specifier is incompatible with C++98">, 1357 InGroup<CXX98Compat>, DefaultIgnore; 1358def err_nested_name_spec_is_not_class : Error< 1359 "%0 cannot appear before '::' because it is not a class" 1360 "%select{ or namespace|, namespace, or enumeration}1; did you mean ':'?">; 1361def ext_nested_name_spec_is_enum : ExtWarn< 1362 "use of enumeration in a nested name specifier is a C++11 extension">, 1363 InGroup<CXX11>; 1364 1365// C++ class members 1366def err_storageclass_invalid_for_member : Error< 1367 "storage class specified for a member declaration">; 1368def err_mutable_function : Error<"'mutable' cannot be applied to functions">; 1369def err_mutable_reference : Error<"'mutable' cannot be applied to references">; 1370def ext_mutable_reference : ExtWarn< 1371 "'mutable' on a reference type is a Microsoft extension">, 1372 InGroup<MicrosoftMutableReference>; 1373def err_mutable_const : Error<"'mutable' and 'const' cannot be mixed">; 1374def err_mutable_nonmember : Error< 1375 "'mutable' can only be applied to member variables">; 1376def err_virtual_in_union : Error< 1377 "unions cannot have virtual functions">; 1378def err_virtual_non_function : Error< 1379 "'virtual' can only appear on non-static member functions">; 1380def err_virtual_out_of_class : Error< 1381 "'virtual' can only be specified inside the class definition">; 1382def err_virtual_member_function_template : Error< 1383 "'virtual' cannot be specified on member function templates">; 1384def err_static_overrides_virtual : Error< 1385 "'static' member function %0 overrides a virtual function in a base class">; 1386def err_explicit_non_function : Error< 1387 "'explicit' can only appear on non-static member functions">; 1388def err_explicit_out_of_class : Error< 1389 "'explicit' can only be specified inside the class definition">; 1390def err_explicit_non_ctor_or_conv_function : Error< 1391 "'explicit' can only be applied to a constructor or conversion function">; 1392def err_static_not_bitfield : Error<"static member %0 cannot be a bit-field">; 1393def err_static_out_of_line : Error< 1394 "'static' can only be specified inside the class definition">; 1395def err_storage_class_for_static_member : Error< 1396 "static data member definition cannot specify a storage class">; 1397def err_typedef_not_bitfield : Error<"typedef member %0 cannot be a bit-field">; 1398def err_not_integral_type_bitfield : Error< 1399 "bit-field %0 has non-integral type %1">; 1400def err_not_integral_type_anon_bitfield : Error< 1401 "anonymous bit-field has non-integral type %0">; 1402def err_member_function_initialization : Error< 1403 "initializer on function does not look like a pure-specifier">; 1404def err_non_virtual_pure : Error< 1405 "%0 is not virtual and cannot be declared pure">; 1406def ext_pure_function_definition : ExtWarn< 1407 "function definition with pure-specifier is a Microsoft extension">, 1408 InGroup<MicrosoftPureDefinition>; 1409def err_implicit_object_parameter_init : Error< 1410 "cannot initialize object parameter of type %0 with an expression " 1411 "of type %1">; 1412def err_qualified_member_of_unrelated : Error< 1413 "%q0 is not a member of class %1">; 1414 1415def warn_call_to_pure_virtual_member_function_from_ctor_dtor : Warning< 1416 "call to pure virtual member function %0 has undefined behavior; " 1417 "overrides of %0 in subclasses are not available in the " 1418 "%select{constructor|destructor}1 of %2">; 1419 1420def note_member_declared_at : Note<"member is declared here">; 1421def note_ivar_decl : Note<"instance variable is declared here">; 1422def note_bitfield_decl : Note<"bit-field is declared here">; 1423def note_implicit_param_decl : Note<"%0 is an implicit parameter">; 1424def note_member_synthesized_at : Note< 1425 "implicit %select{default constructor|copy constructor|move constructor|copy " 1426 "assignment operator|move assignment operator|destructor}0 for %1 first " 1427 "required here">; 1428def note_inhctor_synthesized_at : Note< 1429 "inherited constructor for %0 first required here">; 1430def err_missing_default_ctor : Error< 1431 "%select{constructor for %1 must explicitly initialize the|" 1432 "implicit default constructor for %1 must explicitly initialize the|" 1433 "cannot use constructor inherited from base class %4;}0 " 1434 "%select{base class|member}2 %3 %select{which|which|of %1}0 " 1435 "does not have a default constructor">; 1436def note_due_to_dllexported_class : Note< 1437 "due to '%0' being dllexported%select{|; try compiling in C++11 mode}1">; 1438 1439def err_illegal_union_or_anon_struct_member : Error< 1440 "%select{anonymous struct|union}0 member %1 has a non-trivial " 1441 "%select{constructor|copy constructor|move constructor|copy assignment " 1442 "operator|move assignment operator|destructor}2">; 1443def warn_cxx98_compat_nontrivial_union_or_anon_struct_member : Warning< 1444 "%select{anonymous struct|union}0 member %1 with a non-trivial " 1445 "%select{constructor|copy constructor|move constructor|copy assignment " 1446 "operator|move assignment operator|destructor}2 is incompatible with C++98">, 1447 InGroup<CXX98Compat>, DefaultIgnore; 1448 1449def note_nontrivial_virtual_dtor : Note< 1450 "destructor for %0 is not trivial because it is virtual">; 1451def note_nontrivial_has_virtual : Note< 1452 "because type %0 has a virtual %select{member function|base class}1">; 1453def note_nontrivial_no_def_ctor : Note< 1454 "because %select{base class of |field of |}0type %1 has no " 1455 "default constructor">; 1456def note_user_declared_ctor : Note< 1457 "implicit default constructor suppressed by user-declared constructor">; 1458def note_nontrivial_no_copy : Note< 1459 "because no %select{<<ERROR>>|constructor|constructor|assignment operator|" 1460 "assignment operator|<<ERROR>>}2 can be used to " 1461 "%select{<<ERROR>>|copy|move|copy|move|<<ERROR>>}2 " 1462 "%select{base class|field|an object}0 of type %3">; 1463def note_nontrivial_user_provided : Note< 1464 "because %select{base class of |field of |}0type %1 has a user-provided " 1465 "%select{default constructor|copy constructor|move constructor|" 1466 "copy assignment operator|move assignment operator|destructor}2">; 1467def note_nontrivial_in_class_init : Note< 1468 "because field %0 has an initializer">; 1469def note_nontrivial_param_type : Note< 1470 "because its parameter is %diff{of type $, not $|of the wrong type}2,3">; 1471def note_nontrivial_default_arg : Note<"because it has a default argument">; 1472def note_nontrivial_variadic : Note<"because it is a variadic function">; 1473def note_nontrivial_subobject : Note< 1474 "because the function selected to %select{construct|copy|move|copy|move|" 1475 "destroy}2 %select{base class|field}0 of type %1 is not trivial">; 1476def note_nontrivial_objc_ownership : Note< 1477 "because type %0 has a member with %select{no|no|__strong|__weak|" 1478 "__autoreleasing}1 ownership">; 1479 1480def err_static_data_member_not_allowed_in_anon_struct : Error< 1481 "static data member %0 not allowed in anonymous struct">; 1482def ext_static_data_member_in_union : ExtWarn< 1483 "static data member %0 in union is a C++11 extension">, InGroup<CXX11>; 1484def warn_cxx98_compat_static_data_member_in_union : Warning< 1485 "static data member %0 in union is incompatible with C++98">, 1486 InGroup<CXX98Compat>, DefaultIgnore; 1487def ext_union_member_of_reference_type : ExtWarn< 1488 "union member %0 has reference type %1, which is a Microsoft extension">, 1489 InGroup<MicrosoftUnionMemberReference>; 1490def err_union_member_of_reference_type : Error< 1491 "union member %0 has reference type %1">; 1492def ext_anonymous_struct_union_qualified : Extension< 1493 "anonymous %select{struct|union}0 cannot be '%1'">; 1494def err_different_return_type_for_overriding_virtual_function : Error< 1495 "virtual function %0 has a different return type " 1496 "%diff{($) than the function it overrides (which has return type $)|" 1497 "than the function it overrides}1,2">; 1498def note_overridden_virtual_function : Note< 1499 "overridden virtual function is here">; 1500def err_conflicting_overriding_cc_attributes : Error< 1501 "virtual function %0 has different calling convention attributes " 1502 "%diff{($) than the function it overrides (which has calling convention $)|" 1503 "than the function it overrides}1,2">; 1504 1505def err_covariant_return_inaccessible_base : Error< 1506 "invalid covariant return for virtual function: %1 is a " 1507 "%select{private|protected}2 base class of %0">, AccessControl; 1508def err_covariant_return_ambiguous_derived_to_base_conv : Error< 1509 "return type of virtual function %3 is not covariant with the return type of " 1510 "the function it overrides (ambiguous conversion from derived class " 1511 "%0 to base class %1:%2)">; 1512def err_covariant_return_not_derived : Error< 1513 "return type of virtual function %0 is not covariant with the return type of " 1514 "the function it overrides (%1 is not derived from %2)">; 1515def err_covariant_return_incomplete : Error< 1516 "return type of virtual function %0 is not covariant with the return type of " 1517 "the function it overrides (%1 is incomplete)">; 1518def err_covariant_return_type_different_qualifications : Error< 1519 "return type of virtual function %0 is not covariant with the return type of " 1520 "the function it overrides (%1 has different qualifiers than %2)">; 1521def err_covariant_return_type_class_type_more_qualified : Error< 1522 "return type of virtual function %0 is not covariant with the return type of " 1523 "the function it overrides (class type %1 is more qualified than class " 1524 "type %2">; 1525 1526// C++ constructors 1527def err_constructor_cannot_be : Error<"constructor cannot be declared '%0'">; 1528def err_invalid_qualified_constructor : Error< 1529 "'%0' qualifier is not allowed on a constructor">; 1530def err_ref_qualifier_constructor : Error< 1531 "ref-qualifier '%select{&&|&}0' is not allowed on a constructor">; 1532 1533def err_constructor_return_type : Error< 1534 "constructor cannot have a return type">; 1535def err_constructor_redeclared : Error<"constructor cannot be redeclared">; 1536def err_constructor_byvalue_arg : Error< 1537 "copy constructor must pass its first argument by reference">; 1538def warn_no_constructor_for_refconst : Warning< 1539 "%select{struct|interface|union|class|enum}0 %1 does not declare any " 1540 "constructor to initialize its non-modifiable members">; 1541def note_refconst_member_not_initialized : Note< 1542 "%select{const|reference}0 member %1 will never be initialized">; 1543def ext_ms_explicit_constructor_call : ExtWarn< 1544 "explicit constructor calls are a Microsoft extension">, 1545 InGroup<MicrosoftExplicitConstructorCall>; 1546 1547// C++ destructors 1548def err_destructor_not_member : Error< 1549 "destructor must be a non-static member function">; 1550def err_destructor_cannot_be : Error<"destructor cannot be declared '%0'">; 1551def err_invalid_qualified_destructor : Error< 1552 "'%0' qualifier is not allowed on a destructor">; 1553def err_ref_qualifier_destructor : Error< 1554 "ref-qualifier '%select{&&|&}0' is not allowed on a destructor">; 1555def err_destructor_return_type : Error<"destructor cannot have a return type">; 1556def err_destructor_redeclared : Error<"destructor cannot be redeclared">; 1557def err_destructor_with_params : Error<"destructor cannot have any parameters">; 1558def err_destructor_variadic : Error<"destructor cannot be variadic">; 1559def err_destructor_typedef_name : Error< 1560 "destructor cannot be declared using a %select{typedef|type alias}1 %0 of the class name">; 1561def err_destructor_name : Error< 1562 "expected the class name after '~' to name the enclosing class">; 1563def err_destructor_class_name : Error< 1564 "expected the class name after '~' to name a destructor">; 1565def err_ident_in_dtor_not_a_type : Error< 1566 "identifier %0 in object destruction expression does not name a type">; 1567def err_destructor_expr_type_mismatch : Error< 1568 "destructor type %0 in object destruction expression does not match the " 1569 "type %1 of the object being destroyed">; 1570def note_destructor_type_here : Note< 1571 "type %0 is declared here">; 1572 1573def err_destructor_template : Error< 1574 "destructor cannot be declared as a template">; 1575 1576// C++ initialization 1577def err_init_conversion_failed : Error< 1578 "cannot initialize %select{a variable|a parameter|return object|an " 1579 "exception object|a member subobject|an array element|a new value|a value|a " 1580 "base class|a constructor delegation|a vector element|a block element|a " 1581 "complex element|a lambda capture|a compound literal initializer|a " 1582 "related result|a parameter of CF audited function}0 " 1583 "%diff{of type $ with an %select{rvalue|lvalue}2 of type $|" 1584 "with an %select{rvalue|lvalue}2 of incompatible type}1,3" 1585 "%select{|: different classes%diff{ ($ vs $)|}5,6" 1586 "|: different number of parameters (%5 vs %6)" 1587 "|: type mismatch at %ordinal5 parameter%diff{ ($ vs $)|}6,7" 1588 "|: different return type%diff{ ($ vs $)|}5,6" 1589 "|: different qualifiers (" 1590 "%select{none|const|restrict|const and restrict|volatile|const and volatile|" 1591 "volatile and restrict|const, volatile, and restrict}5 vs " 1592 "%select{none|const|restrict|const and restrict|volatile|const and volatile|" 1593 "volatile and restrict|const, volatile, and restrict}6)}4">; 1594 1595def err_lvalue_to_rvalue_ref : Error<"rvalue reference %diff{to type $ cannot " 1596 "bind to lvalue of type $|cannot bind to incompatible lvalue}0,1">; 1597def err_lvalue_reference_bind_to_initlist : Error< 1598 "%select{non-const|volatile}0 lvalue reference to type %1 cannot bind to an " 1599 "initializer list temporary">; 1600def err_lvalue_reference_bind_to_temporary : Error< 1601 "%select{non-const|volatile}0 lvalue reference %diff{to type $ cannot bind " 1602 "to a temporary of type $|cannot bind to incompatible temporary}1,2">; 1603def err_lvalue_reference_bind_to_unrelated : Error< 1604 "%select{non-const|volatile}0 lvalue reference " 1605 "%diff{to type $ cannot bind to a value of unrelated type $|" 1606 "cannot bind to a value of unrelated type}1,2">; 1607def err_reference_bind_drops_quals : Error< 1608 "binding value %diff{of type $ to reference to type $|to reference}0,1 " 1609 "drops %select{<<ERROR>>|'const'|'restrict'|'const' and 'restrict'|" 1610 "'volatile'|'const' and 'volatile'|'restrict' and 'volatile'|" 1611 "'const', 'restrict', and 'volatile'}2 qualifier%plural{1:|2:|4:|:s}2">; 1612def err_reference_bind_failed : Error< 1613 "reference %diff{to type $ could not bind to an %select{rvalue|lvalue}1 of " 1614 "type $|could not bind to %select{rvalue|lvalue}1 of incompatible type}0,2">; 1615def err_reference_bind_init_list : Error< 1616 "reference to type %0 cannot bind to an initializer list">; 1617def warn_temporary_array_to_pointer_decay : Warning< 1618 "pointer is initialized by a temporary array, which will be destroyed at the " 1619 "end of the full-expression">, 1620 InGroup<DiagGroup<"address-of-array-temporary">>; 1621def err_init_list_bad_dest_type : Error< 1622 "%select{|non-aggregate }0type %1 cannot be initialized with an initializer " 1623 "list">; 1624def err_member_function_call_bad_cvr : Error<"member function %0 not viable: " 1625 "'this' argument has type %1, but function is not marked " 1626 "%select{const|restrict|const or restrict|volatile|const or volatile|" 1627 "volatile or restrict|const, volatile, or restrict}2">; 1628 1629def err_reference_bind_to_bitfield : Error< 1630 "%select{non-const|volatile}0 reference cannot bind to " 1631 "bit-field%select{| %1}2">; 1632def err_reference_bind_to_vector_element : Error< 1633 "%select{non-const|volatile}0 reference cannot bind to vector element">; 1634def err_reference_var_requires_init : Error< 1635 "declaration of reference variable %0 requires an initializer">; 1636def err_reference_without_init : Error< 1637 "reference to type %0 requires an initializer">; 1638def note_value_initialization_here : Note< 1639 "in value-initialization of type %0 here">; 1640def err_reference_has_multiple_inits : Error< 1641 "reference cannot be initialized with multiple values">; 1642def err_init_non_aggr_init_list : Error< 1643 "initialization of non-aggregate type %0 with an initializer list">; 1644def err_init_reference_member_uninitialized : Error< 1645 "reference member of type %0 uninitialized">; 1646def note_uninit_reference_member : Note< 1647 "uninitialized reference member is here">; 1648def warn_field_is_uninit : Warning<"field %0 is uninitialized when used here">, 1649 InGroup<Uninitialized>; 1650def warn_base_class_is_uninit : Warning< 1651 "base class %0 is uninitialized when used here to access %q1">, 1652 InGroup<Uninitialized>; 1653def warn_reference_field_is_uninit : Warning< 1654 "reference %0 is not yet bound to a value when used here">, 1655 InGroup<Uninitialized>; 1656def note_uninit_in_this_constructor : Note< 1657 "during field initialization in %select{this|the implicit default}0 " 1658 "constructor">; 1659def warn_static_self_reference_in_init : Warning< 1660 "static variable %0 is suspiciously used within its own initialization">, 1661 InGroup<UninitializedStaticSelfInit>; 1662def warn_uninit_self_reference_in_init : Warning< 1663 "variable %0 is uninitialized when used within its own initialization">, 1664 InGroup<Uninitialized>; 1665def warn_uninit_self_reference_in_reference_init : Warning< 1666 "reference %0 is not yet bound to a value when used within its own" 1667 " initialization">, 1668 InGroup<Uninitialized>; 1669def warn_uninit_var : Warning< 1670 "variable %0 is uninitialized when %select{used here|captured by block}1">, 1671 InGroup<Uninitialized>, DefaultIgnore; 1672def warn_sometimes_uninit_var : Warning< 1673 "variable %0 is %select{used|captured}1 uninitialized whenever " 1674 "%select{'%3' condition is %select{true|false}4|" 1675 "'%3' loop %select{is entered|exits because its condition is false}4|" 1676 "'%3' loop %select{condition is true|exits because its condition is false}4|" 1677 "switch %3 is taken|" 1678 "its declaration is reached|" 1679 "%3 is called}2">, 1680 InGroup<UninitializedSometimes>, DefaultIgnore; 1681def warn_maybe_uninit_var : Warning< 1682 "variable %0 may be uninitialized when " 1683 "%select{used here|captured by block}1">, 1684 InGroup<UninitializedMaybe>, DefaultIgnore; 1685def note_var_declared_here : Note<"variable %0 is declared here">; 1686def note_uninit_var_use : Note< 1687 "%select{uninitialized use occurs|variable is captured by block}0 here">; 1688def warn_uninit_byref_blockvar_captured_by_block : Warning< 1689 "block pointer variable %0 is uninitialized when captured by block">, 1690 InGroup<Uninitialized>, DefaultIgnore; 1691def note_block_var_fixit_add_initialization : Note< 1692 "did you mean to use __block %0?">; 1693def note_in_omitted_aggregate_initializer : Note< 1694 "in implicit initialization of %select{array element %1|field %1}0 " 1695 "with omitted initializer">; 1696def note_in_reference_temporary_list_initializer : Note< 1697 "in initialization of temporary of type %0 created to " 1698 "list-initialize this reference">; 1699def note_var_fixit_add_initialization : Note< 1700 "initialize the variable %0 to silence this warning">; 1701def note_uninit_fixit_remove_cond : Note< 1702 "remove the %select{'%1' if its condition|condition if it}0 " 1703 "is always %select{false|true}2">; 1704def err_init_incomplete_type : Error<"initialization of incomplete type %0">; 1705 1706def warn_unsequenced_mod_mod : Warning< 1707 "multiple unsequenced modifications to %0">, InGroup<Unsequenced>; 1708def warn_unsequenced_mod_use : Warning< 1709 "unsequenced modification and access to %0">, InGroup<Unsequenced>; 1710 1711def err_temp_copy_no_viable : Error< 1712 "no viable constructor %select{copying variable|copying parameter|" 1713 "returning object|throwing object|copying member subobject|copying array " 1714 "element|allocating object|copying temporary|initializing base subobject|" 1715 "initializing vector element|capturing value}0 of type %1">; 1716def ext_rvalue_to_reference_temp_copy_no_viable : Extension< 1717 "no viable constructor %select{copying variable|copying parameter|" 1718 "returning object|throwing object|copying member subobject|copying array " 1719 "element|allocating object|copying temporary|initializing base subobject|" 1720 "initializing vector element|capturing value}0 of type %1; C++98 requires a copy " 1721 "constructor when binding a reference to a temporary">, 1722 InGroup<BindToTemporaryCopy>; 1723def err_temp_copy_ambiguous : Error< 1724 "ambiguous constructor call when %select{copying variable|copying " 1725 "parameter|returning object|throwing object|copying member subobject|copying " 1726 "array element|allocating object|copying temporary|initializing base subobject|" 1727 "initializing vector element|capturing value}0 of type %1">; 1728def err_temp_copy_deleted : Error< 1729 "%select{copying variable|copying parameter|returning object|throwing " 1730 "object|copying member subobject|copying array element|allocating object|" 1731 "copying temporary|initializing base subobject|initializing vector element|" 1732 "capturing value}0 of type %1 invokes deleted constructor">; 1733def err_temp_copy_incomplete : Error< 1734 "copying a temporary object of incomplete type %0">; 1735def warn_cxx98_compat_temp_copy : Warning< 1736 "%select{copying variable|copying parameter|returning object|throwing " 1737 "object|copying member subobject|copying array element|allocating object|" 1738 "copying temporary|initializing base subobject|initializing vector element}1 " 1739 "of type %2 when binding a reference to a temporary would %select{invoke " 1740 "an inaccessible constructor|find no viable constructor|find ambiguous " 1741 "constructors|invoke a deleted constructor}0 in C++98">, 1742 InGroup<CXX98CompatBindToTemporaryCopy>, DefaultIgnore; 1743def err_selected_explicit_constructor : Error< 1744 "chosen constructor is explicit in copy-initialization">; 1745def note_constructor_declared_here : Note< 1746 "constructor declared here">; 1747 1748// C++11 decltype 1749def err_decltype_in_declarator : Error< 1750 "'decltype' cannot be used to name a declaration">; 1751 1752// C++11 auto 1753def warn_cxx98_compat_auto_type_specifier : Warning< 1754 "'auto' type specifier is incompatible with C++98">, 1755 InGroup<CXX98Compat>, DefaultIgnore; 1756def err_auto_variable_cannot_appear_in_own_initializer : Error< 1757 "variable %0 declared with %select{'auto'|'decltype(auto)'|'__auto_type'}1 " 1758 "type cannot appear in its own initializer">; 1759def err_illegal_decl_array_of_auto : Error< 1760 "'%0' declared as array of %1">; 1761def err_new_array_of_auto : Error< 1762 "cannot allocate array of 'auto'">; 1763def err_auto_not_allowed : Error< 1764 "%select{'auto'|'decltype(auto)'|'__auto_type'}0 not allowed " 1765 "%select{in function prototype" 1766 "|in non-static struct member|in struct member" 1767 "|in non-static union member|in union member" 1768 "|in non-static class member|in interface member" 1769 "|in exception declaration|in template parameter|in block literal" 1770 "|in template argument|in typedef|in type alias|in function return type" 1771 "|in conversion function type|here|in lambda parameter" 1772 "|in type allocated by 'new'|in K&R-style function parameter}1">; 1773def err_auto_not_allowed_var_inst : Error< 1774 "'auto' variable template instantiation is not allowed">; 1775def err_auto_var_requires_init : Error< 1776 "declaration of variable %0 with type %1 requires an initializer">; 1777def err_auto_new_requires_ctor_arg : Error< 1778 "new expression for type %0 requires a constructor argument">; 1779def err_auto_new_list_init : Error< 1780 "new expression for type %0 cannot use list-initialization">; 1781def err_auto_var_init_no_expression : Error< 1782 "initializer for variable %0 with type %1 is empty">; 1783def err_auto_var_init_multiple_expressions : Error< 1784 "initializer for variable %0 with type %1 contains multiple expressions">; 1785def err_auto_var_init_paren_braces : Error< 1786 "cannot deduce type for variable %1 with type %2 from " 1787 "%select{parenthesized|nested}0 initializer list">; 1788def err_auto_new_ctor_multiple_expressions : Error< 1789 "new expression for type %0 contains multiple constructor arguments">; 1790def err_auto_missing_trailing_return : Error< 1791 "'auto' return without trailing return type; deduced return types are a " 1792 "C++14 extension">; 1793def err_deduced_return_type : Error< 1794 "deduced return types are a C++14 extension">; 1795def err_trailing_return_without_auto : Error< 1796 "function with trailing return type must specify return type 'auto', not %0">; 1797def err_trailing_return_in_parens : Error< 1798 "trailing return type may not be nested within parentheses">; 1799def err_auto_var_deduction_failure : Error< 1800 "variable %0 with type %1 has incompatible initializer of type %2">; 1801def err_auto_var_deduction_failure_from_init_list : Error< 1802 "cannot deduce actual type for variable %0 with type %1 from initializer list">; 1803def err_auto_new_deduction_failure : Error< 1804 "new expression for type %0 has incompatible constructor argument of type %1">; 1805def err_auto_different_deductions : Error< 1806 "'%select{auto|decltype(auto)|__auto_type}0' deduced as %1 in declaration " 1807 "of %2 and deduced as %3 in declaration of %4">; 1808def err_implied_std_initializer_list_not_found : Error< 1809 "cannot deduce type of initializer list because std::initializer_list was " 1810 "not found; include <initializer_list>">; 1811def err_malformed_std_initializer_list : Error< 1812 "std::initializer_list must be a class template with a single type parameter">; 1813def warn_dangling_std_initializer_list : Warning< 1814 "array backing the initializer list will be destroyed at the end of " 1815 "%select{the full-expression|the constructor}0">, 1816 InGroup<DiagGroup<"dangling-initializer-list">>; 1817def err_auto_init_list_from_c : Error< 1818 "cannot use __auto_type with initializer list in C">; 1819def err_auto_bitfield : Error< 1820 "cannot pass bit-field as __auto_type initializer in C">; 1821 1822// C++1y decltype(auto) type 1823def err_decltype_auto_cannot_be_combined : Error< 1824 "'decltype(auto)' cannot be combined with other type specifiers">; 1825def err_decltype_auto_function_declarator_not_declaration : Error< 1826 "'decltype(auto)' can only be used as a return type " 1827 "in a function declaration">; 1828def err_decltype_auto_compound_type : Error< 1829 "cannot form %select{pointer to|reference to|array of}0 'decltype(auto)'">; 1830def err_decltype_auto_initializer_list : Error< 1831 "cannot deduce 'decltype(auto)' from initializer list">; 1832 1833// C++1y deduced return types 1834def err_auto_fn_deduction_failure : Error< 1835 "cannot deduce return type %0 from returned value of type %1">; 1836def err_auto_fn_different_deductions : Error< 1837 "'%select{auto|decltype(auto)}0' in return type deduced as %1 here but " 1838 "deduced as %2 in earlier return statement">; 1839def err_auto_fn_used_before_defined : Error< 1840 "function %0 with deduced return type cannot be used before it is defined">; 1841def err_auto_fn_no_return_but_not_auto : Error< 1842 "cannot deduce return type %0 for function with no return statements">; 1843def err_auto_fn_return_void_but_not_auto : Error< 1844 "cannot deduce return type %0 from omitted return expression">; 1845def err_auto_fn_return_init_list : Error< 1846 "cannot deduce return type from initializer list">; 1847def err_auto_fn_virtual : Error< 1848 "function with deduced return type cannot be virtual">; 1849 1850// C++11 override control 1851def override_keyword_only_allowed_on_virtual_member_functions : Error< 1852 "only virtual member functions can be marked '%0'">; 1853def override_keyword_hides_virtual_member_function : Error< 1854 "non-virtual member function marked '%0' hides virtual member " 1855 "%select{function|functions}1">; 1856def err_function_marked_override_not_overriding : Error< 1857 "%0 marked 'override' but does not override any member functions">; 1858def warn_function_marked_not_override_overriding : Warning < 1859 "%0 overrides a member function but is not marked 'override'">, 1860 InGroup<CXX11WarnOverrideMethod>; 1861def err_class_marked_final_used_as_base : Error< 1862 "base %0 is marked '%select{final|sealed}1'">; 1863def warn_abstract_final_class : Warning< 1864 "abstract class is marked '%select{final|sealed}0'">, InGroup<AbstractFinalClass>; 1865 1866// C++11 attributes 1867def err_repeat_attribute : Error<"%0 attribute cannot be repeated">; 1868 1869// C++11 final 1870def err_final_function_overridden : Error< 1871 "declaration of %0 overrides a '%select{final|sealed}1' function">; 1872 1873// C++11 scoped enumerations 1874def err_enum_invalid_underlying : Error< 1875 "non-integral type %0 is an invalid underlying type">; 1876def err_enumerator_too_large : Error< 1877 "enumerator value is not representable in the underlying type %0">; 1878def ext_enumerator_too_large : ExtWarn< 1879 "enumerator value is not representable in the underlying type %0">, 1880 InGroup<MicrosoftEnumValue>; 1881def err_enumerator_wrapped : Error< 1882 "enumerator value %0 is not representable in the underlying type %1">; 1883def err_enum_redeclare_type_mismatch : Error< 1884 "enumeration redeclared with different underlying type %0 (was %1)">; 1885def err_enum_redeclare_fixed_mismatch : Error< 1886 "enumeration previously declared with %select{non|}0fixed underlying type">; 1887def err_enum_redeclare_scoped_mismatch : Error< 1888 "enumeration previously declared as %select{un|}0scoped">; 1889def err_enum_class_reference : Error< 1890 "reference to %select{|scoped }0enumeration must use 'enum' " 1891 "not 'enum class'">; 1892def err_only_enums_have_underlying_types : Error< 1893 "only enumeration types have underlying types">; 1894def err_underlying_type_of_incomplete_enum : Error< 1895 "cannot determine underlying type of incomplete enumeration type %0">; 1896 1897// C++11 delegating constructors 1898def err_delegating_ctor : Error< 1899 "delegating constructors are permitted only in C++11">; 1900def warn_cxx98_compat_delegating_ctor : Warning< 1901 "delegating constructors are incompatible with C++98">, 1902 InGroup<CXX98Compat>, DefaultIgnore; 1903def err_delegating_initializer_alone : Error< 1904 "an initializer for a delegating constructor must appear alone">; 1905def warn_delegating_ctor_cycle : Warning< 1906 "constructor for %0 creates a delegation cycle">, DefaultError, 1907 InGroup<DelegatingCtorCycles>; 1908def note_it_delegates_to : Note<"it delegates to">; 1909def note_which_delegates_to : Note<"which delegates to">; 1910 1911// C++11 range-based for loop 1912def err_for_range_decl_must_be_var : Error< 1913 "for range declaration must declare a variable">; 1914def err_for_range_storage_class : Error< 1915 "loop variable %0 may not be declared %select{'extern'|'static'|" 1916 "'__private_extern__'|'auto'|'register'|'constexpr'}1">; 1917def err_type_defined_in_for_range : Error< 1918 "types may not be defined in a for range declaration">; 1919def err_for_range_deduction_failure : Error< 1920 "cannot use type %0 as a range">; 1921def err_for_range_incomplete_type : Error< 1922 "cannot use incomplete type %0 as a range">; 1923def err_for_range_iter_deduction_failure : Error< 1924 "cannot use type %0 as an iterator">; 1925def err_for_range_member_begin_end_mismatch : Error< 1926 "range type %0 has '%select{begin|end}1' member but no '%select{end|begin}1' member">; 1927def ext_for_range_begin_end_types_differ : ExtWarn< 1928 "'begin' and 'end' returning different types (%0 and %1) is a C++1z extension">, 1929 InGroup<CXX1z>; 1930def warn_for_range_begin_end_types_differ : Warning< 1931 "'begin' and 'end' returning different types (%0 and %1) is incompatible " 1932 "with C++ standards before C++1z">, InGroup<CXXPre1zCompat>, DefaultIgnore; 1933def note_in_for_range: Note< 1934 "when looking up '%select{begin|end}0' function for range expression " 1935 "of type %1">; 1936def err_for_range_invalid: Error< 1937 "invalid range expression of type %0; no viable '%select{begin|end}1' " 1938 "function available">; 1939def err_range_on_array_parameter : Error< 1940 "cannot build range expression with array function parameter %0 since " 1941 "parameter with array type %1 is treated as pointer type %2">; 1942def err_for_range_dereference : Error< 1943 "invalid range expression of type %0; did you mean to dereference it " 1944 "with '*'?">; 1945def note_for_range_invalid_iterator : Note < 1946 "in implicit call to 'operator%select{!=|*|++}0' for iterator of type %1">; 1947def note_for_range_begin_end : Note< 1948 "selected '%select{begin|end}0' %select{function|template }1%2 with iterator type %3">; 1949def warn_for_range_const_reference_copy : Warning< 1950 "loop variable %0 " 1951 "%diff{has type $ but is initialized with type $" 1952 "| is initialized with a value of a different type}1,2 resulting in a copy">, 1953 InGroup<RangeLoopAnalysis>, DefaultIgnore; 1954def note_use_type_or_non_reference : Note< 1955 "use non-reference type %0 to keep the copy or type %1 to prevent copying">; 1956def warn_for_range_variable_always_copy : Warning< 1957 "loop variable %0 is always a copy because the range of type %1 does not " 1958 "return a reference">, 1959 InGroup<RangeLoopAnalysis>, DefaultIgnore; 1960def note_use_non_reference_type : Note<"use non-reference type %0">; 1961def warn_for_range_copy : Warning< 1962 "loop variable %0 of type %1 creates a copy from type %2">, 1963 InGroup<RangeLoopAnalysis>, DefaultIgnore; 1964def note_use_reference_type : Note<"use reference type %0 to prevent copying">; 1965 1966// C++11 constexpr 1967def warn_cxx98_compat_constexpr : Warning< 1968 "'constexpr' specifier is incompatible with C++98">, 1969 InGroup<CXX98Compat>, DefaultIgnore; 1970// FIXME: Maybe this should also go in -Wc++14-compat? 1971def warn_cxx14_compat_constexpr_not_const : Warning< 1972 "'constexpr' non-static member function will not be implicitly 'const' " 1973 "in C++14; add 'const' to avoid a change in behavior">, 1974 InGroup<DiagGroup<"constexpr-not-const">>; 1975def err_invalid_constexpr : Error< 1976 "%select{function parameter|typedef|non-static data member}0 " 1977 "cannot be constexpr">; 1978def err_invalid_constexpr_member : Error<"non-static data member cannot be " 1979 "constexpr%select{; did you intend to make it %select{const|static}0?|}1">; 1980def err_constexpr_tag : Error< 1981 "%select{class|struct|interface|union|enum}0 cannot be marked constexpr">; 1982def err_constexpr_dtor : Error<"destructor cannot be marked constexpr">; 1983def err_constexpr_no_declarators : Error< 1984 "constexpr can only be used in variable and function declarations">; 1985def err_invalid_constexpr_var_decl : Error< 1986 "constexpr variable declaration must be a definition">; 1987def err_constexpr_static_mem_var_requires_init : Error< 1988 "declaration of constexpr static data member %0 requires an initializer">; 1989def err_constexpr_var_non_literal : Error< 1990 "constexpr variable cannot have non-literal type %0">; 1991def err_constexpr_var_requires_const_init : Error< 1992 "constexpr variable %0 must be initialized by a constant expression">; 1993def err_constexpr_redecl_mismatch : Error< 1994 "%select{non-constexpr declaration of %0 follows constexpr declaration" 1995 "|constexpr declaration of %0 follows non-constexpr declaration}1">; 1996def err_constexpr_virtual : Error<"virtual function cannot be constexpr">; 1997def err_constexpr_virtual_base : Error< 1998 "constexpr %select{member function|constructor}0 not allowed in " 1999 "%select{struct|interface|class}1 with virtual base " 2000 "%plural{1:class|:classes}2">; 2001def note_non_literal_incomplete : Note< 2002 "incomplete type %0 is not a literal type">; 2003def note_non_literal_virtual_base : Note<"%select{struct|interface|class}0 " 2004 "with virtual base %plural{1:class|:classes}1 is not a literal type">; 2005def note_constexpr_virtual_base_here : Note<"virtual base class declared here">; 2006def err_constexpr_non_literal_return : Error< 2007 "constexpr function's return type %0 is not a literal type">; 2008def err_constexpr_non_literal_param : Error< 2009 "constexpr %select{function|constructor}1's %ordinal0 parameter type %2 is " 2010 "not a literal type">; 2011def err_constexpr_body_invalid_stmt : Error< 2012 "statement not allowed in constexpr %select{function|constructor}0">; 2013def ext_constexpr_body_invalid_stmt : ExtWarn< 2014 "use of this statement in a constexpr %select{function|constructor}0 " 2015 "is a C++14 extension">, InGroup<CXX14>; 2016def warn_cxx11_compat_constexpr_body_invalid_stmt : Warning< 2017 "use of this statement in a constexpr %select{function|constructor}0 " 2018 "is incompatible with C++ standards before C++14">, 2019 InGroup<CXXPre14Compat>, DefaultIgnore; 2020def ext_constexpr_type_definition : ExtWarn< 2021 "type definition in a constexpr %select{function|constructor}0 " 2022 "is a C++14 extension">, InGroup<CXX14>; 2023def warn_cxx11_compat_constexpr_type_definition : Warning< 2024 "type definition in a constexpr %select{function|constructor}0 " 2025 "is incompatible with C++ standards before C++14">, 2026 InGroup<CXXPre14Compat>, DefaultIgnore; 2027def err_constexpr_vla : Error< 2028 "variably-modified type %0 cannot be used in a constexpr " 2029 "%select{function|constructor}1">; 2030def ext_constexpr_local_var : ExtWarn< 2031 "variable declaration in a constexpr %select{function|constructor}0 " 2032 "is a C++14 extension">, InGroup<CXX14>; 2033def warn_cxx11_compat_constexpr_local_var : Warning< 2034 "variable declaration in a constexpr %select{function|constructor}0 " 2035 "is incompatible with C++ standards before C++14">, 2036 InGroup<CXXPre14Compat>, DefaultIgnore; 2037def err_constexpr_local_var_static : Error< 2038 "%select{static|thread_local}1 variable not permitted in a constexpr " 2039 "%select{function|constructor}0">; 2040def err_constexpr_local_var_non_literal_type : Error< 2041 "variable of non-literal type %1 cannot be defined in a constexpr " 2042 "%select{function|constructor}0">; 2043def err_constexpr_local_var_no_init : Error< 2044 "variables defined in a constexpr %select{function|constructor}0 must be " 2045 "initialized">; 2046def ext_constexpr_function_never_constant_expr : ExtWarn< 2047 "constexpr %select{function|constructor}0 never produces a " 2048 "constant expression">, InGroup<DiagGroup<"invalid-constexpr">>, DefaultError; 2049def err_enable_if_never_constant_expr : Error< 2050 "'enable_if' attribute expression never produces a constant expression">; 2051def err_constexpr_body_no_return : Error< 2052 "no return statement in constexpr function">; 2053def err_constexpr_return_missing_expr : Error< 2054 "non-void constexpr function %0 should return a value">; 2055def warn_cxx11_compat_constexpr_body_no_return : Warning< 2056 "constexpr function with no return statements is incompatible with C++ " 2057 "standards before C++14">, InGroup<CXXPre14Compat>, DefaultIgnore; 2058def ext_constexpr_body_multiple_return : ExtWarn< 2059 "multiple return statements in constexpr function is a C++14 extension">, 2060 InGroup<CXX14>; 2061def warn_cxx11_compat_constexpr_body_multiple_return : Warning< 2062 "multiple return statements in constexpr function " 2063 "is incompatible with C++ standards before C++14">, 2064 InGroup<CXXPre14Compat>, DefaultIgnore; 2065def note_constexpr_body_previous_return : Note< 2066 "previous return statement is here">; 2067def err_constexpr_function_try_block : Error< 2068 "function try block not allowed in constexpr %select{function|constructor}0">; 2069def err_constexpr_union_ctor_no_init : Error< 2070 "constexpr union constructor does not initialize any member">; 2071def err_constexpr_ctor_missing_init : Error< 2072 "constexpr constructor must initialize all members">; 2073def note_constexpr_ctor_missing_init : Note< 2074 "member not initialized by constructor">; 2075def note_non_literal_no_constexpr_ctors : Note< 2076 "%0 is not literal because it is not an aggregate and has no constexpr " 2077 "constructors other than copy or move constructors">; 2078def note_non_literal_base_class : Note< 2079 "%0 is not literal because it has base class %1 of non-literal type">; 2080def note_non_literal_field : Note< 2081 "%0 is not literal because it has data member %1 of " 2082 "%select{non-literal|volatile}3 type %2">; 2083def note_non_literal_user_provided_dtor : Note< 2084 "%0 is not literal because it has a user-provided destructor">; 2085def note_non_literal_nontrivial_dtor : Note< 2086 "%0 is not literal because it has a non-trivial destructor">; 2087def warn_private_extern : Warning< 2088 "use of __private_extern__ on a declaration may not produce external symbol " 2089 "private to the linkage unit and is deprecated">, InGroup<PrivateExtern>; 2090def note_private_extern : Note< 2091 "use __attribute__((visibility(\"hidden\"))) attribute instead">; 2092 2093// C++ Concepts TS 2094def err_concept_wrong_decl_kind : Error< 2095 "'concept' can only appear on the definition of a function template or variable template">; 2096def err_concept_decls_may_only_appear_in_namespace_scope : Error< 2097 "concept declarations may only appear in namespace scope">; 2098def err_function_concept_not_defined : Error< 2099 "function concept declaration must be a definition">; 2100def err_var_concept_not_initialized : Error< 2101 "variable concept declaration must be initialized">; 2102def err_function_concept_exception_spec : Error< 2103 "function concept cannot have exception specification">; 2104def err_concept_decl_invalid_specifiers : Error< 2105 "%select{variable|function}0 concept cannot be declared " 2106 "'%select{thread_local|inline|friend|constexpr}1'">; 2107def err_function_concept_with_params : Error< 2108 "function concept cannot have any parameters">; 2109def err_function_concept_bool_ret : Error< 2110 "declared return type of function concept must be 'bool'">; 2111def err_variable_concept_bool_decl : Error< 2112 "declared type of variable concept must be 'bool'">; 2113def err_concept_specified_specialization : Error< 2114 "'concept' cannot be applied on an " 2115 "%select{explicit instantiation|explicit specialization|partial specialization}0">; 2116def err_concept_specialized : Error< 2117 "%select{function|variable}0 concept cannot be " 2118 "%select{explicitly instantiated|explicitly specialized|partially specialized}1">; 2119 2120// C++11 char16_t/char32_t 2121def warn_cxx98_compat_unicode_type : Warning< 2122 "'%0' type specifier is incompatible with C++98">, 2123 InGroup<CXX98Compat>, DefaultIgnore; 2124 2125// __make_integer_seq 2126def err_integer_sequence_negative_length : Error< 2127 "integer sequences must have non-negative sequence length">; 2128def err_integer_sequence_integral_element_type : Error< 2129 "integer sequences must have integral element type">; 2130 2131// __type_pack_element 2132def err_type_pack_element_out_of_bounds : Error< 2133 "a parameter pack may not be accessed at an out of bounds index">; 2134 2135// Objective-C++ 2136def err_objc_decls_may_only_appear_in_global_scope : Error< 2137 "Objective-C declarations may only appear in global scope">; 2138def warn_auto_var_is_id : Warning< 2139 "'auto' deduced as 'id' in declaration of %0">, 2140 InGroup<DiagGroup<"auto-var-id">>; 2141 2142// Attributes 2143def err_nsobject_attribute : Error< 2144 "'NSObject' attribute is for pointer types only">; 2145def err_attributes_are_not_compatible : Error< 2146 "%0 and %1 attributes are not compatible">; 2147def err_attribute_wrong_number_arguments : Error< 2148 "%0 attribute %plural{0:takes no arguments|1:takes one argument|" 2149 ":requires exactly %1 arguments}1">; 2150def err_attribute_too_many_arguments : Error< 2151 "%0 attribute takes no more than %1 argument%s1">; 2152def err_attribute_too_few_arguments : Error< 2153 "%0 attribute takes at least %1 argument%s1">; 2154def err_attribute_invalid_vector_type : Error<"invalid vector element type %0">; 2155def err_attribute_bad_neon_vector_size : Error< 2156 "Neon vector size must be 64 or 128 bits">; 2157def err_attribute_requires_positive_integer : Error< 2158 "%0 attribute requires a positive integral compile time constant expression">; 2159def err_attribute_requires_opencl_version : Error< 2160 "%0 attribute requires OpenCL version %1%select{| or above}2">; 2161def warn_unsupported_target_attribute 2162 : Warning<"Ignoring unsupported '%0' in the target attribute string">, 2163 InGroup<IgnoredAttributes>; 2164def err_attribute_unsupported 2165 : Error<"%0 attribute is not supported for this target">; 2166// The err_*_attribute_argument_not_int are seperate because they're used by 2167// VerifyIntegerConstantExpression. 2168def err_aligned_attribute_argument_not_int : Error< 2169 "'aligned' attribute requires integer constant">; 2170def err_align_value_attribute_argument_not_int : Error< 2171 "'align_value' attribute requires integer constant">; 2172def err_alignas_attribute_wrong_decl_type : Error< 2173 "%0 attribute cannot be applied to a %select{function parameter|" 2174 "variable with 'register' storage class|'catch' variable|bit-field}1">; 2175def err_alignas_missing_on_definition : Error< 2176 "%0 must be specified on definition if it is specified on any declaration">; 2177def note_alignas_on_declaration : Note<"declared with %0 attribute here">; 2178def err_alignas_mismatch : Error< 2179 "redeclaration has different alignment requirement (%1 vs %0)">; 2180def err_alignas_underaligned : Error< 2181 "requested alignment is less than minimum alignment of %1 for type %0">; 2182def err_attribute_argument_n_type : Error< 2183 "%0 attribute requires parameter %1 to be %select{int or bool|an integer " 2184 "constant|a string|an identifier}2">; 2185def err_attribute_argument_type : Error< 2186 "%0 attribute requires %select{int or bool|an integer " 2187 "constant|a string|an identifier}1">; 2188def err_attribute_argument_outof_range : Error< 2189 "%0 attribute requires integer constant between %1 and %2 inclusive">; 2190def err_init_priority_object_attr : Error< 2191 "can only use 'init_priority' attribute on file-scope definitions " 2192 "of objects of class type">; 2193def err_attribute_argument_vec_type_hint : Error< 2194 "invalid attribute argument %0 - expecting a vector or vectorizable scalar type">; 2195def err_attribute_argument_out_of_bounds : Error< 2196 "%0 attribute parameter %1 is out of bounds">; 2197def err_attribute_only_once_per_parameter : Error< 2198 "%0 attribute can only be applied once per parameter">; 2199def err_attribute_uuid_malformed_guid : Error< 2200 "uuid attribute contains a malformed GUID">; 2201def warn_attribute_pointers_only : Warning< 2202 "%0 attribute only applies to%select{| constant}1 pointer arguments">, 2203 InGroup<IgnoredAttributes>; 2204def err_attribute_pointers_only : Error<warn_attribute_pointers_only.Text>; 2205def warn_attribute_return_pointers_only : Warning< 2206 "%0 attribute only applies to return values that are pointers">, 2207 InGroup<IgnoredAttributes>; 2208def warn_attribute_return_pointers_refs_only : Warning< 2209 "%0 attribute only applies to return values that are pointers or references">, 2210 InGroup<IgnoredAttributes>; 2211def warn_attribute_pointer_or_reference_only : Warning< 2212 "%0 attribute only applies to a pointer or reference (%1 is invalid)">, 2213 InGroup<IgnoredAttributes>; 2214def err_attribute_no_member_pointers : Error< 2215 "%0 attribute cannot be used with pointers to members">; 2216def err_attribute_invalid_implicit_this_argument : Error< 2217 "%0 attribute is invalid for the implicit this argument">; 2218def err_ownership_type : Error< 2219 "%0 attribute only applies to %select{pointer|integer}1 arguments">; 2220def err_ownership_returns_index_mismatch : Error< 2221 "'ownership_returns' attribute index does not match; here it is %0">; 2222def note_ownership_returns_index_mismatch : Note< 2223 "declared with index %0 here">; 2224def err_format_strftime_third_parameter : Error< 2225 "strftime format attribute requires 3rd parameter to be 0">; 2226def err_format_attribute_requires_variadic : Error< 2227 "format attribute requires variadic function">; 2228def err_format_attribute_not : Error<"format argument not %0">; 2229def err_format_attribute_result_not : Error<"function does not return %0">; 2230def err_format_attribute_implicit_this_format_string : Error< 2231 "format attribute cannot specify the implicit this argument as the format " 2232 "string">; 2233def err_init_method_bad_return_type : Error< 2234 "init methods must return an object pointer type, not %0">; 2235def err_attribute_invalid_size : Error< 2236 "vector size not an integral multiple of component size">; 2237def err_attribute_zero_size : Error<"zero vector size">; 2238def err_attribute_size_too_large : Error<"vector size too large">; 2239def err_typecheck_vector_not_convertable : Error< 2240 "cannot convert between vector values of different size (%0 and %1)">; 2241def err_typecheck_vector_not_convertable_non_scalar : Error< 2242 "cannot convert between vector and non-scalar values (%0 and %1)">; 2243def err_typecheck_vector_lengths_not_equal : Error< 2244 "vector operands do not have the same number of elements (%0 and %1)">; 2245def err_ext_vector_component_exceeds_length : Error< 2246 "vector component access exceeds type %0">; 2247def err_ext_vector_component_name_illegal : Error< 2248 "illegal vector component name '%0'">; 2249def err_attribute_address_space_negative : Error< 2250 "address space is negative">; 2251def err_attribute_address_space_too_high : Error< 2252 "address space is larger than the maximum supported (%0)">; 2253def err_attribute_address_multiple_qualifiers : Error< 2254 "multiple address spaces specified for type">; 2255def err_attribute_address_function_type : Error< 2256 "function type may not be qualified with an address space">; 2257def err_as_qualified_auto_decl : Error< 2258 "automatic variable qualified with an address space">; 2259def err_arg_with_address_space : Error< 2260 "parameter may not be qualified with an address space">; 2261def err_field_with_address_space : Error< 2262 "field may not be qualified with an address space">; 2263def err_attr_objc_ownership_redundant : Error< 2264 "the type %0 is already explicitly ownership-qualified">; 2265def err_invalid_nsnumber_type : Error< 2266 "%0 is not a valid literal type for NSNumber">; 2267def err_objc_illegal_boxed_expression_type : Error< 2268 "illegal type %0 used in a boxed expression">; 2269def err_objc_non_trivially_copyable_boxed_expression_type : Error< 2270 "non-trivially copyable type %0 cannot be used in a boxed expression">; 2271def err_objc_incomplete_boxed_expression_type : Error< 2272 "incomplete type %0 used in a boxed expression">; 2273def err_undeclared_objc_literal_class : Error< 2274 "definition of class %0 must be available to use Objective-C " 2275 "%select{array literals|dictionary literals|numeric literals|boxed expressions|" 2276 "string literals}1">; 2277def err_undeclared_boxing_method : Error< 2278 "declaration of %0 is missing in %1 class">; 2279def err_objc_literal_method_sig : Error< 2280 "literal construction method %0 has incompatible signature">; 2281def note_objc_literal_method_param : Note< 2282 "%select{first|second|third}0 parameter has unexpected type %1 " 2283 "(should be %2)">; 2284def note_objc_literal_method_return : Note< 2285 "method returns unexpected type %0 (should be an object type)">; 2286def err_invalid_collection_element : Error< 2287 "collection element of type %0 is not an Objective-C object">; 2288def err_box_literal_collection : Error< 2289 "%select{string|character|boolean|numeric}0 literal must be prefixed by '@' " 2290 "in a collection">; 2291def warn_objc_literal_comparison : Warning< 2292 "direct comparison of %select{an array literal|a dictionary literal|" 2293 "a numeric literal|a boxed expression|}0 has undefined behavior">, 2294 InGroup<ObjCLiteralComparison>; 2295def err_missing_atsign_prefix : Error< 2296 "string literal must be prefixed by '@' ">; 2297def warn_objc_string_literal_comparison : Warning< 2298 "direct comparison of a string literal has undefined behavior">, 2299 InGroup<ObjCStringComparison>; 2300def warn_concatenated_nsarray_literal : Warning< 2301 "concatenated NSString literal for an NSArray expression - " 2302 "possibly missing a comma">, 2303 InGroup<ObjCStringConcatenation>; 2304def note_objc_literal_comparison_isequal : Note< 2305 "use 'isEqual:' instead">; 2306def warn_objc_collection_literal_element : Warning< 2307 "object of type %0 is not compatible with " 2308 "%select{array element type|dictionary key type|dictionary value type}1 %2">, 2309 InGroup<ObjCLiteralConversion>; 2310def err_swift_param_attr_not_swiftcall : Error< 2311 "'%0' parameter can only be used with swiftcall calling convention">; 2312def err_swift_indirect_result_not_first : Error< 2313 "'swift_indirect_result' parameters must be first parameters of function">; 2314def err_swift_context_not_before_swift_error_result : Error< 2315 "'swift_context' parameter can only be followed by 'swift_error_result' " 2316 "parameter">; 2317def err_swift_error_result_not_last : Error< 2318 "'swift_error_result' parameter must be last parameter of function">; 2319def err_swift_error_result_not_after_swift_context : Error< 2320 "'swift_error_result' parameter must follow 'swift_context' parameter">; 2321def err_swift_abi_parameter_wrong_type : Error< 2322 "'%0' parameter must have pointer%select{| to unqualified pointer}1 type; " 2323 "type here is %2">; 2324 2325def err_attribute_argument_is_zero : Error< 2326 "%0 attribute must be greater than 0">; 2327def warn_attribute_argument_n_negative : Warning< 2328 "%0 attribute parameter %1 is negative and will be ignored">, 2329 InGroup<CudaCompat>; 2330def err_property_function_in_objc_container : Error< 2331 "use of Objective-C property in function nested in Objective-C " 2332 "container not supported, move function outside its container">; 2333 2334let CategoryName = "Cocoa API Issue" in { 2335def warn_objc_redundant_literal_use : Warning< 2336 "using %0 with a literal is redundant">, InGroup<ObjCRedundantLiteralUse>; 2337} 2338 2339def err_attr_tlsmodel_arg : Error<"tls_model must be \"global-dynamic\", " 2340 "\"local-dynamic\", \"initial-exec\" or \"local-exec\"">; 2341 2342def err_tls_var_aligned_over_maximum : Error< 2343 "alignment (%0) of thread-local variable %1 is greater than the maximum supported " 2344 "alignment (%2) for a thread-local variable on this target">; 2345 2346def err_only_annotate_after_access_spec : Error< 2347 "access specifier can only have annotation attributes">; 2348 2349def err_attribute_section_invalid_for_target : Error< 2350 "argument to 'section' attribute is not valid for this target: %0">; 2351def warn_mismatched_section : Warning< 2352 "section does not match previous declaration">, InGroup<Section>; 2353 2354def err_anonymous_property: Error< 2355 "anonymous property is not supported">; 2356def err_property_is_variably_modified : Error< 2357 "property %0 has a variably modified type">; 2358def err_no_accessor_for_property : Error< 2359 "no %select{getter|setter}0 defined for property %1">; 2360def error_cannot_find_suitable_accessor : Error< 2361 "cannot find suitable %select{getter|setter}0 for property %1">; 2362 2363def err_alignment_not_power_of_two : Error< 2364 "requested alignment is not a power of 2">; 2365def err_alignment_dependent_typedef_name : Error< 2366 "requested alignment is dependent but declaration is not dependent">; 2367 2368def err_attribute_aligned_too_great : Error< 2369 "requested alignment must be %0 bytes or smaller">; 2370def warn_redeclaration_without_attribute_prev_attribute_ignored : Warning< 2371 "%q0 redeclared without %1 attribute: previous %1 ignored">, 2372 InGroup<MicrosoftInconsistentDllImport>; 2373def warn_redeclaration_without_import_attribute : Warning< 2374 "%q0 redeclared without 'dllimport' attribute: 'dllexport' attribute added">, 2375 InGroup<MicrosoftInconsistentDllImport>; 2376def warn_dllimport_dropped_from_inline_function : Warning< 2377 "%q0 redeclared inline; %1 attribute ignored">, 2378 InGroup<IgnoredAttributes>; 2379def warn_attribute_ignored : Warning<"%0 attribute ignored">, 2380 InGroup<IgnoredAttributes>; 2381def warn_attribute_ignored_on_inline : 2382 Warning<"%0 attribute ignored on inline function">, 2383 InGroup<IgnoredAttributes>; 2384def warn_attribute_after_definition_ignored : Warning< 2385 "attribute %0 after definition is ignored">, 2386 InGroup<IgnoredAttributes>; 2387def warn_unknown_attribute_ignored : Warning< 2388 "unknown attribute %0 ignored">, InGroup<UnknownAttributes>; 2389def warn_cxx11_gnu_attribute_on_type : Warning< 2390 "attribute %0 ignored, because it cannot be applied to a type">, 2391 InGroup<IgnoredAttributes>; 2392def warn_unhandled_ms_attribute_ignored : Warning< 2393 "__declspec attribute %0 is not supported">, 2394 InGroup<IgnoredAttributes>; 2395def err_decl_attribute_invalid_on_stmt : Error< 2396 "%0 attribute cannot be applied to a statement">; 2397def err_stmt_attribute_invalid_on_decl : Error< 2398 "%0 attribute cannot be applied to a declaration">; 2399def warn_declspec_attribute_ignored : Warning< 2400 "attribute %0 is ignored, place it after " 2401 "\"%select{class|struct|interface|union|enum}1\" to apply attribute to " 2402 "type declaration">, InGroup<IgnoredAttributes>; 2403def warn_attribute_precede_definition : Warning< 2404 "attribute declaration must precede definition">, 2405 InGroup<IgnoredAttributes>; 2406def warn_attribute_void_function_method : Warning< 2407 "attribute %0 cannot be applied to " 2408 "%select{functions|Objective-C method}1 without return value">, 2409 InGroup<IgnoredAttributes>; 2410def warn_attribute_weak_on_field : Warning< 2411 "__weak attribute cannot be specified on a field declaration">, 2412 InGroup<IgnoredAttributes>; 2413def warn_gc_attribute_weak_on_local : Warning< 2414 "Objective-C GC does not allow weak variables on the stack">, 2415 InGroup<IgnoredAttributes>; 2416def warn_nsobject_attribute : Warning< 2417 "'NSObject' attribute may be put on a typedef only; attribute is ignored">, 2418 InGroup<NSobjectAttribute>; 2419def warn_independentclass_attribute : Warning< 2420 "'objc_independent_class' attribute may be put on a typedef only; " 2421 "attribute is ignored">, 2422 InGroup<IndependentClassAttribute>; 2423def warn_ptr_independentclass_attribute : Warning< 2424 "'objc_independent_class' attribute may be put on Objective-C object " 2425 "pointer type only; attribute is ignored">, 2426 InGroup<IndependentClassAttribute>; 2427def warn_attribute_weak_on_local : Warning< 2428 "__weak attribute cannot be specified on an automatic variable when ARC " 2429 "is not enabled">, 2430 InGroup<IgnoredAttributes>; 2431def warn_weak_identifier_undeclared : Warning< 2432 "weak identifier %0 never declared">; 2433def err_attribute_weak_static : Error< 2434 "weak declaration cannot have internal linkage">; 2435def err_attribute_selectany_non_extern_data : Error< 2436 "'selectany' can only be applied to data items with external linkage">; 2437def err_declspec_thread_on_thread_variable : Error< 2438 "'__declspec(thread)' applied to variable that already has a " 2439 "thread-local storage specifier">; 2440def err_attribute_dll_not_extern : Error< 2441 "%q0 must have external linkage when declared %q1">; 2442def err_attribute_dll_thread_local : Error< 2443 "%q0 cannot be thread local when declared %q1">; 2444def err_attribute_dll_lambda : Error< 2445 "lambda cannot be declared %0">; 2446def warn_attribute_invalid_on_definition : Warning< 2447 "'%0' attribute cannot be specified on a definition">, 2448 InGroup<IgnoredAttributes>; 2449def err_attribute_dll_redeclaration : Error< 2450 "redeclaration of %q0 cannot add %q1 attribute">; 2451def warn_attribute_dll_redeclaration : Warning< 2452 "redeclaration of %q0 should not add %q1 attribute">, 2453 InGroup<DiagGroup<"dll-attribute-on-redeclaration">>; 2454def err_attribute_dllimport_function_definition : Error< 2455 "dllimport cannot be applied to non-inline function definition">; 2456def err_attribute_dll_deleted : Error< 2457 "attribute %q0 cannot be applied to a deleted function">; 2458def err_attribute_dllimport_data_definition : Error< 2459 "definition of dllimport data">; 2460def err_attribute_dllimport_static_field_definition : Error< 2461 "definition of dllimport static field not allowed">; 2462def warn_attribute_dllimport_static_field_definition : Warning< 2463 "definition of dllimport static field">, 2464 InGroup<DiagGroup<"dllimport-static-field-def">>; 2465def warn_attribute_dllexport_explicit_instantiation_decl : Warning< 2466 "explicit instantiation declaration should not be 'dllexport'">, 2467 InGroup<DiagGroup<"dllexport-explicit-instantiation-decl">>; 2468def warn_invalid_initializer_from_system_header : Warning< 2469 "invalid constructor form class in system header, should not be explicit">, 2470 InGroup<DiagGroup<"invalid-initializer-from-system-header">>; 2471def note_used_in_initialization_here : Note<"used in initialization here">; 2472def err_attribute_dll_member_of_dll_class : Error< 2473 "attribute %q0 cannot be applied to member of %q1 class">; 2474def warn_attribute_dll_instantiated_base_class : Warning< 2475 "propagating dll attribute to %select{already instantiated|explicitly specialized}0 " 2476 "base class template without dll attribute is not supported">, 2477 InGroup<DiagGroup<"unsupported-dll-base-class-template">>, DefaultIgnore; 2478def err_attribute_dll_ambiguous_default_ctor : Error< 2479 "'__declspec(dllexport)' cannot be applied to more than one default constructor in %0">; 2480def err_attribute_weakref_not_static : Error< 2481 "weakref declaration must have internal linkage">; 2482def err_attribute_weakref_not_global_context : Error< 2483 "weakref declaration of %0 must be in a global context">; 2484def err_attribute_weakref_without_alias : Error< 2485 "weakref declaration of %0 must also have an alias attribute">; 2486def err_alias_not_supported_on_darwin : Error < 2487 "only weak aliases are supported on darwin">; 2488def err_alias_to_undefined : Error< 2489 "%select{alias|ifunc}0 must point to a defined %select{variable or |}1function">; 2490def warn_alias_to_weak_alias : Warning< 2491 "%select{alias|ifunc}2 will always resolve to %0 even if weak definition of %1 is overridden">, 2492 InGroup<IgnoredAttributes>; 2493def warn_alias_with_section : Warning< 2494 "%select{alias|ifunc}1 will not be in section '%0' but in the same section as the %select{aliasee|resolver}2">, 2495 InGroup<IgnoredAttributes>; 2496def err_duplicate_mangled_name : Error< 2497 "definition with same mangled name as another definition">; 2498def err_cyclic_alias : Error< 2499 "%select{alias|ifunc}0 definition is part of a cycle">; 2500def err_ifunc_resolver_return : Error< 2501 "ifunc resolver function must return a pointer">; 2502def err_ifunc_resolver_params : Error< 2503 "ifunc resolver function must have no parameters">; 2504def warn_attribute_wrong_decl_type : Warning< 2505 "%0 attribute only applies to %select{functions|unions|" 2506 "variables and functions|functions and methods|parameters|" 2507 "functions, methods and blocks|functions, methods, and classes|" 2508 "functions, methods, and parameters|classes|enums|variables|methods|" 2509 "fields and global variables|structs|parameters and typedefs|variables and typedefs|" 2510 "thread-local variables|variables and fields|variables, data members and tag types|" 2511 "types and namespaces|Objective-C interfaces|methods and properties|" 2512 "struct or union|struct, union or class|types|" 2513 "Objective-C instance methods|init methods of interface or class extension declarations|" 2514 "variables, functions and classes|Objective-C protocols|" 2515 "functions and global variables|structs, unions, and typedefs|structs and typedefs|" 2516 "interface or protocol declarations|kernel functions|non-K&R-style functions|" 2517 "variables, enums, fields and typedefs|functions, methods, enums, and classes|" 2518 "structs, classes, variables, functions, and inline namespaces|" 2519 "variables, functions, methods, types, enumerations, enumerators, labels, and non-static data members}1">, 2520 InGroup<IgnoredAttributes>; 2521def err_attribute_wrong_decl_type : Error<warn_attribute_wrong_decl_type.Text>; 2522def warn_type_attribute_wrong_type : Warning< 2523 "'%0' only applies to %select{function|pointer|" 2524 "Objective-C object or block pointer}1 types; type here is %2">, 2525 InGroup<IgnoredAttributes>; 2526def warn_incomplete_encoded_type : Warning< 2527 "encoding of %0 type is incomplete because %1 component has unknown encoding">, 2528 InGroup<DiagGroup<"encode-type">>; 2529def warn_gnu_inline_attribute_requires_inline : Warning< 2530 "'gnu_inline' attribute requires function to be marked 'inline'," 2531 " attribute ignored">, 2532 InGroup<IgnoredAttributes>; 2533def err_attribute_vecreturn_only_vector_member : Error< 2534 "the vecreturn attribute can only be used on a class or structure with one member, which must be a vector">; 2535def err_attribute_vecreturn_only_pod_record : Error< 2536 "the vecreturn attribute can only be used on a POD (plain old data) class or structure (i.e. no virtual functions)">; 2537def err_cconv_change : Error< 2538 "function declared '%0' here was previously declared " 2539 "%select{'%2'|without calling convention}1">; 2540def warn_cconv_ignored : Warning< 2541 "calling convention %0 ignored for this target">, InGroup<IgnoredAttributes>; 2542def err_cconv_knr : Error< 2543 "function with no prototype cannot use the %0 calling convention">; 2544def warn_cconv_knr : Warning< 2545 err_cconv_knr.Text>, 2546 InGroup<DiagGroup<"missing-prototype-for-cc">>; 2547def err_cconv_varargs : Error< 2548 "variadic function cannot use %0 calling convention">; 2549def warn_cconv_varargs : Warning< 2550 "%0 calling convention ignored on variadic function">, 2551 InGroup<IgnoredAttributes>; 2552def warn_cconv_structors : Warning< 2553 "%0 calling convention ignored on constructor/destructor">, 2554 InGroup<IgnoredAttributes>; 2555def err_regparm_mismatch : Error<"function declared with regparm(%0) " 2556 "attribute was previously declared " 2557 "%plural{0:without the regparm|:with the regparm(%1)}1 attribute">; 2558def err_returns_retained_mismatch : Error< 2559 "function declared with the ns_returns_retained attribute " 2560 "was previously declared without the ns_returns_retained attribute">; 2561def err_objc_precise_lifetime_bad_type : Error< 2562 "objc_precise_lifetime only applies to retainable types; type here is %0">; 2563def warn_objc_precise_lifetime_meaningless : Error< 2564 "objc_precise_lifetime is not meaningful for " 2565 "%select{__unsafe_unretained|__autoreleasing}0 objects">; 2566def err_invalid_pcs : Error<"invalid PCS type">; 2567def warn_attribute_not_on_decl : Warning< 2568 "%0 attribute ignored when parsing type">, InGroup<IgnoredAttributes>; 2569def err_base_specifier_attribute : Error< 2570 "%0 attribute cannot be applied to a base specifier">; 2571def err_invalid_attribute_on_virtual_function : Error< 2572 "%0 attribute cannot be applied to virtual functions">; 2573 2574// Availability attribute 2575def warn_availability_unknown_platform : Warning< 2576 "unknown platform %0 in availability macro">, InGroup<Availability>; 2577def warn_availability_version_ordering : Warning< 2578 "feature cannot be %select{introduced|deprecated|obsoleted}0 in %1 version " 2579 "%2 before it was %select{introduced|deprecated|obsoleted}3 in version %4; " 2580 "attribute ignored">, InGroup<Availability>; 2581def warn_mismatched_availability: Warning< 2582 "availability does not match previous declaration">, InGroup<Availability>; 2583def warn_mismatched_availability_override : Warning< 2584 "%select{|overriding }4method %select{introduced after|" 2585 "deprecated before|obsoleted before}0 " 2586 "%select{the protocol method it implements|overridden method}4 " 2587 "on %1 (%2 vs. %3)">, InGroup<Availability>; 2588def warn_mismatched_availability_override_unavail : Warning< 2589 "%select{|overriding }1method cannot be unavailable on %0 when " 2590 "%select{the protocol method it implements|its overridden method}1 is " 2591 "available">, 2592 InGroup<Availability>; 2593def note_overridden_method : Note< 2594 "overridden method is here">; 2595def note_protocol_method : Note< 2596 "protocol method is here">; 2597 2598// Thread Safety Attributes 2599def warn_invalid_capability_name : Warning< 2600 "invalid capability name '%0'; capability name must be 'mutex' or 'role'">, 2601 InGroup<ThreadSafetyAttributes>, DefaultIgnore; 2602def warn_thread_attribute_ignored : Warning< 2603 "ignoring %0 attribute because its argument is invalid">, 2604 InGroup<ThreadSafetyAttributes>, DefaultIgnore; 2605def warn_thread_attribute_argument_not_lockable : Warning< 2606 "%0 attribute requires arguments whose type is annotated " 2607 "with 'capability' attribute; type here is %1">, 2608 InGroup<ThreadSafetyAttributes>, DefaultIgnore; 2609def warn_thread_attribute_decl_not_lockable : Warning< 2610 "%0 attribute can only be applied in a context annotated " 2611 "with 'capability(\"mutex\")' attribute">, 2612 InGroup<ThreadSafetyAttributes>, DefaultIgnore; 2613def warn_thread_attribute_decl_not_pointer : Warning< 2614 "%0 only applies to pointer types; type here is %1">, 2615 InGroup<ThreadSafetyAttributes>, DefaultIgnore; 2616def err_attribute_argument_out_of_range : Error< 2617 "%0 attribute parameter %1 is out of bounds: " 2618 "%plural{0:no parameters to index into|" 2619 "1:can only be 1, since there is one parameter|" 2620 ":must be between 1 and %2}2">; 2621 2622// Thread Safety Analysis 2623def warn_unlock_but_no_lock : Warning<"releasing %0 '%1' that was not held">, 2624 InGroup<ThreadSafetyAnalysis>, DefaultIgnore; 2625def warn_unlock_kind_mismatch : Warning< 2626 "releasing %0 '%1' using %select{shared|exclusive}2 access, expected " 2627 "%select{shared|exclusive}3 access">, 2628 InGroup<ThreadSafetyAnalysis>, DefaultIgnore; 2629def warn_double_lock : Warning<"acquiring %0 '%1' that is already held">, 2630 InGroup<ThreadSafetyAnalysis>, DefaultIgnore; 2631def warn_no_unlock : Warning< 2632 "%0 '%1' is still held at the end of function">, 2633 InGroup<ThreadSafetyAnalysis>, DefaultIgnore; 2634def warn_expecting_locked : Warning< 2635 "expecting %0 '%1' to be held at the end of function">, 2636 InGroup<ThreadSafetyAnalysis>, DefaultIgnore; 2637// FIXME: improve the error message about locks not in scope 2638def warn_lock_some_predecessors : Warning< 2639 "%0 '%1' is not held on every path through here">, 2640 InGroup<ThreadSafetyAnalysis>, DefaultIgnore; 2641def warn_expecting_lock_held_on_loop : Warning< 2642 "expecting %0 '%1' to be held at start of each loop">, 2643 InGroup<ThreadSafetyAnalysis>, DefaultIgnore; 2644def note_locked_here : Note<"%0 acquired here">; 2645def warn_lock_exclusive_and_shared : Warning< 2646 "%0 '%1' is acquired exclusively and shared in the same scope">, 2647 InGroup<ThreadSafetyAnalysis>, DefaultIgnore; 2648def note_lock_exclusive_and_shared : Note< 2649 "the other acquisition of %0 '%1' is here">; 2650def warn_variable_requires_any_lock : Warning< 2651 "%select{reading|writing}1 variable '%0' requires holding " 2652 "%select{any mutex|any mutex exclusively}1">, 2653 InGroup<ThreadSafetyAnalysis>, DefaultIgnore; 2654def warn_var_deref_requires_any_lock : Warning< 2655 "%select{reading|writing}1 the value pointed to by '%0' requires holding " 2656 "%select{any mutex|any mutex exclusively}1">, 2657 InGroup<ThreadSafetyAnalysis>, DefaultIgnore; 2658def warn_fun_excludes_mutex : Warning< 2659 "cannot call function '%1' while %0 '%2' is held">, 2660 InGroup<ThreadSafetyAnalysis>, DefaultIgnore; 2661def warn_cannot_resolve_lock : Warning< 2662 "cannot resolve lock expression">, 2663 InGroup<ThreadSafetyAnalysis>, DefaultIgnore; 2664def warn_acquired_before : Warning< 2665 "%0 '%1' must be acquired before '%2'">, 2666 InGroup<ThreadSafetyAnalysis>, DefaultIgnore; 2667def warn_acquired_before_after_cycle : Warning< 2668 "Cycle in acquired_before/after dependencies, starting with '%0'">, 2669 InGroup<ThreadSafetyAnalysis>, DefaultIgnore; 2670 2671 2672// Thread safety warnings negative capabilities 2673def warn_acquire_requires_negative_cap : Warning< 2674 "acquiring %0 '%1' requires negative capability '%2'">, 2675 InGroup<ThreadSafetyNegative>, DefaultIgnore; 2676 2677// Thread safety warnings on pass by reference 2678def warn_guarded_pass_by_reference : Warning< 2679 "passing variable '%1' by reference requires holding %0 " 2680 "%select{'%2'|'%2' exclusively}3">, 2681 InGroup<ThreadSafetyReference>, DefaultIgnore; 2682def warn_pt_guarded_pass_by_reference : Warning< 2683 "passing the value that '%1' points to by reference requires holding %0 " 2684 "%select{'%2'|'%2' exclusively}3">, 2685 InGroup<ThreadSafetyReference>, DefaultIgnore; 2686 2687// Imprecise thread safety warnings 2688def warn_variable_requires_lock : Warning< 2689 "%select{reading|writing}3 variable '%1' requires holding %0 " 2690 "%select{'%2'|'%2' exclusively}3">, 2691 InGroup<ThreadSafetyAnalysis>, DefaultIgnore; 2692def warn_var_deref_requires_lock : Warning< 2693 "%select{reading|writing}3 the value pointed to by '%1' requires " 2694 "holding %0 %select{'%2'|'%2' exclusively}3">, 2695 InGroup<ThreadSafetyAnalysis>, DefaultIgnore; 2696def warn_fun_requires_lock : Warning< 2697 "calling function '%1' requires holding %0 %select{'%2'|'%2' exclusively}3">, 2698 InGroup<ThreadSafetyAnalysis>, DefaultIgnore; 2699 2700// Precise thread safety warnings 2701def warn_variable_requires_lock_precise : 2702 Warning<warn_variable_requires_lock.Text>, 2703 InGroup<ThreadSafetyPrecise>, DefaultIgnore; 2704def warn_var_deref_requires_lock_precise : 2705 Warning<warn_var_deref_requires_lock.Text>, 2706 InGroup<ThreadSafetyPrecise>, DefaultIgnore; 2707def warn_fun_requires_lock_precise : 2708 Warning<warn_fun_requires_lock.Text>, 2709 InGroup<ThreadSafetyPrecise>, DefaultIgnore; 2710def note_found_mutex_near_match : Note<"found near match '%0'">; 2711 2712// Verbose thread safety warnings 2713def warn_thread_safety_verbose : Warning<"Thread safety verbose warning.">, 2714 InGroup<ThreadSafetyVerbose>, DefaultIgnore; 2715def note_thread_warning_in_fun : Note<"Thread warning in function '%0'">; 2716def note_guarded_by_declared_here : Note<"Guarded_by declared here.">; 2717 2718// Dummy warning that will trigger "beta" warnings from the analysis if enabled. 2719def warn_thread_safety_beta : Warning<"Thread safety beta warning.">, 2720 InGroup<ThreadSafetyBeta>, DefaultIgnore; 2721 2722// Consumed warnings 2723def warn_use_in_invalid_state : Warning< 2724 "invalid invocation of method '%0' on object '%1' while it is in the '%2' " 2725 "state">, InGroup<Consumed>, DefaultIgnore; 2726def warn_use_of_temp_in_invalid_state : Warning< 2727 "invalid invocation of method '%0' on a temporary object while it is in the " 2728 "'%1' state">, InGroup<Consumed>, DefaultIgnore; 2729def warn_attr_on_unconsumable_class : Warning< 2730 "consumed analysis attribute is attached to member of class '%0' which isn't " 2731 "marked as consumable">, InGroup<Consumed>, DefaultIgnore; 2732def warn_return_typestate_for_unconsumable_type : Warning< 2733 "return state set for an unconsumable type '%0'">, InGroup<Consumed>, 2734 DefaultIgnore; 2735def warn_return_typestate_mismatch : Warning< 2736 "return value not in expected state; expected '%0', observed '%1'">, 2737 InGroup<Consumed>, DefaultIgnore; 2738def warn_loop_state_mismatch : Warning< 2739 "state of variable '%0' must match at the entry and exit of loop">, 2740 InGroup<Consumed>, DefaultIgnore; 2741def warn_param_return_typestate_mismatch : Warning< 2742 "parameter '%0' not in expected state when the function returns: expected " 2743 "'%1', observed '%2'">, InGroup<Consumed>, DefaultIgnore; 2744def warn_param_typestate_mismatch : Warning< 2745 "argument not in expected state; expected '%0', observed '%1'">, 2746 InGroup<Consumed>, DefaultIgnore; 2747 2748// no_sanitize attribute 2749def warn_unknown_sanitizer_ignored : Warning< 2750 "unknown sanitizer '%0' ignored">, InGroup<UnknownSanitizers>; 2751 2752def warn_impcast_vector_scalar : Warning< 2753 "implicit conversion turns vector to scalar: %0 to %1">, 2754 InGroup<Conversion>, DefaultIgnore; 2755def warn_impcast_complex_scalar : Warning< 2756 "implicit conversion discards imaginary component: %0 to %1">, 2757 InGroup<Conversion>, DefaultIgnore; 2758def warn_impcast_float_precision : Warning< 2759 "implicit conversion loses floating-point precision: %0 to %1">, 2760 InGroup<Conversion>, DefaultIgnore; 2761def warn_impcast_double_promotion : Warning< 2762 "implicit conversion increases floating-point precision: %0 to %1">, 2763 InGroup<DoublePromotion>, DefaultIgnore; 2764def warn_impcast_integer_sign : Warning< 2765 "implicit conversion changes signedness: %0 to %1">, 2766 InGroup<SignConversion>, DefaultIgnore; 2767def warn_impcast_integer_sign_conditional : Warning< 2768 "operand of ? changes signedness: %0 to %1">, 2769 InGroup<SignConversion>, DefaultIgnore; 2770def warn_impcast_integer_precision : Warning< 2771 "implicit conversion loses integer precision: %0 to %1">, 2772 InGroup<Conversion>, DefaultIgnore; 2773def warn_impcast_integer_64_32 : Warning< 2774 "implicit conversion loses integer precision: %0 to %1">, 2775 InGroup<Shorten64To32>, DefaultIgnore; 2776def warn_impcast_integer_precision_constant : Warning< 2777 "implicit conversion from %2 to %3 changes value from %0 to %1">, 2778 InGroup<ConstantConversion>; 2779def warn_impcast_bitfield_precision_constant : Warning< 2780 "implicit truncation from %2 to bitfield changes value from %0 to %1">, 2781 InGroup<BitFieldConstantConversion>; 2782 2783def warn_impcast_literal_float_to_integer : Warning< 2784 "implicit conversion from %0 to %1 changes value from %2 to %3">, 2785 InGroup<LiteralConversion>; 2786def warn_impcast_float_integer : Warning< 2787 "implicit conversion turns floating-point number into integer: %0 to %1">, 2788 InGroup<FloatConversion>, DefaultIgnore; 2789 2790def warn_impcast_float_to_integer : Warning< 2791 "implicit conversion of out of range value from %0 to %1 changes value " 2792 "from %2 to %3">, 2793 InGroup<FloatOverflowConversion>, DefaultIgnore; 2794def warn_impcast_float_to_integer_zero : Warning< 2795 "implicit conversion from %0 to %1 changes non-zero value from %2 to %3">, 2796 InGroup<FloatZeroConversion>, DefaultIgnore; 2797 2798def warn_impcast_string_literal_to_bool : Warning< 2799 "implicit conversion turns string literal into bool: %0 to %1">, 2800 InGroup<StringConversion>, DefaultIgnore; 2801def warn_impcast_different_enum_types : Warning< 2802 "implicit conversion from enumeration type %0 to different enumeration type " 2803 "%1">, InGroup<EnumConversion>; 2804def warn_impcast_bool_to_null_pointer : Warning< 2805 "initialization of pointer of type %0 to null from a constant boolean " 2806 "expression">, InGroup<BoolConversion>; 2807def warn_non_literal_null_pointer : Warning< 2808 "expression which evaluates to zero treated as a null pointer constant of " 2809 "type %0">, InGroup<NonLiteralNullConversion>; 2810def warn_impcast_null_pointer_to_integer : Warning< 2811 "implicit conversion of %select{NULL|nullptr}0 constant to %1">, 2812 InGroup<NullConversion>; 2813def warn_impcast_floating_point_to_bool : Warning< 2814 "implicit conversion turns floating-point number into bool: %0 to %1">, 2815 InGroup<ImplicitConversionFloatingPointToBool>; 2816def ext_ms_impcast_fn_obj : ExtWarn< 2817 "implicit conversion between pointer-to-function and pointer-to-object is a " 2818 "Microsoft extension">, InGroup<MicrosoftCast>; 2819 2820def warn_impcast_pointer_to_bool : Warning< 2821 "address of%select{| function| array}0 '%1' will always evaluate to " 2822 "'true'">, 2823 InGroup<PointerBoolConversion>; 2824def warn_cast_nonnull_to_bool : Warning< 2825 "nonnull %select{function call|parameter}0 '%1' will evaluate to " 2826 "'true' on first encounter">, 2827 InGroup<PointerBoolConversion>; 2828def warn_this_bool_conversion : Warning< 2829 "'this' pointer cannot be null in well-defined C++ code; pointer may be " 2830 "assumed to always convert to true">, InGroup<UndefinedBoolConversion>; 2831def warn_address_of_reference_bool_conversion : Warning< 2832 "reference cannot be bound to dereferenced null pointer in well-defined C++ " 2833 "code; pointer may be assumed to always convert to true">, 2834 InGroup<UndefinedBoolConversion>; 2835 2836def warn_null_pointer_compare : Warning< 2837 "comparison of %select{address of|function|array}0 '%1' %select{not |}2" 2838 "equal to a null pointer is always %select{true|false}2">, 2839 InGroup<TautologicalPointerCompare>; 2840def warn_nonnull_expr_compare : Warning< 2841 "comparison of nonnull %select{function call|parameter}0 '%1' " 2842 "%select{not |}2equal to a null pointer is '%select{true|false}2' on first " 2843 "encounter">, 2844 InGroup<TautologicalPointerCompare>; 2845def warn_this_null_compare : Warning< 2846 "'this' pointer cannot be null in well-defined C++ code; comparison may be " 2847 "assumed to always evaluate to %select{true|false}0">, 2848 InGroup<TautologicalUndefinedCompare>; 2849def warn_address_of_reference_null_compare : Warning< 2850 "reference cannot be bound to dereferenced null pointer in well-defined C++ " 2851 "code; comparison may be assumed to always evaluate to " 2852 "%select{true|false}0">, 2853 InGroup<TautologicalUndefinedCompare>; 2854def note_reference_is_return_value : Note<"%0 returns a reference">; 2855 2856def note_function_warning_silence : Note< 2857 "prefix with the address-of operator to silence this warning">; 2858def note_function_to_function_call : Note< 2859 "suffix with parentheses to turn this into a function call">; 2860def warn_impcast_objective_c_literal_to_bool : Warning< 2861 "implicit boolean conversion of Objective-C object literal always " 2862 "evaluates to true">, 2863 InGroup<ObjCLiteralConversion>; 2864 2865def warn_cast_align : Warning< 2866 "cast from %0 to %1 increases required alignment from %2 to %3">, 2867 InGroup<CastAlign>, DefaultIgnore; 2868def warn_old_style_cast : Warning< 2869 "use of old-style cast">, InGroup<OldStyleCast>, DefaultIgnore; 2870 2871// Separate between casts to void* and non-void* pointers. 2872// Some APIs use (abuse) void* for something like a user context, 2873// and often that value is an integer even if it isn't a pointer itself. 2874// Having a separate warning flag allows users to control the warning 2875// for their workflow. 2876def warn_int_to_pointer_cast : Warning< 2877 "cast to %1 from smaller integer type %0">, 2878 InGroup<IntToPointerCast>; 2879def warn_int_to_void_pointer_cast : Warning< 2880 "cast to %1 from smaller integer type %0">, 2881 InGroup<IntToVoidPointerCast>; 2882 2883def warn_attribute_packed_for_bitfield : Warning< 2884 "'packed' attribute was ignored on bit-fields with single-byte alignment " 2885 "in older versions of GCC and Clang">, 2886 InGroup<DiagGroup<"attribute-packed-for-bitfield">>; 2887def warn_transparent_union_attribute_field_size_align : Warning< 2888 "%select{alignment|size}0 of field %1 (%2 bits) does not match the " 2889 "%select{alignment|size}0 of the first field in transparent union; " 2890 "transparent_union attribute ignored">, 2891 InGroup<IgnoredAttributes>; 2892def note_transparent_union_first_field_size_align : Note< 2893 "%select{alignment|size}0 of first field is %1 bits">; 2894def warn_transparent_union_attribute_not_definition : Warning< 2895 "transparent_union attribute can only be applied to a union definition; " 2896 "attribute ignored">, 2897 InGroup<IgnoredAttributes>; 2898def warn_transparent_union_attribute_floating : Warning< 2899 "first field of a transparent union cannot have %select{floating point|" 2900 "vector}0 type %1; transparent_union attribute ignored">, 2901 InGroup<IgnoredAttributes>; 2902def warn_transparent_union_attribute_zero_fields : Warning< 2903 "transparent union definition must contain at least one field; " 2904 "transparent_union attribute ignored">, 2905 InGroup<IgnoredAttributes>; 2906def warn_attribute_type_not_supported : Warning< 2907 "%0 attribute argument not supported: %1">, 2908 InGroup<IgnoredAttributes>; 2909def warn_attribute_unknown_visibility : Warning<"unknown visibility %0">, 2910 InGroup<IgnoredAttributes>; 2911def warn_attribute_protected_visibility : 2912 Warning<"target does not support 'protected' visibility; using 'default'">, 2913 InGroup<DiagGroup<"unsupported-visibility">>; 2914def err_mismatched_visibility: Error<"visibility does not match previous declaration">; 2915def note_previous_attribute : Note<"previous attribute is here">; 2916def note_conflicting_attribute : Note<"conflicting attribute is here">; 2917def note_attribute : Note<"attribute is here">; 2918def err_mismatched_ms_inheritance : Error< 2919 "inheritance model does not match %select{definition|previous declaration}0">; 2920def warn_ignored_ms_inheritance : Warning< 2921 "inheritance model ignored on %select{primary template|partial specialization}0">, 2922 InGroup<IgnoredAttributes>; 2923def note_previous_ms_inheritance : Note< 2924 "previous inheritance model specified here">; 2925def err_machine_mode : Error<"%select{unknown|unsupported}0 machine mode %1">; 2926def err_mode_not_primitive : Error< 2927 "mode attribute only supported for integer and floating-point types">; 2928def err_mode_wrong_type : Error< 2929 "type of machine mode does not match type of base type">; 2930def warn_vector_mode_deprecated : Warning< 2931 "specifying vector types with the 'mode' attribute is deprecated; " 2932 "use the 'vector_size' attribute instead">, 2933 InGroup<DeprecatedAttributes>; 2934def err_complex_mode_vector_type : Error< 2935 "type of machine mode does not support base vector types">; 2936def err_enum_mode_vector_type : Error< 2937 "mode %0 is not supported for enumeration types">; 2938def warn_attribute_nonnull_no_pointers : Warning< 2939 "'nonnull' attribute applied to function with no pointer arguments">, 2940 InGroup<IgnoredAttributes>; 2941def warn_attribute_nonnull_parm_no_args : Warning< 2942 "'nonnull' attribute when used on parameters takes no arguments">, 2943 InGroup<IgnoredAttributes>; 2944def note_declared_nonnull : Note< 2945 "declared %select{'returns_nonnull'|'nonnull'}0 here">; 2946def warn_attribute_sentinel_named_arguments : Warning< 2947 "'sentinel' attribute requires named arguments">, 2948 InGroup<IgnoredAttributes>; 2949def warn_attribute_sentinel_not_variadic : Warning< 2950 "'sentinel' attribute only supported for variadic %select{functions|blocks}0">, 2951 InGroup<IgnoredAttributes>; 2952def err_attribute_sentinel_less_than_zero : Error< 2953 "'sentinel' parameter 1 less than zero">; 2954def err_attribute_sentinel_not_zero_or_one : Error< 2955 "'sentinel' parameter 2 not 0 or 1">; 2956def warn_cleanup_ext : Warning< 2957 "GCC does not allow the 'cleanup' attribute argument to be anything other " 2958 "than a simple identifier">, 2959 InGroup<GccCompat>; 2960def err_attribute_cleanup_arg_not_function : Error< 2961 "'cleanup' argument %select{|%1 |%1 }0is not a %select{||single }0function">; 2962def err_attribute_cleanup_func_must_take_one_arg : Error< 2963 "'cleanup' function %0 must take 1 parameter">; 2964def err_attribute_cleanup_func_arg_incompatible_type : Error< 2965 "'cleanup' function %0 parameter has " 2966 "%diff{type $ which is incompatible with type $|incompatible type}1,2">; 2967def err_attribute_regparm_wrong_platform : Error< 2968 "'regparm' is not valid on this platform">; 2969def err_attribute_regparm_invalid_number : Error< 2970 "'regparm' parameter must be between 0 and %0 inclusive">; 2971def err_attribute_not_supported_in_lang : Error< 2972 "%0 attribute is not supported in %select{C|C++|Objective-C}1">; 2973 2974 2975// Clang-Specific Attributes 2976def warn_attribute_iboutlet : Warning< 2977 "%0 attribute can only be applied to instance variables or properties">, 2978 InGroup<IgnoredAttributes>; 2979def err_iboutletcollection_type : Error< 2980 "invalid type %0 as argument of iboutletcollection attribute">; 2981def err_iboutletcollection_builtintype : Error< 2982 "type argument of iboutletcollection attribute cannot be a builtin type">; 2983def warn_iboutlet_object_type : Warning< 2984 "%select{instance variable|property}2 with %0 attribute must " 2985 "be an object type (invalid %1)">, InGroup<ObjCInvalidIBOutletProperty>; 2986def warn_iboutletcollection_property_assign : Warning< 2987 "IBOutletCollection properties should be copy/strong and not assign">, 2988 InGroup<ObjCInvalidIBOutletProperty>; 2989 2990def err_attribute_overloadable_missing : Error< 2991 "%select{overloaded function|redeclaration of}0 %1 must have the " 2992 "'overloadable' attribute">; 2993def note_attribute_overloadable_prev_overload : Note< 2994 "previous overload of function is here">; 2995def err_attribute_overloadable_no_prototype : Error< 2996 "'overloadable' function %0 must have a prototype">; 2997def warn_ns_attribute_wrong_return_type : Warning< 2998 "%0 attribute only applies to %select{functions|methods|properties}1 that " 2999 "return %select{an Objective-C object|a pointer|a non-retainable pointer}2">, 3000 InGroup<IgnoredAttributes>; 3001def err_ns_attribute_wrong_parameter_type : Error< 3002 "%0 attribute only applies to " 3003 "%select{Objective-C object|pointer|pointer-to-CF-pointer}1 parameters">; 3004def warn_ns_attribute_wrong_parameter_type : Warning< 3005 "%0 attribute only applies to " 3006 "%select{Objective-C object|pointer|pointer-to-CF-pointer}1 parameters">, 3007 InGroup<IgnoredAttributes>; 3008def warn_objc_requires_super_protocol : Warning< 3009 "%0 attribute cannot be applied to %select{methods in protocols|dealloc}1">, 3010 InGroup<DiagGroup<"requires-super-attribute">>; 3011def note_protocol_decl : Note< 3012 "protocol is declared here">; 3013def note_protocol_decl_undefined : Note< 3014 "protocol %0 has no definition">; 3015 3016// objc_designated_initializer attribute diagnostics. 3017def warn_objc_designated_init_missing_super_call : Warning< 3018 "designated initializer missing a 'super' call to a designated initializer of the super class">, 3019 InGroup<ObjCDesignatedInit>; 3020def note_objc_designated_init_marked_here : Note< 3021 "method marked as designated initializer of the class here">; 3022def warn_objc_designated_init_non_super_designated_init_call : Warning< 3023 "designated initializer should only invoke a designated initializer on 'super'">, 3024 InGroup<ObjCDesignatedInit>; 3025def warn_objc_designated_init_non_designated_init_call : Warning< 3026 "designated initializer invoked a non-designated initializer">, 3027 InGroup<ObjCDesignatedInit>; 3028def warn_objc_secondary_init_super_init_call : Warning< 3029 "convenience initializer should not invoke an initializer on 'super'">, 3030 InGroup<ObjCDesignatedInit>; 3031def warn_objc_secondary_init_missing_init_call : Warning< 3032 "convenience initializer missing a 'self' call to another initializer">, 3033 InGroup<ObjCDesignatedInit>; 3034def warn_objc_implementation_missing_designated_init_override : Warning< 3035 "method override for the designated initializer of the superclass %objcinstance0 not found">, 3036 InGroup<ObjCDesignatedInit>; 3037 3038// objc_bridge attribute diagnostics. 3039def err_objc_attr_not_id : Error< 3040 "parameter of %0 attribute must be a single name of an Objective-C %select{class|protocol}1">; 3041def err_objc_attr_typedef_not_id : Error< 3042 "parameter of %0 attribute must be 'id' when used on a typedef">; 3043def err_objc_attr_typedef_not_void_pointer : Error< 3044 "'objc_bridge(id)' is only allowed on structs and typedefs of void pointers">; 3045def err_objc_cf_bridged_not_interface : Error< 3046 "CF object of type %0 is bridged to %1, which is not an Objective-C class">; 3047def err_objc_ns_bridged_invalid_cfobject : Error< 3048 "ObjectiveC object of type %0 is bridged to %1, which is not valid CF object">; 3049def warn_objc_invalid_bridge : Warning< 3050 "%0 bridges to %1, not %2">, InGroup<ObjCBridge>; 3051def warn_objc_invalid_bridge_to_cf : Warning< 3052 "%0 cannot bridge to %1">, InGroup<ObjCBridge>; 3053 3054// objc_bridge_related attribute diagnostics. 3055def err_objc_bridged_related_invalid_class : Error< 3056 "could not find Objective-C class %0 to convert %1 to %2">; 3057def err_objc_bridged_related_invalid_class_name : Error< 3058 "%0 must be name of an Objective-C class to be able to convert %1 to %2">; 3059def err_objc_bridged_related_known_method : Error< 3060 "%0 must be explicitly converted to %1; use %select{%objcclass2|%objcinstance2}3 " 3061 "method for this conversion">; 3062 3063def err_objc_attr_protocol_requires_definition : Error< 3064 "attribute %0 can only be applied to @protocol definitions, not forward declarations">; 3065 3066// Function Parameter Semantic Analysis. 3067def err_param_with_void_type : Error<"argument may not have 'void' type">; 3068def err_void_only_param : Error< 3069 "'void' must be the first and only parameter if specified">; 3070def err_void_param_qualified : Error< 3071 "'void' as parameter must not have type qualifiers">; 3072def err_ident_list_in_fn_declaration : Error< 3073 "a parameter list without types is only allowed in a function definition">; 3074def ext_param_not_declared : Extension< 3075 "parameter %0 was not declared, defaulting to type 'int'">; 3076def err_param_default_argument : Error< 3077 "C does not support default arguments">; 3078def err_param_default_argument_redefinition : Error< 3079 "redefinition of default argument">; 3080def ext_param_default_argument_redefinition : ExtWarn< 3081 err_param_default_argument_redefinition.Text>, 3082 InGroup<MicrosoftDefaultArgRedefinition>; 3083def err_param_default_argument_missing : Error< 3084 "missing default argument on parameter">; 3085def err_param_default_argument_missing_name : Error< 3086 "missing default argument on parameter %0">; 3087def err_param_default_argument_references_param : Error< 3088 "default argument references parameter %0">; 3089def err_param_default_argument_references_local : Error< 3090 "default argument references local variable %0 of enclosing function">; 3091def err_param_default_argument_references_this : Error< 3092 "default argument references 'this'">; 3093def err_param_default_argument_nonfunc : Error< 3094 "default arguments can only be specified for parameters in a function " 3095 "declaration">; 3096def err_param_default_argument_template_redecl : Error< 3097 "default arguments cannot be added to a function template that has already " 3098 "been declared">; 3099def err_param_default_argument_member_template_redecl : Error< 3100 "default arguments cannot be added to an out-of-line definition of a member " 3101 "of a %select{class template|class template partial specialization|nested " 3102 "class in a template}0">; 3103def err_param_default_argument_on_parameter_pack : Error< 3104 "parameter pack cannot have a default argument">; 3105def err_uninitialized_member_for_assign : Error< 3106 "cannot define the implicit copy assignment operator for %0, because " 3107 "non-static %select{reference|const}1 member %2 cannot use copy " 3108 "assignment operator">; 3109def err_uninitialized_member_in_ctor : Error< 3110 "%select{constructor for %1|" 3111 "implicit default constructor for %1|" 3112 "cannot use constructor inherited from %1:}0 must explicitly " 3113 "initialize the %select{reference|const}2 member %3">; 3114def err_default_arg_makes_ctor_special : Error< 3115 "addition of default argument on redeclaration makes this constructor a " 3116 "%select{default|copy|move}0 constructor">; 3117 3118def err_use_of_default_argument_to_function_declared_later : Error< 3119 "use of default argument to function %0 that is declared later in class %1">; 3120def note_default_argument_declared_here : Note< 3121 "default argument declared here">; 3122def err_recursive_default_argument : Error<"recursive evaluation of default argument">; 3123 3124def ext_param_promoted_not_compatible_with_prototype : ExtWarn< 3125 "%diff{promoted type $ of K&R function parameter is not compatible with the " 3126 "parameter type $|promoted type of K&R function parameter is not compatible " 3127 "with parameter type}0,1 declared in a previous prototype">, 3128 InGroup<KNRPromotedParameter>; 3129 3130 3131// C++ Overloading Semantic Analysis. 3132def err_ovl_diff_return_type : Error< 3133 "functions that differ only in their return type cannot be overloaded">; 3134def err_ovl_static_nonstatic_member : Error< 3135 "static and non-static member functions with the same parameter types " 3136 "cannot be overloaded">; 3137 3138def err_ovl_no_viable_function_in_call : Error< 3139 "no matching function for call to %0">; 3140def err_ovl_no_viable_member_function_in_call : Error< 3141 "no matching member function for call to %0">; 3142def err_ovl_ambiguous_call : Error< 3143 "call to %0 is ambiguous">; 3144def err_ovl_deleted_call : Error< 3145 "call to %select{unavailable|deleted}0 function %1%2">; 3146def err_ovl_ambiguous_member_call : Error< 3147 "call to member function %0 is ambiguous">; 3148def err_ovl_deleted_member_call : Error< 3149 "call to %select{unavailable|deleted}0 member function %1%2">; 3150def note_ovl_too_many_candidates : Note< 3151 "remaining %0 candidate%s0 omitted; " 3152 "pass -fshow-overloads=all to show them">; 3153def note_ovl_candidate : Note<"candidate " 3154 "%select{function|function|constructor|" 3155 "function |function |constructor |" 3156 "is the implicit default constructor|" 3157 "is the implicit copy constructor|" 3158 "is the implicit move constructor|" 3159 "is the implicit copy assignment operator|" 3160 "is the implicit move assignment operator|" 3161 "inherited constructor|" 3162 "inherited constructor }0%1" 3163 "%select{| has different class%diff{ (expected $ but has $)|}3,4" 3164 "| has different number of parameters (expected %3 but has %4)" 3165 "| has type mismatch at %ordinal3 parameter" 3166 "%diff{ (expected $ but has $)|}4,5" 3167 "| has different return type%diff{ ($ expected but has $)|}3,4" 3168 "| has different qualifiers (expected " 3169 "%select{none|const|restrict|const and restrict|volatile|const and volatile" 3170 "|volatile and restrict|const, volatile, and restrict}3 but found " 3171 "%select{none|const|restrict|const and restrict|volatile|const and volatile" 3172 "|volatile and restrict|const, volatile, and restrict}4)}2">; 3173 3174def note_ovl_candidate_inherited_constructor : Note< 3175 "constructor from base class %0 inherited here">; 3176def note_ovl_candidate_illegal_constructor : Note< 3177 "candidate %select{constructor|template}0 ignored: " 3178 "instantiation %select{takes|would take}0 its own class type by value">; 3179def note_ovl_candidate_bad_deduction : Note< 3180 "candidate template ignored: failed template argument deduction">; 3181def note_ovl_candidate_incomplete_deduction : Note<"candidate template ignored: " 3182 "couldn't infer template argument %0">; 3183def note_ovl_candidate_inconsistent_deduction : Note< 3184 "candidate template ignored: deduced conflicting %select{types|values|" 3185 "templates}0 for parameter %1%diff{ ($ vs. $)|}2,3">; 3186def note_ovl_candidate_explicit_arg_mismatch_named : Note< 3187 "candidate template ignored: invalid explicitly-specified argument " 3188 "for template parameter %0">; 3189def note_ovl_candidate_explicit_arg_mismatch_unnamed : Note< 3190 "candidate template ignored: invalid explicitly-specified argument " 3191 "for %ordinal0 template parameter">; 3192def note_ovl_candidate_instantiation_depth : Note< 3193 "candidate template ignored: substitution exceeded maximum template " 3194 "instantiation depth">; 3195def note_ovl_candidate_underqualified : Note< 3196 "candidate template ignored: cannot deduce a type for %0 that would " 3197 "make %2 equal %1">; 3198def note_ovl_candidate_substitution_failure : Note< 3199 "candidate template ignored: substitution failure%0%1">; 3200def note_ovl_candidate_disabled_by_enable_if : Note< 3201 "candidate template ignored: disabled by %0%1">; 3202def note_ovl_candidate_has_pass_object_size_params: Note< 3203 "candidate address cannot be taken because parameter %0 has " 3204 "pass_object_size attribute">; 3205def note_ovl_candidate_disabled_by_enable_if_attr : Note< 3206 "candidate disabled: %0">; 3207def err_addrof_function_disabled_by_enable_if_attr : Error< 3208 "cannot take address of function %0 becuase it has one or more " 3209 "non-tautological enable_if conditions">; 3210def note_addrof_ovl_candidate_disabled_by_enable_if_attr : Note< 3211 "candidate function made ineligible by enable_if">; 3212def note_ovl_candidate_failed_overload_resolution : Note< 3213 "candidate template ignored: couldn't resolve reference to overloaded " 3214 "function %0">; 3215def note_ovl_candidate_deduced_mismatch : Note< 3216 "candidate template ignored: deduced type " 3217 "%diff{$ of %ordinal0 parameter does not match adjusted type $ of argument" 3218 "|of %ordinal0 parameter does not match adjusted type of argument}1,2%3">; 3219def note_ovl_candidate_non_deduced_mismatch : Note< 3220 "candidate template ignored: could not match %diff{$ against $|types}0,1">; 3221// This note is needed because the above note would sometimes print two 3222// different types with the same name. Remove this note when the above note 3223// can handle that case properly. 3224def note_ovl_candidate_non_deduced_mismatch_qualified : Note< 3225 "candidate template ignored: could not match %q0 against %q1">; 3226 3227// Note that we don't treat templates differently for this diagnostic. 3228def note_ovl_candidate_arity : Note<"candidate " 3229 "%select{function|function|constructor|function|function|constructor|" 3230 "constructor (the implicit default constructor)|" 3231 "constructor (the implicit copy constructor)|" 3232 "constructor (the implicit move constructor)|" 3233 "function (the implicit copy assignment operator)|" 3234 "function (the implicit move assignment operator)|" 3235 "inherited constructor|" 3236 "inherited constructor}0 %select{|template }1" 3237 "not viable: requires%select{ at least| at most|}2 %3 argument%s3, but %4 " 3238 "%plural{1:was|:were}4 provided">; 3239 3240def note_ovl_candidate_arity_one : Note<"candidate " 3241 "%select{function|function|constructor|function|function|constructor|" 3242 "constructor (the implicit default constructor)|" 3243 "constructor (the implicit copy constructor)|" 3244 "constructor (the implicit move constructor)|" 3245 "function (the implicit copy assignment operator)|" 3246 "function (the implicit move assignment operator)|" 3247 "inherited constructor|" 3248 "inherited constructor}0 %select{|template }1not viable: " 3249 "%select{requires at least|allows at most single|requires single}2 " 3250 "argument %3, but %plural{0:no|:%4}4 arguments were provided">; 3251 3252def note_ovl_candidate_deleted : Note< 3253 "candidate %select{function|function|constructor|" 3254 "function |function |constructor |" 3255 "constructor (the implicit default constructor)|" 3256 "constructor (the implicit copy constructor)|" 3257 "constructor (the implicit move constructor)|" 3258 "function (the implicit copy assignment operator)|" 3259 "function (the implicit move assignment operator)|" 3260 "inherited constructor|" 3261 "inherited constructor }0%1 has been " 3262 "%select{explicitly made unavailable|explicitly deleted|" 3263 "implicitly deleted}2">; 3264 3265// Giving the index of the bad argument really clutters this message, and 3266// it's relatively unimportant because 1) it's generally obvious which 3267// argument(s) are of the given object type and 2) the fix is usually 3268// to complete the type, which doesn't involve changes to the call line 3269// anyway. If people complain, we can change it. 3270def note_ovl_candidate_bad_conv_incomplete : Note<"candidate " 3271 "%select{function|function|constructor|" 3272 "function |function |constructor |" 3273 "constructor (the implicit default constructor)|" 3274 "constructor (the implicit copy constructor)|" 3275 "constructor (the implicit move constructor)|" 3276 "function (the implicit copy assignment operator)|" 3277 "function (the implicit move assignment operator)|" 3278 "inherited constructor|" 3279 "inherited constructor }0%1 " 3280 "not viable: cannot convert argument of incomplete type " 3281 "%diff{$ to $|to parameter type}2,3 for " 3282 "%select{%ordinal5 argument|object argument}4" 3283 "%select{|; dereference the argument with *|" 3284 "; take the address of the argument with &|" 3285 "; remove *|" 3286 "; remove &}6">; 3287def note_ovl_candidate_bad_list_argument : Note<"candidate " 3288 "%select{function|function|constructor|" 3289 "function |function |constructor |" 3290 "constructor (the implicit default constructor)|" 3291 "constructor (the implicit copy constructor)|" 3292 "constructor (the implicit move constructor)|" 3293 "function (the implicit copy assignment operator)|" 3294 "function (the implicit move assignment operator)|" 3295 "inherited constructor|" 3296 "inherited constructor }0%1 " 3297 "not viable: cannot convert initializer list argument to %3">; 3298def note_ovl_candidate_bad_overload : Note<"candidate " 3299 "%select{function|function|constructor|" 3300 "function |function |constructor |" 3301 "constructor (the implicit default constructor)|" 3302 "constructor (the implicit copy constructor)|" 3303 "constructor (the implicit move constructor)|" 3304 "function (the implicit copy assignment operator)|" 3305 "function (the implicit move assignment operator)|" 3306 "inherited constructor|" 3307 "inherited constructor }0%1" 3308 " not viable: no overload of %3 matching %2 for %ordinal4 argument">; 3309def note_ovl_candidate_bad_conv : Note<"candidate " 3310 "%select{function|function|constructor|" 3311 "function |function |constructor |" 3312 "constructor (the implicit default constructor)|" 3313 "constructor (the implicit copy constructor)|" 3314 "constructor (the implicit move constructor)|" 3315 "function (the implicit copy assignment operator)|" 3316 "function (the implicit move assignment operator)|" 3317 "inherited constructor|" 3318 "inherited constructor }0%1" 3319 " not viable: no known conversion " 3320 "%diff{from $ to $|from argument type to parameter type}2,3 for " 3321 "%select{%ordinal5 argument|object argument}4" 3322 "%select{|; dereference the argument with *|" 3323 "; take the address of the argument with &|" 3324 "; remove *|" 3325 "; remove &}6">; 3326def note_ovl_candidate_bad_arc_conv : Note<"candidate " 3327 "%select{function|function|constructor|" 3328 "function |function |constructor |" 3329 "constructor (the implicit default constructor)|" 3330 "constructor (the implicit copy constructor)|" 3331 "constructor (the implicit move constructor)|" 3332 "function (the implicit copy assignment operator)|" 3333 "function (the implicit move assignment operator)|" 3334 "inherited constructor|" 3335 "inherited constructor }0%1" 3336 " not viable: cannot implicitly convert argument " 3337 "%diff{of type $ to $|type to parameter type}2,3 for " 3338 "%select{%ordinal5 argument|object argument}4 under ARC">; 3339def note_ovl_candidate_bad_lvalue : Note<"candidate " 3340 "%select{function|function|constructor|" 3341 "function |function |constructor |" 3342 "constructor (the implicit default constructor)|" 3343 "constructor (the implicit copy constructor)|" 3344 "constructor (the implicit move constructor)|" 3345 "function (the implicit copy assignment operator)|" 3346 "function (the implicit move assignment operator)|" 3347 "inherited constructor|" 3348 "inherited constructor }0%1" 3349 " not viable: expects an l-value for " 3350 "%select{%ordinal3 argument|object argument}2">; 3351def note_ovl_candidate_bad_addrspace : Note<"candidate " 3352 "%select{function|function|constructor|" 3353 "function |function |constructor |" 3354 "constructor (the implicit default constructor)|" 3355 "constructor (the implicit copy constructor)|" 3356 "constructor (the implicit move constructor)|" 3357 "function (the implicit copy assignment operator)|" 3358 "function (the implicit move assignment operator)|" 3359 "inherited constructor|" 3360 "inherited constructor }0%1 not viable: " 3361 "%select{%ordinal6|'this'}5 argument (%2) is in " 3362 "address space %3, but parameter must be in address space %4">; 3363def note_ovl_candidate_bad_gc : Note<"candidate " 3364 "%select{function|function|constructor|" 3365 "function |function |constructor |" 3366 "constructor (the implicit default constructor)|" 3367 "constructor (the implicit copy constructor)|" 3368 "constructor (the implicit move constructor)|" 3369 "function (the implicit copy assignment operator)|" 3370 "function (the implicit move assignment operator)|" 3371 "inherited constructor|" 3372 "inherited constructor }0%1 not viable: " 3373 "%select{%ordinal6|'this'}5 argument (%2) has %select{no|__weak|__strong}3 " 3374 "ownership, but parameter has %select{no|__weak|__strong}4 ownership">; 3375def note_ovl_candidate_bad_ownership : Note<"candidate " 3376 "%select{function|function|constructor|" 3377 "function |function |constructor |" 3378 "constructor (the implicit default constructor)|" 3379 "constructor (the implicit copy constructor)|" 3380 "constructor (the implicit move constructor)|" 3381 "function (the implicit copy assignment operator)|" 3382 "function (the implicit move assignment operator)|" 3383 "inherited constructor|" 3384 "inherited constructor }0%1 not viable: " 3385 "%select{%ordinal6|'this'}5 argument (%2) has " 3386 "%select{no|__unsafe_unretained|__strong|__weak|__autoreleasing}3 ownership," 3387 " but parameter has %select{no|__unsafe_unretained|__strong|__weak|" 3388 "__autoreleasing}4 ownership">; 3389def note_ovl_candidate_bad_cvr_this : Note<"candidate " 3390 "%select{|function|||function|||||" 3391 "function (the implicit copy assignment operator)|" 3392 "function (the implicit move assignment operator)||}0 not viable: " 3393 "'this' argument has type %2, but method is not marked " 3394 "%select{const|restrict|const or restrict|volatile|const or volatile|" 3395 "volatile or restrict|const, volatile, or restrict}3">; 3396def note_ovl_candidate_bad_cvr : Note<"candidate " 3397 "%select{function|function|constructor|" 3398 "function |function |constructor |" 3399 "constructor (the implicit default constructor)|" 3400 "constructor (the implicit copy constructor)|" 3401 "constructor (the implicit move constructor)|" 3402 "function (the implicit copy assignment operator)|" 3403 "function (the implicit move assignment operator)|" 3404 "inherited constructor|" 3405 "inherited constructor }0%1 not viable: " 3406 "%ordinal4 argument (%2) would lose " 3407 "%select{const|restrict|const and restrict|volatile|const and volatile|" 3408 "volatile and restrict|const, volatile, and restrict}3 qualifier" 3409 "%select{||s||s|s|s}3">; 3410def note_ovl_candidate_bad_unaligned : Note<"candidate " 3411 "%select{function|function|constructor|" 3412 "function |function |constructor |" 3413 "constructor (the implicit default constructor)|" 3414 "constructor (the implicit copy constructor)|" 3415 "constructor (the implicit move constructor)|" 3416 "function (the implicit copy assignment operator)|" 3417 "function (the implicit move assignment operator)|" 3418 "inherited constructor|" 3419 "inherited constructor }0%1 not viable: " 3420 "%ordinal4 argument (%2) would lose __unaligned qualifier">; 3421def note_ovl_candidate_bad_base_to_derived_conv : Note<"candidate " 3422 "%select{function|function|constructor|" 3423 "function |function |constructor |" 3424 "constructor (the implicit default constructor)|" 3425 "constructor (the implicit copy constructor)|" 3426 "constructor (the implicit move constructor)|" 3427 "function (the implicit copy assignment operator)|" 3428 "function (the implicit move assignment operator)|" 3429 "inherited constructor|" 3430 "inherited constructor }0%1 not viable: " 3431 "cannot %select{convert from|convert from|bind}2 " 3432 "%select{base class pointer|superclass|base class object of type}2 %3 to " 3433 "%select{derived class pointer|subclass|derived class reference}2 %4 for " 3434 "%ordinal5 argument">; 3435def note_ovl_candidate_bad_target : Note< 3436 "candidate %select{function|function|constructor|" 3437 "function|function|constructor|" 3438 "constructor (the implicit default constructor)|" 3439 "constructor (the implicit copy constructor)|" 3440 "constructor (the implicit move constructor)|" 3441 "function (the implicit copy assignment operator)|" 3442 "function (the implicit move assignment operator)|" 3443 "inherited constructor|" 3444 "inherited constructor}0 not viable: " 3445 "call to " 3446 "%select{__device__|__global__|__host__|__host__ __device__|invalid}1 function from" 3447 " %select{__device__|__global__|__host__|__host__ __device__|invalid}2 function">; 3448def note_implicit_member_target_infer_collision : Note< 3449 "implicit %select{" 3450 "default constructor|" 3451 "copy constructor|" 3452 "move constructor|" 3453 "copy assignment operator|" 3454 "move assignment operator|" 3455 "destructor}0 inferred target collision: call to both " 3456 "%select{__device__|__global__|__host__|__host__ __device__}1 and " 3457 "%select{__device__|__global__|__host__|__host__ __device__}2 members">; 3458 3459def note_ambiguous_type_conversion: Note< 3460 "because of ambiguity in conversion %diff{of $ to $|between types}0,1">; 3461def note_ovl_builtin_binary_candidate : Note< 3462 "built-in candidate %0">; 3463def note_ovl_builtin_unary_candidate : Note< 3464 "built-in candidate %0">; 3465def err_ovl_no_viable_function_in_init : Error< 3466 "no matching constructor for initialization of %0">; 3467def err_ovl_no_conversion_in_cast : Error< 3468 "cannot convert %1 to %2 without a conversion operator">; 3469def err_ovl_no_viable_conversion_in_cast : Error< 3470 "no matching conversion for %select{|static_cast|reinterpret_cast|" 3471 "dynamic_cast|C-style cast|functional-style cast}0 from %1 to %2">; 3472def err_ovl_ambiguous_conversion_in_cast : Error< 3473 "ambiguous conversion for %select{|static_cast|reinterpret_cast|" 3474 "dynamic_cast|C-style cast|functional-style cast}0 from %1 to %2">; 3475def err_ovl_deleted_conversion_in_cast : Error< 3476 "%select{|static_cast|reinterpret_cast|dynamic_cast|C-style cast|" 3477 "functional-style cast}0 from %1 to %2 uses deleted function">; 3478def err_ovl_ambiguous_init : Error<"call to constructor of %0 is ambiguous">; 3479def err_ref_init_ambiguous : Error< 3480 "reference initialization of type %0 with initializer of type %1 is ambiguous">; 3481def err_ovl_deleted_init : Error< 3482 "call to %select{unavailable|deleted}0 constructor of %1">; 3483def err_ovl_deleted_special_init : Error< 3484 "call to implicitly-deleted %select{default constructor|copy constructor|" 3485 "move constructor|copy assignment operator|move assignment operator|" 3486 "destructor|function}0 of %1">; 3487def err_ovl_ambiguous_oper_unary : Error< 3488 "use of overloaded operator '%0' is ambiguous (operand type %1)">; 3489def err_ovl_ambiguous_oper_binary : Error< 3490 "use of overloaded operator '%0' is ambiguous (with operand types %1 and %2)">; 3491def err_ovl_no_viable_oper : Error<"no viable overloaded '%0'">; 3492def note_assign_lhs_incomplete : Note<"type %0 is incomplete">; 3493def err_ovl_deleted_oper : Error< 3494 "overload resolution selected %select{unavailable|deleted}0 operator '%1'%2">; 3495def err_ovl_deleted_special_oper : Error< 3496 "object of type %0 cannot be %select{constructed|copied|moved|assigned|" 3497 "assigned|destroyed}1 because its %select{default constructor|" 3498 "copy constructor|move constructor|copy assignment operator|" 3499 "move assignment operator|destructor}1 is implicitly deleted">; 3500def err_ovl_no_viable_subscript : 3501 Error<"no viable overloaded operator[] for type %0">; 3502def err_ovl_no_oper : 3503 Error<"type %0 does not provide a %select{subscript|call}1 operator">; 3504def err_ovl_unresolvable : Error< 3505 "reference to overloaded function could not be resolved; " 3506 "did you mean to call it%select{| with no arguments}0?">; 3507def err_bound_member_function : Error< 3508 "reference to non-static member function must be called" 3509 "%select{|; did you mean to call it with no arguments?}0">; 3510def note_possible_target_of_call : Note<"possible target for call">; 3511 3512def err_ovl_no_viable_object_call : Error< 3513 "no matching function for call to object of type %0">; 3514def err_ovl_ambiguous_object_call : Error< 3515 "call to object of type %0 is ambiguous">; 3516def err_ovl_deleted_object_call : Error< 3517 "call to %select{unavailable|deleted}0 function call operator in type %1%2">; 3518def note_ovl_surrogate_cand : Note<"conversion candidate of type %0">; 3519def err_member_call_without_object : Error< 3520 "call to non-static member function without an object argument">; 3521 3522// C++ Address of Overloaded Function 3523def err_addr_ovl_no_viable : Error< 3524 "address of overloaded function %0 does not match required type %1">; 3525def err_addr_ovl_ambiguous : Error< 3526 "address of overloaded function %0 is ambiguous">; 3527def err_addr_ovl_not_func_ptrref : Error< 3528 "address of overloaded function %0 cannot be converted to type %1">; 3529def err_addr_ovl_no_qualifier : Error< 3530 "cannot form member pointer of type %0 without '&' and class name">; 3531 3532// C++11 Literal Operators 3533def err_ovl_no_viable_literal_operator : Error< 3534 "no matching literal operator for call to %0" 3535 "%select{| with argument of type %2| with arguments of types %2 and %3}1" 3536 "%select{| or 'const char *'}4" 3537 "%select{|, and no matching literal operator template}5">; 3538 3539// C++ Template Declarations 3540def err_template_param_shadow : Error< 3541 "declaration of %0 shadows template parameter">; 3542def note_template_param_here : Note<"template parameter is declared here">; 3543def warn_template_export_unsupported : Warning< 3544 "exported templates are unsupported">; 3545def err_template_outside_namespace_or_class_scope : Error< 3546 "templates can only be declared in namespace or class scope">; 3547def err_template_inside_local_class : Error< 3548 "templates cannot be declared inside of a local class">; 3549def err_template_linkage : Error<"templates must have C++ linkage">; 3550def err_template_typedef : Error<"a typedef cannot be a template">; 3551def err_template_unnamed_class : Error< 3552 "cannot declare a class template with no name">; 3553def err_template_param_list_different_arity : Error< 3554 "%select{too few|too many}0 template parameters in template " 3555 "%select{|template parameter }1redeclaration">; 3556def note_template_param_list_different_arity : Note< 3557 "%select{too few|too many}0 template parameters in template template " 3558 "argument">; 3559def note_template_prev_declaration : Note< 3560 "previous template %select{declaration|template parameter}0 is here">; 3561def err_template_param_different_kind : Error< 3562 "template parameter has a different kind in template " 3563 "%select{|template parameter }0redeclaration">; 3564def note_template_param_different_kind : Note< 3565 "template parameter has a different kind in template argument">; 3566 3567def err_template_nontype_parm_different_type : Error< 3568 "template non-type parameter has a different type %0 in template " 3569 "%select{|template parameter }1redeclaration">; 3570 3571def note_template_nontype_parm_different_type : Note< 3572 "template non-type parameter has a different type %0 in template argument">; 3573def note_template_nontype_parm_prev_declaration : Note< 3574 "previous non-type template parameter with type %0 is here">; 3575def err_template_nontype_parm_bad_type : Error< 3576 "a non-type template parameter cannot have type %0">; 3577def err_template_param_default_arg_redefinition : Error< 3578 "template parameter redefines default argument">; 3579def note_template_param_prev_default_arg : Note< 3580 "previous default template argument defined here">; 3581def err_template_param_default_arg_missing : Error< 3582 "template parameter missing a default argument">; 3583def ext_template_parameter_default_in_function_template : ExtWarn< 3584 "default template arguments for a function template are a C++11 extension">, 3585 InGroup<CXX11>; 3586def warn_cxx98_compat_template_parameter_default_in_function_template : Warning< 3587 "default template arguments for a function template are incompatible with C++98">, 3588 InGroup<CXX98Compat>, DefaultIgnore; 3589def err_template_parameter_default_template_member : Error< 3590 "cannot add a default template argument to the definition of a member of a " 3591 "class template">; 3592def err_template_parameter_default_friend_template : Error< 3593 "default template argument not permitted on a friend template">; 3594def err_template_template_parm_no_parms : Error< 3595 "template template parameter must have its own template parameters">; 3596 3597def ext_variable_template : ExtWarn<"variable templates are a C++14 extension">, 3598 InGroup<CXX14>; 3599def warn_cxx11_compat_variable_template : Warning< 3600 "variable templates are incompatible with C++ standards before C++14">, 3601 InGroup<CXXPre14Compat>, DefaultIgnore; 3602def err_template_variable_noparams : Error< 3603 "extraneous 'template<>' in declaration of variable %0">; 3604def err_template_member : Error<"member %0 declared as a template">; 3605def err_template_member_noparams : Error< 3606 "extraneous 'template<>' in declaration of member %0">; 3607def err_template_tag_noparams : Error< 3608 "extraneous 'template<>' in declaration of %0 %1">; 3609def err_template_decl_ref : Error< 3610 "cannot refer to %select{class|variable}0 template %1 without a template argument list">; 3611 3612// C++ Template Argument Lists 3613def err_template_missing_args : Error< 3614 "use of class template %0 requires template arguments">; 3615def err_template_arg_list_different_arity : Error< 3616 "%select{too few|too many}0 template arguments for " 3617 "%select{class template|function template|template template parameter" 3618 "|template}1 %2">; 3619def note_template_decl_here : Note<"template is declared here">; 3620def err_template_arg_must_be_type : Error< 3621 "template argument for template type parameter must be a type">; 3622def err_template_arg_must_be_type_suggest : Error< 3623 "template argument for template type parameter must be a type; " 3624 "did you forget 'typename'?">; 3625def ext_ms_template_type_arg_missing_typename : ExtWarn< 3626 "template argument for template type parameter must be a type; " 3627 "omitted 'typename' is a Microsoft extension">, 3628 InGroup<MicrosoftTemplate>; 3629def err_template_arg_must_be_expr : Error< 3630 "template argument for non-type template parameter must be an expression">; 3631def err_template_arg_nontype_ambig : Error< 3632 "template argument for non-type template parameter is treated as function type %0">; 3633def err_template_arg_must_be_template : Error< 3634 "template argument for template template parameter must be a class template%select{| or type alias template}0">; 3635def ext_template_arg_local_type : ExtWarn< 3636 "template argument uses local type %0">, InGroup<LocalTypeTemplateArgs>; 3637def ext_template_arg_unnamed_type : ExtWarn< 3638 "template argument uses unnamed type">, InGroup<UnnamedTypeTemplateArgs>; 3639def warn_cxx98_compat_template_arg_local_type : Warning< 3640 "local type %0 as template argument is incompatible with C++98">, 3641 InGroup<CXX98CompatLocalTypeTemplateArgs>, DefaultIgnore; 3642def warn_cxx98_compat_template_arg_unnamed_type : Warning< 3643 "unnamed type as template argument is incompatible with C++98">, 3644 InGroup<CXX98CompatUnnamedTypeTemplateArgs>, DefaultIgnore; 3645def note_template_unnamed_type_here : Note< 3646 "unnamed type used in template argument was declared here">; 3647def err_template_arg_overload_type : Error< 3648 "template argument is the type of an unresolved overloaded function">; 3649def err_template_arg_not_valid_template : Error< 3650 "template argument does not refer to a class or alias template, or template " 3651 "template parameter">; 3652def note_template_arg_refers_here_func : Note< 3653 "template argument refers to function template %0, here">; 3654def err_template_arg_template_params_mismatch : Error< 3655 "template template argument has different template parameters than its " 3656 "corresponding template template parameter">; 3657def err_template_arg_not_integral_or_enumeral : Error< 3658 "non-type template argument of type %0 must have an integral or enumeration" 3659 " type">; 3660def err_template_arg_not_ice : Error< 3661 "non-type template argument of type %0 is not an integral constant " 3662 "expression">; 3663def err_template_arg_not_address_constant : Error< 3664 "non-type template argument of type %0 is not a constant expression">; 3665def warn_cxx98_compat_template_arg_null : Warning< 3666 "use of null pointer as non-type template argument is incompatible with " 3667 "C++98">, InGroup<CXX98Compat>, DefaultIgnore; 3668def err_template_arg_untyped_null_constant : Error< 3669 "null non-type template argument must be cast to template parameter type %0">; 3670def err_template_arg_wrongtype_null_constant : Error< 3671 "null non-type template argument of type %0 does not match template parameter " 3672 "of type %1">; 3673def err_deduced_non_type_template_arg_type_mismatch : Error< 3674 "deduced non-type template argument does not have the same type as the " 3675 "its corresponding template parameter%diff{ ($ vs $)|}0,1">; 3676def err_non_type_template_arg_subobject : Error< 3677 "non-type template argument refers to subobject '%0'">; 3678def err_non_type_template_arg_addr_label_diff : Error< 3679 "template argument / label address difference / what did you expect?">; 3680def err_template_arg_not_convertible : Error< 3681 "non-type template argument of type %0 cannot be converted to a value " 3682 "of type %1">; 3683def warn_template_arg_negative : Warning< 3684 "non-type template argument with value '%0' converted to '%1' for unsigned " 3685 "template parameter of type %2">, InGroup<Conversion>, DefaultIgnore; 3686def warn_template_arg_too_large : Warning< 3687 "non-type template argument value '%0' truncated to '%1' for " 3688 "template parameter of type %2">, InGroup<Conversion>, DefaultIgnore; 3689def err_template_arg_no_ref_bind : Error< 3690 "non-type template parameter of reference type " 3691 "%diff{$ cannot bind to template argument of type $" 3692 "|cannot bind to template of incompatible argument type}0,1">; 3693def err_template_arg_ref_bind_ignores_quals : Error< 3694 "reference binding of non-type template parameter " 3695 "%diff{of type $ to template argument of type $|to template argument}0,1 " 3696 "ignores qualifiers">; 3697def err_template_arg_not_decl_ref : Error< 3698 "non-type template argument does not refer to any declaration">; 3699def err_template_arg_not_address_of : Error< 3700 "non-type template argument for template parameter of pointer type %0 must " 3701 "have its address taken">; 3702def err_template_arg_address_of_non_pointer : Error< 3703 "address taken in non-type template argument for template parameter of " 3704 "reference type %0">; 3705def err_template_arg_reference_var : Error< 3706 "non-type template argument of reference type %0 is not an object">; 3707def err_template_arg_field : Error< 3708 "non-type template argument refers to non-static data member %0">; 3709def err_template_arg_method : Error< 3710 "non-type template argument refers to non-static member function %0">; 3711def err_template_arg_object_no_linkage : Error< 3712 "non-type template argument refers to %select{function|object}0 %1 that " 3713 "does not have linkage">; 3714def warn_cxx98_compat_template_arg_object_internal : Warning< 3715 "non-type template argument referring to %select{function|object}0 %1 with " 3716 "internal linkage is incompatible with C++98">, 3717 InGroup<CXX98Compat>, DefaultIgnore; 3718def ext_template_arg_object_internal : ExtWarn< 3719 "non-type template argument referring to %select{function|object}0 %1 with " 3720 "internal linkage is a C++11 extension">, InGroup<CXX11>; 3721def err_template_arg_thread_local : Error< 3722 "non-type template argument refers to thread-local object">; 3723def note_template_arg_internal_object : Note< 3724 "non-type template argument refers to %select{function|object}0 here">; 3725def note_template_arg_refers_here : Note< 3726 "non-type template argument refers here">; 3727def err_template_arg_not_object_or_func : Error< 3728 "non-type template argument does not refer to an object or function">; 3729def err_template_arg_not_pointer_to_member_form : Error< 3730 "non-type template argument is not a pointer to member constant">; 3731def err_template_arg_member_ptr_base_derived_not_supported : Error< 3732 "sorry, non-type template argument of pointer-to-member type %1 that refers " 3733 "to member %q0 of a different class is not supported yet">; 3734def ext_template_arg_extra_parens : ExtWarn< 3735 "address non-type template argument cannot be surrounded by parentheses">; 3736def warn_cxx98_compat_template_arg_extra_parens : Warning< 3737 "redundant parentheses surrounding address non-type template argument are " 3738 "incompatible with C++98">, InGroup<CXX98Compat>, DefaultIgnore; 3739def err_pointer_to_member_type : Error< 3740 "invalid use of pointer to member type after %select{.*|->*}0">; 3741def err_pointer_to_member_call_drops_quals : Error< 3742 "call to pointer to member function of type %0 drops '%1' qualifier%s2">; 3743def err_pointer_to_member_oper_value_classify: Error< 3744 "pointer-to-member function type %0 can only be called on an " 3745 "%select{rvalue|lvalue}1">; 3746def ext_ms_deref_template_argument: ExtWarn< 3747 "non-type template argument containing a dereference operation is a " 3748 "Microsoft extension">, InGroup<MicrosoftTemplate>; 3749def ext_ms_delayed_template_argument: ExtWarn< 3750 "using the undeclared type %0 as a default template argument is a " 3751 "Microsoft extension">, InGroup<MicrosoftTemplate>; 3752 3753// C++ template specialization 3754def err_template_spec_unknown_kind : Error< 3755 "can only provide an explicit specialization for a class template, function " 3756 "template, variable template, or a member function, static data member, " 3757 "%select{or member class|member class, or member enumeration}0 of a " 3758 "class template">; 3759def note_specialized_entity : Note< 3760 "explicitly specialized declaration is here">; 3761def note_explicit_specialization_declared_here : Note< 3762 "explicit specialization declared here">; 3763def err_template_spec_decl_function_scope : Error< 3764 "explicit specialization of %0 in function scope">; 3765def err_template_spec_decl_class_scope : Error< 3766 "explicit specialization of %0 in class scope">; 3767def err_template_spec_decl_friend : Error< 3768 "cannot declare an explicit specialization in a friend">; 3769def err_template_spec_decl_out_of_scope_global : Error< 3770 "%select{class template|class template partial|variable template|" 3771 "variable template partial|function template|member function|" 3772 "static data member|member class|member enumeration}0 " 3773 "specialization of %1 must originally be declared in the global scope">; 3774def err_template_spec_decl_out_of_scope : Error< 3775 "%select{class template|class template partial|variable template|" 3776 "variable template partial|function template|member " 3777 "function|static data member|member class|member enumeration}0 " 3778 "specialization of %1 must originally be declared in namespace %2">; 3779def ext_template_spec_decl_out_of_scope : ExtWarn< 3780 "first declaration of %select{class template|class template partial|" 3781 "variable template|variable template partial|" 3782 "function template|member function|static data member|member class|" 3783 "member enumeration}0 specialization of %1 outside namespace %2 is a " 3784 "C++11 extension">, InGroup<CXX11>; 3785def warn_cxx98_compat_template_spec_decl_out_of_scope : Warning< 3786 "%select{class template|class template partial|variable template|" 3787 "variable template partial|function template|member " 3788 "function|static data member|member class|member enumeration}0 " 3789 "specialization of %1 outside namespace %2 is incompatible with C++98">, 3790 InGroup<CXX98Compat>, DefaultIgnore; 3791def err_template_spec_redecl_out_of_scope : Error< 3792 "%select{class template|class template partial|variable template|" 3793 "variable template partial|function template|member " 3794 "function|static data member|member class|member enumeration}0 " 3795 "specialization of %1 not in a namespace enclosing %2">; 3796def ext_ms_template_spec_redecl_out_of_scope: ExtWarn< 3797 "%select{class template|class template partial|variable template|" 3798 "variable template partial|function template|member " 3799 "function|static data member|member class|member enumeration}0 " 3800 "specialization of %1 outside namespace enclosing %2 " 3801 "is a Microsoft extension">, InGroup<MicrosoftTemplate>; 3802def err_template_spec_redecl_global_scope : Error< 3803 "%select{class template|class template partial|variable template|" 3804 "variable template partial|function template|member " 3805 "function|static data member|member class|member enumeration}0 " 3806 "specialization of %1 must occur at global scope">; 3807def err_spec_member_not_instantiated : Error< 3808 "specialization of member %q0 does not specialize an instantiated member">; 3809def note_specialized_decl : Note<"attempt to specialize declaration here">; 3810def err_specialization_after_instantiation : Error< 3811 "explicit specialization of %0 after instantiation">; 3812def note_instantiation_required_here : Note< 3813 "%select{implicit|explicit}0 instantiation first required here">; 3814def err_template_spec_friend : Error< 3815 "template specialization declaration cannot be a friend">; 3816def err_template_spec_default_arg : Error< 3817 "default argument not permitted on an explicit " 3818 "%select{instantiation|specialization}0 of function %1">; 3819def err_not_class_template_specialization : Error< 3820 "cannot specialize a %select{dependent template|template template " 3821 "parameter}0">; 3822def err_function_specialization_in_class : Error< 3823 "cannot specialize a function %0 within class scope">; 3824def ext_function_specialization_in_class : ExtWarn< 3825 "explicit specialization of %0 within class scope is a Microsoft extension">, 3826 InGroup<MicrosoftTemplate>; 3827def ext_explicit_specialization_storage_class : ExtWarn< 3828 "explicit specialization cannot have a storage class">; 3829def err_explicit_specialization_inconsistent_storage_class : Error< 3830 "explicit specialization has extraneous, inconsistent storage class " 3831 "'%select{none|extern|static|__private_extern__|auto|register}0'">; 3832 3833// C++ class template specializations and out-of-line definitions 3834def err_template_spec_needs_header : Error< 3835 "template specialization requires 'template<>'">; 3836def err_template_spec_needs_template_parameters : Error< 3837 "template specialization or definition requires a template parameter list " 3838 "corresponding to the nested type %0">; 3839def err_template_param_list_matches_nontemplate : Error< 3840 "template parameter list matching the non-templated nested type %0 should " 3841 "be empty ('template<>')">; 3842def err_alias_template_extra_headers : Error< 3843 "extraneous template parameter list in alias template declaration">; 3844def err_template_spec_extra_headers : Error< 3845 "extraneous template parameter list in template specialization or " 3846 "out-of-line template definition">; 3847def warn_template_spec_extra_headers : Warning< 3848 "extraneous template parameter list in template specialization">; 3849def note_explicit_template_spec_does_not_need_header : Note< 3850 "'template<>' header not required for explicitly-specialized class %0 " 3851 "declared here">; 3852def err_template_qualified_declarator_no_match : Error< 3853 "nested name specifier '%0' for declaration does not refer into a class, " 3854 "class template or class template partial specialization">; 3855def err_specialize_member_of_template : Error< 3856 "cannot specialize %select{|(with 'template<>') }0a member of an " 3857 "unspecialized template">; 3858 3859// C++ Class Template Partial Specialization 3860def err_default_arg_in_partial_spec : Error< 3861 "default template argument in a class template partial specialization">; 3862def err_dependent_non_type_arg_in_partial_spec : Error< 3863 "non-type template argument depends on a template parameter of the " 3864 "partial specialization">; 3865def note_dependent_non_type_default_arg_in_partial_spec : Note< 3866 "template parameter is used in default argument declared here">; 3867def err_dependent_typed_non_type_arg_in_partial_spec : Error< 3868 "non-type template argument specializes a template parameter with " 3869 "dependent type %0">; 3870def err_partial_spec_args_match_primary_template : Error< 3871 "%select{class|variable}0 template partial specialization does not " 3872 "specialize any template argument; to %select{declare|define}1 the " 3873 "primary template, remove the template argument list">; 3874def warn_partial_specs_not_deducible : Warning< 3875 "%select{class|variable}0 template partial specialization contains " 3876 "%select{a template parameter|template parameters}1 that cannot be " 3877 "deduced; this partial specialization will never be used">; 3878def note_partial_spec_unused_parameter : Note< 3879 "non-deducible template parameter %0">; 3880def err_partial_spec_ordering_ambiguous : Error< 3881 "ambiguous partial specializations of %0">; 3882def note_partial_spec_match : Note<"partial specialization matches %0">; 3883def err_partial_spec_redeclared : Error< 3884 "class template partial specialization %0 cannot be redeclared">; 3885def note_partial_specialization_declared_here : Note< 3886 "explicit specialization declared here">; 3887def note_prev_partial_spec_here : Note< 3888 "previous declaration of class template partial specialization %0 is here">; 3889def err_partial_spec_fully_specialized : Error< 3890 "partial specialization of %0 does not use any of its template parameters">; 3891 3892// C++ Variable Template Partial Specialization 3893def err_var_partial_spec_redeclared : Error< 3894 "variable template partial specialization %0 cannot be redefined">; 3895def note_var_prev_partial_spec_here : Note< 3896 "previous declaration of variable template partial specialization is here">; 3897def err_var_spec_no_template : Error< 3898 "no variable template matches%select{| partial}0 specialization">; 3899def err_var_spec_no_template_but_method : Error< 3900 "no variable template matches specialization; " 3901 "did you mean to use %0 as function template instead?">; 3902 3903// C++ Function template specializations 3904def err_function_template_spec_no_match : Error< 3905 "no function template matches function template specialization %0">; 3906def err_function_template_spec_ambiguous : Error< 3907 "function template specialization %0 ambiguously refers to more than one " 3908 "function template; explicitly specify%select{| additional}1 template " 3909 "arguments to identify a particular function template">; 3910def note_function_template_spec_matched : Note< 3911 "function template matches specialization %0">; 3912def err_function_template_partial_spec : Error< 3913 "function template partial specialization is not allowed">; 3914 3915// C++ Template Instantiation 3916def err_template_recursion_depth_exceeded : Error< 3917 "recursive template instantiation exceeded maximum depth of %0">, 3918 DefaultFatal, NoSFINAE; 3919def note_template_recursion_depth : Note< 3920 "use -ftemplate-depth=N to increase recursive template instantiation depth">; 3921 3922def err_template_instantiate_within_definition : Error< 3923 "%select{implicit|explicit}0 instantiation of template %1 within its" 3924 " own definition">; 3925def err_template_instantiate_undefined : Error< 3926 "%select{implicit|explicit}0 instantiation of undefined template %1">; 3927def err_implicit_instantiate_member_undefined : Error< 3928 "implicit instantiation of undefined member %0">; 3929def note_template_class_instantiation_was_here : Note< 3930 "class template %0 was instantiated here">; 3931def note_template_class_explicit_specialization_was_here : Note< 3932 "class template %0 was explicitly specialized here">; 3933def note_template_class_instantiation_here : Note< 3934 "in instantiation of template class %0 requested here">; 3935def note_template_member_class_here : Note< 3936 "in instantiation of member class %0 requested here">; 3937def note_template_member_function_here : Note< 3938 "in instantiation of member function %q0 requested here">; 3939def note_function_template_spec_here : Note< 3940 "in instantiation of function template specialization %q0 requested here">; 3941def note_template_static_data_member_def_here : Note< 3942 "in instantiation of static data member %q0 requested here">; 3943def note_template_variable_def_here : Note< 3944 "in instantiation of variable template specialization %q0 requested here">; 3945def note_template_enum_def_here : Note< 3946 "in instantiation of enumeration %q0 requested here">; 3947def note_template_nsdmi_here : Note< 3948 "in instantiation of default member initializer %q0 requested here">; 3949def note_template_type_alias_instantiation_here : Note< 3950 "in instantiation of template type alias %0 requested here">; 3951def note_template_exception_spec_instantiation_here : Note< 3952 "in instantiation of exception specification for %0 requested here">; 3953def warn_var_template_missing : Warning<"instantiation of variable %q0 " 3954 "required here, but no definition is available">, 3955 InGroup<UndefinedVarTemplate>; 3956def warn_func_template_missing : Warning<"instantiation of function %q0 " 3957 "required here, but no definition is available">, 3958 InGroup<UndefinedFuncTemplate>, DefaultIgnore; 3959def note_forward_template_decl : Note< 3960 "forward declaration of template entity is here">; 3961def note_inst_declaration_hint : Note<"add an explicit instantiation " 3962 "declaration to suppress this warning if %q0 is explicitly instantiated in " 3963 "another translation unit">; 3964 3965def note_default_arg_instantiation_here : Note< 3966 "in instantiation of default argument for '%0' required here">; 3967def note_default_function_arg_instantiation_here : Note< 3968 "in instantiation of default function argument expression " 3969 "for '%0' required here">; 3970def note_explicit_template_arg_substitution_here : Note< 3971 "while substituting explicitly-specified template arguments into function " 3972 "template %0 %1">; 3973def note_function_template_deduction_instantiation_here : Note< 3974 "while substituting deduced template arguments into function template %0 " 3975 "%1">; 3976def note_partial_spec_deduct_instantiation_here : Note< 3977 "during template argument deduction for class template partial " 3978 "specialization %0 %1">; 3979def note_prior_template_arg_substitution : Note< 3980 "while substituting prior template arguments into %select{non-type|template}0" 3981 " template parameter%1 %2">; 3982def note_template_default_arg_checking : Note< 3983 "while checking a default template argument used here">; 3984def note_instantiation_contexts_suppressed : Note< 3985 "(skipping %0 context%s0 in backtrace; use -ftemplate-backtrace-limit=0 to " 3986 "see all)">; 3987 3988def err_field_instantiates_to_function : Error< 3989 "data member instantiated with function type %0">; 3990def err_variable_instantiates_to_function : Error< 3991 "%select{variable|static data member}0 instantiated with function type %1">; 3992def err_nested_name_spec_non_tag : Error< 3993 "type %0 cannot be used prior to '::' because it has no members">; 3994 3995// C++ Explicit Instantiation 3996def err_explicit_instantiation_duplicate : Error< 3997 "duplicate explicit instantiation of %0">; 3998def ext_explicit_instantiation_duplicate : ExtWarn< 3999 "duplicate explicit instantiation of %0 ignored as a Microsoft extension">, 4000 InGroup<MicrosoftTemplate>; 4001def note_previous_explicit_instantiation : Note< 4002 "previous explicit instantiation is here">; 4003def ext_explicit_instantiation_after_specialization : Extension< 4004 "explicit instantiation of %0 that occurs after an explicit " 4005 "specialization will be ignored (C++11 extension)">, 4006 InGroup<CXX11>; 4007def warn_cxx98_compat_explicit_instantiation_after_specialization : Warning< 4008 "explicit instantiation of %0 that occurs after an explicit " 4009 "specialization is incompatible with C++98">, 4010 InGroup<CXX98CompatPedantic>, DefaultIgnore; 4011def note_previous_template_specialization : Note< 4012 "previous template specialization is here">; 4013def err_explicit_instantiation_nontemplate_type : Error< 4014 "explicit instantiation of non-templated type %0">; 4015def note_nontemplate_decl_here : Note< 4016 "non-templated declaration is here">; 4017def err_explicit_instantiation_in_class : Error< 4018 "explicit instantiation of %0 in class scope">; 4019def err_explicit_instantiation_out_of_scope : Error< 4020 "explicit instantiation of %0 not in a namespace enclosing %1">; 4021def err_explicit_instantiation_must_be_global : Error< 4022 "explicit instantiation of %0 must occur at global scope">; 4023def warn_explicit_instantiation_out_of_scope_0x : Warning< 4024 "explicit instantiation of %0 not in a namespace enclosing %1">, 4025 InGroup<CXX11Compat>, DefaultIgnore; 4026def warn_explicit_instantiation_must_be_global_0x : Warning< 4027 "explicit instantiation of %0 must occur at global scope">, 4028 InGroup<CXX11Compat>, DefaultIgnore; 4029 4030def err_explicit_instantiation_requires_name : Error< 4031 "explicit instantiation declaration requires a name">; 4032def err_explicit_instantiation_of_typedef : Error< 4033 "explicit instantiation of typedef %0">; 4034def err_explicit_instantiation_storage_class : Error< 4035 "explicit instantiation cannot have a storage class">; 4036def err_explicit_instantiation_not_known : Error< 4037 "explicit instantiation of %0 does not refer to a function template, " 4038 "variable template, member function, member class, or static data member">; 4039def note_explicit_instantiation_here : Note< 4040 "explicit instantiation refers here">; 4041def err_explicit_instantiation_data_member_not_instantiated : Error< 4042 "explicit instantiation refers to static data member %q0 that is not an " 4043 "instantiation">; 4044def err_explicit_instantiation_member_function_not_instantiated : Error< 4045 "explicit instantiation refers to member function %q0 that is not an " 4046 "instantiation">; 4047def err_explicit_instantiation_ambiguous : Error< 4048 "partial ordering for explicit instantiation of %0 is ambiguous">; 4049def note_explicit_instantiation_candidate : Note< 4050 "explicit instantiation candidate function template here %0">; 4051def err_explicit_instantiation_inline : Error< 4052 "explicit instantiation cannot be 'inline'">; 4053def warn_explicit_instantiation_inline_0x : Warning< 4054 "explicit instantiation cannot be 'inline'">, InGroup<CXX11Compat>, 4055 DefaultIgnore; 4056def err_explicit_instantiation_constexpr : Error< 4057 "explicit instantiation cannot be 'constexpr'">; 4058def ext_explicit_instantiation_without_qualified_id : Extension< 4059 "qualifier in explicit instantiation of %q0 requires a template-id " 4060 "(a typedef is not permitted)">; 4061def err_explicit_instantiation_without_template_id : Error< 4062 "explicit instantiation of %q0 must specify a template argument list">; 4063def err_explicit_instantiation_unqualified_wrong_namespace : Error< 4064 "explicit instantiation of %q0 must occur in namespace %1">; 4065def warn_explicit_instantiation_unqualified_wrong_namespace_0x : Warning< 4066 "explicit instantiation of %q0 must occur in namespace %1">, 4067 InGroup<CXX11Compat>, DefaultIgnore; 4068def err_explicit_instantiation_undefined_member : Error< 4069 "explicit instantiation of undefined %select{member class|member function|" 4070 "static data member}0 %1 of class template %2">; 4071def err_explicit_instantiation_undefined_func_template : Error< 4072 "explicit instantiation of undefined function template %0">; 4073def err_explicit_instantiation_undefined_var_template : Error< 4074 "explicit instantiation of undefined variable template %q0">; 4075def err_explicit_instantiation_declaration_after_definition : Error< 4076 "explicit instantiation declaration (with 'extern') follows explicit " 4077 "instantiation definition (without 'extern')">; 4078def note_explicit_instantiation_definition_here : Note< 4079 "explicit instantiation definition is here">; 4080def err_invalid_var_template_spec_type : Error<"type %2 " 4081 "of %select{explicit instantiation|explicit specialization|" 4082 "partial specialization|redeclaration}0 of %1 does not match" 4083 " expected type %3">; 4084def err_mismatched_exception_spec_explicit_instantiation : Error< 4085 "exception specification in explicit instantiation does not match " 4086 "instantiated one">; 4087def ext_mismatched_exception_spec_explicit_instantiation : ExtWarn< 4088 err_mismatched_exception_spec_explicit_instantiation.Text>, 4089 InGroup<MicrosoftExceptionSpec>; 4090 4091// C++ typename-specifiers 4092def err_typename_nested_not_found : Error<"no type named %0 in %1">; 4093def err_typename_nested_not_found_enable_if : Error< 4094 "no type named 'type' in %0; 'enable_if' cannot be used to disable " 4095 "this declaration">; 4096def err_typename_nested_not_type : Error< 4097 "typename specifier refers to non-type member %0 in %1">; 4098def note_typename_refers_here : Note< 4099 "referenced member %0 is declared here">; 4100def err_typename_missing : Error< 4101 "missing 'typename' prior to dependent type name '%0%1'">; 4102def ext_typename_missing : ExtWarn< 4103 "missing 'typename' prior to dependent type name '%0%1'">, 4104 InGroup<DiagGroup<"typename-missing">>; 4105def ext_typename_outside_of_template : ExtWarn< 4106 "'typename' occurs outside of a template">, InGroup<CXX11>; 4107def warn_cxx98_compat_typename_outside_of_template : Warning< 4108 "use of 'typename' outside of a template is incompatible with C++98">, 4109 InGroup<CXX98Compat>, DefaultIgnore; 4110def err_typename_refers_to_using_value_decl : Error< 4111 "typename specifier refers to a dependent using declaration for a value " 4112 "%0 in %1">; 4113def note_using_value_decl_missing_typename : Note< 4114 "add 'typename' to treat this using declaration as a type">; 4115 4116def err_template_kw_refers_to_non_template : Error< 4117 "%0 following the 'template' keyword does not refer to a template">; 4118def err_template_kw_refers_to_class_template : Error< 4119 "'%0%1' instantiated to a class template, not a function template">; 4120def note_referenced_class_template : Error< 4121 "class template declared here">; 4122def err_template_kw_missing : Error< 4123 "missing 'template' keyword prior to dependent template name '%0%1'">; 4124def ext_template_outside_of_template : ExtWarn< 4125 "'template' keyword outside of a template">, InGroup<CXX11>; 4126def warn_cxx98_compat_template_outside_of_template : Warning< 4127 "use of 'template' keyword outside of a template is incompatible with C++98">, 4128 InGroup<CXX98Compat>, DefaultIgnore; 4129 4130def err_non_type_template_in_nested_name_specifier : Error< 4131 "qualified name refers into a specialization of %select{function|variable}0 " 4132 "template %1">; 4133def err_template_id_not_a_type : Error< 4134 "template name refers to non-type template %0">; 4135def note_template_declared_here : Note< 4136 "%select{function template|class template|variable template" 4137 "|type alias template|template template parameter}0 " 4138 "%1 declared here">; 4139def err_alias_template_expansion_into_fixed_list : Error< 4140 "pack expansion used as argument for non-pack parameter of alias template">; 4141def note_parameter_type : Note< 4142 "parameter of type %0 is declared here">; 4143 4144// C++11 Variadic Templates 4145def err_template_param_pack_default_arg : Error< 4146 "template parameter pack cannot have a default argument">; 4147def err_template_param_pack_must_be_last_template_parameter : Error< 4148 "template parameter pack must be the last template parameter">; 4149 4150def err_template_parameter_pack_non_pack : Error< 4151 "%select{template type|non-type template|template template}0 parameter" 4152 "%select{| pack}1 conflicts with previous %select{template type|" 4153 "non-type template|template template}0 parameter%select{ pack|}1">; 4154def note_template_parameter_pack_non_pack : Note< 4155 "%select{template type|non-type template|template template}0 parameter" 4156 "%select{| pack}1 does not match %select{template type|non-type template" 4157 "|template template}0 parameter%select{ pack|}1 in template argument">; 4158def note_template_parameter_pack_here : Note< 4159 "previous %select{template type|non-type template|template template}0 " 4160 "parameter%select{| pack}1 declared here">; 4161 4162def err_unexpanded_parameter_pack : Error< 4163 "%select{expression|base type|declaration type|data member type|bit-field " 4164 "size|static assertion|fixed underlying type|enumerator value|" 4165 "using declaration|friend declaration|qualifier|initializer|default argument|" 4166 "non-type template parameter type|exception type|partial specialization|" 4167 "__if_exists name|__if_not_exists name|lambda|block}0 contains" 4168 "%plural{0: an|:}1 unexpanded parameter pack" 4169 "%plural{0:|1: %2|2:s %2 and %3|:s %2, %3, ...}1">; 4170 4171def err_pack_expansion_without_parameter_packs : Error< 4172 "pack expansion does not contain any unexpanded parameter packs">; 4173def err_pack_expansion_length_conflict : Error< 4174 "pack expansion contains parameter packs %0 and %1 that have different " 4175 "lengths (%2 vs. %3)">; 4176def err_pack_expansion_length_conflict_multilevel : Error< 4177 "pack expansion contains parameter pack %0 that has a different " 4178 "length (%1 vs. %2) from outer parameter packs">; 4179def err_pack_expansion_member_init : Error< 4180 "pack expansion for initialization of member %0">; 4181 4182def err_function_parameter_pack_without_parameter_packs : Error< 4183 "type %0 of function parameter pack does not contain any unexpanded " 4184 "parameter packs">; 4185def err_ellipsis_in_declarator_not_parameter : Error< 4186 "only function and template parameters can be parameter packs">; 4187 4188def err_sizeof_pack_no_pack_name : Error< 4189 "%0 does not refer to the name of a parameter pack">; 4190 4191def err_fold_expression_packs_both_sides : Error< 4192 "binary fold expression has unexpanded parameter packs in both operands">; 4193def err_fold_expression_empty : Error< 4194 "unary fold expression has empty expansion for operator '%0' " 4195 "with no fallback value">; 4196def err_fold_expression_bad_operand : Error< 4197 "expression not permitted as operand of fold expression">; 4198 4199def err_unexpected_typedef : Error< 4200 "unexpected type name %0: expected expression">; 4201def err_unexpected_namespace : Error< 4202 "unexpected namespace name %0: expected expression">; 4203def err_undeclared_var_use : Error<"use of undeclared identifier %0">; 4204def ext_undeclared_unqual_id_with_dependent_base : ExtWarn< 4205 "use of undeclared identifier %0; " 4206 "unqualified lookup into dependent bases of class template %1 is a Microsoft extension">, 4207 InGroup<MicrosoftTemplate>; 4208def ext_found_via_dependent_bases_lookup : ExtWarn<"use of identifier %0 " 4209 "found via unqualified lookup into dependent bases of class templates is a " 4210 "Microsoft extension">, InGroup<MicrosoftTemplate>; 4211def note_dependent_var_use : Note<"must qualify identifier to find this " 4212 "declaration in dependent base class">; 4213def err_not_found_by_two_phase_lookup : Error<"call to function %0 that is neither " 4214 "visible in the template definition nor found by argument-dependent lookup">; 4215def note_not_found_by_two_phase_lookup : Note<"%0 should be declared prior to the " 4216 "call site%select{| or in %2| or in an associated namespace of one of its arguments}1">; 4217def err_undeclared_use : Error<"use of undeclared %0">; 4218def warn_partial_availability : Warning<"%0 is only available conditionally">, 4219 InGroup<PartialAvailability>, DefaultIgnore; 4220def note_partial_availability_silence : Note< 4221 "explicitly redeclare %0 to silence this warning">; 4222def warn_partial_message : Warning<"%0 is partial: %1">, 4223 InGroup<PartialAvailability>, DefaultIgnore; 4224def warn_partial_fwdclass_message : Warning< 4225 "%0 may be partial because the receiver type is unknown">, 4226 InGroup<PartialAvailability>, DefaultIgnore; 4227def warn_deprecated : Warning<"%0 is deprecated">, 4228 InGroup<DeprecatedDeclarations>; 4229def warn_property_method_deprecated : 4230 Warning<"property access is using %0 method which is deprecated">, 4231 InGroup<DeprecatedDeclarations>; 4232def warn_deprecated_message : Warning<"%0 is deprecated: %1">, 4233 InGroup<DeprecatedDeclarations>; 4234def warn_deprecated_anonymous_namespace : Warning< 4235 "'deprecated' attribute on anonymous namespace ignored">, 4236 InGroup<IgnoredAttributes>; 4237def warn_deprecated_fwdclass_message : Warning< 4238 "%0 may be deprecated because the receiver type is unknown">, 4239 InGroup<DeprecatedDeclarations>; 4240def warn_deprecated_def : Warning< 4241 "Implementing deprecated %select{method|class|category}0">, 4242 InGroup<DeprecatedImplementations>, DefaultIgnore; 4243def err_unavailable : Error<"%0 is unavailable">; 4244def err_property_method_unavailable : 4245 Error<"property access is using %0 method which is unavailable">; 4246def err_unavailable_message : Error<"%0 is unavailable: %1">; 4247def warn_unavailable_fwdclass_message : Warning< 4248 "%0 may be unavailable because the receiver type is unknown">, 4249 InGroup<UnavailableDeclarations>; 4250def note_availability_specified_here : Note< 4251 "%0 has been explicitly marked " 4252 "%select{unavailable|deleted|deprecated|partial}1 here">; 4253def note_implicitly_deleted : Note< 4254 "explicitly defaulted function was implicitly deleted here">; 4255def note_inherited_deleted_here : Note< 4256 "deleted constructor was inherited here">; 4257def warn_not_enough_argument : Warning< 4258 "not enough variable arguments in %0 declaration to fit a sentinel">, 4259 InGroup<Sentinel>; 4260def warn_missing_sentinel : Warning < 4261 "missing sentinel in %select{function call|method dispatch|block call}0">, 4262 InGroup<Sentinel>; 4263def note_sentinel_here : Note< 4264 "%select{function|method|block}0 has been explicitly marked sentinel here">; 4265def warn_missing_prototype : Warning< 4266 "no previous prototype for function %0">, 4267 InGroup<DiagGroup<"missing-prototypes">>, DefaultIgnore; 4268def note_declaration_not_a_prototype : Note< 4269 "this declaration is not a prototype; add 'void' to make it a prototype for a zero-parameter function">; 4270def warn_missing_variable_declarations : Warning< 4271 "no previous extern declaration for non-static variable %0">, 4272 InGroup<DiagGroup<"missing-variable-declarations">>, DefaultIgnore; 4273def err_static_data_member_reinitialization : 4274 Error<"static data member %0 already has an initializer">; 4275def err_redefinition : Error<"redefinition of %0">; 4276def err_alias_after_tentative : 4277 Error<"alias definition of %0 after tentative definition">; 4278def err_alias_is_definition : 4279 Error<"definition %0 cannot also be an %select{alias|ifunc}1">; 4280def err_definition_of_implicitly_declared_member : Error< 4281 "definition of implicitly declared %select{default constructor|copy " 4282 "constructor|move constructor|copy assignment operator|move assignment " 4283 "operator|destructor|function}1">; 4284def err_definition_of_explicitly_defaulted_member : Error< 4285 "definition of explicitly defaulted %select{default constructor|copy " 4286 "constructor|move constructor|copy assignment operator|move assignment " 4287 "operator|destructor}0">; 4288def err_redefinition_extern_inline : Error< 4289 "redefinition of a 'extern inline' function %0 is not supported in " 4290 "%select{C99 mode|C++}1">; 4291def warn_attr_abi_tag_namespace : Warning< 4292 "'abi_tag' attribute on %select{non-inline|anonymous}0 namespace ignored">, 4293 InGroup<IgnoredAttributes>; 4294def err_abi_tag_on_redeclaration : Error< 4295 "cannot add 'abi_tag' attribute in a redeclaration">; 4296def err_new_abi_tag_on_redeclaration : Error< 4297 "'abi_tag' %0 missing in original declaration">; 4298 4299def note_deleted_dtor_no_operator_delete : Note< 4300 "virtual destructor requires an unambiguous, accessible 'operator delete'">; 4301def note_deleted_special_member_class_subobject : Note< 4302 "%select{default constructor of|copy constructor of|move constructor of|" 4303 "copy assignment operator of|move assignment operator of|destructor of|" 4304 "constructor inherited by}0 " 4305 "%1 is implicitly deleted because " 4306 "%select{base class %3|%select{||||variant }4field %3}2 has " 4307 "%select{no|a deleted|multiple|an inaccessible|a non-trivial}4 " 4308 "%select{%select{default constructor|copy constructor|move constructor|copy " 4309 "assignment operator|move assignment operator|destructor|" 4310 "%select{default|corresponding|default|default|default}4 constructor}0|" 4311 "destructor}5" 4312 "%select{||s||}4">; 4313def note_deleted_default_ctor_uninit_field : Note< 4314 "%select{default constructor of|constructor inherited by}0 " 4315 "%1 is implicitly deleted because field %2 of " 4316 "%select{reference|const-qualified}4 type %3 would not be initialized">; 4317def note_deleted_default_ctor_all_const : Note< 4318 "%select{default constructor of|constructor inherited by}0 " 4319 "%1 is implicitly deleted because all " 4320 "%select{data members|data members of an anonymous union member}2" 4321 " are const-qualified">; 4322def note_deleted_copy_ctor_rvalue_reference : Note< 4323 "copy constructor of %0 is implicitly deleted because field %1 is of " 4324 "rvalue reference type %2">; 4325def note_deleted_copy_user_declared_move : Note< 4326 "copy %select{constructor|assignment operator}0 is implicitly deleted because" 4327 " %1 has a user-declared move %select{constructor|assignment operator}2">; 4328def note_deleted_assign_field : Note< 4329 "%select{copy|move}0 assignment operator of %1 is implicitly deleted " 4330 "because field %2 is of %select{reference|const-qualified}4 type %3">; 4331 4332// These should be errors. 4333def warn_undefined_internal : Warning< 4334 "%select{function|variable}0 %q1 has internal linkage but is not defined">, 4335 InGroup<DiagGroup<"undefined-internal">>; 4336def warn_undefined_inline : Warning<"inline function %q0 is not defined">, 4337 InGroup<DiagGroup<"undefined-inline">>; 4338def err_undefined_inline_var : Error<"inline variable %q0 is not defined">; 4339def note_used_here : Note<"used here">; 4340 4341def err_internal_linkage_redeclaration : Error< 4342 "'internal_linkage' attribute does not appear on the first declaration of %0">; 4343def warn_internal_linkage_local_storage : Warning< 4344 "'internal_linkage' attribute on a non-static local variable is ignored">, 4345 InGroup<IgnoredAttributes>; 4346 4347def ext_internal_in_extern_inline : ExtWarn< 4348 "static %select{function|variable}0 %1 is used in an inline function with " 4349 "external linkage">, InGroup<StaticInInline>; 4350def ext_internal_in_extern_inline_quiet : Extension< 4351 "static %select{function|variable}0 %1 is used in an inline function with " 4352 "external linkage">, InGroup<StaticInInline>; 4353def warn_static_local_in_extern_inline : Warning< 4354 "non-constant static local variable in inline function may be different " 4355 "in different files">, InGroup<StaticLocalInInline>; 4356def note_convert_inline_to_static : Note< 4357 "use 'static' to give inline function %0 internal linkage">; 4358 4359def ext_redefinition_of_typedef : ExtWarn< 4360 "redefinition of typedef %0 is a C11 feature">, 4361 InGroup<DiagGroup<"typedef-redefinition"> >; 4362def err_redefinition_variably_modified_typedef : Error< 4363 "redefinition of %select{typedef|type alias}0 for variably-modified type %1">; 4364 4365def err_inline_decl_follows_def : Error< 4366 "inline declaration of %0 follows non-inline definition">; 4367def err_inline_declaration_block_scope : Error< 4368 "inline declaration of %0 not allowed in block scope">; 4369def err_static_non_static : Error< 4370 "static declaration of %0 follows non-static declaration">; 4371def err_different_language_linkage : Error< 4372 "declaration of %0 has a different language linkage">; 4373def ext_retained_language_linkage : Extension< 4374 "friend function %0 retaining previous language linkage is an extension">, 4375 InGroup<DiagGroup<"retained-language-linkage">>; 4376def err_extern_c_global_conflict : Error< 4377 "declaration of %1 %select{with C language linkage|in global scope}0 " 4378 "conflicts with declaration %select{in global scope|with C language linkage}0">; 4379def note_extern_c_global_conflict : Note< 4380 "declared %select{in global scope|with C language linkage}0 here">; 4381def warn_weak_import : Warning < 4382 "an already-declared variable is made a weak_import declaration %0">; 4383def ext_static_non_static : Extension< 4384 "redeclaring non-static %0 as static is a Microsoft extension">, 4385 InGroup<MicrosoftRedeclareStatic>; 4386def err_non_static_static : Error< 4387 "non-static declaration of %0 follows static declaration">; 4388def err_extern_non_extern : Error< 4389 "extern declaration of %0 follows non-extern declaration">; 4390def err_non_extern_extern : Error< 4391 "non-extern declaration of %0 follows extern declaration">; 4392def err_non_thread_thread : Error< 4393 "non-thread-local declaration of %0 follows thread-local declaration">; 4394def err_thread_non_thread : Error< 4395 "thread-local declaration of %0 follows non-thread-local declaration">; 4396def err_thread_thread_different_kind : Error< 4397 "thread-local declaration of %0 with %select{static|dynamic}1 initialization " 4398 "follows declaration with %select{dynamic|static}1 initialization">; 4399def err_redefinition_different_type : Error< 4400 "redefinition of %0 with a different type%diff{: $ vs $|}1,2">; 4401def err_redefinition_different_kind : Error< 4402 "redefinition of %0 as different kind of symbol">; 4403def err_redefinition_different_namespace_alias : Error< 4404 "redefinition of %0 as an alias for a different namespace">; 4405def note_previous_namespace_alias : Note< 4406 "previously defined as an alias for %0">; 4407def warn_forward_class_redefinition : Warning< 4408 "redefinition of forward class %0 of a typedef name of an object type is ignored">, 4409 InGroup<DiagGroup<"objc-forward-class-redefinition">>; 4410def err_redefinition_different_typedef : Error< 4411 "%select{typedef|type alias|type alias template}0 " 4412 "redefinition with different types%diff{ ($ vs $)|}1,2">; 4413def err_tag_reference_non_tag : Error< 4414 "elaborated type refers to %select{a non-tag type|a typedef|a type alias|a template|a type alias template|a template template argument}0">; 4415def err_tag_reference_conflict : Error< 4416 "implicit declaration introduced by elaborated type conflicts with " 4417 "%select{a declaration|a typedef|a type alias|a template}0 of the same name">; 4418def err_dependent_tag_decl : Error< 4419 "%select{declaration|definition}0 of " 4420 "%select{struct|interface|union|class|enum}1 in a dependent scope">; 4421def err_tag_definition_of_typedef : Error< 4422 "definition of type %0 conflicts with %select{typedef|type alias}1 of the same name">; 4423def err_conflicting_types : Error<"conflicting types for %0">; 4424def err_different_pass_object_size_params : Error< 4425 "conflicting pass_object_size attributes on parameters">; 4426def err_late_asm_label_name : Error< 4427 "cannot apply asm label to %select{variable|function}0 after its first use">; 4428def err_different_asm_label : Error<"conflicting asm label">; 4429def err_nested_redefinition : Error<"nested redefinition of %0">; 4430def err_use_with_wrong_tag : Error< 4431 "use of %0 with tag type that does not match previous declaration">; 4432def warn_struct_class_tag_mismatch : Warning< 4433 "%select{struct|interface|class}0%select{| template}1 %2 was previously " 4434 "declared as a %select{struct|interface|class}3%select{| template}1">, 4435 InGroup<MismatchedTags>, DefaultIgnore; 4436def warn_struct_class_previous_tag_mismatch : Warning< 4437 "%2 defined as %select{a struct|an interface|a class}0%select{| template}1 " 4438 "here but previously declared as " 4439 "%select{a struct|an interface|a class}3%select{| template}1">, 4440 InGroup<MismatchedTags>, DefaultIgnore; 4441def note_struct_class_suggestion : Note< 4442 "did you mean %select{struct|interface|class}0 here?">; 4443def ext_forward_ref_enum : Extension< 4444 "ISO C forbids forward references to 'enum' types">; 4445def err_forward_ref_enum : Error< 4446 "ISO C++ forbids forward references to 'enum' types">; 4447def ext_ms_forward_ref_enum : Extension< 4448 "forward references to 'enum' types are a Microsoft extension">, 4449 InGroup<MicrosoftEnumForwardReference>; 4450def ext_forward_ref_enum_def : Extension< 4451 "redeclaration of already-defined enum %0 is a GNU extension">, 4452 InGroup<GNURedeclaredEnum>; 4453 4454def err_redefinition_of_enumerator : Error<"redefinition of enumerator %0">; 4455def err_duplicate_member : Error<"duplicate member %0">; 4456def err_misplaced_ivar : Error< 4457 "instance variables may not be placed in %select{categories|class extension}0">; 4458def warn_ivars_in_interface : Warning< 4459 "declaration of instance variables in the interface is deprecated">, 4460 InGroup<DiagGroup<"objc-interface-ivars">>, DefaultIgnore; 4461def ext_enum_value_not_int : Extension< 4462 "ISO C restricts enumerator values to range of 'int' (%0 is too " 4463 "%select{small|large}1)">; 4464def ext_enum_too_large : ExtWarn< 4465 "enumeration values exceed range of largest integer">, InGroup<EnumTooLarge>; 4466def ext_enumerator_increment_too_large : ExtWarn< 4467 "incremented enumerator value %0 is not representable in the " 4468 "largest integer type">, InGroup<EnumTooLarge>; 4469def warn_flag_enum_constant_out_of_range : Warning< 4470 "enumeration value %0 is out of range of flags in enumeration type %1">, 4471 InGroup<FlagEnum>; 4472 4473def warn_illegal_constant_array_size : Extension< 4474 "size of static array must be an integer constant expression">; 4475def err_vm_decl_in_file_scope : Error< 4476 "variably modified type declaration not allowed at file scope">; 4477def err_vm_decl_has_extern_linkage : Error< 4478 "variably modified type declaration cannot have 'extern' linkage">; 4479def err_typecheck_field_variable_size : Error< 4480 "fields must have a constant size: 'variable length array in structure' " 4481 "extension will never be supported">; 4482def err_vm_func_decl : Error< 4483 "function declaration cannot have variably modified type">; 4484def err_array_too_large : Error< 4485 "array is too large (%0 elements)">; 4486def warn_array_new_too_large : Warning<"array is too large (%0 elements)">, 4487 // FIXME PR11644: ", will throw std::bad_array_new_length at runtime" 4488 InGroup<BadArrayNewLength>; 4489 4490// -Wpadded, -Wpacked 4491def warn_padded_struct_field : Warning< 4492 "padding %select{struct|interface|class}0 %1 with %2 " 4493 "%select{byte|bit}3%s2 to align %4">, 4494 InGroup<Padded>, DefaultIgnore; 4495def warn_padded_struct_anon_field : Warning< 4496 "padding %select{struct|interface|class}0 %1 with %2 " 4497 "%select{byte|bit}3%s2 to align anonymous bit-field">, 4498 InGroup<Padded>, DefaultIgnore; 4499def warn_padded_struct_size : Warning< 4500 "padding size of %0 with %1 %select{byte|bit}2%s1 to alignment boundary">, 4501 InGroup<Padded>, DefaultIgnore; 4502def warn_unnecessary_packed : Warning< 4503 "packed attribute is unnecessary for %0">, InGroup<Packed>, DefaultIgnore; 4504 4505def err_typecheck_negative_array_size : Error<"array size is negative">; 4506def warn_typecheck_negative_array_new_size : Warning<"array size is negative">, 4507 // FIXME PR11644: ", will throw std::bad_array_new_length at runtime" 4508 InGroup<BadArrayNewLength>; 4509def warn_typecheck_function_qualifiers_ignored : Warning< 4510 "'%0' qualifier on function type %1 has no effect">, 4511 InGroup<IgnoredQualifiers>; 4512def warn_typecheck_function_qualifiers_unspecified : Warning< 4513 "'%0' qualifier on function type %1 has unspecified behavior">; 4514def warn_typecheck_reference_qualifiers : Warning< 4515 "'%0' qualifier on reference type %1 has no effect">, 4516 InGroup<IgnoredQualifiers>; 4517def err_typecheck_invalid_restrict_not_pointer : Error< 4518 "restrict requires a pointer or reference (%0 is invalid)">; 4519def err_typecheck_invalid_restrict_not_pointer_noarg : Error< 4520 "restrict requires a pointer or reference">; 4521def err_typecheck_invalid_restrict_invalid_pointee : Error< 4522 "pointer to function type %0 may not be 'restrict' qualified">; 4523def ext_typecheck_zero_array_size : Extension< 4524 "zero size arrays are an extension">, InGroup<ZeroLengthArray>; 4525def err_typecheck_zero_array_size : Error< 4526 "zero-length arrays are not permitted in C++">; 4527def warn_typecheck_zero_static_array_size : Warning< 4528 "'static' has no effect on zero-length arrays">, 4529 InGroup<ArrayBounds>; 4530def err_array_size_non_int : Error<"size of array has non-integer type %0">; 4531def err_init_element_not_constant : Error< 4532 "initializer element is not a compile-time constant">; 4533def ext_aggregate_init_not_constant : Extension< 4534 "initializer for aggregate is not a compile-time constant">, InGroup<C99>; 4535def err_local_cant_init : Error< 4536 "'__local' variable cannot have an initializer">; 4537def err_block_extern_cant_init : Error< 4538 "'extern' variable cannot have an initializer">; 4539def warn_extern_init : Warning<"'extern' variable has an initializer">, 4540 InGroup<DiagGroup<"extern-initializer">>; 4541def err_variable_object_no_init : Error< 4542 "variable-sized object may not be initialized">; 4543def err_excess_initializers : Error< 4544 "excess elements in %select{array|vector|scalar|union|struct}0 initializer">; 4545def ext_excess_initializers : ExtWarn< 4546 "excess elements in %select{array|vector|scalar|union|struct}0 initializer">; 4547def err_excess_initializers_in_char_array_initializer : Error< 4548 "excess elements in char array initializer">; 4549def ext_excess_initializers_in_char_array_initializer : ExtWarn< 4550 "excess elements in char array initializer">; 4551def err_initializer_string_for_char_array_too_long : Error< 4552 "initializer-string for char array is too long">; 4553def ext_initializer_string_for_char_array_too_long : ExtWarn< 4554 "initializer-string for char array is too long">; 4555def warn_missing_field_initializers : Warning< 4556 "missing field %0 initializer">, 4557 InGroup<MissingFieldInitializers>, DefaultIgnore; 4558def warn_braces_around_scalar_init : Warning< 4559 "braces around scalar initializer">, InGroup<DiagGroup<"braced-scalar-init">>; 4560def ext_many_braces_around_scalar_init : ExtWarn< 4561 "too many braces around scalar initializer">, 4562 InGroup<DiagGroup<"many-braces-around-scalar-init">>; 4563def ext_complex_component_init : Extension< 4564 "complex initialization specifying real and imaginary components " 4565 "is an extension">, InGroup<DiagGroup<"complex-component-init">>; 4566def err_empty_scalar_initializer : Error<"scalar initializer cannot be empty">; 4567def warn_cxx98_compat_empty_scalar_initializer : Warning< 4568 "scalar initialized from empty initializer list is incompatible with C++98">, 4569 InGroup<CXX98Compat>, DefaultIgnore; 4570def warn_cxx98_compat_reference_list_init : Warning< 4571 "reference initialized from initializer list is incompatible with C++98">, 4572 InGroup<CXX98Compat>, DefaultIgnore; 4573def warn_cxx98_compat_initializer_list_init : Warning< 4574 "initialization of initializer_list object is incompatible with C++98">, 4575 InGroup<CXX98Compat>, DefaultIgnore; 4576def warn_cxx98_compat_ctor_list_init : Warning< 4577 "constructor call from initializer list is incompatible with C++98">, 4578 InGroup<CXX98Compat>, DefaultIgnore; 4579def err_illegal_initializer : Error< 4580 "illegal initializer (only variables can be initialized)">; 4581def err_illegal_initializer_type : Error<"illegal initializer type %0">; 4582def ext_init_list_type_narrowing : ExtWarn< 4583 "type %0 cannot be narrowed to %1 in initializer list">, 4584 InGroup<CXX11Narrowing>, DefaultError, SFINAEFailure; 4585def ext_init_list_variable_narrowing : ExtWarn< 4586 "non-constant-expression cannot be narrowed from type %0 to %1 in " 4587 "initializer list">, InGroup<CXX11Narrowing>, DefaultError, SFINAEFailure; 4588def ext_init_list_constant_narrowing : ExtWarn< 4589 "constant expression evaluates to %0 which cannot be narrowed to type %1">, 4590 InGroup<CXX11Narrowing>, DefaultError, SFINAEFailure; 4591def warn_init_list_type_narrowing : Warning< 4592 "type %0 cannot be narrowed to %1 in initializer list in C++11">, 4593 InGroup<CXX11Narrowing>, DefaultIgnore; 4594def warn_init_list_variable_narrowing : Warning< 4595 "non-constant-expression cannot be narrowed from type %0 to %1 in " 4596 "initializer list in C++11">, 4597 InGroup<CXX11Narrowing>, DefaultIgnore; 4598def warn_init_list_constant_narrowing : Warning< 4599 "constant expression evaluates to %0 which cannot be narrowed to type %1 in " 4600 "C++11">, 4601 InGroup<CXX11Narrowing>, DefaultIgnore; 4602def note_init_list_narrowing_silence : Note< 4603 "insert an explicit cast to silence this issue">; 4604def err_init_objc_class : Error< 4605 "cannot initialize Objective-C class type %0">; 4606def err_implicit_empty_initializer : Error< 4607 "initializer for aggregate with no elements requires explicit braces">; 4608def err_bitfield_has_negative_width : Error< 4609 "bit-field %0 has negative width (%1)">; 4610def err_anon_bitfield_has_negative_width : Error< 4611 "anonymous bit-field has negative width (%0)">; 4612def err_bitfield_has_zero_width : Error<"named bit-field %0 has zero width">; 4613def err_bitfield_width_exceeds_type_width : Error< 4614 "width of bit-field %0 (%1 bits) exceeds %select{width|size}2 " 4615 "of its type (%3 bit%s3)">; 4616def err_anon_bitfield_width_exceeds_type_width : Error< 4617 "width of anonymous bit-field (%0 bits) exceeds %select{width|size}1 " 4618 "of its type (%2 bit%s2)">; 4619def err_incorrect_number_of_vector_initializers : Error< 4620 "number of elements must be either one or match the size of the vector">; 4621 4622// Used by C++ which allows bit-fields that are wider than the type. 4623def warn_bitfield_width_exceeds_type_width: Warning< 4624 "width of bit-field %0 (%1 bits) exceeds the width of its type; value will " 4625 "be truncated to %2 bit%s2">, InGroup<BitFieldWidth>; 4626def warn_anon_bitfield_width_exceeds_type_width : Warning< 4627 "width of anonymous bit-field (%0 bits) exceeds width of its type; value " 4628 "will be truncated to %1 bit%s1">, InGroup<BitFieldWidth>; 4629 4630def warn_missing_braces : Warning< 4631 "suggest braces around initialization of subobject">, 4632 InGroup<MissingBraces>, DefaultIgnore; 4633 4634def err_redefinition_of_label : Error<"redefinition of label %0">; 4635def err_undeclared_label_use : Error<"use of undeclared label %0">; 4636def err_goto_ms_asm_label : Error< 4637 "cannot jump from this goto statement to label %0 inside an inline assembly block">; 4638def note_goto_ms_asm_label : Note< 4639 "inline assembly label %0 declared here">; 4640def warn_unused_label : Warning<"unused label %0">, 4641 InGroup<UnusedLabel>, DefaultIgnore; 4642 4643def err_goto_into_protected_scope : Error< 4644 "cannot jump from this goto statement to its label">; 4645def ext_goto_into_protected_scope : ExtWarn< 4646 "jump from this goto statement to its label is a Microsoft extension">, 4647 InGroup<MicrosoftGoto>; 4648def warn_cxx98_compat_goto_into_protected_scope : Warning< 4649 "jump from this goto statement to its label is incompatible with C++98">, 4650 InGroup<CXX98Compat>, DefaultIgnore; 4651def err_switch_into_protected_scope : Error< 4652 "cannot jump from switch statement to this case label">; 4653def warn_cxx98_compat_switch_into_protected_scope : Warning< 4654 "jump from switch statement to this case label is incompatible with C++98">, 4655 InGroup<CXX98Compat>, DefaultIgnore; 4656def err_indirect_goto_without_addrlabel : Error< 4657 "indirect goto in function with no address-of-label expressions">; 4658def err_indirect_goto_in_protected_scope : Error< 4659 "cannot jump from this indirect goto statement to one of its possible targets">; 4660def warn_cxx98_compat_indirect_goto_in_protected_scope : Warning< 4661 "jump from this indirect goto statement to one of its possible targets " 4662 "is incompatible with C++98">, InGroup<CXX98Compat>, DefaultIgnore; 4663def note_indirect_goto_target : Note< 4664 "possible target of indirect goto statement">; 4665def note_protected_by_variable_init : Note< 4666 "jump bypasses variable initialization">; 4667def note_protected_by_variable_nontriv_destructor : Note< 4668 "jump bypasses variable with a non-trivial destructor">; 4669def note_protected_by_variable_non_pod : Note< 4670 "jump bypasses initialization of non-POD variable">; 4671def note_protected_by_cleanup : Note< 4672 "jump bypasses initialization of variable with __attribute__((cleanup))">; 4673def note_protected_by_vla_typedef : Note< 4674 "jump bypasses initialization of VLA typedef">; 4675def note_protected_by_vla_type_alias : Note< 4676 "jump bypasses initialization of VLA type alias">; 4677def note_protected_by_constexpr_if : Note< 4678 "jump enters controlled statement of constexpr if">; 4679def note_protected_by_vla : Note< 4680 "jump bypasses initialization of variable length array">; 4681def note_protected_by_objc_try : Note< 4682 "jump bypasses initialization of @try block">; 4683def note_protected_by_objc_catch : Note< 4684 "jump bypasses initialization of @catch block">; 4685def note_protected_by_objc_finally : Note< 4686 "jump bypasses initialization of @finally block">; 4687def note_protected_by_objc_synchronized : Note< 4688 "jump bypasses initialization of @synchronized block">; 4689def note_protected_by_objc_autoreleasepool : Note< 4690 "jump bypasses auto release push of @autoreleasepool block">; 4691def note_protected_by_cxx_try : Note< 4692 "jump bypasses initialization of try block">; 4693def note_protected_by_cxx_catch : Note< 4694 "jump bypasses initialization of catch block">; 4695def note_protected_by_seh_try : Note< 4696 "jump bypasses initialization of __try block">; 4697def note_protected_by_seh_except : Note< 4698 "jump bypasses initialization of __except block">; 4699def note_protected_by_seh_finally : Note< 4700 "jump bypasses initialization of __finally block">; 4701def note_protected_by___block : Note< 4702 "jump bypasses setup of __block variable">; 4703def note_protected_by_objc_strong_init : Note< 4704 "jump bypasses initialization of __strong variable">; 4705def note_protected_by_objc_weak_init : Note< 4706 "jump bypasses initialization of __weak variable">; 4707def note_enters_block_captures_cxx_obj : Note< 4708 "jump enters lifetime of block which captures a destructible C++ object">; 4709def note_enters_block_captures_strong : Note< 4710 "jump enters lifetime of block which strongly captures a variable">; 4711def note_enters_block_captures_weak : Note< 4712 "jump enters lifetime of block which weakly captures a variable">; 4713 4714def note_exits_cleanup : Note< 4715 "jump exits scope of variable with __attribute__((cleanup))">; 4716def note_exits_dtor : Note< 4717 "jump exits scope of variable with non-trivial destructor">; 4718def note_exits_temporary_dtor : Note< 4719 "jump exits scope of lifetime-extended temporary with non-trivial " 4720 "destructor">; 4721def note_exits___block : Note< 4722 "jump exits scope of __block variable">; 4723def note_exits_objc_try : Note< 4724 "jump exits @try block">; 4725def note_exits_objc_catch : Note< 4726 "jump exits @catch block">; 4727def note_exits_objc_finally : Note< 4728 "jump exits @finally block">; 4729def note_exits_objc_synchronized : Note< 4730 "jump exits @synchronized block">; 4731def note_exits_cxx_try : Note< 4732 "jump exits try block">; 4733def note_exits_cxx_catch : Note< 4734 "jump exits catch block">; 4735def note_exits_seh_try : Note< 4736 "jump exits __try block">; 4737def note_exits_seh_except : Note< 4738 "jump exits __except block">; 4739def note_exits_seh_finally : Note< 4740 "jump exits __finally block">; 4741def note_exits_objc_autoreleasepool : Note< 4742 "jump exits autoreleasepool block">; 4743def note_exits_objc_strong : Note< 4744 "jump exits scope of __strong variable">; 4745def note_exits_objc_weak : Note< 4746 "jump exits scope of __weak variable">; 4747def note_exits_block_captures_cxx_obj : Note< 4748 "jump exits lifetime of block which captures a destructible C++ object">; 4749def note_exits_block_captures_strong : Note< 4750 "jump exits lifetime of block which strongly captures a variable">; 4751def note_exits_block_captures_weak : Note< 4752 "jump exits lifetime of block which weakly captures a variable">; 4753 4754def err_func_returning_qualified_void : ExtWarn< 4755 "function cannot return qualified void type %0">, 4756 InGroup<DiagGroup<"qualified-void-return-type">>; 4757def err_func_returning_array_function : Error< 4758 "function cannot return %select{array|function}0 type %1">; 4759def err_field_declared_as_function : Error<"field %0 declared as a function">; 4760def err_field_incomplete : Error<"field has incomplete type %0">; 4761def ext_variable_sized_type_in_struct : ExtWarn< 4762 "field %0 with variable sized type %1 not at the end of a struct or class is" 4763 " a GNU extension">, InGroup<GNUVariableSizedTypeNotAtEnd>; 4764 4765def ext_c99_flexible_array_member : Extension< 4766 "flexible array members are a C99 feature">, InGroup<C99>; 4767def err_flexible_array_virtual_base : Error< 4768 "flexible array member %0 not allowed in " 4769 "%select{struct|interface|union|class|enum}1 which has a virtual base class">; 4770def err_flexible_array_empty_aggregate : Error< 4771 "flexible array member %0 not allowed in otherwise empty " 4772 "%select{struct|interface|union|class|enum}1">; 4773def err_flexible_array_has_nontrivial_dtor : Error< 4774 "flexible array member %0 of type %1 with non-trivial destruction">; 4775def ext_flexible_array_in_struct : Extension< 4776 "%0 may not be nested in a struct due to flexible array member">, 4777 InGroup<FlexibleArrayExtensions>; 4778def ext_flexible_array_in_array : Extension< 4779 "%0 may not be used as an array element due to flexible array member">, 4780 InGroup<FlexibleArrayExtensions>; 4781def err_flexible_array_init : Error< 4782 "initialization of flexible array member is not allowed">; 4783def ext_flexible_array_empty_aggregate_ms : Extension< 4784 "flexible array member %0 in otherwise empty " 4785 "%select{struct|interface|union|class|enum}1 is a Microsoft extension">, 4786 InGroup<MicrosoftFlexibleArray>; 4787def err_flexible_array_union : Error< 4788 "flexible array member %0 in a union is not allowed">; 4789def ext_flexible_array_union_ms : Extension< 4790 "flexible array member %0 in a union is a Microsoft extension">, 4791 InGroup<MicrosoftFlexibleArray>; 4792def ext_flexible_array_empty_aggregate_gnu : Extension< 4793 "flexible array member %0 in otherwise empty " 4794 "%select{struct|interface|union|class|enum}1 is a GNU extension">, 4795 InGroup<GNUEmptyStruct>; 4796def ext_flexible_array_union_gnu : Extension< 4797 "flexible array member %0 in a union is a GNU extension">, InGroup<GNUFlexibleArrayUnionMember>; 4798 4799let CategoryName = "ARC Semantic Issue" in { 4800 4801// ARC-mode diagnostics. 4802 4803let CategoryName = "ARC Weak References" in { 4804 4805def err_arc_weak_no_runtime : Error< 4806 "cannot create __weak reference because the current deployment target " 4807 "does not support weak references">; 4808def err_arc_weak_disabled : Error< 4809 "cannot create __weak reference in file using manual reference counting">; 4810def err_synthesizing_arc_weak_property_disabled : Error< 4811 "cannot synthesize weak property in file using manual reference counting">; 4812def err_synthesizing_arc_weak_property_no_runtime : Error< 4813 "cannot synthesize weak property because the current deployment target " 4814 "does not support weak references">; 4815def err_arc_unsupported_weak_class : Error< 4816 "class is incompatible with __weak references">; 4817def err_arc_weak_unavailable_assign : Error< 4818 "assignment of a weak-unavailable object to a __weak object">; 4819def err_arc_weak_unavailable_property : Error< 4820 "synthesizing __weak instance variable of type %0, which does not " 4821 "support weak references">; 4822def note_implemented_by_class : Note< 4823 "when implemented by class %0">; 4824def err_arc_convesion_of_weak_unavailable : Error< 4825 "%select{implicit conversion|cast}0 of weak-unavailable object of type %1 to" 4826 " a __weak object of type %2">; 4827 4828} // end "ARC Weak References" category 4829 4830let CategoryName = "ARC Restrictions" in { 4831 4832def err_unavailable_in_arc : Error< 4833 "%0 is unavailable in ARC">; 4834def note_arc_forbidden_type : Note< 4835 "declaration uses type that is ill-formed in ARC">; 4836def note_performs_forbidden_arc_conversion : Note< 4837 "inline function performs a conversion which is forbidden in ARC">; 4838def note_arc_init_returns_unrelated : Note< 4839 "init method must return a type related to its receiver type">; 4840def note_arc_weak_disabled : Note< 4841 "declaration uses __weak, but ARC is disabled">; 4842def note_arc_weak_no_runtime : Note<"declaration uses __weak, which " 4843 "the current deployment target does not support">; 4844def note_arc_field_with_ownership : Note< 4845 "field has non-trivial ownership qualification">; 4846 4847def err_arc_illegal_explicit_message : Error< 4848 "ARC forbids explicit message send of %0">; 4849def err_arc_unused_init_message : Error< 4850 "the result of a delegate init call must be immediately returned " 4851 "or assigned to 'self'">; 4852def err_arc_mismatched_cast : Error< 4853 "%select{implicit conversion|cast}0 of " 4854 "%select{%2|a non-Objective-C pointer type %2|a block pointer|" 4855 "an Objective-C pointer|an indirect pointer to an Objective-C pointer}1" 4856 " to %3 is disallowed with ARC">; 4857def err_arc_nolifetime_behavior : Error< 4858 "explicit ownership qualifier on cast result has no effect">; 4859def err_arc_objc_object_in_tag : Error< 4860 "ARC forbids %select{Objective-C objects|blocks}0 in " 4861 "%select{struct|interface|union|<<ERROR>>|enum}1">; 4862def err_arc_objc_property_default_assign_on_object : Error< 4863 "ARC forbids synthesizing a property of an Objective-C object " 4864 "with unspecified ownership or storage attribute">; 4865def err_arc_illegal_selector : Error< 4866 "ARC forbids use of %0 in a @selector">; 4867def err_arc_illegal_method_def : Error< 4868 "ARC forbids %select{implementation|synthesis}0 of %1">; 4869def warn_arc_strong_pointer_objc_pointer : Warning< 4870 "method parameter of type %0 with no explicit ownership">, 4871 InGroup<DiagGroup<"explicit-ownership-type">>, DefaultIgnore; 4872 4873} // end "ARC Restrictions" category 4874 4875def err_arc_lost_method_convention : Error< 4876 "method was declared as %select{an 'alloc'|a 'copy'|an 'init'|a 'new'}0 " 4877 "method, but its implementation doesn't match because %select{" 4878 "its result type is not an object pointer|" 4879 "its result type is unrelated to its receiver type}1">; 4880def note_arc_lost_method_convention : Note<"declaration in interface">; 4881def err_arc_gained_method_convention : Error< 4882 "method implementation does not match its declaration">; 4883def note_arc_gained_method_convention : Note< 4884 "declaration in interface is not in the '%select{alloc|copy|init|new}0' " 4885 "family because %select{its result type is not an object pointer|" 4886 "its result type is unrelated to its receiver type}1">; 4887def err_typecheck_arc_assign_self : Error< 4888 "cannot assign to 'self' outside of a method in the init family">; 4889def err_typecheck_arc_assign_self_class_method : Error< 4890 "cannot assign to 'self' in a class method">; 4891def err_typecheck_arr_assign_enumeration : Error< 4892 "fast enumeration variables cannot be modified in ARC by default; " 4893 "declare the variable __strong to allow this">; 4894def warn_arc_retained_assign : Warning< 4895 "assigning retained object to %select{weak|unsafe_unretained}0 " 4896 "%select{property|variable}1" 4897 "; object will be released after assignment">, 4898 InGroup<ARCUnsafeRetainedAssign>; 4899def warn_arc_retained_property_assign : Warning< 4900 "assigning retained object to unsafe property" 4901 "; object will be released after assignment">, 4902 InGroup<ARCUnsafeRetainedAssign>; 4903def warn_arc_literal_assign : Warning< 4904 "assigning %select{array literal|dictionary literal|numeric literal|boxed expression|<should not happen>|block literal}0" 4905 " to a weak %select{property|variable}1" 4906 "; object will be released after assignment">, 4907 InGroup<ARCUnsafeRetainedAssign>; 4908def err_arc_new_array_without_ownership : Error< 4909 "'new' cannot allocate an array of %0 with no explicit ownership">; 4910def err_arc_autoreleasing_var : Error< 4911 "%select{__block variables|global variables|fields|instance variables}0 cannot have " 4912 "__autoreleasing ownership">; 4913def err_arc_autoreleasing_capture : Error< 4914 "cannot capture __autoreleasing variable in a " 4915 "%select{block|lambda by copy}0">; 4916def err_arc_thread_ownership : Error< 4917 "thread-local variable has non-trivial ownership: type is %0">; 4918def err_arc_indirect_no_ownership : Error< 4919 "%select{pointer|reference}1 to non-const type %0 with no explicit ownership">; 4920def err_arc_array_param_no_ownership : Error< 4921 "must explicitly describe intended ownership of an object array parameter">; 4922def err_arc_pseudo_dtor_inconstant_quals : Error< 4923 "pseudo-destructor destroys object of type %0 with inconsistently-qualified " 4924 "type %1">; 4925def err_arc_init_method_unrelated_result_type : Error< 4926 "init methods must return a type related to the receiver type">; 4927def err_arc_nonlocal_writeback : Error< 4928 "passing address of %select{non-local|non-scalar}0 object to " 4929 "__autoreleasing parameter for write-back">; 4930def err_arc_method_not_found : Error< 4931 "no known %select{instance|class}1 method for selector %0">; 4932def err_arc_receiver_forward_class : Error< 4933 "receiver %0 for class message is a forward declaration">; 4934def err_arc_may_not_respond : Error< 4935 "no visible @interface for %0 declares the selector %1">; 4936def err_arc_receiver_forward_instance : Error< 4937 "receiver type %0 for instance message is a forward declaration">; 4938def warn_receiver_forward_instance : Warning< 4939 "receiver type %0 for instance message is a forward declaration">, 4940 InGroup<ForwardClassReceiver>, DefaultIgnore; 4941def err_arc_collection_forward : Error< 4942 "collection expression type %0 is a forward declaration">; 4943def err_arc_multiple_method_decl : Error< 4944 "multiple methods named %0 found with mismatched result, " 4945 "parameter type or attributes">; 4946def warn_arc_lifetime_result_type : Warning< 4947 "ARC %select{unused|__unsafe_unretained|__strong|__weak|__autoreleasing}0 " 4948 "lifetime qualifier on return type is ignored">, 4949 InGroup<IgnoredQualifiers>; 4950 4951let CategoryName = "ARC Retain Cycle" in { 4952 4953def warn_arc_retain_cycle : Warning< 4954 "capturing %0 strongly in this block is likely to lead to a retain cycle">, 4955 InGroup<ARCRetainCycles>; 4956def note_arc_retain_cycle_owner : Note< 4957 "block will be retained by %select{the captured object|an object strongly " 4958 "retained by the captured object}0">; 4959 4960} // end "ARC Retain Cycle" category 4961 4962def warn_arc_object_memaccess : Warning< 4963 "%select{destination for|source of}0 this %1 call is a pointer to " 4964 "ownership-qualified type %2">, InGroup<ARCNonPodMemAccess>; 4965 4966let CategoryName = "ARC and @properties" in { 4967 4968def err_arc_strong_property_ownership : Error< 4969 "existing instance variable %1 for strong property %0 may not be " 4970 "%select{|__unsafe_unretained||__weak}2">; 4971def err_arc_assign_property_ownership : Error< 4972 "existing instance variable %1 for property %0 with %select{unsafe_unretained|assign}2 " 4973 "attribute must be __unsafe_unretained">; 4974def err_arc_inconsistent_property_ownership : Error< 4975 "%select{|unsafe_unretained|strong|weak}1 property %0 may not also be " 4976 "declared %select{|__unsafe_unretained|__strong|__weak|__autoreleasing}2">; 4977 4978} // end "ARC and @properties" category 4979 4980def err_arc_atomic_ownership : Error< 4981 "cannot perform atomic operation on a pointer to type %0: type has " 4982 "non-trivial ownership">; 4983 4984let CategoryName = "ARC Casting Rules" in { 4985 4986def err_arc_bridge_cast_incompatible : Error< 4987 "incompatible types casting %0 to %1 with a %select{__bridge|" 4988 "__bridge_transfer|__bridge_retained}2 cast">; 4989def err_arc_bridge_cast_wrong_kind : Error< 4990 "cast of %select{Objective-C|block|C}0 pointer type %1 to " 4991 "%select{Objective-C|block|C}2 pointer type %3 cannot use %select{__bridge|" 4992 "__bridge_transfer|__bridge_retained}4">; 4993def err_arc_cast_requires_bridge : Error< 4994 "%select{cast|implicit conversion}0 of %select{Objective-C|block|C}1 " 4995 "pointer type %2 to %select{Objective-C|block|C}3 pointer type %4 " 4996 "requires a bridged cast">; 4997def note_arc_bridge : Note< 4998 "use __bridge to convert directly (no change in ownership)">; 4999def note_arc_cstyle_bridge : Note< 5000 "use __bridge with C-style cast to convert directly (no change in ownership)">; 5001def note_arc_bridge_transfer : Note< 5002 "use %select{__bridge_transfer|CFBridgingRelease call}1 to transfer " 5003 "ownership of a +1 %0 into ARC">; 5004def note_arc_cstyle_bridge_transfer : Note< 5005 "use __bridge_transfer with C-style cast to transfer " 5006 "ownership of a +1 %0 into ARC">; 5007def note_arc_bridge_retained : Note< 5008 "use %select{__bridge_retained|CFBridgingRetain call}1 to make an " 5009 "ARC object available as a +1 %0">; 5010def note_arc_cstyle_bridge_retained : Note< 5011 "use __bridge_retained with C-style cast to make an " 5012 "ARC object available as a +1 %0">; 5013 5014} // ARC Casting category 5015 5016} // ARC category name 5017 5018def err_flexible_array_init_needs_braces : Error< 5019 "flexible array requires brace-enclosed initializer">; 5020def err_illegal_decl_array_of_functions : Error< 5021 "'%0' declared as array of functions of type %1">; 5022def err_illegal_decl_array_incomplete_type : Error< 5023 "array has incomplete element type %0">; 5024def err_illegal_message_expr_incomplete_type : Error< 5025 "Objective-C message has incomplete result type %0">; 5026def err_illegal_decl_array_of_references : Error< 5027 "'%0' declared as array of references of type %1">; 5028def err_decl_negative_array_size : Error< 5029 "'%0' declared as an array with a negative size">; 5030def err_array_static_outside_prototype : Error< 5031 "%0 used in array declarator outside of function prototype">; 5032def err_array_static_not_outermost : Error< 5033 "%0 used in non-outermost array type derivation">; 5034def err_array_star_outside_prototype : Error< 5035 "star modifier used outside of function prototype">; 5036def err_illegal_decl_pointer_to_reference : Error< 5037 "'%0' declared as a pointer to a reference of type %1">; 5038def err_illegal_decl_mempointer_to_reference : Error< 5039 "'%0' declared as a member pointer to a reference of type %1">; 5040def err_illegal_decl_mempointer_to_void : Error< 5041 "'%0' declared as a member pointer to void">; 5042def err_illegal_decl_mempointer_in_nonclass : Error< 5043 "'%0' does not point into a class">; 5044def err_mempointer_in_nonclass_type : Error< 5045 "member pointer refers into non-class type %0">; 5046def err_reference_to_void : Error<"cannot form a reference to 'void'">; 5047def err_nonfunction_block_type : Error< 5048 "block pointer to non-function type is invalid">; 5049def err_return_block_has_expr : Error<"void block should not return a value">; 5050def err_block_return_missing_expr : Error< 5051 "non-void block should return a value">; 5052def err_func_def_incomplete_result : Error< 5053 "incomplete result type %0 in function definition">; 5054def err_atomic_specifier_bad_type : Error< 5055 "_Atomic cannot be applied to " 5056 "%select{incomplete |array |function |reference |atomic |qualified |}0type " 5057 "%1 %select{||||||which is not trivially copyable}0">; 5058 5059// Expressions. 5060def ext_sizeof_alignof_function_type : Extension< 5061 "invalid application of '%select{sizeof|alignof|vec_step}0' to a " 5062 "function type">, InGroup<PointerArith>; 5063def ext_sizeof_alignof_void_type : Extension< 5064 "invalid application of '%select{sizeof|alignof|vec_step}0' to a void " 5065 "type">, InGroup<PointerArith>; 5066def err_opencl_sizeof_alignof_type : Error< 5067 "invalid application of '%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align}0' to a void type">; 5068def err_sizeof_alignof_incomplete_type : Error< 5069 "invalid application of '%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align}0' to an " 5070 "incomplete type %1">; 5071def err_sizeof_alignof_function_type : Error< 5072 "invalid application of '%select{sizeof|alignof|vec_step|__builtin_omp_required_simd_align}0' to a " 5073 "function type">; 5074def err_openmp_default_simd_align_expr : Error< 5075 "invalid application of '__builtin_omp_required_simd_align' to an expression, only type is allowed">; 5076def err_sizeof_alignof_typeof_bitfield : Error< 5077 "invalid application of '%select{sizeof|alignof|typeof}0' to bit-field">; 5078def err_alignof_member_of_incomplete_type : Error< 5079 "invalid application of 'alignof' to a field of a class still being defined">; 5080def err_vecstep_non_scalar_vector_type : Error< 5081 "'vec_step' requires built-in scalar or vector type, %0 invalid">; 5082def err_offsetof_incomplete_type : Error< 5083 "offsetof of incomplete type %0">; 5084def err_offsetof_record_type : Error< 5085 "offsetof requires struct, union, or class type, %0 invalid">; 5086def err_offsetof_array_type : Error<"offsetof requires array type, %0 invalid">; 5087def ext_offsetof_extended_field_designator : Extension< 5088 "using extended field designator is an extension">, 5089 InGroup<DiagGroup<"extended-offsetof">>; 5090def ext_offsetof_non_pod_type : ExtWarn<"offset of on non-POD type %0">, 5091 InGroup<InvalidOffsetof>; 5092def ext_offsetof_non_standardlayout_type : ExtWarn< 5093 "offset of on non-standard-layout type %0">, InGroup<InvalidOffsetof>; 5094def err_offsetof_bitfield : Error<"cannot compute offset of bit-field %0">; 5095def err_offsetof_field_of_virtual_base : Error< 5096 "invalid application of 'offsetof' to a field of a virtual base">; 5097def warn_sub_ptr_zero_size_types : Warning< 5098 "subtraction of pointers to type %0 of zero size has undefined behavior">, 5099 InGroup<PointerArith>; 5100 5101def warn_floatingpoint_eq : Warning< 5102 "comparing floating point with == or != is unsafe">, 5103 InGroup<DiagGroup<"float-equal">>, DefaultIgnore; 5104 5105def warn_remainder_division_by_zero : Warning< 5106 "%select{remainder|division}0 by zero is undefined">, 5107 InGroup<DivZero>; 5108def warn_shift_lhs_negative : Warning<"shifting a negative signed value is undefined">, 5109 InGroup<DiagGroup<"shift-negative-value">>; 5110def warn_shift_negative : Warning<"shift count is negative">, 5111 InGroup<DiagGroup<"shift-count-negative">>; 5112def warn_shift_gt_typewidth : Warning<"shift count >= width of type">, 5113 InGroup<DiagGroup<"shift-count-overflow">>; 5114def warn_shift_result_gt_typewidth : Warning< 5115 "signed shift result (%0) requires %1 bits to represent, but %2 only has " 5116 "%3 bits">, InGroup<DiagGroup<"shift-overflow">>; 5117def warn_shift_result_sets_sign_bit : Warning< 5118 "signed shift result (%0) sets the sign bit of the shift expression's " 5119 "type (%1) and becomes negative">, 5120 InGroup<DiagGroup<"shift-sign-overflow">>, DefaultIgnore; 5121 5122def warn_precedence_bitwise_rel : Warning< 5123 "%0 has lower precedence than %1; %1 will be evaluated first">, 5124 InGroup<Parentheses>; 5125def note_precedence_bitwise_first : Note< 5126 "place parentheses around the %0 expression to evaluate it first">; 5127def note_precedence_silence : Note< 5128 "place parentheses around the '%0' expression to silence this warning">; 5129 5130def warn_precedence_conditional : Warning< 5131 "operator '?:' has lower precedence than '%0'; '%0' will be evaluated first">, 5132 InGroup<Parentheses>; 5133def note_precedence_conditional_first : Note< 5134 "place parentheses around the '?:' expression to evaluate it first">; 5135 5136def warn_logical_instead_of_bitwise : Warning< 5137 "use of logical '%0' with constant operand">, 5138 InGroup<DiagGroup<"constant-logical-operand">>; 5139def note_logical_instead_of_bitwise_change_operator : Note< 5140 "use '%0' for a bitwise operation">; 5141def note_logical_instead_of_bitwise_remove_constant : Note< 5142 "remove constant to silence this warning">; 5143 5144def warn_bitwise_op_in_bitwise_op : Warning< 5145 "'%0' within '%1'">, InGroup<BitwiseOpParentheses>; 5146 5147def warn_logical_and_in_logical_or : Warning< 5148 "'&&' within '||'">, InGroup<LogicalOpParentheses>; 5149 5150def warn_overloaded_shift_in_comparison :Warning< 5151 "overloaded operator %select{>>|<<}0 has higher precedence than " 5152 "comparison operator">, 5153 InGroup<OverloadedShiftOpParentheses>; 5154def note_evaluate_comparison_first :Note< 5155 "place parentheses around comparison expression to evaluate it first">; 5156 5157def warn_addition_in_bitshift : Warning< 5158 "operator '%0' has lower precedence than '%1'; " 5159 "'%1' will be evaluated first">, InGroup<ShiftOpParentheses>; 5160 5161def warn_self_assignment : Warning< 5162 "explicitly assigning value of variable of type %0 to itself">, 5163 InGroup<SelfAssignment>, DefaultIgnore; 5164def warn_self_move : Warning< 5165 "explicitly moving variable of type %0 to itself">, 5166 InGroup<SelfMove>, DefaultIgnore; 5167 5168def warn_redundant_move_on_return : Warning< 5169 "redundant move in return statement">, 5170 InGroup<RedundantMove>, DefaultIgnore; 5171def warn_pessimizing_move_on_return : Warning< 5172 "moving a local object in a return statement prevents copy elision">, 5173 InGroup<PessimizingMove>, DefaultIgnore; 5174def warn_pessimizing_move_on_initialization : Warning< 5175 "moving a temporary object prevents copy elision">, 5176 InGroup<PessimizingMove>, DefaultIgnore; 5177def note_remove_move : Note<"remove std::move call here">; 5178 5179def warn_string_plus_int : Warning< 5180 "adding %0 to a string does not append to the string">, 5181 InGroup<StringPlusInt>; 5182def warn_string_plus_char : Warning< 5183 "adding %0 to a string pointer does not append to the string">, 5184 InGroup<StringPlusChar>; 5185def note_string_plus_scalar_silence : Note< 5186 "use array indexing to silence this warning">; 5187 5188def warn_sizeof_array_param : Warning< 5189 "sizeof on array function parameter will return size of %0 instead of %1">, 5190 InGroup<SizeofArrayArgument>; 5191 5192def warn_sizeof_array_decay : Warning< 5193 "sizeof on pointer operation will return size of %0 instead of %1">, 5194 InGroup<SizeofArrayDecay>; 5195 5196def err_sizeof_nonfragile_interface : Error< 5197 "application of '%select{alignof|sizeof}1' to interface %0 is " 5198 "not supported on this architecture and platform">; 5199def err_atdef_nonfragile_interface : Error< 5200 "use of @defs is not supported on this architecture and platform">; 5201def err_subscript_nonfragile_interface : Error< 5202 "subscript requires size of interface %0, which is not constant for " 5203 "this architecture and platform">; 5204 5205def err_arithmetic_nonfragile_interface : Error< 5206 "arithmetic on pointer to interface %0, which is not a constant size for " 5207 "this architecture and platform">; 5208 5209 5210def ext_subscript_non_lvalue : Extension< 5211 "ISO C90 does not allow subscripting non-lvalue array">; 5212def err_typecheck_subscript_value : Error< 5213 "subscripted value is not an array, pointer, or vector">; 5214def err_typecheck_subscript_not_integer : Error< 5215 "array subscript is not an integer">; 5216def err_subscript_function_type : Error< 5217 "subscript of pointer to function type %0">; 5218def err_subscript_incomplete_type : Error< 5219 "subscript of pointer to incomplete type %0">; 5220def err_dereference_incomplete_type : Error< 5221 "dereference of pointer to incomplete type %0">; 5222def ext_gnu_subscript_void_type : Extension< 5223 "subscript of a pointer to void is a GNU extension">, InGroup<PointerArith>; 5224def err_typecheck_member_reference_struct_union : Error< 5225 "member reference base type %0 is not a structure or union">; 5226def err_typecheck_member_reference_ivar : Error< 5227 "%0 does not have a member named %1">; 5228def error_arc_weak_ivar_access : Error< 5229 "dereferencing a __weak pointer is not allowed due to possible " 5230 "null value caused by race condition, assign it to strong variable first">; 5231def err_typecheck_member_reference_arrow : Error< 5232 "member reference type %0 is not a pointer">; 5233def err_typecheck_member_reference_suggestion : Error< 5234 "member reference type %0 is %select{a|not a}1 pointer; did you mean to use '%select{->|.}1'?">; 5235def note_typecheck_member_reference_suggestion : Note< 5236 "did you mean to use '.' instead?">; 5237def note_member_reference_arrow_from_operator_arrow : Note< 5238 "'->' applied to return value of the operator->() declared here">; 5239def err_typecheck_member_reference_type : Error< 5240 "cannot refer to type member %0 in %1 with '%select{.|->}2'">; 5241def err_typecheck_member_reference_unknown : Error< 5242 "cannot refer to member %0 in %1 with '%select{.|->}2'">; 5243def err_member_reference_needs_call : Error< 5244 "base of member reference is a function; perhaps you meant to call " 5245 "it%select{| with no arguments}0?">; 5246def warn_subscript_is_char : Warning<"array subscript is of type 'char'">, 5247 InGroup<CharSubscript>, DefaultIgnore; 5248 5249def err_typecheck_incomplete_tag : Error<"incomplete definition of type %0">; 5250def err_no_member : Error<"no member named %0 in %1">; 5251def err_no_member_overloaded_arrow : Error< 5252 "no member named %0 in %1; did you mean to use '->' instead of '.'?">; 5253 5254def err_member_not_yet_instantiated : Error< 5255 "no member %0 in %1; it has not yet been instantiated">; 5256def note_non_instantiated_member_here : Note< 5257 "not-yet-instantiated member is declared here">; 5258 5259def err_enumerator_does_not_exist : Error< 5260 "enumerator %0 does not exist in instantiation of %1">; 5261def note_enum_specialized_here : Note< 5262 "enum %0 was explicitly specialized here">; 5263 5264def err_member_redeclared : Error<"class member cannot be redeclared">; 5265def ext_member_redeclared : ExtWarn<"class member cannot be redeclared">, 5266 InGroup<RedeclaredClassMember>; 5267def err_member_redeclared_in_instantiation : Error< 5268 "multiple overloads of %0 instantiate to the same signature %1">; 5269def err_member_name_of_class : Error<"member %0 has the same name as its class">; 5270def err_member_def_undefined_record : Error< 5271 "out-of-line definition of %0 from class %1 without definition">; 5272def err_member_decl_does_not_match : Error< 5273 "out-of-line %select{declaration|definition}2 of %0 " 5274 "does not match any declaration in %1">; 5275def err_friend_decl_with_def_arg_must_be_def : Error< 5276 "friend declaration specifying a default argument must be a definition">; 5277def err_friend_decl_with_def_arg_redeclared : Error< 5278 "friend declaration specifying a default argument must be the only declaration">; 5279def err_friend_decl_does_not_match : Error< 5280 "friend declaration of %0 does not match any declaration in %1">; 5281def err_member_decl_does_not_match_suggest : Error< 5282 "out-of-line %select{declaration|definition}2 of %0 " 5283 "does not match any declaration in %1; did you mean %3?">; 5284def err_member_def_does_not_match_ret_type : Error< 5285 "return type of out-of-line definition of %q0 differs from " 5286 "that in the declaration">; 5287def err_nonstatic_member_out_of_line : Error< 5288 "non-static data member defined out-of-line">; 5289def err_qualified_typedef_declarator : Error< 5290 "typedef declarator cannot be qualified">; 5291def err_qualified_param_declarator : Error< 5292 "parameter declarator cannot be qualified">; 5293def ext_out_of_line_declaration : ExtWarn< 5294 "out-of-line declaration of a member must be a definition">, 5295 InGroup<OutOfLineDeclaration>, DefaultError; 5296def err_member_extra_qualification : Error< 5297 "extra qualification on member %0">; 5298def warn_member_extra_qualification : Warning< 5299 err_member_extra_qualification.Text>, InGroup<MicrosoftExtraQualification>; 5300def warn_namespace_member_extra_qualification : Warning< 5301 "extra qualification on member %0">, 5302 InGroup<DiagGroup<"extra-qualification">>; 5303def err_member_qualification : Error< 5304 "non-friend class member %0 cannot have a qualified name">; 5305def note_member_def_close_match : Note<"member declaration nearly matches">; 5306def note_member_def_close_const_match : Note< 5307 "member declaration does not match because " 5308 "it %select{is|is not}0 const qualified">; 5309def note_member_def_close_param_match : Note< 5310 "type of %ordinal0 parameter of member declaration does not match definition" 5311 "%diff{ ($ vs $)|}1,2">; 5312def note_local_decl_close_match : Note<"local declaration nearly matches">; 5313def note_local_decl_close_param_match : Note< 5314 "type of %ordinal0 parameter of local declaration does not match definition" 5315 "%diff{ ($ vs $)|}1,2">; 5316def err_typecheck_ivar_variable_size : Error< 5317 "instance variables must have a constant size">; 5318def err_ivar_reference_type : Error< 5319 "instance variables cannot be of reference type">; 5320def err_typecheck_illegal_increment_decrement : Error< 5321 "cannot %select{decrement|increment}1 value of type %0">; 5322def err_typecheck_expect_int : Error< 5323 "used type %0 where integer is required">; 5324def err_typecheck_arithmetic_incomplete_type : Error< 5325 "arithmetic on a pointer to an incomplete type %0">; 5326def err_typecheck_pointer_arith_function_type : Error< 5327 "arithmetic on%select{ a|}0 pointer%select{|s}0 to%select{ the|}2 " 5328 "function type%select{|s}2 %1%select{| and %3}2">; 5329def err_typecheck_pointer_arith_void_type : Error< 5330 "arithmetic on%select{ a|}0 pointer%select{|s}0 to void">; 5331def err_typecheck_decl_incomplete_type : Error< 5332 "variable has incomplete type %0">; 5333def ext_typecheck_decl_incomplete_type : ExtWarn< 5334 "tentative definition of variable with internal linkage has incomplete non-array type %0">, 5335 InGroup<DiagGroup<"tentative-definition-incomplete-type">>; 5336def err_tentative_def_incomplete_type : Error< 5337 "tentative definition has type %0 that is never completed">; 5338def warn_tentative_incomplete_array : Warning< 5339 "tentative array definition assumed to have one element">; 5340def err_typecheck_incomplete_array_needs_initializer : Error< 5341 "definition of variable with array type needs an explicit size " 5342 "or an initializer">; 5343def err_array_init_not_init_list : Error< 5344 "array initializer must be an initializer " 5345 "list%select{| or string literal| or wide string literal}0">; 5346def err_array_init_narrow_string_into_wchar : Error< 5347 "initializing wide char array with non-wide string literal">; 5348def err_array_init_wide_string_into_char : Error< 5349 "initializing char array with wide string literal">; 5350def err_array_init_incompat_wide_string_into_wchar : Error< 5351 "initializing wide char array with incompatible wide string literal">; 5352def err_array_init_different_type : Error< 5353 "cannot initialize array %diff{of type $ with array of type $|" 5354 "with different type of array}0,1">; 5355def err_array_init_non_constant_array : Error< 5356 "cannot initialize array %diff{of type $ with non-constant array of type $|" 5357 "with different type of array}0,1">; 5358def ext_array_init_copy : Extension< 5359 "initialization of an array " 5360 "%diff{of type $ from a compound literal of type $|" 5361 "from a compound literal}0,1 is a GNU extension">, InGroup<GNUCompoundLiteralInitializer>; 5362// This is intentionally not disabled by -Wno-gnu. 5363def ext_array_init_parens : ExtWarn< 5364 "parenthesized initialization of a member array is a GNU extension">, 5365 InGroup<DiagGroup<"gnu-array-member-paren-init">>, DefaultError; 5366def warn_deprecated_string_literal_conversion : Warning< 5367 "conversion from string literal to %0 is deprecated">, 5368 InGroup<CXX11CompatDeprecatedWritableStr>; 5369def ext_deprecated_string_literal_conversion : ExtWarn< 5370 "ISO C++11 does not allow conversion from string literal to %0">, 5371 InGroup<WritableStrings>, SFINAEFailure; 5372def err_realimag_invalid_type : Error<"invalid type %0 to %1 operator">; 5373def err_typecheck_sclass_fscope : Error< 5374 "illegal storage class on file-scoped variable">; 5375def warn_standalone_specifier : Warning<"'%0' ignored on this declaration">, 5376 InGroup<MissingDeclarations>; 5377def ext_standalone_specifier : ExtWarn<"'%0' is not permitted on a declaration " 5378 "of a type">, InGroup<MissingDeclarations>; 5379def err_standalone_class_nested_name_specifier : Error< 5380 "forward declaration of %select{class|struct|interface|union|enum}0 cannot " 5381 "have a nested name specifier">; 5382def err_typecheck_sclass_func : Error<"illegal storage class on function">; 5383def err_static_block_func : Error< 5384 "function declared in block scope cannot have 'static' storage class">; 5385def err_typecheck_address_of : Error<"address of %select{bit-field" 5386 "|vector element|property expression|register variable}0 requested">; 5387def ext_typecheck_addrof_void : Extension< 5388 "ISO C forbids taking the address of an expression of type 'void'">; 5389def err_unqualified_pointer_member_function : Error< 5390 "must explicitly qualify name of member function when taking its address">; 5391def err_invalid_form_pointer_member_function : Error< 5392 "cannot create a non-constant pointer to member function">; 5393def err_address_of_function_with_pass_object_size_params: Error< 5394 "cannot take address of function %0 because parameter %1 has " 5395 "pass_object_size attribute">; 5396def err_parens_pointer_member_function : Error< 5397 "cannot parenthesize the name of a method when forming a member pointer">; 5398def err_typecheck_invalid_lvalue_addrof_addrof_function : Error< 5399 "extra '&' taking address of overloaded function">; 5400def err_typecheck_invalid_lvalue_addrof : Error< 5401 "cannot take the address of an rvalue of type %0">; 5402def ext_typecheck_addrof_temporary : ExtWarn< 5403 "taking the address of a temporary object of type %0">, 5404 InGroup<DiagGroup<"address-of-temporary">>, DefaultError; 5405def err_typecheck_addrof_temporary : Error< 5406 "taking the address of a temporary object of type %0">; 5407def err_typecheck_addrof_dtor : Error< 5408 "taking the address of a destructor">; 5409def err_typecheck_unary_expr : Error< 5410 "invalid argument type %0 to unary expression">; 5411def err_typecheck_indirection_requires_pointer : Error< 5412 "indirection requires pointer operand (%0 invalid)">; 5413def ext_typecheck_indirection_through_void_pointer : ExtWarn< 5414 "ISO C++ does not allow indirection on operand of type %0">, 5415 InGroup<DiagGroup<"void-ptr-dereference">>; 5416def warn_indirection_through_null : Warning< 5417 "indirection of non-volatile null pointer will be deleted, not trap">, 5418 InGroup<NullDereference>; 5419def warn_binding_null_to_reference : Warning< 5420 "binding dereferenced null pointer to reference has undefined behavior">, 5421 InGroup<NullDereference>; 5422def note_indirection_through_null : Note< 5423 "consider using __builtin_trap() or qualifying pointer with 'volatile'">; 5424def warn_pointer_indirection_from_incompatible_type : Warning< 5425 "dereference of type %1 that was reinterpret_cast from type %0 has undefined " 5426 "behavior">, 5427 InGroup<UndefinedReinterpretCast>, DefaultIgnore; 5428 5429def err_objc_object_assignment : Error< 5430 "cannot assign to class object (%0 invalid)">; 5431def err_typecheck_invalid_operands : Error< 5432 "invalid operands to binary expression (%0 and %1)">; 5433def err_typecheck_sub_ptr_compatible : Error< 5434 "%diff{$ and $ are not pointers to compatible types|" 5435 "pointers to incompatible types}0,1">; 5436def ext_typecheck_ordered_comparison_of_pointer_integer : ExtWarn< 5437 "ordered comparison between pointer and integer (%0 and %1)">; 5438def ext_typecheck_ordered_comparison_of_pointer_and_zero : Extension< 5439 "ordered comparison between pointer and zero (%0 and %1) is an extension">; 5440def ext_typecheck_ordered_comparison_of_function_pointers : ExtWarn< 5441 "ordered comparison of function pointers (%0 and %1)">; 5442def ext_typecheck_comparison_of_fptr_to_void : Extension< 5443 "equality comparison between function pointer and void pointer (%0 and %1)">; 5444def err_typecheck_comparison_of_fptr_to_void : Error< 5445 "equality comparison between function pointer and void pointer (%0 and %1)">; 5446def ext_typecheck_comparison_of_pointer_integer : ExtWarn< 5447 "comparison between pointer and integer (%0 and %1)">; 5448def err_typecheck_comparison_of_pointer_integer : Error< 5449 "comparison between pointer and integer (%0 and %1)">; 5450def ext_typecheck_comparison_of_distinct_pointers : ExtWarn< 5451 "comparison of distinct pointer types%diff{ ($ and $)|}0,1">, 5452 InGroup<CompareDistinctPointerType>; 5453def ext_typecheck_cond_incompatible_operands : ExtWarn< 5454 "incompatible operand types (%0 and %1)">; 5455def err_cond_voidptr_arc : Error < 5456 "operands to conditional of types%diff{ $ and $|}0,1 are incompatible " 5457 "in ARC mode">; 5458def err_typecheck_comparison_of_distinct_pointers : Error< 5459 "comparison of distinct pointer types%diff{ ($ and $)|}0,1">; 5460def ext_typecheck_comparison_of_distinct_pointers_nonstandard : ExtWarn< 5461 "comparison of distinct pointer types (%0 and %1) uses non-standard " 5462 "composite pointer type %2">, InGroup<CompareDistinctPointerType>; 5463def err_typecheck_op_on_nonoverlapping_address_space_pointers : Error< 5464 "%select{comparison between %diff{ ($ and $)|}0,1" 5465 "|arithmetic operation with operands of type %diff{ ($ and $)|}0,1" 5466 "|conditional operator with the second and third operands of type " 5467 "%diff{ ($ and $)|}0,1}2" 5468 " which are pointers to non-overlapping address spaces">; 5469 5470def err_typecheck_assign_const : Error< 5471 "%select{" 5472 "cannot assign to return value because function %1 returns a const value|" 5473 "cannot assign to variable %1 with const-qualified type %2|" 5474 "cannot assign to %select{non-|}1static data member %2 " 5475 "with const-qualified type %3|" 5476 "cannot assign to non-static data member within const member function %1|" 5477 "read-only variable is not assignable}0">; 5478 5479def note_typecheck_assign_const : Note< 5480 "%select{" 5481 "function %1 which returns const-qualified type %2 declared here|" 5482 "variable %1 declared const here|" 5483 "%select{non-|}1static data member %2 declared const here|" 5484 "member function %q1 is declared const here}0">; 5485 5486def warn_mixed_sign_comparison : Warning< 5487 "comparison of integers of different signs: %0 and %1">, 5488 InGroup<SignCompare>, DefaultIgnore; 5489def warn_lunsigned_always_true_comparison : Warning< 5490 "comparison of unsigned%select{| enum}2 expression %0 is always %1">, 5491 InGroup<TautologicalCompare>; 5492def warn_out_of_range_compare : Warning< 5493 "comparison of %select{constant %0|true|false}1 with " 5494 "%select{expression of type %2|boolean expression}3 is always " 5495 "%select{false|true}4">, InGroup<TautologicalOutOfRangeCompare>; 5496def warn_runsigned_always_true_comparison : Warning< 5497 "comparison of %0 unsigned%select{| enum}2 expression is always %1">, 5498 InGroup<TautologicalCompare>; 5499def warn_comparison_of_mixed_enum_types : Warning< 5500 "comparison of two values with different enumeration types" 5501 "%diff{ ($ and $)|}0,1">, 5502 InGroup<DiagGroup<"enum-compare">>; 5503def warn_null_in_arithmetic_operation : Warning< 5504 "use of NULL in arithmetic operation">, 5505 InGroup<NullArithmetic>; 5506def warn_null_in_comparison_operation : Warning< 5507 "comparison between NULL and non-pointer " 5508 "%select{(%1 and NULL)|(NULL and %1)}0">, 5509 InGroup<NullArithmetic>; 5510def err_shift_rhs_only_vector : Error< 5511 "requested shift is a vector of type %0 but the first operand is not a " 5512 "vector (%1)">; 5513 5514def warn_logical_not_on_lhs_of_comparison : Warning< 5515 "logical not is only applied to the left hand side of this comparison">, 5516 InGroup<LogicalNotParentheses>; 5517def note_logical_not_fix : Note< 5518 "add parentheses after the '!' to evaluate the comparison first">; 5519def note_logical_not_silence_with_parens : Note< 5520 "add parentheses around left hand side expression to silence this warning">; 5521 5522def err_invalid_this_use : Error< 5523 "invalid use of 'this' outside of a non-static member function">; 5524def err_this_static_member_func : Error< 5525 "'this' cannot be%select{| implicitly}0 used in a static member function " 5526 "declaration">; 5527def err_invalid_member_use_in_static_method : Error< 5528 "invalid use of member %0 in static member function">; 5529def err_invalid_qualified_function_type : Error< 5530 "%select{static |non-}0member function %select{of type %2 |}1" 5531 "cannot have '%3' qualifier">; 5532def err_compound_qualified_function_type : Error< 5533 "%select{block pointer|pointer|reference}0 to function type %select{%2 |}1" 5534 "cannot have '%3' qualifier">; 5535 5536def err_ref_qualifier_overload : Error< 5537 "cannot overload a member function %select{without a ref-qualifier|with " 5538 "ref-qualifier '&'|with ref-qualifier '&&'}0 with a member function %select{" 5539 "without a ref-qualifier|with ref-qualifier '&'|with ref-qualifier '&&'}1">; 5540 5541def err_invalid_non_static_member_use : Error< 5542 "invalid use of non-static data member %0">; 5543def err_nested_non_static_member_use : Error< 5544 "%select{call to non-static member function|use of non-static data member}0 " 5545 "%2 of %1 from nested type %3">; 5546def warn_cxx98_compat_non_static_member_use : Warning< 5547 "use of non-static data member %0 in an unevaluated context is " 5548 "incompatible with C++98">, InGroup<CXX98Compat>, DefaultIgnore; 5549def err_invalid_incomplete_type_use : Error< 5550 "invalid use of incomplete type %0">; 5551def err_builtin_func_cast_more_than_one_arg : Error< 5552 "function-style cast to a builtin type can only take one argument">; 5553def err_value_init_for_array_type : Error< 5554 "array types cannot be value-initialized">; 5555def err_value_init_for_function_type : Error< 5556 "function types cannot be value-initialized">; 5557def warn_format_nonliteral_noargs : Warning< 5558 "format string is not a string literal (potentially insecure)">, 5559 InGroup<FormatSecurity>; 5560def warn_format_nonliteral : Warning< 5561 "format string is not a string literal">, 5562 InGroup<FormatNonLiteral>, DefaultIgnore; 5563 5564def err_unexpected_interface : Error< 5565 "unexpected interface name %0: expected expression">; 5566def err_ref_non_value : Error<"%0 does not refer to a value">; 5567def err_ref_vm_type : Error< 5568 "cannot refer to declaration with a variably modified type inside block">; 5569def err_ref_flexarray_type : Error< 5570 "cannot refer to declaration of structure variable with flexible array member " 5571 "inside block">; 5572def err_ref_array_type : Error< 5573 "cannot refer to declaration with an array type inside block">; 5574def err_property_not_found : Error< 5575 "property %0 not found on object of type %1">; 5576def err_invalid_property_name : Error< 5577 "%0 is not a valid property name (accessing an object of type %1)">; 5578def err_getter_not_found : Error< 5579 "no getter method for read from property">; 5580def err_objc_subscript_method_not_found : Error< 5581 "expected method to %select{read|write}1 %select{dictionary|array}2 element not " 5582 "found on object of type %0">; 5583def err_objc_subscript_index_type : Error< 5584 "method index parameter type %0 is not integral type">; 5585def err_objc_subscript_key_type : Error< 5586 "method key parameter type %0 is not object type">; 5587def err_objc_subscript_dic_object_type : Error< 5588 "method object parameter type %0 is not object type">; 5589def err_objc_subscript_object_type : Error< 5590 "cannot assign to this %select{dictionary|array}1 because assigning method's " 5591 "2nd parameter of type %0 is not an Objective-C pointer type">; 5592def err_objc_subscript_base_type : Error< 5593 "%select{dictionary|array}1 subscript base type %0 is not an Objective-C object">; 5594def err_objc_multiple_subscript_type_conversion : Error< 5595 "indexing expression is invalid because subscript type %0 has " 5596 "multiple type conversion functions">; 5597def err_objc_subscript_type_conversion : Error< 5598 "indexing expression is invalid because subscript type %0 is not an integral" 5599 " or Objective-C pointer type">; 5600def err_objc_subscript_pointer : Error< 5601 "indexing expression is invalid because subscript type %0 is not an" 5602 " Objective-C pointer">; 5603def err_objc_indexing_method_result_type : Error< 5604 "method for accessing %select{dictionary|array}1 element must have Objective-C" 5605 " object return type instead of %0">; 5606def err_objc_index_incomplete_class_type : Error< 5607 "Objective-C index expression has incomplete class type %0">; 5608def err_illegal_container_subscripting_op : Error< 5609 "illegal operation on Objective-C container subscripting">; 5610def err_property_not_found_forward_class : Error< 5611 "property %0 cannot be found in forward class object %1">; 5612def err_property_not_as_forward_class : Error< 5613 "property %0 refers to an incomplete Objective-C class %1 " 5614 "(with no @interface available)">; 5615def note_forward_class : Note< 5616 "forward declaration of class here">; 5617def err_duplicate_property : Error< 5618 "property has a previous declaration">; 5619def ext_gnu_void_ptr : Extension< 5620 "arithmetic on%select{ a|}0 pointer%select{|s}0 to void is a GNU extension">, 5621 InGroup<PointerArith>; 5622def ext_gnu_ptr_func_arith : Extension< 5623 "arithmetic on%select{ a|}0 pointer%select{|s}0 to%select{ the|}2 function " 5624 "type%select{|s}2 %1%select{| and %3}2 is a GNU extension">, 5625 InGroup<PointerArith>; 5626def error_readonly_message_assignment : Error< 5627 "assigning to 'readonly' return result of an Objective-C message not allowed">; 5628def ext_integer_increment_complex : Extension< 5629 "ISO C does not support '++'/'--' on complex integer type %0">; 5630def ext_integer_complement_complex : Extension< 5631 "ISO C does not support '~' for complex conjugation of %0">; 5632def err_nosetter_property_assignment : Error< 5633 "%select{assignment to readonly property|" 5634 "no setter method %1 for assignment to property}0">; 5635def err_nosetter_property_incdec : Error< 5636 "%select{%select{increment|decrement}1 of readonly property|" 5637 "no setter method %2 for %select{increment|decrement}1 of property}0">; 5638def err_nogetter_property_compound_assignment : Error< 5639 "a getter method is needed to perform a compound assignment on a property">; 5640def err_nogetter_property_incdec : Error< 5641 "no getter method %1 for %select{increment|decrement}0 of property">; 5642def error_no_subobject_property_setting : Error< 5643 "expression is not assignable">; 5644def err_qualified_objc_access : Error< 5645 "%select{property|instance variable}0 access cannot be qualified with '%1'">; 5646 5647def ext_freestanding_complex : Extension< 5648 "complex numbers are an extension in a freestanding C99 implementation">; 5649 5650// FIXME: Remove when we support imaginary. 5651def err_imaginary_not_supported : Error<"imaginary types are not supported">; 5652 5653// Obj-c expressions 5654def warn_root_inst_method_not_found : Warning< 5655 "instance method %0 is being used on 'Class' which is not in the root class">, 5656 InGroup<MethodAccess>; 5657def warn_class_method_not_found : Warning< 5658 "class method %objcclass0 not found (return type defaults to 'id')">, 5659 InGroup<MethodAccess>; 5660def warn_instance_method_on_class_found : Warning< 5661 "instance method %0 found instead of class method %1">, 5662 InGroup<MethodAccess>; 5663def warn_inst_method_not_found : Warning< 5664 "instance method %objcinstance0 not found (return type defaults to 'id')">, 5665 InGroup<MethodAccess>; 5666def warn_instance_method_not_found_with_typo : Warning< 5667 "instance method %objcinstance0 not found (return type defaults to 'id')" 5668 "; did you mean %objcinstance2?">, InGroup<MethodAccess>; 5669def warn_class_method_not_found_with_typo : Warning< 5670 "class method %objcclass0 not found (return type defaults to 'id')" 5671 "; did you mean %objcclass2?">, InGroup<MethodAccess>; 5672def error_method_not_found_with_typo : Error< 5673 "%select{instance|class}1 method %0 not found " 5674 "; did you mean %2?">; 5675def error_no_super_class_message : Error< 5676 "no @interface declaration found in class messaging of %0">; 5677def error_root_class_cannot_use_super : Error< 5678 "%0 cannot use 'super' because it is a root class">; 5679def err_invalid_receiver_to_message_super : Error< 5680 "'super' is only valid in a method body">; 5681def err_invalid_receiver_class_message : Error< 5682 "receiver type %0 is not an Objective-C class">; 5683def err_missing_open_square_message_send : Error< 5684 "missing '[' at start of message send expression">; 5685def warn_bad_receiver_type : Warning< 5686 "receiver type %0 is not 'id' or interface pointer, consider " 5687 "casting it to 'id'">,InGroup<ObjCReceiver>; 5688def err_bad_receiver_type : Error<"bad receiver type %0">; 5689def err_incomplete_receiver_type : Error<"incomplete receiver type %0">; 5690def err_unknown_receiver_suggest : Error< 5691 "unknown receiver %0; did you mean %1?">; 5692def error_objc_throw_expects_object : Error< 5693 "@throw requires an Objective-C object type (%0 invalid)">; 5694def error_objc_synchronized_expects_object : Error< 5695 "@synchronized requires an Objective-C object type (%0 invalid)">; 5696def error_rethrow_used_outside_catch : Error< 5697 "@throw (rethrow) used outside of a @catch block">; 5698def err_attribute_multiple_objc_gc : Error< 5699 "multiple garbage collection attributes specified for type">; 5700def err_catch_param_not_objc_type : Error< 5701 "@catch parameter is not a pointer to an interface type">; 5702def err_illegal_qualifiers_on_catch_parm : Error< 5703 "illegal qualifiers on @catch parameter">; 5704def err_storage_spec_on_catch_parm : Error< 5705 "@catch parameter cannot have storage specifier '%0'">; 5706def warn_register_objc_catch_parm : Warning< 5707 "'register' storage specifier on @catch parameter will be ignored">; 5708def err_qualified_objc_catch_parm : Error< 5709 "@catch parameter declarator cannot be qualified">; 5710def warn_objc_pointer_cxx_catch_fragile : Warning< 5711 "cannot catch an exception thrown with @throw in C++ in the non-unified " 5712 "exception model">, InGroup<ObjCNonUnifiedException>; 5713def err_objc_object_catch : Error< 5714 "cannot catch an Objective-C object by value">; 5715def err_incomplete_type_objc_at_encode : Error< 5716 "'@encode' of incomplete type %0">; 5717def warn_objc_circular_container : Warning< 5718 "adding '%0' to '%1' might cause circular dependency in container">, 5719 InGroup<DiagGroup<"objc-circular-container">>; 5720def note_objc_circular_container_declared_here : Note<"'%0' declared here">; 5721 5722def warn_setter_getter_impl_required : Warning< 5723 "property %0 requires method %1 to be defined - " 5724 "use @synthesize, @dynamic or provide a method implementation " 5725 "in this class implementation">, 5726 InGroup<ObjCPropertyImpl>; 5727def warn_setter_getter_impl_required_in_category : Warning< 5728 "property %0 requires method %1 to be defined - " 5729 "use @dynamic or provide a method implementation in this category">, 5730 InGroup<ObjCPropertyImpl>; 5731def note_parameter_named_here : Note< 5732 "passing argument to parameter %0 here">; 5733def note_parameter_here : Note< 5734 "passing argument to parameter here">; 5735def note_method_return_type_change : Note< 5736 "compiler has implicitly changed method %0 return type">; 5737 5738def warn_impl_required_for_class_property : Warning< 5739 "class property %0 requires method %1 to be defined - " 5740 "use @dynamic or provide a method implementation " 5741 "in this class implementation">, 5742 InGroup<ObjCPropertyImpl>; 5743def warn_impl_required_in_category_for_class_property : Warning< 5744 "class property %0 requires method %1 to be defined - " 5745 "use @dynamic or provide a method implementation in this category">, 5746 InGroup<ObjCPropertyImpl>; 5747 5748// C++ casts 5749// These messages adhere to the TryCast pattern: %0 is an int specifying the 5750// cast type, %1 is the source type, %2 is the destination type. 5751def err_bad_reinterpret_cast_overload : Error< 5752 "reinterpret_cast cannot resolve overloaded function %0 to type %1">; 5753 5754def warn_reinterpret_different_from_static : Warning< 5755 "'reinterpret_cast' %select{from|to}3 class %0 %select{to|from}3 its " 5756 "%select{virtual base|base at non-zero offset}2 %1 behaves differently from " 5757 "'static_cast'">, InGroup<ReinterpretBaseClass>; 5758def note_reinterpret_updowncast_use_static: Note< 5759 "use 'static_cast' to adjust the pointer correctly while " 5760 "%select{upcasting|downcasting}0">; 5761 5762def err_bad_static_cast_overload : Error< 5763 "address of overloaded function %0 cannot be static_cast to type %1">; 5764 5765def err_bad_cstyle_cast_overload : Error< 5766 "address of overloaded function %0 cannot be cast to type %1">; 5767 5768 5769def err_bad_cxx_cast_generic : Error< 5770 "%select{const_cast|static_cast|reinterpret_cast|dynamic_cast|C-style cast|" 5771 "functional-style cast}0 from %1 to %2 is not allowed">; 5772def err_bad_cxx_cast_unrelated_class : Error< 5773 "%select{const_cast|static_cast|reinterpret_cast|dynamic_cast|C-style cast|" 5774 "functional-style cast}0 from %1 to %2, which are not related by " 5775 "inheritance, is not allowed">; 5776def note_type_incomplete : Note<"%0 is incomplete">; 5777def err_bad_cxx_cast_rvalue : Error< 5778 "%select{const_cast|static_cast|reinterpret_cast|dynamic_cast|C-style cast|" 5779 "functional-style cast}0 from rvalue to reference type %2">; 5780def err_bad_cxx_cast_bitfield : Error< 5781 "%select{const_cast|static_cast|reinterpret_cast|dynamic_cast|C-style cast|" 5782 "functional-style cast}0 from bit-field lvalue to reference type %2">; 5783def err_bad_cxx_cast_qualifiers_away : Error< 5784 "%select{const_cast|static_cast|reinterpret_cast|dynamic_cast|C-style cast|" 5785 "functional-style cast}0 from %1 to %2 casts away qualifiers">; 5786def err_bad_const_cast_dest : Error< 5787 "%select{const_cast||||C-style cast|functional-style cast}0 to %2, " 5788 "which is not a reference, pointer-to-object, or pointer-to-data-member">; 5789def ext_cast_fn_obj : Extension< 5790 "cast between pointer-to-function and pointer-to-object is an extension">; 5791def ext_ms_cast_fn_obj : ExtWarn< 5792 "static_cast between pointer-to-function and pointer-to-object is a " 5793 "Microsoft extension">, InGroup<MicrosoftCast>; 5794def warn_cxx98_compat_cast_fn_obj : Warning< 5795 "cast between pointer-to-function and pointer-to-object is incompatible with C++98">, 5796 InGroup<CXX98CompatPedantic>, DefaultIgnore; 5797def err_bad_reinterpret_cast_small_int : Error< 5798 "cast from pointer to smaller type %2 loses information">; 5799def err_bad_cxx_cast_vector_to_scalar_different_size : Error< 5800 "%select{||reinterpret_cast||C-style cast|}0 from vector %1 " 5801 "to scalar %2 of different size">; 5802def err_bad_cxx_cast_scalar_to_vector_different_size : Error< 5803 "%select{||reinterpret_cast||C-style cast|}0 from scalar %1 " 5804 "to vector %2 of different size">; 5805def err_bad_cxx_cast_vector_to_vector_different_size : Error< 5806 "%select{||reinterpret_cast||C-style cast|}0 from vector %1 " 5807 "to vector %2 of different size">; 5808def err_bad_lvalue_to_rvalue_cast : Error< 5809 "cannot cast from lvalue of type %1 to rvalue reference type %2; types are " 5810 "not compatible">; 5811def err_bad_static_cast_pointer_nonpointer : Error< 5812 "cannot cast from type %1 to pointer type %2">; 5813def err_bad_static_cast_member_pointer_nonmp : Error< 5814 "cannot cast from type %1 to member pointer type %2">; 5815def err_bad_cxx_cast_member_pointer_size : Error< 5816 "cannot %select{||reinterpret_cast||C-style cast|}0 from member pointer " 5817 "type %1 to member pointer type %2 of different size">; 5818def err_bad_reinterpret_cast_reference : Error< 5819 "reinterpret_cast of a %0 to %1 needs its address, which is not allowed">; 5820def warn_undefined_reinterpret_cast : Warning< 5821 "reinterpret_cast from %0 to %1 has undefined behavior">, 5822 InGroup<UndefinedReinterpretCast>, DefaultIgnore; 5823 5824// These messages don't adhere to the pattern. 5825// FIXME: Display the path somehow better. 5826def err_ambiguous_base_to_derived_cast : Error< 5827 "ambiguous cast from base %0 to derived %1:%2">; 5828def err_static_downcast_via_virtual : Error< 5829 "cannot cast %0 to %1 via virtual base %2">; 5830def err_downcast_from_inaccessible_base : Error< 5831 "cannot cast %select{private|protected}2 base class %1 to %0">; 5832def err_upcast_to_inaccessible_base : Error< 5833 "cannot cast %0 to its %select{private|protected}2 base class %1">; 5834def err_bad_dynamic_cast_not_ref_or_ptr : Error< 5835 "%0 is not a reference or pointer">; 5836def err_bad_dynamic_cast_not_class : Error<"%0 is not a class">; 5837def err_bad_dynamic_cast_incomplete : Error<"%0 is an incomplete type">; 5838def err_bad_dynamic_cast_not_ptr : Error<"%0 is not a pointer">; 5839def err_bad_dynamic_cast_not_polymorphic : Error<"%0 is not polymorphic">; 5840 5841// Other C++ expressions 5842def err_need_header_before_typeid : Error< 5843 "you need to include <typeinfo> before using the 'typeid' operator">; 5844def err_need_header_before_ms_uuidof : Error< 5845 "you need to include <guiddef.h> before using the '__uuidof' operator">; 5846def err_ms___leave_not_in___try : Error< 5847 "'__leave' statement not in __try block">; 5848def err_uuidof_without_guid : Error< 5849 "cannot call operator __uuidof on a type with no GUID">; 5850def err_uuidof_with_multiple_guids : Error< 5851 "cannot call operator __uuidof on a type with multiple GUIDs">; 5852def err_incomplete_typeid : Error<"'typeid' of incomplete type %0">; 5853def err_variably_modified_typeid : Error<"'typeid' of variably modified type %0">; 5854def err_static_illegal_in_new : Error< 5855 "the 'static' modifier for the array size is not legal in new expressions">; 5856def err_array_new_needs_size : Error< 5857 "array size must be specified in new expressions">; 5858def err_bad_new_type : Error< 5859 "cannot allocate %select{function|reference}1 type %0 with new">; 5860def err_new_incomplete_type : Error< 5861 "allocation of incomplete type %0">; 5862def err_new_array_nonconst : Error< 5863 "only the first dimension of an allocated array may have dynamic size">; 5864def err_new_array_init_args : Error< 5865 "array 'new' cannot have initialization arguments">; 5866def ext_new_paren_array_nonconst : ExtWarn< 5867 "when type is in parentheses, array cannot have dynamic size">; 5868def err_placement_new_non_placement_delete : Error< 5869 "'new' expression with placement arguments refers to non-placement " 5870 "'operator delete'">; 5871def err_array_size_not_integral : Error< 5872 "array size expression must have integral or %select{|unscoped }0" 5873 "enumeration type, not %1">; 5874def err_array_size_incomplete_type : Error< 5875 "array size expression has incomplete class type %0">; 5876def err_array_size_explicit_conversion : Error< 5877 "array size expression of type %0 requires explicit conversion to type %1">; 5878def note_array_size_conversion : Note< 5879 "conversion to %select{integral|enumeration}0 type %1 declared here">; 5880def err_array_size_ambiguous_conversion : Error< 5881 "ambiguous conversion of array size expression of type %0 to an integral or " 5882 "enumeration type">; 5883def ext_array_size_conversion : Extension< 5884 "implicit conversion from array size expression of type %0 to " 5885 "%select{integral|enumeration}1 type %2 is a C++11 extension">, 5886 InGroup<CXX11>; 5887def warn_cxx98_compat_array_size_conversion : Warning< 5888 "implicit conversion from array size expression of type %0 to " 5889 "%select{integral|enumeration}1 type %2 is incompatible with C++98">, 5890 InGroup<CXX98CompatPedantic>, DefaultIgnore; 5891def err_address_space_qualified_new : Error< 5892 "'new' cannot allocate objects of type %0 in address space '%1'">; 5893def err_address_space_qualified_delete : Error< 5894 "'delete' cannot delete objects of type %0 in address space '%1'">; 5895 5896def err_default_init_const : Error< 5897 "default initialization of an object of const type %0" 5898 "%select{| without a user-provided default constructor}1">; 5899def ext_default_init_const : ExtWarn< 5900 "default initialization of an object of const type %0" 5901 "%select{| without a user-provided default constructor}1 " 5902 "is a Microsoft extension">, 5903 InGroup<MicrosoftConstInit>; 5904def err_delete_operand : Error<"cannot delete expression of type %0">; 5905def ext_delete_void_ptr_operand : ExtWarn< 5906 "cannot delete expression with pointer-to-'void' type %0">, 5907 InGroup<DeleteIncomplete>; 5908def err_ambiguous_delete_operand : Error< 5909 "ambiguous conversion of delete expression of type %0 to a pointer">; 5910def warn_delete_incomplete : Warning< 5911 "deleting pointer to incomplete type %0 may cause undefined behavior">, 5912 InGroup<DeleteIncomplete>; 5913def err_delete_incomplete_class_type : Error< 5914 "deleting incomplete class type %0; no conversions to pointer type">; 5915def err_delete_explicit_conversion : Error< 5916 "converting delete expression from type %0 to type %1 invokes an explicit " 5917 "conversion function">; 5918def note_delete_conversion : Note<"conversion to pointer type %0">; 5919def warn_delete_array_type : Warning< 5920 "'delete' applied to a pointer-to-array type %0 treated as 'delete[]'">; 5921def warn_mismatched_delete_new : Warning< 5922 "'delete%select{|[]}0' applied to a pointer that was allocated with " 5923 "'new%select{[]|}0'; did you mean 'delete%select{[]|}0'?">, 5924 InGroup<DiagGroup<"mismatched-new-delete">>; 5925def note_allocated_here : Note<"allocated with 'new%select{[]|}0' here">; 5926def err_no_suitable_delete_member_function_found : Error< 5927 "no suitable member %0 in %1">; 5928def err_ambiguous_suitable_delete_member_function_found : Error< 5929 "multiple suitable %0 functions in %1">; 5930def note_member_declared_here : Note< 5931 "member %0 declared here">; 5932def err_decrement_bool : Error<"cannot decrement expression of type bool">; 5933def warn_increment_bool : Warning< 5934 "incrementing expression of type bool is deprecated and " 5935 "incompatible with C++1z">, InGroup<DeprecatedIncrementBool>; 5936def ext_increment_bool : ExtWarn< 5937 "ISO C++1z does not allow incrementing expression of type bool">, 5938 DefaultError, InGroup<IncrementBool>; 5939def err_increment_decrement_enum : Error< 5940 "cannot %select{decrement|increment}0 expression of enum type %1">; 5941def err_catch_incomplete_ptr : Error< 5942 "cannot catch pointer to incomplete type %0">; 5943def err_catch_incomplete_ref : Error< 5944 "cannot catch reference to incomplete type %0">; 5945def err_catch_incomplete : Error<"cannot catch incomplete type %0">; 5946def err_catch_rvalue_ref : Error<"cannot catch exceptions by rvalue reference">; 5947def err_catch_variably_modified : Error< 5948 "cannot catch variably modified type %0">; 5949def err_qualified_catch_declarator : Error< 5950 "exception declarator cannot be qualified">; 5951def err_early_catch_all : Error<"catch-all handler must come last">; 5952def err_bad_memptr_rhs : Error< 5953 "right hand operand to %0 has non-pointer-to-member type %1">; 5954def err_bad_memptr_lhs : Error< 5955 "left hand operand to %0 must be a %select{|pointer to }1class " 5956 "compatible with the right hand operand, but is %2">; 5957def warn_exception_caught_by_earlier_handler : Warning< 5958 "exception of type %0 will be caught by earlier handler">, 5959 InGroup<Exceptions>; 5960def note_previous_exception_handler : Note<"for type %0">; 5961def err_exceptions_disabled : Error< 5962 "cannot use '%0' with exceptions disabled">; 5963def err_objc_exceptions_disabled : Error< 5964 "cannot use '%0' with Objective-C exceptions disabled">; 5965def err_seh_try_outside_functions : Error< 5966 "cannot use SEH '__try' in blocks, captured regions, or Obj-C method decls">; 5967def err_mixing_cxx_try_seh_try : Error< 5968 "cannot use C++ 'try' in the same function as SEH '__try'">; 5969def err_seh_try_unsupported : Error< 5970 "SEH '__try' is not supported on this target">; 5971def note_conflicting_try_here : Note< 5972 "conflicting %0 here">; 5973def warn_jump_out_of_seh_finally : Warning< 5974 "jump out of __finally block has undefined behavior">, 5975 InGroup<DiagGroup<"jump-seh-finally">>; 5976def warn_non_virtual_dtor : Warning< 5977 "%0 has virtual functions but non-virtual destructor">, 5978 InGroup<NonVirtualDtor>, DefaultIgnore; 5979def warn_delete_non_virtual_dtor : Warning< 5980 "%select{delete|destructor}0 called on non-final %1 that has " 5981 "virtual functions but non-virtual destructor">, 5982 InGroup<DeleteNonVirtualDtor>, DefaultIgnore; 5983def note_delete_non_virtual : Note< 5984 "qualify call to silence this warning">; 5985def warn_delete_abstract_non_virtual_dtor : Warning< 5986 "%select{delete|destructor}0 called on %1 that is abstract but has " 5987 "non-virtual destructor">, InGroup<DeleteNonVirtualDtor>; 5988def warn_overloaded_virtual : Warning< 5989 "%q0 hides overloaded virtual %select{function|functions}1">, 5990 InGroup<OverloadedVirtual>, DefaultIgnore; 5991def note_hidden_overloaded_virtual_declared_here : Note< 5992 "hidden overloaded virtual function %q0 declared here" 5993 "%select{|: different classes%diff{ ($ vs $)|}2,3" 5994 "|: different number of parameters (%2 vs %3)" 5995 "|: type mismatch at %ordinal2 parameter%diff{ ($ vs $)|}3,4" 5996 "|: different return type%diff{ ($ vs $)|}2,3" 5997 "|: different qualifiers (" 5998 "%select{none|const|restrict|const and restrict|volatile|const and volatile|" 5999 "volatile and restrict|const, volatile, and restrict}2 vs " 6000 "%select{none|const|restrict|const and restrict|volatile|const and volatile|" 6001 "volatile and restrict|const, volatile, and restrict}3)}1">; 6002def warn_using_directive_in_header : Warning< 6003 "using namespace directive in global context in header">, 6004 InGroup<HeaderHygiene>, DefaultIgnore; 6005def warn_overaligned_type : Warning< 6006 "type %0 requires %1 bytes of alignment and the default allocator only " 6007 "guarantees %2 bytes">, 6008 InGroup<OveralignedType>, DefaultIgnore; 6009 6010def err_conditional_void_nonvoid : Error< 6011 "%select{left|right}1 operand to ? is void, but %select{right|left}1 operand " 6012 "is of type %0">; 6013def err_conditional_ambiguous : Error< 6014 "conditional expression is ambiguous; " 6015 "%diff{$ can be converted to $ and vice versa|" 6016 "types can be convert to each other}0,1">; 6017def err_conditional_ambiguous_ovl : Error< 6018 "conditional expression is ambiguous; %diff{$ and $|types}0,1 " 6019 "can be converted to several common types">; 6020def err_conditional_vector_size : Error< 6021 "vector condition type %0 and result type %1 do not have the same number " 6022 "of elements">; 6023def err_conditional_vector_element_size : Error< 6024 "vector condition type %0 and result type %1 do not have elements of the " 6025 "same size">; 6026 6027def err_throw_incomplete : Error< 6028 "cannot throw object of incomplete type %0">; 6029def err_throw_incomplete_ptr : Error< 6030 "cannot throw pointer to object of incomplete type %0">; 6031def err_return_in_constructor_handler : Error< 6032 "return in the catch of a function try block of a constructor is illegal">; 6033def warn_cdtor_function_try_handler_mem_expr : Warning< 6034 "cannot refer to a non-static member from the handler of a " 6035 "%select{constructor|destructor}0 function try block">, InGroup<Exceptions>; 6036 6037let CategoryName = "Lambda Issue" in { 6038 def err_capture_more_than_once : Error< 6039 "%0 can appear only once in a capture list">; 6040 def err_reference_capture_with_reference_default : Error< 6041 "'&' cannot precede a capture when the capture default is '&'">; 6042 def err_this_capture_with_copy_default : Error< 6043 "'this' cannot be explicitly captured when the capture default is '='">; 6044 def err_copy_capture_with_copy_default : Error< 6045 "'&' must precede a capture when the capture default is '='">; 6046 def err_capture_does_not_name_variable : Error< 6047 "%0 in capture list does not name a variable">; 6048 def err_capture_non_automatic_variable : Error< 6049 "%0 cannot be captured because it does not have automatic storage " 6050 "duration">; 6051 def err_this_capture : Error< 6052 "'this' cannot be %select{implicitly |}0captured in this context">; 6053 def err_lambda_capture_anonymous_var : Error< 6054 "unnamed variable cannot be implicitly captured in a lambda expression">; 6055 def err_lambda_capture_flexarray_type : Error< 6056 "variable %0 with flexible array member cannot be captured in " 6057 "a lambda expression">; 6058 def err_lambda_impcap : Error< 6059 "variable %0 cannot be implicitly captured in a lambda with no " 6060 "capture-default specified">; 6061 def note_lambda_decl : Note<"lambda expression begins here">; 6062 def err_lambda_unevaluated_operand : Error< 6063 "lambda expression in an unevaluated operand">; 6064 def err_lambda_in_constant_expression : Error< 6065 "a lambda expression may not appear inside of a constant expression">; 6066 def err_lambda_return_init_list : Error< 6067 "cannot deduce lambda return type from initializer list">; 6068 def err_lambda_capture_default_arg : Error< 6069 "lambda expression in default argument cannot capture any entity">; 6070 def err_lambda_incomplete_result : Error< 6071 "incomplete result type %0 in lambda expression">; 6072 def err_noreturn_lambda_has_return_expr : Error< 6073 "lambda declared 'noreturn' should not return">; 6074 def warn_maybe_falloff_nonvoid_lambda : Warning< 6075 "control may reach end of non-void lambda">, 6076 InGroup<ReturnType>; 6077 def warn_falloff_nonvoid_lambda : Warning< 6078 "control reaches end of non-void lambda">, 6079 InGroup<ReturnType>; 6080 def err_access_lambda_capture : Error< 6081 // The ERRORs represent other special members that aren't constructors, in 6082 // hopes that someone will bother noticing and reporting if they appear 6083 "capture of variable '%0' as type %1 calls %select{private|protected}3 " 6084 "%select{default |copy |move |*ERROR* |*ERROR* |*ERROR* |}2constructor">, 6085 AccessControl; 6086 def note_lambda_to_block_conv : Note< 6087 "implicit capture of lambda object due to conversion to block pointer " 6088 "here">; 6089 6090 // C++14 lambda init-captures. 6091 def warn_cxx11_compat_init_capture : Warning< 6092 "initialized lambda captures are incompatible with C++ standards " 6093 "before C++14">, InGroup<CXXPre14Compat>, DefaultIgnore; 6094 def ext_init_capture : ExtWarn< 6095 "initialized lambda captures are a C++14 extension">, InGroup<CXX14>; 6096 def err_init_capture_no_expression : Error< 6097 "initializer missing for lambda capture %0">; 6098 def err_init_capture_multiple_expressions : Error< 6099 "initializer for lambda capture %0 contains multiple expressions">; 6100 def err_init_capture_paren_braces : Error< 6101 "cannot deduce type for lambda capture %1 from " 6102 "%select{parenthesized|nested}0 initializer list">; 6103 def err_init_capture_deduction_failure : Error< 6104 "cannot deduce type for lambda capture %0 from initializer of type %2">; 6105 def err_init_capture_deduction_failure_from_init_list : Error< 6106 "cannot deduce type for lambda capture %0 from initializer list">; 6107 6108 // C++1z '*this' captures. 6109 def warn_cxx14_compat_star_this_lambda_capture : Warning< 6110 "by value capture of '*this' is incompatible with C++ standards before C++1z">, 6111 InGroup<CXXPre1zCompat>, DefaultIgnore; 6112 def ext_star_this_lambda_capture_cxx1z : ExtWarn< 6113 "capture of '*this' by copy is a C++1z extension">, InGroup<CXX1z>; 6114} 6115 6116def err_return_in_captured_stmt : Error< 6117 "cannot return from %0">; 6118def err_capture_block_variable : Error< 6119 "__block variable %0 cannot be captured in a " 6120 "%select{lambda expression|captured statement}1">; 6121 6122def err_operator_arrow_circular : Error< 6123 "circular pointer delegation detected">; 6124def err_operator_arrow_depth_exceeded : Error< 6125 "use of 'operator->' on type %0 would invoke a sequence of more than %1 " 6126 "'operator->' calls">; 6127def note_operator_arrow_here : Note< 6128 "'operator->' declared here produces an object of type %0">; 6129def note_operator_arrows_suppressed : Note< 6130 "(skipping %0 'operator->'%s0 in backtrace)">; 6131def note_operator_arrow_depth : Note< 6132 "use -foperator-arrow-depth=N to increase 'operator->' limit">; 6133 6134def err_pseudo_dtor_base_not_scalar : Error< 6135 "object expression of non-scalar type %0 cannot be used in a " 6136 "pseudo-destructor expression">; 6137def ext_pseudo_dtor_on_void : ExtWarn< 6138 "pseudo-destructors on type void are a Microsoft extension">, 6139 InGroup<MicrosoftVoidPseudoDtor>; 6140def err_pseudo_dtor_type_mismatch : Error< 6141 "the type of object expression " 6142 "%diff{($) does not match the type being destroyed ($)|" 6143 "does not match the type being destroyed}0,1 " 6144 "in pseudo-destructor expression">; 6145def err_pseudo_dtor_call_with_args : Error< 6146 "call to pseudo-destructor cannot have any arguments">; 6147def err_dtor_expr_without_call : Error< 6148 "reference to %select{destructor|pseudo-destructor}0 must be called" 6149 "%select{|; did you mean to call it with no arguments?}1">; 6150def err_pseudo_dtor_destructor_non_type : Error< 6151 "%0 does not refer to a type name in pseudo-destructor expression; expected " 6152 "the name of type %1">; 6153def err_invalid_use_of_function_type : Error< 6154 "a function type is not allowed here">; 6155def err_invalid_use_of_array_type : Error<"an array type is not allowed here">; 6156def err_typecheck_bool_condition : Error< 6157 "value of type %0 is not contextually convertible to 'bool'">; 6158def err_typecheck_ambiguous_condition : Error< 6159 "conversion %diff{from $ to $|between types}0,1 is ambiguous">; 6160def err_typecheck_nonviable_condition : Error< 6161 "no viable conversion%select{%diff{ from $ to $|}1,2|" 6162 "%diff{ from returned value of type $ to function return type $|}1,2}0">; 6163def err_typecheck_nonviable_condition_incomplete : Error< 6164 "no viable conversion%diff{ from $ to incomplete type $|}0,1">; 6165def err_typecheck_deleted_function : Error< 6166 "conversion function %diff{from $ to $|between types}0,1 " 6167 "invokes a deleted function">; 6168 6169def err_expected_class_or_namespace : Error<"%0 is not a class" 6170 "%select{ or namespace|, namespace, or enumeration}1">; 6171def err_invalid_declarator_scope : Error<"cannot define or redeclare %0 here " 6172 "because namespace %1 does not enclose namespace %2">; 6173def err_invalid_declarator_global_scope : Error< 6174 "definition or redeclaration of %0 cannot name the global scope">; 6175def err_invalid_declarator_in_function : Error< 6176 "definition or redeclaration of %0 not allowed inside a function">; 6177def err_invalid_declarator_in_block : Error< 6178 "definition or redeclaration of %0 not allowed inside a block">; 6179def err_not_tag_in_scope : Error< 6180 "no %select{struct|interface|union|class|enum}0 named %1 in %2">; 6181 6182def err_no_typeid_with_fno_rtti : Error< 6183 "cannot use typeid with -fno-rtti">; 6184def err_no_dynamic_cast_with_fno_rtti : Error< 6185 "cannot use dynamic_cast with -fno-rtti">; 6186 6187def err_cannot_form_pointer_to_member_of_reference_type : Error< 6188 "cannot form a pointer-to-member to member %0 of reference type %1">; 6189def err_incomplete_object_call : Error< 6190 "incomplete type in call to object of type %0">; 6191 6192def warn_condition_is_assignment : Warning<"using the result of an " 6193 "assignment as a condition without parentheses">, 6194 InGroup<Parentheses>; 6195// Completely identical except off by default. 6196def warn_condition_is_idiomatic_assignment : Warning<"using the result " 6197 "of an assignment as a condition without parentheses">, 6198 InGroup<DiagGroup<"idiomatic-parentheses">>, DefaultIgnore; 6199def note_condition_assign_to_comparison : Note< 6200 "use '==' to turn this assignment into an equality comparison">; 6201def note_condition_or_assign_to_comparison : Note< 6202 "use '!=' to turn this compound assignment into an inequality comparison">; 6203def note_condition_assign_silence : Note< 6204 "place parentheses around the assignment to silence this warning">; 6205 6206def warn_equality_with_extra_parens : Warning<"equality comparison with " 6207 "extraneous parentheses">, InGroup<ParenthesesOnEquality>; 6208def note_equality_comparison_to_assign : Note< 6209 "use '=' to turn this equality comparison into an assignment">; 6210def note_equality_comparison_silence : Note< 6211 "remove extraneous parentheses around the comparison to silence this warning">; 6212 6213// assignment related diagnostics (also for argument passing, returning, etc). 6214// In most of these diagnostics the %2 is a value from the 6215// Sema::AssignmentAction enumeration 6216def err_typecheck_convert_incompatible : Error< 6217 "%select{%diff{assigning to $ from incompatible type $|" 6218 "assigning to type from incompatible type}0,1" 6219 "|%diff{passing $ to parameter of incompatible type $|" 6220 "passing type to parameter of incompatible type}0,1" 6221 "|%diff{returning $ from a function with incompatible result type $|" 6222 "returning type from a function with incompatible result type}0,1" 6223 "|%diff{converting $ to incompatible type $|" 6224 "converting type to incompatible type}0,1" 6225 "|%diff{initializing $ with an expression of incompatible type $|" 6226 "initializing type with an expression of incompatible type}0,1" 6227 "|%diff{sending $ to parameter of incompatible type $|" 6228 "sending type to parameter of incompatible type}0,1" 6229 "|%diff{casting $ to incompatible type $|" 6230 "casting type to incompatible type}0,1}2" 6231 "%select{|; dereference with *|" 6232 "; take the address with &|" 6233 "; remove *|" 6234 "; remove &}3" 6235 "%select{|: different classes%diff{ ($ vs $)|}5,6" 6236 "|: different number of parameters (%5 vs %6)" 6237 "|: type mismatch at %ordinal5 parameter%diff{ ($ vs $)|}6,7" 6238 "|: different return type%diff{ ($ vs $)|}5,6" 6239 "|: different qualifiers (" 6240 "%select{none|const|restrict|const and restrict|volatile|const and volatile|" 6241 "volatile and restrict|const, volatile, and restrict}5 vs " 6242 "%select{none|const|restrict|const and restrict|volatile|const and volatile|" 6243 "volatile and restrict|const, volatile, and restrict}6)}4">; 6244def err_typecheck_missing_return_type_incompatible : Error< 6245 "%diff{return type $ must match previous return type $|" 6246 "return type must match previous return type}0,1 when %select{block " 6247 "literal|lambda expression}2 has unspecified explicit return type">; 6248 6249def not_incomplete_class_and_qualified_id : Note< 6250 "conformance of forward class %0 to protocol %1 can not be confirmed">; 6251def warn_incompatible_qualified_id : Warning< 6252 "%select{%diff{assigning to $ from incompatible type $|" 6253 "assigning to type from incompatible type}0,1" 6254 "|%diff{passing $ to parameter of incompatible type $|" 6255 "passing type to parameter of incompatible type}0,1" 6256 "|%diff{returning $ from a function with incompatible result type $|" 6257 "returning type from a function with incompatible result type}0,1" 6258 "|%diff{converting $ to incompatible type $|" 6259 "converting type to incompatible type}0,1" 6260 "|%diff{initializing $ with an expression of incompatible type $|" 6261 "initializing type with an expression of incompatible type}0,1" 6262 "|%diff{sending $ to parameter of incompatible type $|" 6263 "sending type to parameter of incompatible type}0,1" 6264 "|%diff{casting $ to incompatible type $|" 6265 "casting type to incompatible type}0,1}2">; 6266def ext_typecheck_convert_pointer_int : ExtWarn< 6267 "incompatible pointer to integer conversion " 6268 "%select{%diff{assigning to $ from $|assigning to different types}0,1" 6269 "|%diff{passing $ to parameter of type $|" 6270 "passing to parameter of different type}0,1" 6271 "|%diff{returning $ from a function with result type $|" 6272 "returning from function with different return type}0,1" 6273 "|%diff{converting $ to type $|converting between types}0,1" 6274 "|%diff{initializing $ with an expression of type $|" 6275 "initializing with expression of different type}0,1" 6276 "|%diff{sending $ to parameter of type $|" 6277 "sending to parameter of different type}0,1" 6278 "|%diff{casting $ to type $|casting between types}0,1}2" 6279 "%select{|; dereference with *|" 6280 "; take the address with &|" 6281 "; remove *|" 6282 "; remove &}3">, 6283 InGroup<IntConversion>; 6284def ext_typecheck_convert_int_pointer : ExtWarn< 6285 "incompatible integer to pointer conversion " 6286 "%select{%diff{assigning to $ from $|assigning to different types}0,1" 6287 "|%diff{passing $ to parameter of type $|" 6288 "passing to parameter of different type}0,1" 6289 "|%diff{returning $ from a function with result type $|" 6290 "returning from function with different return type}0,1" 6291 "|%diff{converting $ to type $|converting between types}0,1" 6292 "|%diff{initializing $ with an expression of type $|" 6293 "initializing with expression of different type}0,1" 6294 "|%diff{sending $ to parameter of type $|" 6295 "sending to parameter of different type}0,1" 6296 "|%diff{casting $ to type $|casting between types}0,1}2" 6297 "%select{|; dereference with *|" 6298 "; take the address with &|" 6299 "; remove *|" 6300 "; remove &}3">, 6301 InGroup<IntConversion>; 6302def ext_typecheck_convert_pointer_void_func : Extension< 6303 "%select{%diff{assigning to $ from $|assigning to different types}0,1" 6304 "|%diff{passing $ to parameter of type $|" 6305 "passing to parameter of different type}0,1" 6306 "|%diff{returning $ from a function with result type $|" 6307 "returning from function with different return type}0,1" 6308 "|%diff{converting $ to type $|converting between types}0,1" 6309 "|%diff{initializing $ with an expression of type $|" 6310 "initializing with expression of different type}0,1" 6311 "|%diff{sending $ to parameter of type $|" 6312 "sending to parameter of different type}0,1" 6313 "|%diff{casting $ to type $|casting between types}0,1}2" 6314 " converts between void pointer and function pointer">; 6315def ext_typecheck_convert_incompatible_pointer_sign : ExtWarn< 6316 "%select{%diff{assigning to $ from $|assigning to different types}0,1" 6317 "|%diff{passing $ to parameter of type $|" 6318 "passing to parameter of different type}0,1" 6319 "|%diff{returning $ from a function with result type $|" 6320 "returning from function with different return type}0,1" 6321 "|%diff{converting $ to type $|converting between types}0,1" 6322 "|%diff{initializing $ with an expression of type $|" 6323 "initializing with expression of different type}0,1" 6324 "|%diff{sending $ to parameter of type $|" 6325 "sending to parameter of different type}0,1" 6326 "|%diff{casting $ to type $|casting between types}0,1}2" 6327 " converts between pointers to integer types with different sign">, 6328 InGroup<DiagGroup<"pointer-sign">>; 6329def ext_typecheck_convert_incompatible_pointer : ExtWarn< 6330 "incompatible pointer types " 6331 "%select{%diff{assigning to $ from $|assigning to different types}0,1" 6332 "|%diff{passing $ to parameter of type $|" 6333 "passing to parameter of different type}0,1" 6334 "|%diff{returning $ from a function with result type $|" 6335 "returning from function with different return type}0,1" 6336 "|%diff{converting $ to type $|converting between types}0,1" 6337 "|%diff{initializing $ with an expression of type $|" 6338 "initializing with expression of different type}0,1" 6339 "|%diff{sending $ to parameter of type $|" 6340 "sending to parameter of different type}0,1" 6341 "|%diff{casting $ to type $|casting between types}0,1}2" 6342 "%select{|; dereference with *|" 6343 "; take the address with &|" 6344 "; remove *|" 6345 "; remove &}3">, 6346 InGroup<IncompatiblePointerTypes>; 6347def ext_typecheck_convert_discards_qualifiers : ExtWarn< 6348 "%select{%diff{assigning to $ from $|assigning to different types}0,1" 6349 "|%diff{passing $ to parameter of type $|" 6350 "passing to parameter of different type}0,1" 6351 "|%diff{returning $ from a function with result type $|" 6352 "returning from function with different return type}0,1" 6353 "|%diff{converting $ to type $|converting between types}0,1" 6354 "|%diff{initializing $ with an expression of type $|" 6355 "initializing with expression of different type}0,1" 6356 "|%diff{sending $ to parameter of type $|" 6357 "sending to parameter of different type}0,1" 6358 "|%diff{casting $ to type $|casting between types}0,1}2" 6359 " discards qualifiers">, 6360 InGroup<IncompatiblePointerTypesDiscardsQualifiers>; 6361def ext_nested_pointer_qualifier_mismatch : ExtWarn< 6362 "%select{%diff{assigning to $ from $|assigning to different types}0,1" 6363 "|%diff{passing $ to parameter of type $|" 6364 "passing to parameter of different type}0,1" 6365 "|%diff{returning $ from a function with result type $|" 6366 "returning from function with different return type}0,1" 6367 "|%diff{converting $ to type $|converting between types}0,1" 6368 "|%diff{initializing $ with an expression of type $|" 6369 "initializing with expression of different type}0,1" 6370 "|%diff{sending $ to parameter of type $|" 6371 "sending to parameter of different type}0,1" 6372 "|%diff{casting $ to type $|casting between types}0,1}2" 6373 " discards qualifiers in nested pointer types">, 6374 InGroup<IncompatiblePointerTypesDiscardsQualifiers>; 6375def warn_incompatible_vectors : Warning< 6376 "incompatible vector types " 6377 "%select{%diff{assigning to $ from $|assigning to different types}0,1" 6378 "|%diff{passing $ to parameter of type $|" 6379 "passing to parameter of different type}0,1" 6380 "|%diff{returning $ from a function with result type $|" 6381 "returning from function with different return type}0,1" 6382 "|%diff{converting $ to type $|converting between types}0,1" 6383 "|%diff{initializing $ with an expression of type $|" 6384 "initializing with expression of different type}0,1" 6385 "|%diff{sending $ to parameter of type $|" 6386 "sending to parameter of different type}0,1" 6387 "|%diff{casting $ to type $|casting between types}0,1}2">, 6388 InGroup<VectorConversion>, DefaultIgnore; 6389def err_int_to_block_pointer : Error< 6390 "invalid block pointer conversion " 6391 "%select{%diff{assigning to $ from $|assigning to different types}0,1" 6392 "|%diff{passing $ to parameter of type $|" 6393 "passing to parameter of different type}0,1" 6394 "|%diff{returning $ from a function with result type $|" 6395 "returning from function with different return type}0,1" 6396 "|%diff{converting $ to type $|converting between types}0,1" 6397 "|%diff{initializing $ with an expression of type $|" 6398 "initializing with expression of different type}0,1" 6399 "|%diff{sending $ to parameter of type $|" 6400 "sending to parameter of different type}0,1" 6401 "|%diff{casting $ to type $|casting between types}0,1}2">; 6402def err_typecheck_convert_incompatible_block_pointer : Error< 6403 "incompatible block pointer types " 6404 "%select{%diff{assigning to $ from $|assigning to different types}0,1" 6405 "|%diff{passing $ to parameter of type $|" 6406 "passing to parameter of different type}0,1" 6407 "|%diff{returning $ from a function with result type $|" 6408 "returning from function with different return type}0,1" 6409 "|%diff{converting $ to type $|converting between types}0,1" 6410 "|%diff{initializing $ with an expression of type $|" 6411 "initializing with expression of different type}0,1" 6412 "|%diff{sending $ to parameter of type $|" 6413 "sending to parameter of different type}0,1" 6414 "|%diff{casting $ to type $|casting between types}0,1}2">; 6415def err_typecheck_incompatible_address_space : Error< 6416 "%select{%diff{assigning $ to $|assigning to different types}1,0" 6417 "|%diff{passing $ to parameter of type $|" 6418 "passing to parameter of different type}0,1" 6419 "|%diff{returning $ from a function with result type $|" 6420 "returning from function with different return type}0,1" 6421 "|%diff{converting $ to type $|converting between types}0,1" 6422 "|%diff{initializing $ with an expression of type $|" 6423 "initializing with expression of different type}0,1" 6424 "|%diff{sending $ to parameter of type $|" 6425 "sending to parameter of different type}0,1" 6426 "|%diff{casting $ to type $|casting between types}0,1}2" 6427 " changes address space of pointer">; 6428def err_typecheck_incompatible_ownership : Error< 6429 "%select{%diff{assigning $ to $|assigning to different types}1,0" 6430 "|%diff{passing $ to parameter of type $|" 6431 "passing to parameter of different type}0,1" 6432 "|%diff{returning $ from a function with result type $|" 6433 "returning from function with different return type}0,1" 6434 "|%diff{converting $ to type $|converting between types}0,1" 6435 "|%diff{initializing $ with an expression of type $|" 6436 "initializing with expression of different type}0,1" 6437 "|%diff{sending $ to parameter of type $|" 6438 "sending to parameter of different type}0,1" 6439 "|%diff{casting $ to type $|casting between types}0,1}2" 6440 " changes retain/release properties of pointer">; 6441def err_typecheck_comparison_of_distinct_blocks : Error< 6442 "comparison of distinct block types%diff{ ($ and $)|}0,1">; 6443 6444def err_typecheck_array_not_modifiable_lvalue : Error< 6445 "array type %0 is not assignable">; 6446def err_typecheck_non_object_not_modifiable_lvalue : Error< 6447 "non-object type %0 is not assignable">; 6448def err_typecheck_expression_not_modifiable_lvalue : Error< 6449 "expression is not assignable">; 6450def err_typecheck_incomplete_type_not_modifiable_lvalue : Error< 6451 "incomplete type %0 is not assignable">; 6452def err_typecheck_lvalue_casts_not_supported : Error< 6453 "assignment to cast is illegal, lvalue casts are not supported">; 6454 6455def err_typecheck_duplicate_vector_components_not_mlvalue : Error< 6456 "vector is not assignable (contains duplicate components)">; 6457def err_block_decl_ref_not_modifiable_lvalue : Error< 6458 "variable is not assignable (missing __block type specifier)">; 6459def err_lambda_decl_ref_not_modifiable_lvalue : Error< 6460 "cannot assign to a variable captured by copy in a non-mutable lambda">; 6461def err_typecheck_call_not_function : Error< 6462 "called object type %0 is not a function or function pointer">; 6463def err_call_incomplete_return : Error< 6464 "calling function with incomplete return type %0">; 6465def err_call_function_incomplete_return : Error< 6466 "calling %0 with incomplete return type %1">; 6467def err_call_incomplete_argument : Error< 6468 "argument type %0 is incomplete">; 6469def err_typecheck_call_too_few_args : Error< 6470 "too few %select{|||execution configuration }0arguments to " 6471 "%select{function|block|method|kernel function}0 call, " 6472 "expected %1, have %2">; 6473def err_typecheck_call_too_few_args_one : Error< 6474 "too few %select{|||execution configuration }0arguments to " 6475 "%select{function|block|method|kernel function}0 call, " 6476 "single argument %1 was not specified">; 6477def err_typecheck_call_too_few_args_at_least : Error< 6478 "too few %select{|||execution configuration }0arguments to " 6479 "%select{function|block|method|kernel function}0 call, " 6480 "expected at least %1, have %2">; 6481def err_typecheck_call_too_few_args_at_least_one : Error< 6482 "too few %select{|||execution configuration }0arguments to " 6483 "%select{function|block|method|kernel function}0 call, " 6484 "at least argument %1 must be specified">; 6485def err_typecheck_call_too_few_args_suggest : Error< 6486 "too few %select{|||execution configuration }0arguments to " 6487 "%select{function|block|method|kernel function}0 call, " 6488 "expected %1, have %2; did you mean %3?">; 6489def err_typecheck_call_too_few_args_at_least_suggest : Error< 6490 "too few %select{|||execution configuration }0arguments to " 6491 "%select{function|block|method|kernel function}0 call, " 6492 "expected at least %1, have %2; did you mean %3?">; 6493def err_typecheck_call_too_many_args : Error< 6494 "too many %select{|||execution configuration }0arguments to " 6495 "%select{function|block|method|kernel function}0 call, " 6496 "expected %1, have %2">; 6497def err_typecheck_call_too_many_args_one : Error< 6498 "too many %select{|||execution configuration }0arguments to " 6499 "%select{function|block|method|kernel function}0 call, " 6500 "expected single argument %1, have %2 arguments">; 6501def err_typecheck_call_too_many_args_at_most : Error< 6502 "too many %select{|||execution configuration }0arguments to " 6503 "%select{function|block|method|kernel function}0 call, " 6504 "expected at most %1, have %2">; 6505def err_typecheck_call_too_many_args_at_most_one : Error< 6506 "too many %select{|||execution configuration }0arguments to " 6507 "%select{function|block|method|kernel function}0 call, " 6508 "expected at most single argument %1, have %2 arguments">; 6509def err_typecheck_call_too_many_args_suggest : Error< 6510 "too many %select{|||execution configuration }0arguments to " 6511 "%select{function|block|method|kernel function}0 call, " 6512 "expected %1, have %2; did you mean %3?">; 6513def err_typecheck_call_too_many_args_at_most_suggest : Error< 6514 "too many %select{|||execution configuration }0arguments to " 6515 "%select{function|block|method|kernel function}0 call, " 6516 "expected at most %1, have %2; did you mean %3?">; 6517 6518def err_arc_typecheck_convert_incompatible_pointer : Error< 6519 "incompatible pointer types passing retainable parameter of type %0" 6520 "to a CF function expecting %1 type">; 6521 6522def err_builtin_fn_use : Error<"builtin functions must be directly called">; 6523 6524def warn_call_wrong_number_of_arguments : Warning< 6525 "too %select{few|many}0 arguments in call to %1">; 6526def err_atomic_builtin_must_be_pointer : Error< 6527 "address argument to atomic builtin must be a pointer (%0 invalid)">; 6528def err_atomic_builtin_must_be_pointer_intptr : Error< 6529 "address argument to atomic builtin must be a pointer to integer or pointer" 6530 " (%0 invalid)">; 6531def err_atomic_builtin_must_be_pointer_intfltptr : Error< 6532 "address argument to atomic builtin must be a pointer to integer," 6533 " floating-point or pointer (%0 invalid)">; 6534def err_atomic_builtin_pointer_size : Error< 6535 "address argument to atomic builtin must be a pointer to 1,2,4,8 or 16 byte " 6536 "type (%0 invalid)">; 6537def err_atomic_exclusive_builtin_pointer_size : Error< 6538 "address argument to load or store exclusive builtin must be a pointer to" 6539 " 1,2,4 or 8 byte type (%0 invalid)">; 6540def err_atomic_op_needs_atomic : Error< 6541 "address argument to atomic operation must be a pointer to _Atomic " 6542 "type (%0 invalid)">; 6543def err_atomic_op_needs_non_const_atomic : Error< 6544 "address argument to atomic operation must be a pointer to non-const _Atomic " 6545 "type (%0 invalid)">; 6546def err_atomic_op_needs_non_const_pointer : Error< 6547 "address argument to atomic operation must be a pointer to non-const " 6548 "type (%0 invalid)">; 6549def err_atomic_op_needs_trivial_copy : Error< 6550 "address argument to atomic operation must be a pointer to a " 6551 "trivially-copyable type (%0 invalid)">; 6552def err_atomic_op_needs_atomic_int_or_ptr : Error< 6553 "address argument to atomic operation must be a pointer to %select{|atomic }0" 6554 "integer or pointer (%1 invalid)">; 6555def err_atomic_op_bitwise_needs_atomic_int : Error< 6556 "address argument to bitwise atomic operation must be a pointer to " 6557 "%select{|atomic }0integer (%1 invalid)">; 6558def warn_atomic_op_has_invalid_memory_order : Warning< 6559 "memory order argument to atomic operation is invalid">, 6560 InGroup<DiagGroup<"atomic-memory-ordering">>; 6561 6562def err_overflow_builtin_must_be_int : Error< 6563 "operand argument to overflow builtin must be an integer (%0 invalid)">; 6564def err_overflow_builtin_must_be_ptr_int : Error< 6565 "result argument to overflow builtin must be a pointer " 6566 "to a non-const integer (%0 invalid)">; 6567 6568def err_atomic_load_store_uses_lib : Error< 6569 "atomic %select{load|store}0 requires runtime support that is not " 6570 "available for this target">; 6571 6572def err_nontemporal_builtin_must_be_pointer : Error< 6573 "address argument to nontemporal builtin must be a pointer (%0 invalid)">; 6574def err_nontemporal_builtin_must_be_pointer_intfltptr_or_vector : Error< 6575 "address argument to nontemporal builtin must be a pointer to integer, float, " 6576 "pointer, or a vector of such types (%0 invalid)">; 6577 6578def err_deleted_function_use : Error<"attempt to use a deleted function">; 6579def err_deleted_inherited_ctor_use : Error< 6580 "constructor inherited by %0 from base class %1 is implicitly deleted">; 6581 6582def err_kern_type_not_void_return : Error< 6583 "kernel function type %0 must have void return type">; 6584def err_kern_is_nonstatic_method : Error< 6585 "kernel function %0 must be a free function or static member function">; 6586def err_config_scalar_return : Error< 6587 "CUDA special function 'cudaConfigureCall' must have scalar return type">; 6588def err_kern_call_not_global_function : Error< 6589 "kernel call to non-global function %0">; 6590def err_global_call_not_config : Error< 6591 "call to global function %0 not configured">; 6592def err_ref_bad_target : Error< 6593 "reference to %select{__device__|__global__|__host__|__host__ __device__}0 " 6594 "function %1 in %select{__device__|__global__|__host__|__host__ __device__}2 function">; 6595def warn_kern_is_method : Extension< 6596 "kernel function %0 is a member function; this may not be accepted by nvcc">, 6597 InGroup<CudaCompat>; 6598def warn_kern_is_inline : Warning< 6599 "ignored 'inline' attribute on kernel function %0">, 6600 InGroup<CudaCompat>; 6601def err_variadic_device_fn : Error< 6602 "CUDA device code does not support variadic functions">; 6603def err_va_arg_in_device : Error< 6604 "CUDA device code does not support va_arg">; 6605def err_alias_not_supported_on_nvptx : Error<"CUDA does not support aliases">; 6606def err_cuda_unattributed_constexpr_cannot_overload_device : Error< 6607 "constexpr function '%0' without __host__ or __device__ attributes cannot " 6608 "overload __device__ function with same signature. Add a __host__ " 6609 "attribute, or build with -fno-cuda-host-device-constexpr.">; 6610def note_cuda_conflicting_device_function_declared_here : Note< 6611 "conflicting __device__ function declared here">; 6612def err_dynamic_var_init : Error< 6613 "dynamic initialization is not supported for " 6614 "__device__, __constant__, and __shared__ variables.">; 6615def err_shared_var_init : Error< 6616 "initialization is not supported for __shared__ variables.">; 6617def err_device_static_local_var : Error< 6618 "Within a __device__/__global__ function, " 6619 "only __shared__ variables may be marked \"static\"">; 6620def warn_non_pod_vararg_with_format_string : Warning< 6621 "cannot pass %select{non-POD|non-trivial}0 object of type %1 to variadic " 6622 "%select{function|block|method|constructor}2; expected type from format " 6623 "string was %3">, InGroup<NonPODVarargs>, DefaultError; 6624// The arguments to this diagnostic should match the warning above. 6625def err_cannot_pass_objc_interface_to_vararg_format : Error< 6626 "cannot pass object with interface type %1 by value to variadic " 6627 "%select{function|block|method|constructor}2; expected type from format " 6628 "string was %3">; 6629 6630def err_cannot_pass_objc_interface_to_vararg : Error< 6631 "cannot pass object with interface type %0 by value through variadic " 6632 "%select{function|block|method|constructor}1">; 6633def warn_cannot_pass_non_pod_arg_to_vararg : Warning< 6634 "cannot pass object of %select{non-POD|non-trivial}0 type %1 through variadic" 6635 " %select{function|block|method|constructor}2; call will abort at runtime">, 6636 InGroup<NonPODVarargs>, DefaultError; 6637def warn_cxx98_compat_pass_non_pod_arg_to_vararg : Warning< 6638 "passing object of trivial but non-POD type %0 through variadic" 6639 " %select{function|block|method|constructor}1 is incompatible with C++98">, 6640 InGroup<CXX98Compat>, DefaultIgnore; 6641def warn_pass_class_arg_to_vararg : Warning< 6642 "passing object of class type %0 through variadic " 6643 "%select{function|block|method|constructor}1" 6644 "%select{|; did you mean to call '%3'?}2">, 6645 InGroup<ClassVarargs>, DefaultIgnore; 6646def err_cannot_pass_to_vararg : Error< 6647 "cannot pass %select{expression of type %1|initializer list}0 to variadic " 6648 "%select{function|block|method|constructor}2">; 6649def err_cannot_pass_to_vararg_format : Error< 6650 "cannot pass %select{expression of type %1|initializer list}0 to variadic " 6651 "%select{function|block|method|constructor}2; expected type from format " 6652 "string was %3">; 6653 6654def err_typecheck_call_invalid_ordered_compare : Error< 6655 "ordered compare requires two args of floating point type" 6656 "%diff{ ($ and $)|}0,1">; 6657def err_typecheck_call_invalid_unary_fp : Error< 6658 "floating point classification requires argument of floating point type " 6659 "(passed in %0)">; 6660def err_typecheck_cond_expect_int_float : Error< 6661 "used type %0 where integer or floating point type is required">; 6662def err_typecheck_cond_expect_scalar : Error< 6663 "used type %0 where arithmetic or pointer type is required">; 6664def err_typecheck_cond_expect_nonfloat : Error< 6665 "used type %0 where floating point type is not allowed">; 6666def ext_typecheck_cond_one_void : Extension< 6667 "C99 forbids conditional expressions with only one void side">; 6668def err_typecheck_cast_to_incomplete : Error< 6669 "cast to incomplete type %0">; 6670def ext_typecheck_cast_nonscalar : Extension< 6671 "C99 forbids casting nonscalar type %0 to the same type">; 6672def ext_typecheck_cast_to_union : Extension< 6673 "cast to union type is a GNU extension">, 6674 InGroup<GNUUnionCast>; 6675def err_typecheck_cast_to_union_no_type : Error< 6676 "cast to union type from type %0 not present in union">; 6677def err_cast_pointer_from_non_pointer_int : Error< 6678 "operand of type %0 cannot be cast to a pointer type">; 6679def warn_cast_pointer_from_sel : Warning< 6680 "cast of type %0 to %1 is deprecated; use sel_getName instead">, 6681 InGroup<SelTypeCast>; 6682def warn_function_def_in_objc_container : Warning< 6683 "function definition inside an Objective-C container is deprecated">, 6684 InGroup<FunctionDefInObjCContainer>; 6685 6686def warn_cast_calling_conv : Warning< 6687 "cast between incompatible calling conventions '%0' and '%1'; " 6688 "calls through this pointer may abort at runtime">, 6689 InGroup<DiagGroup<"cast-calling-convention">>; 6690def note_change_calling_conv_fixit : Note< 6691 "consider defining %0 with the '%1' calling convention">; 6692def warn_bad_function_cast : Warning< 6693 "cast from function call of type %0 to non-matching type %1">, 6694 InGroup<BadFunctionCast>, DefaultIgnore; 6695def err_cast_pointer_to_non_pointer_int : Error< 6696 "pointer cannot be cast to type %0">; 6697def err_typecheck_expect_scalar_operand : Error< 6698 "operand of type %0 where arithmetic or pointer type is required">; 6699def err_typecheck_cond_incompatible_operands : Error< 6700 "incompatible operand types%diff{ ($ and $)|}0,1">; 6701def ext_typecheck_cond_incompatible_operands_nonstandard : ExtWarn< 6702 "incompatible operand types%diff{ ($ and $)|}0,1 use non-standard composite " 6703 "pointer type %2">; 6704def err_cast_selector_expr : Error< 6705 "cannot type cast @selector expression">; 6706def ext_typecheck_cond_incompatible_pointers : ExtWarn< 6707 "pointer type mismatch%diff{ ($ and $)|}0,1">, 6708 InGroup<DiagGroup<"pointer-type-mismatch">>; 6709def ext_typecheck_cond_pointer_integer_mismatch : ExtWarn< 6710 "pointer/integer type mismatch in conditional expression" 6711 "%diff{ ($ and $)|}0,1">, 6712 InGroup<DiagGroup<"conditional-type-mismatch">>; 6713def err_typecheck_choose_expr_requires_constant : Error< 6714 "'__builtin_choose_expr' requires a constant expression">; 6715def warn_unused_expr : Warning<"expression result unused">, 6716 InGroup<UnusedValue>; 6717def warn_unused_voidptr : Warning< 6718 "expression result unused; should this cast be to 'void'?">, 6719 InGroup<UnusedValue>; 6720def warn_unused_property_expr : Warning< 6721 "property access result unused - getters should not be used for side effects">, 6722 InGroup<UnusedGetterReturnValue>; 6723def warn_unused_container_subscript_expr : Warning< 6724 "container access result unused - container access should not be used for side effects">, 6725 InGroup<UnusedValue>; 6726def warn_unused_call : Warning< 6727 "ignoring return value of function declared with %0 attribute">, 6728 InGroup<UnusedValue>; 6729def warn_side_effects_unevaluated_context : Warning< 6730 "expression with side effects has no effect in an unevaluated context">, 6731 InGroup<UnevaluatedExpression>; 6732def warn_side_effects_typeid : Warning< 6733 "expression with side effects will be evaluated despite being used as an " 6734 "operand to 'typeid'">, InGroup<PotentiallyEvaluatedExpression>; 6735def warn_unused_result : Warning< 6736 "ignoring return value of function declared with %0 attribute">, 6737 InGroup<DiagGroup<"unused-result">>; 6738def warn_unused_volatile : Warning< 6739 "expression result unused; assign into a variable to force a volatile load">, 6740 InGroup<DiagGroup<"unused-volatile-lvalue">>; 6741 6742def ext_cxx14_attr : Extension< 6743 "use of the %0 attribute is a C++14 extension">, InGroup<CXX14>; 6744def ext_cxx1z_attr : Extension< 6745 "use of the %0 attribute is a C++1z extension">, InGroup<CXX1z>; 6746 6747def warn_unused_comparison : Warning< 6748 "%select{%select{|in}1equality|relational}0 comparison result unused">, 6749 InGroup<UnusedComparison>; 6750def note_inequality_comparison_to_or_assign : Note< 6751 "use '|=' to turn this inequality comparison into an or-assignment">; 6752 6753def err_incomplete_type_used_in_type_trait_expr : Error< 6754 "incomplete type %0 used in type trait expression">; 6755 6756def err_dimension_expr_not_constant_integer : Error< 6757 "dimension expression does not evaluate to a constant unsigned int">; 6758 6759def err_typecheck_cond_incompatible_operands_null : Error< 6760 "non-pointer operand type %0 incompatible with %select{NULL|nullptr}1">; 6761def ext_empty_struct_union : Extension< 6762 "empty %select{struct|union}0 is a GNU extension">, InGroup<GNUEmptyStruct>; 6763def ext_no_named_members_in_struct_union : Extension< 6764 "%select{struct|union}0 without named members is a GNU extension">, InGroup<GNUEmptyStruct>; 6765def warn_zero_size_struct_union_compat : Warning<"%select{|empty }0" 6766 "%select{struct|union}1 has size 0 in C, %select{size 1|non-zero size}2 in C++">, 6767 InGroup<CXXCompat>, DefaultIgnore; 6768def warn_zero_size_struct_union_in_extern_c : Warning<"%select{|empty }0" 6769 "%select{struct|union}1 has size 0 in C, %select{size 1|non-zero size}2 in C++">, 6770 InGroup<ExternCCompat>; 6771def warn_cast_qual : Warning<"cast from %0 to %1 drops %select{const and " 6772 "volatile qualifiers|const qualifier|volatile qualifier}2">, 6773 InGroup<CastQual>, DefaultIgnore; 6774def warn_cast_qual2 : Warning<"cast from %0 to %1 must have all intermediate " 6775 "pointers const qualified to be safe">, InGroup<CastQual>, DefaultIgnore; 6776def warn_redefine_extname_not_applied : Warning< 6777 "#pragma redefine_extname is applicable to external C declarations only; " 6778 "not applied to %select{function|variable}0 %1">, 6779 InGroup<Pragmas>; 6780} // End of general sema category. 6781 6782// inline asm. 6783let CategoryName = "Inline Assembly Issue" in { 6784 def err_asm_invalid_lvalue_in_output : Error<"invalid lvalue in asm output">; 6785 def err_asm_invalid_output_constraint : Error< 6786 "invalid output constraint '%0' in asm">; 6787 def err_asm_invalid_lvalue_in_input : Error< 6788 "invalid lvalue in asm input for constraint '%0'">; 6789 def err_asm_invalid_input_constraint : Error< 6790 "invalid input constraint '%0' in asm">; 6791 def err_asm_immediate_expected : Error<"constraint '%0' expects " 6792 "an integer constant expression">; 6793 def err_asm_invalid_type_in_input : Error< 6794 "invalid type %0 in asm input for constraint '%1'">; 6795 def err_asm_tying_incompatible_types : Error< 6796 "unsupported inline asm: input with type " 6797 "%diff{$ matching output with type $|}0,1">; 6798 def err_asm_unexpected_constraint_alternatives : Error< 6799 "asm constraint has an unexpected number of alternatives: %0 vs %1">; 6800 def err_asm_incomplete_type : Error<"asm operand has incomplete type %0">; 6801 def err_asm_unknown_register_name : Error<"unknown register name '%0' in asm">; 6802 def err_asm_invalid_global_var_reg : Error<"register '%0' unsuitable for " 6803 "global register variables on this target">; 6804 def err_asm_register_size_mismatch : Error<"size of register '%0' does not " 6805 "match variable size">; 6806 def err_asm_bad_register_type : Error<"bad type for named register variable">; 6807 def err_asm_invalid_input_size : Error< 6808 "invalid input size for constraint '%0'">; 6809 def err_asm_invalid_output_size : Error< 6810 "invalid output size for constraint '%0'">; 6811 def err_invalid_asm_cast_lvalue : Error< 6812 "invalid use of a cast in a inline asm context requiring an l-value: " 6813 "remove the cast or build with -fheinous-gnu-extensions">; 6814 def err_invalid_asm_value_for_constraint 6815 : Error <"value '%0' out of range for constraint '%1'">; 6816 def err_asm_non_addr_value_in_memory_constraint : Error < 6817 "reference to a %select{bit-field|vector element|global register variable}0" 6818 " in asm %select{input|output}1 with a memory constraint '%2'">; 6819 def err_asm_input_duplicate_match : Error< 6820 "more than one input constraint matches the same output '%0'">; 6821 6822 def warn_asm_label_on_auto_decl : Warning< 6823 "ignored asm label '%0' on automatic variable">; 6824 def warn_invalid_asm_cast_lvalue : Warning< 6825 "invalid use of a cast in an inline asm context requiring an l-value: " 6826 "accepted due to -fheinous-gnu-extensions, but clang may remove support " 6827 "for this in the future">; 6828 def warn_asm_mismatched_size_modifier : Warning< 6829 "value size does not match register size specified by the constraint " 6830 "and modifier">, 6831 InGroup<ASMOperandWidths>; 6832 6833 def note_asm_missing_constraint_modifier : Note< 6834 "use constraint modifier \"%0\"">; 6835 def note_asm_input_duplicate_first : Note< 6836 "constraint '%0' is already present here">; 6837} 6838 6839let CategoryName = "Semantic Issue" in { 6840 6841def err_invalid_conversion_between_vectors : Error< 6842 "invalid conversion between vector type%diff{ $ and $|}0,1 of different " 6843 "size">; 6844def err_invalid_conversion_between_vector_and_integer : Error< 6845 "invalid conversion between vector type %0 and integer type %1 " 6846 "of different size">; 6847 6848def err_opencl_function_pointer_variable : Error< 6849 "pointers to functions are not allowed">; 6850 6851def err_opencl_taking_function_address : Error< 6852 "taking address of function is not allowed">; 6853 6854def err_invalid_conversion_between_vector_and_scalar : Error< 6855 "invalid conversion between vector type %0 and scalar type %1">; 6856 6857// C++ member initializers. 6858def err_only_constructors_take_base_inits : Error< 6859 "only constructors take base initializers">; 6860 6861def err_multiple_mem_initialization : Error < 6862 "multiple initializations given for non-static member %0">; 6863def err_multiple_mem_union_initialization : Error < 6864 "initializing multiple members of union">; 6865def err_multiple_base_initialization : Error < 6866 "multiple initializations given for base %0">; 6867 6868def err_mem_init_not_member_or_class : Error< 6869 "member initializer %0 does not name a non-static data member or base " 6870 "class">; 6871 6872def warn_initializer_out_of_order : Warning< 6873 "%select{field|base class}0 %1 will be initialized after " 6874 "%select{field|base}2 %3">, 6875 InGroup<Reorder>, DefaultIgnore; 6876def warn_abstract_vbase_init_ignored : Warning< 6877 "initializer for virtual base class %0 of abstract class %1 " 6878 "will never be used">, 6879 InGroup<DiagGroup<"abstract-vbase-init">>, DefaultIgnore; 6880 6881def err_base_init_does_not_name_class : Error< 6882 "constructor initializer %0 does not name a class">; 6883def err_base_init_direct_and_virtual : Error< 6884 "base class initializer %0 names both a direct base class and an " 6885 "inherited virtual base class">; 6886def err_not_direct_base_or_virtual : Error< 6887 "type %0 is not a direct or virtual base of %1">; 6888 6889def err_in_class_initializer_non_const : Error< 6890 "non-const static data member must be initialized out of line">; 6891def err_in_class_initializer_volatile : Error< 6892 "static const volatile data member must be initialized out of line">; 6893def err_in_class_initializer_bad_type : Error< 6894 "static data member of type %0 must be initialized out of line">; 6895def ext_in_class_initializer_float_type : ExtWarn< 6896 "in-class initializer for static data member of type %0 is a GNU extension">, 6897 InGroup<GNUStaticFloatInit>; 6898def ext_in_class_initializer_float_type_cxx11 : ExtWarn< 6899 "in-class initializer for static data member of type %0 requires " 6900 "'constexpr' specifier">, InGroup<StaticFloatInit>, DefaultError; 6901def note_in_class_initializer_float_type_cxx11 : Note<"add 'constexpr'">; 6902def err_in_class_initializer_literal_type : Error< 6903 "in-class initializer for static data member of type %0 requires " 6904 "'constexpr' specifier">; 6905def err_in_class_initializer_non_constant : Error< 6906 "in-class initializer for static data member is not a constant expression">; 6907def err_in_class_initializer_not_yet_parsed 6908 : Error<"cannot use defaulted default constructor of %0 within the class " 6909 "outside of member functions because %1 has an initializer">; 6910def err_in_class_initializer_not_yet_parsed_outer_class 6911 : Error<"cannot use defaulted default constructor of %0 within " 6912 "%1 outside of member functions because %2 has an initializer">; 6913 6914def ext_in_class_initializer_non_constant : Extension< 6915 "in-class initializer for static data member is not a constant expression; " 6916 "folding it to a constant is a GNU extension">, InGroup<GNUFoldingConstant>; 6917 6918def err_thread_dynamic_init : Error< 6919 "initializer for thread-local variable must be a constant expression">; 6920def err_thread_nontrivial_dtor : Error< 6921 "type of thread-local variable has non-trivial destruction">; 6922def note_use_thread_local : Note< 6923 "use 'thread_local' to allow this">; 6924 6925// C++ anonymous unions and GNU anonymous structs/unions 6926def ext_anonymous_union : Extension< 6927 "anonymous unions are a C11 extension">, InGroup<C11>; 6928def ext_gnu_anonymous_struct : Extension< 6929 "anonymous structs are a GNU extension">, InGroup<GNUAnonymousStruct>; 6930def ext_c11_anonymous_struct : Extension< 6931 "anonymous structs are a C11 extension">, InGroup<C11>; 6932def err_anonymous_union_not_static : Error< 6933 "anonymous unions at namespace or global scope must be declared 'static'">; 6934def err_anonymous_union_with_storage_spec : Error< 6935 "anonymous union at class scope must not have a storage specifier">; 6936def err_anonymous_struct_not_member : Error< 6937 "anonymous %select{structs|structs and classes}0 must be " 6938 "%select{struct or union|class}0 members">; 6939def err_anonymous_record_member_redecl : Error< 6940 "member of anonymous %select{struct|union}0 redeclares %1">; 6941def err_anonymous_record_with_type : Error< 6942 "types cannot be declared in an anonymous %select{struct|union}0">; 6943def ext_anonymous_record_with_type : Extension< 6944 "types declared in an anonymous %select{struct|union}0 are a Microsoft " 6945 "extension">, InGroup<MicrosoftAnonTag>; 6946def ext_anonymous_record_with_anonymous_type : Extension< 6947 "anonymous types declared in an anonymous %select{struct|union}0 " 6948 "are an extension">, InGroup<DiagGroup<"nested-anon-types">>; 6949def err_anonymous_record_with_function : Error< 6950 "functions cannot be declared in an anonymous %select{struct|union}0">; 6951def err_anonymous_record_with_static : Error< 6952 "static members cannot be declared in an anonymous %select{struct|union}0">; 6953def err_anonymous_record_bad_member : Error< 6954 "anonymous %select{struct|union}0 can only contain non-static data members">; 6955def err_anonymous_record_nonpublic_member : Error< 6956 "anonymous %select{struct|union}0 cannot contain a " 6957 "%select{private|protected}1 data member">; 6958def ext_ms_anonymous_record : ExtWarn< 6959 "anonymous %select{structs|unions}0 are a Microsoft extension">, 6960 InGroup<MicrosoftAnonTag>; 6961 6962// C++ local classes 6963def err_reference_to_local_var_in_enclosing_function : Error< 6964 "reference to local variable %0 declared in enclosing function %1">; 6965def err_reference_to_local_var_in_enclosing_block : Error< 6966 "reference to local variable %0 declared in enclosing block literal">; 6967def err_reference_to_local_var_in_enclosing_lambda : Error< 6968 "reference to local variable %0 declared in enclosing lambda expression">; 6969def err_reference_to_local_var_in_enclosing_context : Error< 6970 "reference to local variable %0 declared in enclosing context">; 6971 6972def err_static_data_member_not_allowed_in_local_class : Error< 6973 "static data member %0 not allowed in local class %1">; 6974 6975// C++ derived classes 6976def err_base_clause_on_union : Error<"unions cannot have base classes">; 6977def err_base_must_be_class : Error<"base specifier must name a class">; 6978def err_union_as_base_class : Error<"unions cannot be base classes">; 6979def err_circular_inheritance : Error< 6980 "circular inheritance between %0 and %1">; 6981def err_base_class_has_flexible_array_member : Error< 6982 "base class %0 has a flexible array member">; 6983def err_incomplete_base_class : Error<"base class has incomplete type">; 6984def err_duplicate_base_class : Error< 6985 "base class %0 specified more than once as a direct base class">; 6986def warn_inaccessible_base_class : Warning< 6987 "direct base %0 is inaccessible due to ambiguity:%1">, 6988 InGroup<DiagGroup<"inaccessible-base">>; 6989// FIXME: better way to display derivation? Pass entire thing into diagclient? 6990def err_ambiguous_derived_to_base_conv : Error< 6991 "ambiguous conversion from derived class %0 to base class %1:%2">; 6992def err_ambiguous_memptr_conv : Error< 6993 "ambiguous conversion from pointer to member of %select{base|derived}0 " 6994 "class %1 to pointer to member of %select{derived|base}0 class %2:%3">; 6995 6996def err_memptr_conv_via_virtual : Error< 6997 "conversion from pointer to member of class %0 to pointer to member " 6998 "of class %1 via virtual base %2 is not allowed">; 6999 7000// C++ member name lookup 7001def err_ambiguous_member_multiple_subobjects : Error< 7002 "non-static member %0 found in multiple base-class subobjects of type %1:%2">; 7003def err_ambiguous_member_multiple_subobject_types : Error< 7004 "member %0 found in multiple base classes of different types">; 7005def note_ambiguous_member_found : Note<"member found by ambiguous name lookup">; 7006def err_ambiguous_reference : Error<"reference to %0 is ambiguous">; 7007def note_ambiguous_candidate : Note<"candidate found by name lookup is %q0">; 7008def err_ambiguous_tag_hiding : Error<"a type named %0 is hidden by a " 7009 "declaration in a different namespace">; 7010def note_hidden_tag : Note<"type declaration hidden">; 7011def note_hiding_object : Note<"declaration hides type">; 7012 7013// C++ operator overloading 7014def err_operator_overload_needs_class_or_enum : Error< 7015 "overloaded %0 must have at least one parameter of class " 7016 "or enumeration type">; 7017 7018def err_operator_overload_variadic : Error<"overloaded %0 cannot be variadic">; 7019def err_operator_overload_static : Error< 7020 "overloaded %0 cannot be a static member function">; 7021def err_operator_overload_default_arg : Error< 7022 "parameter of overloaded %0 cannot have a default argument">; 7023def err_operator_overload_must_be : Error< 7024 "overloaded %0 must be a %select{unary|binary|unary or binary}2 operator " 7025 "(has %1 parameter%s1)">; 7026 7027def err_operator_overload_must_be_member : Error< 7028 "overloaded %0 must be a non-static member function">; 7029def err_operator_overload_post_incdec_must_be_int : Error< 7030 "parameter of overloaded post-%select{increment|decrement}1 operator must " 7031 "have type 'int' (not %0)">; 7032 7033// C++ allocation and deallocation functions. 7034def err_operator_new_delete_declared_in_namespace : Error< 7035 "%0 cannot be declared inside a namespace">; 7036def err_operator_new_delete_declared_static : Error< 7037 "%0 cannot be declared static in global scope">; 7038def ext_operator_new_delete_declared_inline : ExtWarn< 7039 "replacement function %0 cannot be declared 'inline'">, 7040 InGroup<DiagGroup<"inline-new-delete">>; 7041def err_operator_new_delete_invalid_result_type : Error< 7042 "%0 must return type %1">; 7043def err_operator_new_delete_dependent_result_type : Error< 7044 "%0 cannot have a dependent return type; use %1 instead">; 7045def err_operator_new_delete_too_few_parameters : Error< 7046 "%0 must have at least one parameter">; 7047def err_operator_new_delete_template_too_few_parameters : Error< 7048 "%0 template must have at least two parameters">; 7049def warn_operator_new_returns_null : Warning< 7050 "%0 should not return a null pointer unless it is declared 'throw()'" 7051 "%select{| or 'noexcept'}1">, InGroup<OperatorNewReturnsNull>; 7052 7053def err_operator_new_dependent_param_type : Error< 7054 "%0 cannot take a dependent type as first parameter; " 7055 "use size_t (%1) instead">; 7056def err_operator_new_param_type : Error< 7057 "%0 takes type size_t (%1) as first parameter">; 7058def err_operator_new_default_arg: Error< 7059 "parameter of %0 cannot have a default argument">; 7060def err_operator_delete_dependent_param_type : Error< 7061 "%0 cannot take a dependent type as first parameter; use %1 instead">; 7062def err_operator_delete_param_type : Error< 7063 "first parameter of %0 must have type %1">; 7064 7065// C++ literal operators 7066def err_literal_operator_outside_namespace : Error< 7067 "literal operator %0 must be in a namespace or global scope">; 7068def err_literal_operator_id_outside_namespace : Error< 7069 "non-namespace scope '%0' cannot have a literal operator member">; 7070def err_literal_operator_default_argument : Error< 7071 "literal operator cannot have a default argument">; 7072def err_literal_operator_bad_param_count : Error< 7073 "non-template literal operator must have one or two parameters">; 7074def err_literal_operator_invalid_param : Error< 7075 "parameter of literal operator must have type 'unsigned long long', 'long double', 'char', 'wchar_t', 'char16_t', 'char32_t', or 'const char *'">; 7076def err_literal_operator_param : Error< 7077 "invalid literal operator parameter type %0, did you mean %1?">; 7078def err_literal_operator_template_with_params : Error< 7079 "literal operator template cannot have any parameters">; 7080def err_literal_operator_template : Error< 7081 "template parameter list for literal operator must be either 'char...' or 'typename T, T...'">; 7082def err_literal_operator_extern_c : Error< 7083 "literal operator must have C++ linkage">; 7084def ext_string_literal_operator_template : ExtWarn< 7085 "string literal operator templates are a GNU extension">, 7086 InGroup<GNUStringLiteralOperatorTemplate>; 7087def warn_user_literal_reserved : Warning< 7088 "user-defined literal suffixes not starting with '_' are reserved" 7089 "%select{; no literal will invoke this operator|}0">, 7090 InGroup<UserDefinedLiterals>; 7091 7092// C++ conversion functions 7093def err_conv_function_not_member : Error< 7094 "conversion function must be a non-static member function">; 7095def err_conv_function_return_type : Error< 7096 "conversion function cannot have a return type">; 7097def err_conv_function_with_params : Error< 7098 "conversion function cannot have any parameters">; 7099def err_conv_function_variadic : Error< 7100 "conversion function cannot be variadic">; 7101def err_conv_function_to_array : Error< 7102 "conversion function cannot convert to an array type">; 7103def err_conv_function_to_function : Error< 7104 "conversion function cannot convert to a function type">; 7105def err_conv_function_with_complex_decl : Error< 7106 "cannot specify any part of a return type in the " 7107 "declaration of a conversion function" 7108 "%select{" 7109 "; put the complete type after 'operator'|" 7110 "; use a typedef to declare a conversion to %1|" 7111 "; use an alias template to declare a conversion to %1|" 7112 "}0">; 7113def err_conv_function_redeclared : Error< 7114 "conversion function cannot be redeclared">; 7115def warn_conv_to_self_not_used : Warning< 7116 "conversion function converting %0 to itself will never be used">; 7117def warn_conv_to_base_not_used : Warning< 7118 "conversion function converting %0 to its base class %1 will never be used">; 7119def warn_conv_to_void_not_used : Warning< 7120 "conversion function converting %0 to %1 will never be used">; 7121 7122def warn_not_compound_assign : Warning< 7123 "use of unary operator that may be intended as compound assignment (%0=)">; 7124 7125// C++11 explicit conversion operators 7126def ext_explicit_conversion_functions : ExtWarn< 7127 "explicit conversion functions are a C++11 extension">, InGroup<CXX11>; 7128def warn_cxx98_compat_explicit_conversion_functions : Warning< 7129 "explicit conversion functions are incompatible with C++98">, 7130 InGroup<CXX98Compat>, DefaultIgnore; 7131 7132// C++11 defaulted functions 7133def err_defaulted_special_member_params : Error< 7134 "an explicitly-defaulted %select{|copy |move }0constructor cannot " 7135 "have default arguments">; 7136def err_defaulted_special_member_variadic : Error< 7137 "an explicitly-defaulted %select{|copy |move }0constructor cannot " 7138 "be variadic">; 7139def err_defaulted_special_member_return_type : Error< 7140 "explicitly-defaulted %select{copy|move}0 assignment operator must " 7141 "return %1">; 7142def err_defaulted_special_member_quals : Error< 7143 "an explicitly-defaulted %select{copy|move}0 assignment operator may not " 7144 "have 'const'%select{, 'constexpr'|}1 or 'volatile' qualifiers">; 7145def err_defaulted_special_member_volatile_param : Error< 7146 "the parameter for an explicitly-defaulted %select{<<ERROR>>|" 7147 "copy constructor|move constructor|copy assignment operator|" 7148 "move assignment operator|<<ERROR>>}0 may not be volatile">; 7149def err_defaulted_special_member_move_const_param : Error< 7150 "the parameter for an explicitly-defaulted move " 7151 "%select{constructor|assignment operator}0 may not be const">; 7152def err_defaulted_special_member_copy_const_param : Error< 7153 "the parameter for this explicitly-defaulted copy " 7154 "%select{constructor|assignment operator}0 is const, but a member or base " 7155 "requires it to be non-const">; 7156def err_defaulted_copy_assign_not_ref : Error< 7157 "the parameter for an explicitly-defaulted copy assignment operator must be an " 7158 "lvalue reference type">; 7159def err_incorrect_defaulted_exception_spec : Error< 7160 "exception specification of explicitly defaulted %select{default constructor|" 7161 "copy constructor|move constructor|copy assignment operator|move assignment " 7162 "operator|destructor}0 does not match the " 7163 "calculated one">; 7164def err_incorrect_defaulted_constexpr : Error< 7165 "defaulted definition of %select{default constructor|copy constructor|" 7166 "move constructor|copy assignment operator|move assignment operator}0 " 7167 "is not constexpr">; 7168def err_out_of_line_default_deletes : Error< 7169 "defaulting this %select{default constructor|copy constructor|move " 7170 "constructor|copy assignment operator|move assignment operator|destructor}0 " 7171 "would delete it after its first declaration">; 7172def warn_vbase_moved_multiple_times : Warning< 7173 "defaulted move assignment operator of %0 will move assign virtual base " 7174 "class %1 multiple times">, InGroup<DiagGroup<"multiple-move-vbase">>; 7175def note_vbase_moved_here : Note< 7176 "%select{%1 is a virtual base class of base class %2 declared here|" 7177 "virtual base class %1 declared here}0">; 7178 7179def ext_implicit_exception_spec_mismatch : ExtWarn< 7180 "function previously declared with an %select{explicit|implicit}0 exception " 7181 "specification redeclared with an %select{implicit|explicit}0 exception " 7182 "specification">, InGroup<DiagGroup<"implicit-exception-spec-mismatch">>; 7183 7184def warn_ptr_arith_precedes_bounds : Warning< 7185 "the pointer decremented by %0 refers before the beginning of the array">, 7186 InGroup<ArrayBoundsPointerArithmetic>, DefaultIgnore; 7187def warn_ptr_arith_exceeds_bounds : Warning< 7188 "the pointer incremented by %0 refers past the end of the array (that " 7189 "contains %1 element%s2)">, 7190 InGroup<ArrayBoundsPointerArithmetic>, DefaultIgnore; 7191def warn_array_index_precedes_bounds : Warning< 7192 "array index %0 is before the beginning of the array">, 7193 InGroup<ArrayBounds>; 7194def warn_array_index_exceeds_bounds : Warning< 7195 "array index %0 is past the end of the array (which contains %1 " 7196 "element%s2)">, InGroup<ArrayBounds>; 7197def note_array_index_out_of_bounds : Note< 7198 "array %0 declared here">; 7199 7200def warn_printf_insufficient_data_args : Warning< 7201 "more '%%' conversions than data arguments">, InGroup<Format>; 7202def warn_printf_data_arg_not_used : Warning< 7203 "data argument not used by format string">, InGroup<FormatExtraArgs>; 7204def warn_format_invalid_conversion : Warning< 7205 "invalid conversion specifier '%0'">, InGroup<FormatInvalidSpecifier>; 7206def warn_printf_incomplete_specifier : Warning< 7207 "incomplete format specifier">, InGroup<Format>; 7208def warn_missing_format_string : Warning< 7209 "format string missing">, InGroup<Format>; 7210def warn_scanf_nonzero_width : Warning< 7211 "zero field width in scanf format string is unused">, 7212 InGroup<Format>; 7213def warn_format_conversion_argument_type_mismatch : Warning< 7214 "format specifies type %0 but the argument has " 7215 "%select{type|underlying type}2 %1">, 7216 InGroup<Format>; 7217def warn_format_conversion_argument_type_mismatch_pedantic : Extension< 7218 "format specifies type %0 but the argument has " 7219 "%select{type|underlying type}2 %1">, 7220 InGroup<FormatPedantic>; 7221def warn_format_argument_needs_cast : Warning< 7222 "%select{values of type|enum values with underlying type}2 '%0' should not " 7223 "be used as format arguments; add an explicit cast to %1 instead">, 7224 InGroup<Format>; 7225def warn_printf_positional_arg_exceeds_data_args : Warning < 7226 "data argument position '%0' exceeds the number of data arguments (%1)">, 7227 InGroup<Format>; 7228def warn_format_zero_positional_specifier : Warning< 7229 "position arguments in format strings start counting at 1 (not 0)">, 7230 InGroup<Format>; 7231def warn_format_invalid_positional_specifier : Warning< 7232 "invalid position specified for %select{field width|field precision}0">, 7233 InGroup<Format>; 7234def warn_format_mix_positional_nonpositional_args : Warning< 7235 "cannot mix positional and non-positional arguments in format string">, 7236 InGroup<Format>; 7237def warn_static_array_too_small : Warning< 7238 "array argument is too small; contains %0 elements, callee requires at least %1">, 7239 InGroup<ArrayBounds>; 7240def note_callee_static_array : Note< 7241 "callee declares array parameter as static here">; 7242def warn_empty_format_string : Warning< 7243 "format string is empty">, InGroup<FormatZeroLength>; 7244def warn_format_string_is_wide_literal : Warning< 7245 "format string should not be a wide string">, InGroup<Format>; 7246def warn_printf_format_string_contains_null_char : Warning< 7247 "format string contains '\\0' within the string body">, InGroup<Format>; 7248def warn_printf_format_string_not_null_terminated : Warning< 7249 "format string is not null-terminated">, InGroup<Format>; 7250def warn_printf_asterisk_missing_arg : Warning< 7251 "'%select{*|.*}0' specified field %select{width|precision}0 is missing a matching 'int' argument">, 7252 InGroup<Format>; 7253def warn_printf_asterisk_wrong_type : Warning< 7254 "field %select{width|precision}0 should have type %1, but argument has type %2">, 7255 InGroup<Format>; 7256def warn_printf_nonsensical_optional_amount: Warning< 7257 "%select{field width|precision}0 used with '%1' conversion specifier, resulting in undefined behavior">, 7258 InGroup<Format>; 7259def warn_printf_nonsensical_flag: Warning< 7260 "flag '%0' results in undefined behavior with '%1' conversion specifier">, 7261 InGroup<Format>; 7262def warn_format_nonsensical_length: Warning< 7263 "length modifier '%0' results in undefined behavior or no effect with '%1' conversion specifier">, 7264 InGroup<Format>; 7265def warn_format_non_standard_positional_arg: Warning< 7266 "positional arguments are not supported by ISO C">, InGroup<FormatNonStandard>, DefaultIgnore; 7267def warn_format_non_standard: Warning< 7268 "'%0' %select{length modifier|conversion specifier}1 is not supported by ISO C">, 7269 InGroup<FormatNonStandard>, DefaultIgnore; 7270def warn_format_non_standard_conversion_spec: Warning< 7271 "using length modifier '%0' with conversion specifier '%1' is not supported by ISO C">, 7272 InGroup<FormatNonStandard>, DefaultIgnore; 7273def warn_printf_ignored_flag: Warning< 7274 "flag '%0' is ignored when flag '%1' is present">, 7275 InGroup<Format>; 7276def warn_printf_empty_objc_flag: Warning< 7277 "missing object format flag">, 7278 InGroup<Format>; 7279def warn_printf_ObjCflags_without_ObjCConversion: Warning< 7280 "object format flags cannot be used with '%0' conversion specifier">, 7281 InGroup<Format>; 7282def warn_printf_invalid_objc_flag: Warning< 7283 "'%0' is not a valid object format flag">, 7284 InGroup<Format>; 7285def warn_scanf_scanlist_incomplete : Warning< 7286 "no closing ']' for '%%[' in scanf format string">, 7287 InGroup<Format>; 7288def note_format_string_defined : Note<"format string is defined here">; 7289def note_format_fix_specifier : Note<"did you mean to use '%0'?">; 7290def note_printf_c_str: Note<"did you mean to call the %0 method?">; 7291def note_format_security_fixit: Note< 7292 "treat the string as an argument to avoid this">; 7293 7294def warn_null_arg : Warning< 7295 "null passed to a callee that requires a non-null argument">, 7296 InGroup<NonNull>; 7297def warn_null_ret : Warning< 7298 "null returned from %select{function|method}0 that requires a non-null return value">, 7299 InGroup<NonNull>; 7300 7301// CHECK: returning address/reference of stack memory 7302def warn_ret_stack_addr_ref : Warning< 7303 "%select{address of|reference to}0 stack memory associated with local " 7304 "variable %1 returned">, 7305 InGroup<ReturnStackAddress>; 7306def warn_ret_local_temp_addr_ref : Warning< 7307 "returning %select{address of|reference to}0 local temporary object">, 7308 InGroup<ReturnStackAddress>; 7309def warn_ret_addr_label : Warning< 7310 "returning address of label, which is local">, 7311 InGroup<ReturnStackAddress>; 7312def err_ret_local_block : Error< 7313 "returning block that lives on the local stack">; 7314def note_ref_var_local_bind : Note< 7315 "binding reference variable %0 here">; 7316 7317// Check for initializing a member variable with the address or a reference to 7318// a constructor parameter. 7319def warn_bind_ref_member_to_parameter : Warning< 7320 "binding reference member %0 to stack allocated parameter %1">, 7321 InGroup<DanglingField>; 7322def warn_init_ptr_member_to_parameter_addr : Warning< 7323 "initializing pointer member %0 with the stack address of parameter %1">, 7324 InGroup<DanglingField>; 7325def warn_bind_ref_member_to_temporary : Warning< 7326 "binding reference %select{|subobject of }1member %0 to a temporary value">, 7327 InGroup<DanglingField>; 7328def note_ref_or_ptr_member_declared_here : Note< 7329 "%select{reference|pointer}0 member declared here">; 7330def note_ref_subobject_of_member_declared_here : Note< 7331 "member with reference subobject declared here">; 7332 7333// For non-floating point, expressions of the form x == x or x != x 7334// should result in a warning, since these always evaluate to a constant. 7335// Array comparisons have similar warnings 7336def warn_comparison_always : Warning< 7337 "%select{self-|array }0comparison always evaluates to %select{false|true|a constant}1">, 7338 InGroup<TautologicalCompare>; 7339def warn_comparison_bitwise_always : Warning< 7340 "bitwise comparison always evaluates to %select{false|true}0">, 7341 InGroup<TautologicalCompare>; 7342def warn_tautological_overlap_comparison : Warning< 7343 "overlapping comparisons always evaluate to %select{false|true}0">, 7344 InGroup<TautologicalOverlapCompare>, DefaultIgnore; 7345 7346def warn_stringcompare : Warning< 7347 "result of comparison against %select{a string literal|@encode}0 is " 7348 "unspecified (use strncmp instead)">, 7349 InGroup<StringCompare>; 7350 7351def warn_identity_field_assign : Warning< 7352 "assigning %select{field|instance variable}0 to itself">, 7353 InGroup<SelfAssignmentField>; 7354 7355// Type safety attributes 7356def err_type_tag_for_datatype_not_ice : Error< 7357 "'type_tag_for_datatype' attribute requires the initializer to be " 7358 "an %select{integer|integral}0 constant expression">; 7359def err_type_tag_for_datatype_too_large : Error< 7360 "'type_tag_for_datatype' attribute requires the initializer to be " 7361 "an %select{integer|integral}0 constant expression " 7362 "that can be represented by a 64 bit integer">; 7363def warn_type_tag_for_datatype_wrong_kind : Warning< 7364 "this type tag was not designed to be used with this function">, 7365 InGroup<TypeSafety>; 7366def warn_type_safety_type_mismatch : Warning< 7367 "argument type %0 doesn't match specified %1 type tag " 7368 "%select{that requires %3|}2">, InGroup<TypeSafety>; 7369def warn_type_safety_null_pointer_required : Warning< 7370 "specified %0 type tag requires a null pointer">, InGroup<TypeSafety>; 7371 7372// Generic selections. 7373def err_assoc_type_incomplete : Error< 7374 "type %0 in generic association incomplete">; 7375def err_assoc_type_nonobject : Error< 7376 "type %0 in generic association not an object type">; 7377def err_assoc_type_variably_modified : Error< 7378 "type %0 in generic association is a variably modified type">; 7379def err_assoc_compatible_types : Error< 7380 "type %0 in generic association compatible with previously specified type %1">; 7381def note_compat_assoc : Note< 7382 "compatible type %0 specified here">; 7383def err_generic_sel_no_match : Error< 7384 "controlling expression type %0 not compatible with any generic association type">; 7385def err_generic_sel_multi_match : Error< 7386 "controlling expression type %0 compatible with %1 generic association types">; 7387 7388 7389// Blocks 7390def err_blocks_disable : Error<"blocks support disabled - compile with -fblocks" 7391 " or %select{pick a deployment target that supports them|for OpenCL 2.0 or above}0">; 7392def err_block_returning_array_function : Error< 7393 "block cannot return %select{array|function}0 type %1">; 7394 7395// Builtin annotation 7396def err_builtin_annotation_first_arg : Error< 7397 "first argument to __builtin_annotation must be an integer">; 7398def err_builtin_annotation_second_arg : Error< 7399 "second argument to __builtin_annotation must be a non-wide string constant">; 7400 7401// CFString checking 7402def err_cfstring_literal_not_string_constant : Error< 7403 "CFString literal is not a string constant">; 7404def warn_cfstring_truncated : Warning< 7405 "input conversion stopped due to an input byte that does not " 7406 "belong to the input codeset UTF-8">, 7407 InGroup<DiagGroup<"CFString-literal">>; 7408 7409// Statements. 7410def err_continue_not_in_loop : Error< 7411 "'continue' statement not in loop statement">; 7412def err_break_not_in_loop_or_switch : Error< 7413 "'break' statement not in loop or switch statement">; 7414def warn_loop_ctrl_binds_to_inner : Warning< 7415 "'%0' is bound to current loop, GCC binds it to the enclosing loop">, 7416 InGroup<GccCompat>; 7417def warn_break_binds_to_switch : Warning< 7418 "'break' is bound to loop, GCC binds it to switch">, 7419 InGroup<GccCompat>; 7420def err_default_not_in_switch : Error< 7421 "'default' statement not in switch statement">; 7422def err_case_not_in_switch : Error<"'case' statement not in switch statement">; 7423def warn_bool_switch_condition : Warning< 7424 "switch condition has boolean value">, InGroup<SwitchBool>; 7425def warn_case_value_overflow : Warning< 7426 "overflow converting case value to switch condition type (%0 to %1)">, 7427 InGroup<Switch>; 7428def err_duplicate_case : Error<"duplicate case value '%0'">; 7429def err_duplicate_case_differing_expr : Error< 7430 "duplicate case value: '%0' and '%1' both equal '%2'">; 7431def warn_case_empty_range : Warning<"empty case range specified">; 7432def warn_missing_case_for_condition : 7433 Warning<"no case matching constant switch condition '%0'">; 7434 7435def warn_def_missing_case : Warning<"%plural{" 7436 "1:enumeration value %1 not explicitly handled in switch|" 7437 "2:enumeration values %1 and %2 not explicitly handled in switch|" 7438 "3:enumeration values %1, %2, and %3 not explicitly handled in switch|" 7439 ":%0 enumeration values not explicitly handled in switch: %1, %2, %3...}0">, 7440 InGroup<SwitchEnum>, DefaultIgnore; 7441 7442def warn_missing_case : Warning<"%plural{" 7443 "1:enumeration value %1 not handled in switch|" 7444 "2:enumeration values %1 and %2 not handled in switch|" 7445 "3:enumeration values %1, %2, and %3 not handled in switch|" 7446 ":%0 enumeration values not handled in switch: %1, %2, %3...}0">, 7447 InGroup<Switch>; 7448 7449def warn_unannotated_fallthrough : Warning< 7450 "unannotated fall-through between switch labels">, 7451 InGroup<ImplicitFallthrough>, DefaultIgnore; 7452def warn_unannotated_fallthrough_per_function : Warning< 7453 "unannotated fall-through between switch labels in partly-annotated " 7454 "function">, InGroup<ImplicitFallthroughPerFunction>, DefaultIgnore; 7455def note_insert_fallthrough_fixit : Note< 7456 "insert '%0;' to silence this warning">; 7457def note_insert_break_fixit : Note< 7458 "insert 'break;' to avoid fall-through">; 7459def err_fallthrough_attr_wrong_target : Error< 7460 "%0 attribute is only allowed on empty statements">; 7461def note_fallthrough_insert_semi_fixit : Note<"did you forget ';'?">; 7462def err_fallthrough_attr_outside_switch : Error< 7463 "fallthrough annotation is outside switch statement">; 7464def err_fallthrough_attr_invalid_placement : Error< 7465 "fallthrough annotation does not directly precede switch label">; 7466def warn_fallthrough_attr_unreachable : Warning< 7467 "fallthrough annotation in unreachable code">, 7468 InGroup<ImplicitFallthrough>, DefaultIgnore; 7469 7470def warn_unreachable_default : Warning< 7471 "default label in switch which covers all enumeration values">, 7472 InGroup<CoveredSwitchDefault>, DefaultIgnore; 7473def warn_not_in_enum : Warning<"case value not in enumerated type %0">, 7474 InGroup<Switch>; 7475def warn_not_in_enum_assignment : Warning<"integer constant not in range " 7476 "of enumerated type %0">, InGroup<DiagGroup<"assign-enum">>, DefaultIgnore; 7477def err_typecheck_statement_requires_scalar : Error< 7478 "statement requires expression of scalar type (%0 invalid)">; 7479def err_typecheck_statement_requires_integer : Error< 7480 "statement requires expression of integer type (%0 invalid)">; 7481def err_multiple_default_labels_defined : Error< 7482 "multiple default labels in one switch">; 7483def err_switch_multiple_conversions : Error< 7484 "multiple conversions from switch condition type %0 to an integral or " 7485 "enumeration type">; 7486def note_switch_conversion : Note< 7487 "conversion to %select{integral|enumeration}0 type %1">; 7488def err_switch_explicit_conversion : Error< 7489 "switch condition type %0 requires explicit conversion to %1">; 7490def err_switch_incomplete_class_type : Error< 7491 "switch condition has incomplete class type %0">; 7492 7493def warn_empty_if_body : Warning< 7494 "if statement has empty body">, InGroup<EmptyBody>; 7495def warn_empty_for_body : Warning< 7496 "for loop has empty body">, InGroup<EmptyBody>; 7497def warn_empty_range_based_for_body : Warning< 7498 "range-based for loop has empty body">, InGroup<EmptyBody>; 7499def warn_empty_while_body : Warning< 7500 "while loop has empty body">, InGroup<EmptyBody>; 7501def warn_empty_switch_body : Warning< 7502 "switch statement has empty body">, InGroup<EmptyBody>; 7503def note_empty_body_on_separate_line : Note< 7504 "put the semicolon on a separate line to silence this warning">; 7505 7506def err_va_start_used_in_non_variadic_function : Error< 7507 "'va_start' used in function with fixed args">; 7508def err_va_start_used_in_wrong_abi_function : Error< 7509 "'va_start' used in %select{System V|Win64}0 ABI function">; 7510def err_ms_va_start_used_in_sysv_function : Error< 7511 "'__builtin_ms_va_start' used in System V ABI function">; 7512def warn_second_arg_of_va_start_not_last_named_param : Warning< 7513 "second argument to 'va_start' is not the last named parameter">, 7514 InGroup<Varargs>; 7515def warn_va_start_type_is_undefined : Warning< 7516 "passing %select{an object that undergoes default argument promotion|" 7517 "an object of reference type|a parameter declared with the 'register' " 7518 "keyword}0 to 'va_start' has undefined behavior">, InGroup<Varargs>; 7519def err_first_argument_to_va_arg_not_of_type_va_list : Error< 7520 "first argument to 'va_arg' is of type %0 and not 'va_list'">; 7521def err_second_parameter_to_va_arg_incomplete: Error< 7522 "second argument to 'va_arg' is of incomplete type %0">; 7523def err_second_parameter_to_va_arg_abstract: Error< 7524 "second argument to 'va_arg' is of abstract type %0">; 7525def warn_second_parameter_to_va_arg_not_pod : Warning< 7526 "second argument to 'va_arg' is of non-POD type %0">, 7527 InGroup<NonPODVarargs>, DefaultError; 7528def warn_second_parameter_to_va_arg_ownership_qualified : Warning< 7529 "second argument to 'va_arg' is of ARC ownership-qualified type %0">, 7530 InGroup<NonPODVarargs>, DefaultError; 7531def warn_second_parameter_to_va_arg_never_compatible : Warning< 7532 "second argument to 'va_arg' is of promotable type %0; this va_arg has " 7533 "undefined behavior because arguments will be promoted to %1">, InGroup<Varargs>; 7534 7535def warn_return_missing_expr : Warning< 7536 "non-void %select{function|method}1 %0 should return a value">, DefaultError, 7537 InGroup<ReturnType>; 7538def ext_return_missing_expr : ExtWarn< 7539 "non-void %select{function|method}1 %0 should return a value">, DefaultError, 7540 InGroup<ReturnType>; 7541def ext_return_has_expr : ExtWarn< 7542 "%select{void function|void method|constructor|destructor}1 %0 " 7543 "should not return a value">, 7544 DefaultError, InGroup<ReturnType>; 7545def ext_return_has_void_expr : Extension< 7546 "void %select{function|method|block}1 %0 should not return void expression">; 7547def err_return_init_list : Error< 7548 "%select{void function|void method|constructor|destructor}1 %0 " 7549 "must not return a value">; 7550def err_ctor_dtor_returns_void : Error< 7551 "%select{constructor|destructor}1 %0 must not return void expression">; 7552def warn_noreturn_function_has_return_expr : Warning< 7553 "function %0 declared 'noreturn' should not return">, 7554 InGroup<InvalidNoreturn>; 7555def warn_falloff_noreturn_function : Warning< 7556 "function declared 'noreturn' should not return">, 7557 InGroup<InvalidNoreturn>; 7558def err_noreturn_block_has_return_expr : Error< 7559 "block declared 'noreturn' should not return">; 7560def err_noreturn_missing_on_first_decl : Error< 7561 "function declared '[[noreturn]]' after its first declaration">; 7562def note_noreturn_missing_first_decl : Note< 7563 "declaration missing '[[noreturn]]' attribute is here">; 7564def err_carries_dependency_missing_on_first_decl : Error< 7565 "%select{function|parameter}0 declared '[[carries_dependency]]' " 7566 "after its first declaration">; 7567def note_carries_dependency_missing_first_decl : Note< 7568 "declaration missing '[[carries_dependency]]' attribute is here">; 7569def err_carries_dependency_param_not_function_decl : Error< 7570 "'[[carries_dependency]]' attribute only allowed on parameter in a function " 7571 "declaration or lambda">; 7572def err_block_on_nonlocal : Error< 7573 "__block attribute not allowed, only allowed on local variables">; 7574def err_block_on_vm : Error< 7575 "__block attribute not allowed on declaration with a variably modified type">; 7576 7577def err_shufflevector_non_vector : Error< 7578 "first two arguments to __builtin_shufflevector must be vectors">; 7579def err_shufflevector_incompatible_vector : Error< 7580 "first two arguments to __builtin_shufflevector must have the same type">; 7581def err_shufflevector_nonconstant_argument : Error< 7582 "index for __builtin_shufflevector must be a constant integer">; 7583def err_shufflevector_argument_too_large : Error< 7584 "index for __builtin_shufflevector must be less than the total number " 7585 "of vector elements">; 7586 7587def err_convertvector_non_vector : Error< 7588 "first argument to __builtin_convertvector must be a vector">; 7589def err_convertvector_non_vector_type : Error< 7590 "second argument to __builtin_convertvector must be a vector type">; 7591def err_convertvector_incompatible_vector : Error< 7592 "first two arguments to __builtin_convertvector must have the same number of elements">; 7593 7594def err_first_argument_to_cwsc_not_call : Error< 7595 "first argument to __builtin_call_with_static_chain must be a non-member call expression">; 7596def err_first_argument_to_cwsc_block_call : Error< 7597 "first argument to __builtin_call_with_static_chain must not be a block call">; 7598def err_first_argument_to_cwsc_builtin_call : Error< 7599 "first argument to __builtin_call_with_static_chain must not be a builtin call">; 7600def err_first_argument_to_cwsc_pdtor_call : Error< 7601 "first argument to __builtin_call_with_static_chain must not be a pseudo-destructor call">; 7602def err_second_argument_to_cwsc_not_pointer : Error< 7603 "second argument to __builtin_call_with_static_chain must be of pointer type">; 7604 7605def err_vector_incorrect_num_initializers : Error< 7606 "%select{too many|too few}0 elements in vector initialization (expected %1 elements, have %2)">; 7607def err_altivec_empty_initializer : Error<"expected initializer">; 7608 7609def err_invalid_neon_type_code : Error< 7610 "incompatible constant for this __builtin_neon function">; 7611def err_argument_invalid_range : Error< 7612 "argument should be a value from %0 to %1">; 7613def warn_neon_vector_initializer_non_portable : Warning< 7614 "vector initializers are not compatible with NEON intrinsics in big endian " 7615 "mode">, InGroup<DiagGroup<"nonportable-vector-initialization">>; 7616def note_neon_vector_initializer_non_portable : Note< 7617 "consider using vld1_%0%1() to initialize a vector from memory, or " 7618 "vcreate_%0%1() to initialize from an integer constant">; 7619def note_neon_vector_initializer_non_portable_q : Note< 7620 "consider using vld1q_%0%1() to initialize a vector from memory, or " 7621 "vcombine_%0%1(vcreate_%0%1(), vcreate_%0%1()) to initialize from integer " 7622 "constants">; 7623def err_systemz_invalid_tabort_code : Error< 7624 "invalid transaction abort code">; 7625def err_64_bit_builtin_32_bit_tgt : Error< 7626 "this builtin is only available on 64-bit targets">; 7627def err_ppc_builtin_only_on_pwr7 : Error< 7628 "this builtin is only valid on POWER7 or later CPUs">; 7629def err_x86_builtin_32_bit_tgt : Error< 7630 "this builtin is only available on x86-64 targets">; 7631 7632def err_builtin_longjmp_unsupported : Error< 7633 "__builtin_longjmp is not supported for the current target">; 7634def err_builtin_setjmp_unsupported : Error< 7635 "__builtin_setjmp is not supported for the current target">; 7636 7637def err_builtin_longjmp_invalid_val : Error< 7638 "argument to __builtin_longjmp must be a constant 1">; 7639def err_builtin_requires_language : Error<"'%0' is only available in %1">; 7640 7641def err_constant_integer_arg_type : Error< 7642 "argument to %0 must be a constant integer">; 7643 7644def ext_mixed_decls_code : Extension< 7645 "ISO C90 forbids mixing declarations and code">, 7646 InGroup<DiagGroup<"declaration-after-statement">>; 7647 7648def err_non_local_variable_decl_in_for : Error< 7649 "declaration of non-local variable in 'for' loop">; 7650def err_non_variable_decl_in_for : Error< 7651 "non-variable declaration in 'for' loop">; 7652def err_toomany_element_decls : Error< 7653 "only one element declaration is allowed">; 7654def err_selector_element_not_lvalue : Error< 7655 "selector element is not a valid lvalue">; 7656def err_selector_element_type : Error< 7657 "selector element type %0 is not a valid object">; 7658def err_selector_element_const_type : Error< 7659 "selector element of type %0 cannot be a constant l-value expression">; 7660def err_collection_expr_type : Error< 7661 "the type %0 is not a pointer to a fast-enumerable object">; 7662def warn_collection_expr_type : Warning< 7663 "collection expression type %0 may not respond to %1">; 7664 7665def err_invalid_conversion_between_ext_vectors : Error< 7666 "invalid conversion between ext-vector type %0 and %1">; 7667 7668def warn_duplicate_attribute_exact : Warning< 7669 "attribute %0 is already applied">, InGroup<IgnoredAttributes>; 7670 7671def warn_duplicate_attribute : Warning< 7672 "attribute %0 is already applied with different parameters">, 7673 InGroup<IgnoredAttributes>; 7674 7675def warn_sync_fetch_and_nand_semantics_change : Warning< 7676 "the semantics of this intrinsic changed with GCC " 7677 "version 4.4 - the newer semantics are provided here">, 7678 InGroup<DiagGroup<"sync-fetch-and-nand-semantics-changed">>; 7679 7680// Type 7681def ext_invalid_sign_spec : Extension<"'%0' cannot be signed or unsigned">; 7682def warn_receiver_forward_class : Warning< 7683 "receiver %0 is a forward class and corresponding @interface may not exist">, 7684 InGroup<ForwardClassReceiver>; 7685def note_method_sent_forward_class : Note<"method %0 is used for the forward class">; 7686def ext_missing_declspec : ExtWarn< 7687 "declaration specifier missing, defaulting to 'int'">; 7688def ext_missing_type_specifier : ExtWarn< 7689 "type specifier missing, defaults to 'int'">, 7690 InGroup<ImplicitInt>; 7691def err_decimal_unsupported : Error< 7692 "GNU decimal type extension not supported">; 7693def err_missing_type_specifier : Error< 7694 "C++ requires a type specifier for all declarations">; 7695def err_objc_array_of_interfaces : Error< 7696 "array of interface %0 is invalid (probably should be an array of pointers)">; 7697def ext_c99_array_usage : Extension< 7698 "%select{qualifier in |static |}0array size %select{||'[*] '}0is a C99 " 7699 "feature">, InGroup<C99>; 7700def err_c99_array_usage_cxx : Error< 7701 "%select{qualifier in |static |}0array size %select{||'[*] '}0is a C99 " 7702 "feature, not permitted in C++">; 7703 def err_type_requires_extension : Error< 7704 "use of type %0 requires %1 extension to be enabled">; 7705def err_type_unsupported : Error< 7706 "%0 is not supported on this target">; 7707def err_nsconsumed_attribute_mismatch : Error< 7708 "overriding method has mismatched ns_consumed attribute on its" 7709 " parameter">; 7710def err_nsreturns_retained_attribute_mismatch : Error< 7711 "overriding method has mismatched ns_returns_%select{not_retained|retained}0" 7712 " attributes">; 7713 7714def note_getter_unavailable : Note< 7715 "or because setter is declared here, but no getter method %0 is found">; 7716def err_invalid_protocol_qualifiers : Error< 7717 "invalid protocol qualifiers on non-ObjC type">; 7718def warn_ivar_use_hidden : Warning< 7719 "local declaration of %0 hides instance variable">, 7720 InGroup<DiagGroup<"shadow-ivar">>; 7721def warn_direct_initialize_call : Warning< 7722 "explicit call to +initialize results in duplicate call to +initialize">, 7723 InGroup<ExplicitInitializeCall>; 7724def warn_direct_super_initialize_call : Warning< 7725 "explicit call to [super initialize] should only be in implementation " 7726 "of +initialize">, 7727 InGroup<ExplicitInitializeCall>; 7728def error_ivar_use_in_class_method : Error< 7729 "instance variable %0 accessed in class method">; 7730def error_implicit_ivar_access : Error< 7731 "instance variable %0 cannot be accessed because 'self' has been redeclared">; 7732def error_private_ivar_access : Error<"instance variable %0 is private">, 7733 AccessControl; 7734def error_protected_ivar_access : Error<"instance variable %0 is protected">, 7735 AccessControl; 7736def warn_maynot_respond : Warning<"%0 may not respond to %1">; 7737def ext_typecheck_base_super : Warning< 7738 "method parameter type " 7739 "%diff{$ does not match super class method parameter type $|" 7740 "does not match super class method parameter type}0,1">, 7741 InGroup<SuperSubClassMismatch>, DefaultIgnore; 7742def warn_missing_method_return_type : Warning< 7743 "method has no return type specified; defaults to 'id'">, 7744 InGroup<MissingMethodReturnType>, DefaultIgnore; 7745def warn_direct_ivar_access : Warning<"instance variable %0 is being " 7746 "directly accessed">, InGroup<DiagGroup<"direct-ivar-access">>, DefaultIgnore; 7747 7748// Spell-checking diagnostics 7749def err_unknown_typename : Error< 7750 "unknown type name %0">; 7751def err_unknown_type_or_class_name_suggest : Error< 7752 "unknown %select{type|class}1 name %0; did you mean %2?">; 7753def err_unknown_typename_suggest : Error< 7754 "unknown type name %0; did you mean %1?">; 7755def err_unknown_nested_typename_suggest : Error< 7756 "no type named %0 in %1; did you mean %select{|simply }2%3?">; 7757def err_no_member_suggest : Error<"no member named %0 in %1; did you mean %select{|simply }2%3?">; 7758def err_undeclared_use_suggest : Error< 7759 "use of undeclared %0; did you mean %1?">; 7760def err_undeclared_var_use_suggest : Error< 7761 "use of undeclared identifier %0; did you mean %1?">; 7762def err_no_template_suggest : Error<"no template named %0; did you mean %1?">; 7763def err_no_member_template_suggest : Error< 7764 "no template named %0 in %1; did you mean %select{|simply }2%3?">; 7765def err_mem_init_not_member_or_class_suggest : Error< 7766 "initializer %0 does not name a non-static data member or base " 7767 "class; did you mean the %select{base class|member}1 %2?">; 7768def err_field_designator_unknown_suggest : Error< 7769 "field designator %0 does not refer to any field in type %1; did you mean " 7770 "%2?">; 7771def err_typecheck_member_reference_ivar_suggest : Error< 7772 "%0 does not have a member named %1; did you mean %2?">; 7773def err_property_not_found_suggest : Error< 7774 "property %0 not found on object of type %1; did you mean %2?">; 7775def err_class_property_found : Error< 7776 "property %0 is a class property; did you mean to access it with class '%1'?">; 7777def err_ivar_access_using_property_syntax_suggest : Error< 7778 "property %0 not found on object of type %1; did you mean to access instance variable %2?">; 7779def warn_property_access_suggest : Warning< 7780"property %0 not found on object of type %1; did you mean to access property %2?">, 7781InGroup<PropertyAccessDotSyntax>; 7782def err_property_found_suggest : Error< 7783 "property %0 found on object of type %1; did you mean to access " 7784 "it with the \".\" operator?">; 7785def err_undef_interface_suggest : Error< 7786 "cannot find interface declaration for %0; did you mean %1?">; 7787def warn_undef_interface_suggest : Warning< 7788 "cannot find interface declaration for %0; did you mean %1?">; 7789def err_undef_superclass_suggest : Error< 7790 "cannot find interface declaration for %0, superclass of %1; did you mean " 7791 "%2?">; 7792def err_undeclared_protocol_suggest : Error< 7793 "cannot find protocol declaration for %0; did you mean %1?">; 7794def note_base_class_specified_here : Note< 7795 "base class %0 specified here">; 7796def err_using_directive_suggest : Error< 7797 "no namespace named %0; did you mean %1?">; 7798def err_using_directive_member_suggest : Error< 7799 "no namespace named %0 in %1; did you mean %select{|simply }2%3?">; 7800def note_namespace_defined_here : Note<"namespace %0 defined here">; 7801def err_sizeof_pack_no_pack_name_suggest : Error< 7802 "%0 does not refer to the name of a parameter pack; did you mean %1?">; 7803def note_parameter_pack_here : Note<"parameter pack %0 declared here">; 7804 7805def err_uncasted_use_of_unknown_any : Error< 7806 "%0 has unknown type; cast it to its declared type to use it">; 7807def err_uncasted_call_of_unknown_any : Error< 7808 "%0 has unknown return type; cast the call to its declared return type">; 7809def err_uncasted_send_to_unknown_any_method : Error< 7810 "no known method %select{%objcinstance1|%objcclass1}0; cast the " 7811 "message send to the method's return type">; 7812def err_unsupported_unknown_any_decl : Error< 7813 "%0 has unknown type, which is not supported for this kind of declaration">; 7814def err_unsupported_unknown_any_expr : Error< 7815 "unsupported expression with unknown type">; 7816def err_unsupported_unknown_any_call : Error< 7817 "call to unsupported expression with unknown type">; 7818def err_unknown_any_addrof : Error< 7819 "the address of a declaration with unknown type " 7820 "can only be cast to a pointer type">; 7821def err_unknown_any_var_function_type : Error< 7822 "variable %0 with unknown type cannot be given a function type">; 7823def err_unknown_any_function : Error< 7824 "function %0 with unknown type must be given a function type">; 7825 7826def err_filter_expression_integral : Error< 7827 "filter expression type should be an integral value not %0">; 7828 7829def err_non_asm_stmt_in_naked_function : Error< 7830 "non-ASM statement in naked function is not supported">; 7831def err_asm_naked_this_ref : Error< 7832 "'this' pointer references not allowed in naked functions">; 7833def err_asm_naked_parm_ref : Error< 7834 "parameter references not allowed in naked functions">; 7835 7836// OpenCL warnings and errors. 7837def err_invalid_astype_of_different_size : Error< 7838 "invalid reinterpretation: sizes of %0 and %1 must match">; 7839def err_static_kernel : Error< 7840 "kernel functions cannot be declared static">; 7841def err_opencl_ptrptr_kernel_param : Error< 7842 "kernel parameter cannot be declared as a pointer to a pointer">; 7843def err_opencl_private_ptr_kernel_param : Error< 7844 "kernel parameter cannot be declared as a pointer to the __private address space">; 7845def err_opencl_function_variable : Error< 7846 "%select{non-kernel function|function scope}0 variable cannot be declared in %1 address space">; 7847def err_static_function_scope : Error< 7848 "variables in function scope cannot be declared static">; 7849def err_opencl_bitfields : Error< 7850 "bitfields are not supported in OpenCL">; 7851def err_opencl_vla : Error< 7852 "variable length arrays are not supported in OpenCL">; 7853def err_bad_kernel_param_type : Error< 7854 "%0 cannot be used as the type of a kernel parameter">; 7855def err_record_with_pointers_kernel_param : Error< 7856 "%select{struct|union}0 kernel parameters may not contain pointers">; 7857def note_within_field_of_type : Note< 7858 "within field of type %0 declared here">; 7859def note_illegal_field_declared_here : Note< 7860 "field of illegal %select{type|pointer type}0 %1 declared here">; 7861def err_event_t_global_var : Error< 7862 "the event_t type cannot be used to declare a program scope variable">; 7863def err_opencl_type_struct_or_union_field : Error< 7864 "the %0 type cannot be used to declare a structure or union field">; 7865def err_event_t_addr_space_qual : Error< 7866 "the event_t type can only be used with __private address space qualifier">; 7867def err_expected_kernel_void_return_type : Error< 7868 "kernel must have void return type">; 7869def err_sampler_argument_required : Error< 7870 "sampler_t variable required - got %0">; 7871def err_wrong_sampler_addressspace: Error< 7872 "sampler type cannot be used with the __local and __global address space qualifiers">; 7873def error_opencl_cast_non_zero_to_event_t : Error< 7874 "cannot cast non-zero value '%0' to 'event_t'">; 7875def err_opencl_global_invalid_addr_space : Error< 7876 "%select{program scope|static local|extern}0 variable must reside in %1 address space">; 7877def err_missing_actual_pipe_type : Error< 7878 "missing actual type specifier for pipe">; 7879def err_reference_pipe_type : Error < 7880 "pipes packet types cannot be of reference type">; 7881def err_opencl_no_main : Error<"%select{function|kernel}0 cannot be called 'main'">; 7882def err_opencl_kernel_attr : 7883 Error<"attribute %0 can only be applied to a kernel function">; 7884def err_opencl_return_value_with_address_space : Error< 7885 "return value cannot be qualified with address space">; 7886def err_opencl_constant_no_init : Error< 7887 "variable in constant address space must be initialized">; 7888def err_atomic_init_constant : Error< 7889 "atomic variable can only be assigned to a compile time constant" 7890 " in the declaration statement in the program scope">; 7891def err_opencl_implicit_vector_conversion : Error< 7892 "implicit conversions between vector types (%0 and %1) are not permitted">; 7893def err_opencl_block_proto_variadic : Error< 7894 "invalid block prototype, variadic arguments are not allowed in OpenCL">; 7895def err_opencl_invalid_type_array : Error< 7896 "array of %0 type is invalid in OpenCL">; 7897def err_opencl_ternary_with_block : Error< 7898 "block type cannot be used as expression in ternary expression in OpenCL">; 7899def err_opencl_pointer_to_type : Error< 7900 "pointer to type %0 is invalid in OpenCL">; 7901def err_opencl_type_can_only_be_used_as_function_parameter : Error < 7902 "type %0 can only be used as a function parameter in OpenCL">; 7903def warn_opencl_attr_deprecated_ignored : Warning < 7904 "%0 attribute is deprecated and ignored in OpenCL version %1">, 7905 InGroup<IgnoredAttributes>; 7906 7907// OpenCL v2.0 s6.13.6 -- Builtin Pipe Functions 7908def err_opencl_builtin_pipe_first_arg : Error< 7909 "first argument to %0 must be a pipe type">; 7910def err_opencl_builtin_pipe_arg_num : Error< 7911 "invalid number of arguments to function: %0">; 7912def err_opencl_builtin_pipe_invalid_arg : Error< 7913 "invalid argument type to function %0 (expecting %1 having %2)">; 7914def err_opencl_builtin_pipe_invalid_access_modifier : Error< 7915 "invalid pipe access modifier (expecting %0)">; 7916 7917// OpenCL access qualifier 7918def err_opencl_invalid_access_qualifier : Error< 7919 "access qualifier can only be used for pipe and image type">; 7920def err_opencl_invalid_read_write : Error< 7921 "access qualifier %0 can not be used for %1 %select{|prior to OpenCL version 2.0}2">; 7922def err_opencl_multiple_access_qualifiers : Error< 7923 "multiple access qualifiers">; 7924def note_opencl_typedef_access_qualifier : Note< 7925 "previously declared '%0' here">; 7926 7927// OpenCL Section 6.8.g 7928def err_opencl_unknown_type_specifier : Error< 7929 "OpenCL version %0 does not support the '%1' %select{type qualifier|storage class specifier}2">; 7930 7931// OpenCL v2.0 s6.12.5 Blocks restrictions 7932def err_opencl_block_storage_type : Error< 7933 "the __block storage type is not permitted">; 7934def err_opencl_invalid_block_declaration : Error< 7935 "invalid block variable declaration - must be %select{const qualified|initialized}0">; 7936def err_opencl_extern_block_declaration : Error< 7937 "invalid block variable declaration - using 'extern' storage class is disallowed">; 7938 7939// OpenCL v2.0 s6.13.9 - Address space qualifier functions. 7940def err_opencl_builtin_to_addr_arg_num : Error< 7941 "invalid number of arguments to function: %0">; 7942def err_opencl_builtin_to_addr_invalid_arg : Error< 7943 "invalid argument %0 to function: %1, expecting a generic pointer argument">; 7944 7945// OpenCL v2.0 s6.13.17 Enqueue kernel restrictions. 7946def err_opencl_enqueue_kernel_incorrect_args : Error< 7947 "illegal call to enqueue_kernel, incorrect argument types">; 7948def err_opencl_enqueue_kernel_expected_type : Error< 7949 "illegal call to enqueue_kernel, expected %0 argument type">; 7950def err_opencl_enqueue_kernel_local_size_args : Error< 7951 "mismatch in number of block parameters and local size arguments passed">; 7952def err_opencl_enqueue_kernel_invalid_local_size_type : Error< 7953 "local memory sizes need to be specified as uint">; 7954def err_opencl_enqueue_kernel_blocks_non_local_void_args : Error< 7955 "blocks used in device side enqueue are expected to have parameters of type 'local void*'">; 7956def err_opencl_enqueue_kernel_blocks_no_args : Error< 7957 "blocks in this form of device side enqueue call are expected to have have no parameters">; 7958 7959// OpenCL v2.2 s2.1.2.3 - Vector Component Access 7960def ext_opencl_ext_vector_type_rgba_selector: ExtWarn< 7961 "vector component name '%0' is an OpenCL version 2.2 feature">, 7962 InGroup<OpenCLUnsupportedRGBA>; 7963} // end of sema category 7964 7965let CategoryName = "OpenMP Issue" in { 7966// OpenMP support. 7967def err_omp_expected_var_arg : Error< 7968 "%0 is not a global variable, static local variable or static data member">; 7969def err_omp_expected_var_arg_suggest : Error< 7970 "%0 is not a global variable, static local variable or static data member; " 7971 "did you mean %1">; 7972def err_omp_global_var_arg : Error< 7973 "arguments of '#pragma omp %0' must have %select{global storage|static storage duration}1">; 7974def err_omp_ref_type_arg : Error< 7975 "arguments of '#pragma omp %0' cannot be of reference type %1">; 7976def err_omp_region_not_file_context : Error< 7977 "directive must be at file or namespace scope">; 7978def err_omp_var_scope : Error< 7979 "'#pragma omp %0' must appear in the scope of the %q1 variable declaration">; 7980def err_omp_var_used : Error< 7981 "'#pragma omp %0' must precede all references to variable %q1">; 7982def err_omp_var_thread_local : Error< 7983 "variable %0 cannot be threadprivate because it is %select{thread-local|a global named register variable}1">; 7984def err_omp_private_incomplete_type : Error< 7985 "a private variable with incomplete type %0">; 7986def err_omp_firstprivate_incomplete_type : Error< 7987 "a firstprivate variable with incomplete type %0">; 7988def err_omp_lastprivate_incomplete_type : Error< 7989 "a lastprivate variable with incomplete type %0">; 7990def err_omp_reduction_incomplete_type : Error< 7991 "a reduction list item with incomplete type %0">; 7992def err_omp_unexpected_clause_value : Error< 7993 "expected %0 in OpenMP clause '%1'">; 7994def err_omp_expected_var_name_member_expr : Error< 7995 "expected variable name%select{| or data member of current class}0">; 7996def err_omp_expected_var_name_member_expr_or_array_item : Error< 7997 "expected variable name%select{|, data member of current class}0, array element or array section">; 7998def err_omp_expected_named_var_member_or_array_expression: Error< 7999 "expected expression containing only member accesses and/or array sections based on named variables">; 8000def err_omp_bit_fields_forbidden_in_clause : Error< 8001 "bit fields cannot be used to specify storage in a '%0' clause">; 8002def err_array_section_does_not_specify_contiguous_storage : Error< 8003 "array section does not specify contiguous storage">; 8004def err_omp_union_type_not_allowed : Error< 8005 "mapped storage cannot be derived from a union">; 8006def err_omp_expected_access_to_data_field : Error< 8007 "expected access to data field">; 8008def err_omp_multiple_array_items_in_map_clause : Error< 8009 "multiple array elements associated with the same variable are not allowed in map clauses of the same construct">; 8010def err_omp_pointer_mapped_along_with_derived_section : Error< 8011 "pointer cannot be mapped along with a section derived from itself">; 8012def err_omp_original_storage_is_shared_and_does_not_contain : Error< 8013 "original storage of expression in data environment is shared but data environment do not fully contain mapped expression storage">; 8014def err_omp_same_pointer_derreferenced : Error< 8015 "same pointer derreferenced in multiple different ways in map clause expressions">; 8016def note_omp_task_predetermined_firstprivate_here : Note< 8017 "predetermined as a firstprivate in a task construct here">; 8018def err_omp_threadprivate_incomplete_type : Error< 8019 "threadprivate variable with incomplete type %0">; 8020def err_omp_no_dsa_for_variable : Error< 8021 "variable %0 must have explicitly specified data sharing attributes">; 8022def err_omp_wrong_dsa : Error< 8023 "%0 variable cannot be %1">; 8024def err_omp_variably_modified_type_not_supported : Error< 8025 "arguments of OpenMP clause '%0' in '#pragma omp %2' directive cannot be of variably-modified type %1">; 8026def note_omp_explicit_dsa : Note< 8027 "defined as %0">; 8028def note_omp_predetermined_dsa : Note< 8029 "%select{static data member is predetermined as shared|" 8030 "variable with static storage duration is predetermined as shared|" 8031 "loop iteration variable is predetermined as private|" 8032 "loop iteration variable is predetermined as linear|" 8033 "loop iteration variable is predetermined as lastprivate|" 8034 "constant variable is predetermined as shared|" 8035 "global variable is predetermined as shared|" 8036 "non-shared variable in a task construct is predetermined as firstprivate|" 8037 "variable with automatic storage duration is predetermined as private}0" 8038 "%select{|; perhaps you forget to enclose 'omp %2' directive into a parallel or another task region?}1">; 8039def note_omp_implicit_dsa : Note< 8040 "implicitly determined as %0">; 8041def err_omp_loop_var_dsa : Error< 8042 "loop iteration variable in the associated loop of 'omp %1' directive may not be %0, predetermined as %2">; 8043def err_omp_not_for : Error< 8044 "%select{statement after '#pragma omp %1' must be a for loop|" 8045 "expected %2 for loops after '#pragma omp %1'%select{|, but found only %4}3}0">; 8046def note_omp_collapse_ordered_expr : Note< 8047 "as specified in %select{'collapse'|'ordered'|'collapse' and 'ordered'}0 clause%select{||s}0">; 8048def err_omp_negative_expression_in_clause : Error< 8049 "argument to '%0' clause must be a %select{non-negative|strictly positive}1 integer value">; 8050def err_omp_not_integral : Error< 8051 "expression must have integral or unscoped enumeration " 8052 "type, not %0">; 8053def err_omp_threadprivate_in_target : Error< 8054 "threadprivate variables cannot be used in target constructs">; 8055def err_omp_incomplete_type : Error< 8056 "expression has incomplete class type %0">; 8057def err_omp_explicit_conversion : Error< 8058 "expression requires explicit conversion from %0 to %1">; 8059def note_omp_conversion_here : Note< 8060 "conversion to %select{integral|enumeration}0 type %1 declared here">; 8061def err_omp_ambiguous_conversion : Error< 8062 "ambiguous conversion from type %0 to an integral or unscoped " 8063 "enumeration type">; 8064def err_omp_required_access : Error< 8065 "%0 variable must be %1">; 8066def err_omp_const_variable : Error< 8067 "const-qualified variable cannot be %0">; 8068def err_omp_const_reduction_list_item : Error< 8069 "const-qualified list item cannot be reduction">; 8070def err_omp_linear_incomplete_type : Error< 8071 "a linear variable with incomplete type %0">; 8072def err_omp_linear_expected_int_or_ptr : Error< 8073 "argument of a linear clause should be of integral or pointer " 8074 "type, not %0">; 8075def warn_omp_linear_step_zero : Warning< 8076 "zero linear step (%0 %select{|and other variables in clause }1should probably be const)">, 8077 InGroup<OpenMPClauses>; 8078def warn_omp_alignment_not_power_of_two : Warning< 8079 "aligned clause will be ignored because the requested alignment is not a power of 2">, 8080 InGroup<OpenMPClauses>; 8081def err_omp_enclosed_declare_target : Error< 8082 "declare target region may not be enclosed within another declare target region">; 8083def err_omp_invalid_target_decl : Error< 8084 "%0 used in declare target directive is not a variable or a function name">; 8085def err_omp_declare_target_multiple : Error< 8086 "%0 appears multiple times in clauses on the same declare target directive">; 8087def err_omp_declare_target_to_and_link : Error< 8088 "%0 must not appear in both clauses 'to' and 'link'">; 8089def warn_omp_not_in_target_context : Warning< 8090 "declaration is not declared in any declare target region">, 8091 InGroup<OpenMPTarget>; 8092def err_omp_aligned_expected_array_or_ptr : Error< 8093 "argument of aligned clause should be array" 8094 "%select{ or pointer|, pointer, reference to array or reference to pointer}1" 8095 ", not %0">; 8096def err_omp_aligned_twice : Error< 8097 "%select{a variable|a parameter|'this'}0 cannot appear in more than one aligned clause">; 8098def err_omp_local_var_in_threadprivate_init : Error< 8099 "variable with local storage in initial value of threadprivate variable">; 8100def err_omp_loop_not_canonical_init : Error< 8101 "initialization clause of OpenMP for loop is not in canonical form " 8102 "('var = init' or 'T var = init')">; 8103def ext_omp_loop_not_canonical_init : ExtWarn< 8104 "initialization clause of OpenMP for loop is not in canonical form " 8105 "('var = init' or 'T var = init')">, InGroup<OpenMPLoopForm>; 8106def err_omp_loop_not_canonical_cond : Error< 8107 "condition of OpenMP for loop must be a relational comparison " 8108 "('<', '<=', '>', or '>=') of loop variable %0">; 8109def err_omp_loop_not_canonical_incr : Error< 8110 "increment clause of OpenMP for loop must perform simple addition " 8111 "or subtraction on loop variable %0">; 8112def err_omp_loop_variable_type : Error< 8113 "variable must be of integer or %select{pointer|random access iterator}0 type">; 8114def err_omp_loop_incr_not_compatible : Error< 8115 "increment expression must cause %0 to %select{decrease|increase}1 " 8116 "on each iteration of OpenMP for loop">; 8117def note_omp_loop_cond_requres_compatible_incr : Note< 8118 "loop step is expected to be %select{negative|positive}0 due to this condition">; 8119def err_omp_loop_diff_cxx : Error< 8120 "could not calculate number of iterations calling 'operator-' with " 8121 "upper and lower loop bounds">; 8122def err_omp_loop_cannot_use_stmt : Error< 8123 "'%0' statement cannot be used in OpenMP for loop">; 8124def err_omp_simd_region_cannot_use_stmt : Error< 8125 "'%0' statement cannot be used in OpenMP simd region">; 8126def warn_omp_loop_64_bit_var : Warning< 8127 "OpenMP loop iteration variable cannot have more than 64 bits size and will be narrowed">, 8128 InGroup<OpenMPLoopForm>; 8129def err_omp_unknown_reduction_identifier : Error< 8130 "incorrect reduction identifier, expected one of '+', '-', '*', '&', '|', '^', " 8131 "'&&', '||', 'min' or 'max' or declare reduction for type %0">; 8132def err_omp_not_resolved_reduction_identifier : Error< 8133 "unable to resolve declare reduction construct for type %0">; 8134def err_omp_reduction_ref_type_arg : Error< 8135 "argument of OpenMP clause 'reduction' must reference the same object in all threads">; 8136def err_omp_clause_not_arithmetic_type_arg : Error< 8137 "arguments of OpenMP clause 'reduction' for 'min' or 'max' must be of %select{scalar|arithmetic}0 type">; 8138def err_omp_clause_floating_type_arg : Error< 8139 "arguments of OpenMP clause 'reduction' with bitwise operators cannot be of floating type">; 8140def err_omp_once_referenced : Error< 8141 "variable can appear only once in OpenMP '%0' clause">; 8142def err_omp_once_referenced_in_target_update : Error< 8143 "variable can appear only once in OpenMP 'target update' construct">; 8144def note_omp_referenced : Note< 8145 "previously referenced here">; 8146def err_omp_reduction_in_task : Error< 8147 "reduction variables may not be accessed in an explicit task">; 8148def err_omp_reduction_id_not_compatible : Error< 8149 "list item of type %0 is not valid for specified reduction operation: unable to provide default initialization value">; 8150def err_omp_prohibited_region : Error< 8151 "region cannot be%select{| closely}0 nested inside '%1' region" 8152 "%select{|; perhaps you forget to enclose 'omp %3' directive into a parallel region?|" 8153 "; perhaps you forget to enclose 'omp %3' directive into a for or a parallel for region with 'ordered' clause?|" 8154 "; perhaps you forget to enclose 'omp %3' directive into a target region?|" 8155 "; perhaps you forget to enclose 'omp %3' directive into a teams region?}2">; 8156def err_omp_prohibited_region_simd : Error< 8157 "OpenMP constructs may not be nested inside a simd region">; 8158def err_omp_prohibited_region_atomic : Error< 8159 "OpenMP constructs may not be nested inside an atomic region">; 8160def err_omp_prohibited_region_critical_same_name : Error< 8161 "cannot nest 'critical' regions having the same name %0">; 8162def note_omp_previous_critical_region : Note< 8163 "previous 'critical' region starts here">; 8164def err_omp_sections_not_compound_stmt : Error< 8165 "the statement for '#pragma omp sections' must be a compound statement">; 8166def err_omp_parallel_sections_not_compound_stmt : Error< 8167 "the statement for '#pragma omp parallel sections' must be a compound statement">; 8168def err_omp_orphaned_section_directive : Error< 8169 "%select{orphaned 'omp section' directives are prohibited, it|'omp section' directive}0" 8170 " must be closely nested to a sections region%select{|, not a %1 region}0">; 8171def err_omp_sections_substmt_not_section : Error< 8172 "statement in 'omp sections' directive must be enclosed into a section region">; 8173def err_omp_parallel_sections_substmt_not_section : Error< 8174 "statement in 'omp parallel sections' directive must be enclosed into a section region">; 8175def err_omp_parallel_reduction_in_task_firstprivate : Error< 8176 "argument of a reduction clause of a %0 construct must not appear in a firstprivate clause on a task construct">; 8177def err_omp_atomic_read_not_expression_statement : Error< 8178 "the statement for 'atomic read' must be an expression statement of form 'v = x;'," 8179 " where v and x are both lvalue expressions with scalar type">; 8180def note_omp_atomic_read_write: Note< 8181 "%select{expected an expression statement|expected built-in assignment operator|expected expression of scalar type|expected lvalue expression}0">; 8182def err_omp_atomic_write_not_expression_statement : Error< 8183 "the statement for 'atomic write' must be an expression statement of form 'x = expr;'," 8184 " where x is a lvalue expression with scalar type">; 8185def err_omp_atomic_update_not_expression_statement : Error< 8186 "the statement for 'atomic update' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x'," 8187 " where x is an l-value expression with scalar type">; 8188def err_omp_atomic_not_expression_statement : Error< 8189 "the statement for 'atomic' must be an expression statement of form '++x;', '--x;', 'x++;', 'x--;', 'x binop= expr;', 'x = x binop expr' or 'x = expr binop x'," 8190 " where x is an l-value expression with scalar type">; 8191def note_omp_atomic_update: Note< 8192 "%select{expected an expression statement|expected built-in binary or unary operator|expected unary decrement/increment operation|" 8193 "expected expression of scalar type|expected assignment expression|expected built-in binary operator|" 8194 "expected one of '+', '*', '-', '/', '&', '^', '%|', '<<', or '>>' built-in operations|expected in right hand side of expression}0">; 8195def err_omp_atomic_capture_not_expression_statement : Error< 8196 "the statement for 'atomic capture' must be an expression statement of form 'v = ++x;', 'v = --x;', 'v = x++;', 'v = x--;', 'v = x binop= expr;', 'v = x = x binop expr' or 'v = x = expr binop x'," 8197 " where x and v are both l-value expressions with scalar type">; 8198def err_omp_atomic_capture_not_compound_statement : Error< 8199 "the statement for 'atomic capture' must be a compound statement of form '{v = x; x binop= expr;}', '{x binop= expr; v = x;}'," 8200 " '{v = x; x = x binop expr;}', '{v = x; x = expr binop x;}', '{x = x binop expr; v = x;}', '{x = expr binop x; v = x;}' or '{v = x; x = expr;}'," 8201 " '{v = x; x++;}', '{v = x; ++x;}', '{++x; v = x;}', '{x++; v = x;}', '{v = x; x--;}', '{v = x; --x;}', '{--x; v = x;}', '{x--; v = x;}'" 8202 " where x is an l-value expression with scalar type">; 8203def note_omp_atomic_capture: Note< 8204 "%select{expected assignment expression|expected compound statement|expected exactly two expression statements|expected in right hand side of the first expression}0">; 8205def err_omp_atomic_several_clauses : Error< 8206 "directive '#pragma omp atomic' cannot contain more than one 'read', 'write', 'update' or 'capture' clause">; 8207def note_omp_atomic_previous_clause : Note< 8208 "'%0' clause used here">; 8209def err_omp_target_contains_not_only_teams : Error< 8210 "target construct with nested teams region contains statements outside of the teams construct">; 8211def note_omp_nested_teams_construct_here : Note< 8212 "nested teams construct here">; 8213def note_omp_nested_statement_here : Note< 8214 "%select{statement|directive}0 outside teams construct here">; 8215def err_omp_single_copyprivate_with_nowait : Error< 8216 "the 'copyprivate' clause must not be used with the 'nowait' clause">; 8217def note_omp_nowait_clause_here : Note< 8218 "'nowait' clause is here">; 8219def err_omp_single_decl_in_declare_simd : Error< 8220 "single declaration is expected after 'declare simd' directive">; 8221def err_omp_function_expected : Error< 8222 "'#pragma omp declare simd' can only be applied to functions">; 8223def err_omp_wrong_cancel_region : Error< 8224 "one of 'for', 'parallel', 'sections' or 'taskgroup' is expected">; 8225def err_omp_parent_cancel_region_nowait : Error< 8226 "parent region for 'omp %select{cancellation point/cancel}0' construct cannot be nowait">; 8227def err_omp_parent_cancel_region_ordered : Error< 8228 "parent region for 'omp %select{cancellation point/cancel}0' construct cannot be ordered">; 8229def err_omp_reduction_wrong_type : Error<"reduction type cannot be %select{qualified with 'const', 'volatile' or 'restrict'|a function|a reference|an array}0 type">; 8230def err_omp_wrong_var_in_declare_reduction : Error<"only %select{'omp_priv' or 'omp_orig'|'omp_in' or 'omp_out'}0 variables are allowed in %select{initializer|combiner}0 expression">; 8231def err_omp_declare_reduction_redefinition : Error<"redefinition of user-defined reduction for type %0">; 8232def err_omp_array_section_use : Error<"OpenMP array section is not allowed here">; 8233def err_omp_typecheck_section_value : Error< 8234 "subscripted value is not an array or pointer">; 8235def err_omp_typecheck_section_not_integer : Error< 8236 "array section %select{lower bound|length}0 is not an integer">; 8237def err_omp_section_function_type : Error< 8238 "section of pointer to function type %0">; 8239def warn_omp_section_is_char : Warning<"array section %select{lower bound|length}0 is of type 'char'">, 8240 InGroup<CharSubscript>, DefaultIgnore; 8241def err_omp_section_incomplete_type : Error< 8242 "section of pointer to incomplete type %0">; 8243def err_omp_section_negative : Error< 8244 "section %select{lower bound|length}0 is evaluated to a negative value %1">; 8245def err_omp_section_length_undefined : Error< 8246 "section length is unspecified and cannot be inferred because subscripted value is %select{not an array|an array of unknown bound}0">; 8247def err_omp_wrong_linear_modifier : Error< 8248 "expected %select{'val' modifier|one of 'ref', val' or 'uval' modifiers}0">; 8249def err_omp_wrong_linear_modifier_non_reference : Error< 8250 "variable of non-reference type %0 can be used only with 'val' modifier, but used with '%1'">; 8251def err_omp_wrong_simdlen_safelen_values : Error< 8252 "the value of 'simdlen' parameter must be less than or equal to the value of the 'safelen' parameter">; 8253def err_omp_wrong_if_directive_name_modifier : Error< 8254 "directive name modifier '%0' is not allowed for '#pragma omp %1'">; 8255def err_omp_no_more_if_clause : Error< 8256 "no more 'if' clause is allowed">; 8257def err_omp_unnamed_if_clause : Error< 8258 "expected %select{|one of}0 %1 directive name modifier%select{|s}0">; 8259def note_omp_previous_named_if_clause : Note< 8260 "previous clause with directive name modifier specified here">; 8261def err_omp_ordered_directive_with_param : Error< 8262 "'ordered' directive %select{without any clauses|with 'threads' clause}0 cannot be closely nested inside ordered region with specified parameter">; 8263def err_omp_ordered_directive_without_param : Error< 8264 "'ordered' directive with 'depend' clause cannot be closely nested inside ordered region without specified parameter">; 8265def note_omp_ordered_param : Note< 8266 "'ordered' clause with specified parameter">; 8267def err_omp_expected_base_var_name : Error< 8268 "expected variable name as a base of the array %select{subscript|section}0">; 8269def err_omp_map_shared_storage : Error< 8270 "variable already marked as mapped in current construct">; 8271def err_omp_not_mappable_type : Error< 8272 "type %0 is not mappable to target">; 8273def err_omp_invalid_map_type_for_directive : Error< 8274 "%select{map type '%1' is not allowed|map type must be specified}0 for '#pragma omp %2'">; 8275def err_omp_no_map_for_directive : Error< 8276 "expected at least one map clause for '#pragma omp %0'">; 8277def note_omp_polymorphic_in_target : Note< 8278 "mappable type cannot be polymorphic">; 8279def note_omp_static_member_in_target : Note< 8280 "mappable type cannot contain static members">; 8281def err_omp_threadprivate_in_clause : Error< 8282 "threadprivate variables are not allowed in '%0' clause">; 8283def err_omp_wrong_ordered_loop_count : Error< 8284 "the parameter of the 'ordered' clause must be greater than or equal to the parameter of the 'collapse' clause">; 8285def note_collapse_loop_count : Note< 8286 "parameter of the 'collapse' clause">; 8287def err_omp_grainsize_num_tasks_mutually_exclusive : Error< 8288 "'%0' and '%1' clause are mutually exclusive and may not appear on the same directive">; 8289def note_omp_previous_grainsize_num_tasks : Note< 8290 "'%0' clause is specified here">; 8291def err_omp_hint_clause_no_name : Error< 8292 "the name of the construct must be specified in presence of 'hint' clause">; 8293def err_omp_critical_with_hint : Error< 8294 "constructs with the same name must have a 'hint' clause with the same value">; 8295def note_omp_critical_hint_here : Note< 8296 "%select{|previous }0'hint' clause with value '%1'">; 8297def note_omp_critical_no_hint : Note< 8298 "%select{|previous }0directive with no 'hint' clause specified">; 8299def err_omp_firstprivate_distribute_private_teams : Error< 8300 "private variable in '#pragma omp teams' cannot be firstprivate in '#pragma omp distribute'">; 8301def err_omp_firstprivate_and_lastprivate_in_distribute : Error< 8302 "lastprivate variable cannot be firstprivate in '#pragma omp distribute'">; 8303def err_omp_firstprivate_distribute_in_teams_reduction : Error< 8304 "reduction variable in '#pragma omp teams' cannot be firstprivate in '#pragma omp distribute'">; 8305def err_omp_depend_clause_thread_simd : Error< 8306 "'depend' clauses cannot be mixed with '%0' clause">; 8307def err_omp_depend_sink_expected_loop_iteration : Error< 8308 "expected %0 loop iteration variable">; 8309def err_omp_depend_sink_unexpected_expr : Error< 8310 "unexpected expression: number of expressions is larger than the number of associated loops">; 8311def err_omp_depend_sink_expected_plus_minus : Error< 8312 "expected '+' or '-' operation">; 8313def err_omp_depend_sink_source_not_allowed : Error< 8314 "'depend(%select{source|sink:vec}0)' clause%select{|s}0 cannot be mixed with 'depend(%select{sink:vec|source}0)' clause%select{s|}0">; 8315def err_omp_linear_ordered : Error< 8316 "'linear' clause cannot be specified along with 'ordered' clause with a parameter">; 8317def err_omp_unexpected_schedule_modifier : Error< 8318 "modifier '%0' cannot be used along with modifier '%1'">; 8319def err_omp_schedule_nonmonotonic_static : Error< 8320 "'nonmonotonic' modifier can only be specified with 'dynamic' or 'guided' schedule kind">; 8321def err_omp_schedule_nonmonotonic_ordered : Error< 8322 "'schedule' clause with 'nonmonotonic' modifier cannot be specified if an 'ordered' clause is specified">; 8323def err_omp_ordered_simd : Error< 8324 "'ordered' clause with a parameter can not be specified in '#pragma omp %0' directive">; 8325def err_omp_variable_in_map_and_dsa : Error< 8326 "%0 variable cannot be in a map clause in '#pragma omp %1' directive">; 8327def err_omp_param_or_this_in_clause : Error< 8328 "expected reference to one of the parameters of function %0%select{| or 'this'}1">; 8329def err_omp_expected_uniform_param : Error< 8330 "expected a reference to a parameter specified in a 'uniform' clause">; 8331def err_omp_expected_int_param : Error< 8332 "expected a reference to an integer-typed parameter">; 8333def err_omp_at_least_one_motion_clause_required : Error< 8334 "expected at least one 'to' clause or 'from' clause specified to '#pragma omp target update'">; 8335def err_omp_usedeviceptr_not_a_pointer : Error< 8336 "expected pointer or reference to pointer in 'use_device_ptr' clause">; 8337def err_omp_argument_type_isdeviceptr : Error < 8338 "expected pointer, array, reference to pointer, or reference to array in 'is_device_ptr clause'">; 8339def warn_omp_nesting_simd : Warning< 8340 "OpenMP only allows an ordered construct with the simd clause nested in a simd construct">, 8341 InGroup<SourceUsesOpenMP>; 8342} // end of OpenMP category 8343 8344let CategoryName = "Related Result Type Issue" in { 8345// Objective-C related result type compatibility 8346def warn_related_result_type_compatibility_class : Warning< 8347 "method is expected to return an instance of its class type " 8348 "%diff{$, but is declared to return $|" 8349 ", but is declared to return different type}0,1">; 8350def warn_related_result_type_compatibility_protocol : Warning< 8351 "protocol method is expected to return an instance of the implementing " 8352 "class, but is declared to return %0">; 8353def note_related_result_type_family : Note< 8354 "%select{overridden|current}0 method is part of the '%select{|alloc|copy|init|" 8355 "mutableCopy|new|autorelease|dealloc|finalize|release|retain|retainCount|" 8356 "self}1' method family%select{| and is expected to return an instance of its " 8357 "class type}0">; 8358def note_related_result_type_overridden : Note< 8359 "overridden method returns an instance of its class type">; 8360def note_related_result_type_inferred : Note< 8361 "%select{class|instance}0 method %1 is assumed to return an instance of " 8362 "its receiver type (%2)">; 8363def note_related_result_type_explicit : Note< 8364 "%select{overridden|current}0 method is explicitly declared 'instancetype'" 8365 "%select{| and is expected to return an instance of its class type}0">; 8366 8367} 8368 8369let CategoryName = "Modules Issue" in { 8370def err_module_private_specialization : Error< 8371 "%select{template|partial|member}0 specialization cannot be " 8372 "declared __module_private__">; 8373def err_module_private_local : Error< 8374 "%select{local variable|parameter|typedef}0 %1 cannot be declared " 8375 "__module_private__">; 8376def err_module_private_local_class : Error< 8377 "local %select{struct|interface|union|class|enum}0 cannot be declared " 8378 "__module_private__">; 8379def err_module_unimported_use : Error< 8380 "%select{declaration|definition|default argument|" 8381 "explicit specialization|partial specialization}0 of %1 must be imported " 8382 "from module '%2' before it is required">; 8383def err_module_unimported_use_header : Error< 8384 "missing '#include %3'; " 8385 "%select{declaration|definition|default argument|" 8386 "explicit specialization|partial specialization}0 of %1 must be imported " 8387 "from module '%2' before it is required">; 8388def err_module_unimported_use_multiple : Error< 8389 "%select{declaration|definition|default argument|" 8390 "explicit specialization|partial specialization}0 of %1 must be imported " 8391 "from one of the following modules before it is required:%2">; 8392def ext_module_import_in_extern_c : ExtWarn< 8393 "import of C++ module '%0' appears within extern \"C\" language linkage " 8394 "specification">, DefaultError, 8395 InGroup<DiagGroup<"module-import-in-extern-c">>; 8396def note_module_import_in_extern_c : Note< 8397 "extern \"C\" language linkage specification begins here">; 8398def err_module_import_not_at_top_level_fatal : Error< 8399 "import of module '%0' appears within %1">, DefaultFatal; 8400def ext_module_import_not_at_top_level_noop : ExtWarn< 8401 "redundant #include of module '%0' appears within %1">, DefaultError, 8402 InGroup<DiagGroup<"modules-import-nested-redundant">>; 8403def note_module_import_not_at_top_level : Note<"%0 begins here">; 8404def err_module_self_import : Error< 8405 "import of module '%0' appears within same top-level module '%1'">; 8406def err_module_import_in_implementation : Error< 8407 "@import of module '%0' in implementation of '%1'; use #import">; 8408 8409def ext_equivalent_internal_linkage_decl_in_modules : ExtWarn< 8410 "ambiguous use of internal linkage declaration %0 defined in multiple modules">, 8411 InGroup<DiagGroup<"modules-ambiguous-internal-linkage">>; 8412def note_equivalent_internal_linkage_decl : Note< 8413 "declared here%select{ in module '%1'|}0">; 8414} 8415 8416let CategoryName = "Coroutines Issue" in { 8417def err_return_in_coroutine : Error< 8418 "return statement not allowed in coroutine; did you mean 'co_return'?">; 8419def note_declared_coroutine_here : Note< 8420 "function is a coroutine due to use of " 8421 "'%select{co_await|co_yield|co_return}0' here">; 8422def err_coroutine_objc_method : Error< 8423 "Objective-C methods as coroutines are not yet supported">; 8424def err_coroutine_unevaluated_context : Error< 8425 "'%0' cannot be used in an unevaluated context">; 8426def err_coroutine_outside_function : Error< 8427 "'%0' cannot be used outside a function">; 8428def err_coroutine_ctor_dtor : Error< 8429 "'%1' cannot be used in a %select{constructor|destructor}0">; 8430def err_coroutine_constexpr : Error< 8431 "'%0' cannot be used in a constexpr function">; 8432def err_coroutine_varargs : Error< 8433 "'%0' cannot be used in a varargs function">; 8434def ext_coroutine_without_co_await_co_yield : ExtWarn< 8435 "'co_return' used in a function " 8436 "that uses neither 'co_await' nor 'co_yield'">, 8437 InGroup<DiagGroup<"coreturn-without-coawait">>; 8438def err_implied_std_coroutine_traits_not_found : Error< 8439 "you need to include <coroutine> before defining a coroutine">; 8440def err_malformed_std_coroutine_traits : Error< 8441 "'std::coroutine_traits' must be a class template">; 8442def err_implied_std_coroutine_traits_promise_type_not_found : Error< 8443 "this function cannot be a coroutine: %q0 has no member named 'promise_type'">; 8444def err_implied_std_coroutine_traits_promise_type_not_class : Error< 8445 "this function cannot be a coroutine: %0 is not a class">; 8446def err_coroutine_traits_missing_specialization : Error< 8447 "this function cannot be a coroutine: missing definition of " 8448 "specialization %q0">; 8449} 8450 8451let CategoryName = "Documentation Issue" in { 8452def warn_not_a_doxygen_trailing_member_comment : Warning< 8453 "not a Doxygen trailing comment">, InGroup<Documentation>, DefaultIgnore; 8454} // end of documentation issue category 8455 8456let CategoryName = "Instrumentation Issue" in { 8457def warn_profile_data_out_of_date : Warning< 8458 "profile data may be out of date: of %0 function%s0, %1 %plural{1:has|:have}1" 8459 " no data and %2 %plural{1:has|:have}2 mismatched data that will be ignored">, 8460 InGroup<ProfileInstrOutOfDate>; 8461def warn_profile_data_unprofiled : Warning< 8462 "no profile data available for file \"%0\"">, 8463 InGroup<ProfileInstrUnprofiled>; 8464 8465} // end of instrumentation issue category 8466 8467let CategoryName = "Nullability Issue" in { 8468 8469def warn_mismatched_nullability_attr : Warning< 8470 "nullability specifier %0 conflicts with existing specifier %1">, 8471 InGroup<Nullability>; 8472 8473def warn_nullability_declspec : Warning< 8474 "nullability specifier %0 cannot be applied " 8475 "to non-pointer type %1; did you mean to apply the specifier to the " 8476 "%select{pointer|block pointer|member pointer|function pointer|" 8477 "member function pointer}2?">, 8478 InGroup<NullabilityDeclSpec>, 8479 DefaultError; 8480 8481def note_nullability_here : Note<"%0 specified here">; 8482 8483def err_nullability_nonpointer : Error< 8484 "nullability specifier %0 cannot be applied to non-pointer type %1">; 8485 8486def warn_nullability_lost : Warning< 8487 "implicit conversion from nullable pointer %0 to non-nullable pointer " 8488 "type %1">, 8489 InGroup<NullableToNonNullConversion>, DefaultIgnore; 8490 8491def err_nullability_cs_multilevel : Error< 8492 "nullability keyword %0 cannot be applied to multi-level pointer type %1">; 8493def note_nullability_type_specifier : Note< 8494 "use nullability type specifier %0 to affect the innermost " 8495 "pointer type of %1">; 8496 8497def warn_null_resettable_setter : Warning< 8498 "synthesized setter %0 for null_resettable property %1 does not handle nil">, 8499 InGroup<Nullability>; 8500 8501def warn_nullability_missing : Warning< 8502 "%select{pointer|block pointer|member pointer}0 is missing a nullability " 8503 "type specifier (_Nonnull, _Nullable, or _Null_unspecified)">, 8504 InGroup<NullabilityCompleteness>; 8505 8506def err_objc_type_arg_explicit_nullability : Error< 8507 "type argument %0 cannot explicitly specify nullability">; 8508 8509def err_objc_type_param_bound_explicit_nullability : Error< 8510 "type parameter %0 bound %1 cannot explicitly specify nullability">; 8511 8512} 8513 8514let CategoryName = "Generics Issue" in { 8515 8516def err_objc_type_param_bound_nonobject : Error< 8517 "type bound %0 for type parameter %1 is not an Objective-C pointer type">; 8518 8519def err_objc_type_param_bound_missing_pointer : Error< 8520 "missing '*' in type bound %0 for type parameter %1">; 8521def err_objc_type_param_bound_qualified : Error< 8522 "type bound %1 for type parameter %0 cannot be qualified with '%2'">; 8523 8524def err_objc_type_param_redecl : Error< 8525 "redeclaration of type parameter %0">; 8526 8527def err_objc_type_param_arity_mismatch : Error< 8528 "%select{forward class declaration|class definition|category|extension}0 has " 8529 "too %select{few|many}1 type parameters (expected %2, have %3)">; 8530 8531def err_objc_type_param_bound_conflict : Error< 8532 "type bound %0 for type parameter %1 conflicts with " 8533 "%select{implicit|previous}2 bound %3%select{for type parameter %5|}4">; 8534 8535def err_objc_type_param_variance_conflict : Error< 8536 "%select{in|co|contra}0variant type parameter %1 conflicts with previous " 8537 "%select{in|co|contra}2variant type parameter %3">; 8538 8539def note_objc_type_param_here : Note<"type parameter %0 declared here">; 8540 8541def err_objc_type_param_bound_missing : Error< 8542 "missing type bound %0 for type parameter %1 in %select{@interface|@class}2">; 8543 8544def err_objc_parameterized_category_nonclass : Error< 8545 "%select{extension|category}0 of non-parameterized class %1 cannot have type " 8546 "parameters">; 8547 8548def err_objc_parameterized_forward_class : Error< 8549 "forward declaration of non-parameterized class %0 cannot have type " 8550 "parameters">; 8551 8552def err_objc_parameterized_forward_class_first : Error< 8553 "class %0 previously declared with type parameters">; 8554 8555def err_objc_type_arg_missing_star : Error< 8556 "type argument %0 must be a pointer (requires a '*')">; 8557def err_objc_type_arg_qualified : Error< 8558 "type argument %0 cannot be qualified with '%1'">; 8559 8560def err_objc_type_arg_missing : Error< 8561 "no type or protocol named %0">; 8562 8563def err_objc_type_args_and_protocols : Error< 8564 "angle brackets contain both a %select{type|protocol}0 (%1) and a " 8565 "%select{protocol|type}0 (%2)">; 8566 8567def err_objc_type_args_non_class : Error< 8568 "type arguments cannot be applied to non-class type %0">; 8569 8570def err_objc_type_args_non_parameterized_class : Error< 8571 "type arguments cannot be applied to non-parameterized class %0">; 8572 8573def err_objc_type_args_specialized_class : Error< 8574 "type arguments cannot be applied to already-specialized class type %0">; 8575 8576def err_objc_type_args_wrong_arity : Error< 8577 "too %select{many|few}0 type arguments for class %1 (have %2, expected %3)">; 8578} 8579 8580def err_objc_type_arg_not_id_compatible : Error< 8581 "type argument %0 is neither an Objective-C object nor a block type">; 8582 8583def err_objc_type_arg_does_not_match_bound : Error< 8584 "type argument %0 does not satisfy the bound (%1) of type parameter %2">; 8585 8586def warn_objc_redundant_qualified_class_type : Warning< 8587 "parameterized class %0 already conforms to the protocols listed; did you " 8588 "forget a '*'?">, InGroup<ObjCProtocolQualifiers>; 8589 8590def warn_block_literal_attributes_on_omitted_return_type : Warning< 8591 "attribute %0 ignored, because it cannot be applied to omitted return type">, 8592 InGroup<IgnoredAttributes>; 8593 8594def warn_block_literal_qualifiers_on_omitted_return_type : Warning< 8595 "'%0' qualifier on omitted return type %1 has no effect">, 8596 InGroup<IgnoredQualifiers>; 8597 8598} // end of sema component. 8599