Files
swift-mirror/include/swift/AST/DiagnosticsSema.def
Slava Pestov 23cac673ca IRGen: Enable dynamic replacement with library evolution
It looks like the only thing that fails is the linkage computation
for the dynamic replacement key of class methods. Even though
methods have hidden linkage to prevent them from being directly
referenced from outside a resilient module, we need to ensure
the dynamic replacement key is visible.

Fixes <rdar://problem/58457716>.
2020-04-10 22:53:36 -04:00

5076 lines
232 KiB
C++

//===--- DiagnosticsSema.def - Diagnostics Text -----------------*- C++ -*-===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2018 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
//
// This file defines diagnostics emitted during semantic analysis and type
// checking.
// Each diagnostic is described using one of three kinds (error, warning, or
// note) along with a unique identifier, category, options, and text, and is
// followed by a signature describing the diagnostic argument kinds.
//
//===----------------------------------------------------------------------===//
#if !(defined(DIAG) || (defined(ERROR) && defined(WARNING) && defined(NOTE)))
# error Must define either DIAG or the set {ERROR,WARNING,NOTE}
#endif
#ifndef ERROR
# define ERROR(ID,Options,Text,Signature) \
DIAG(ERROR,ID,Options,Text,Signature)
#endif
#ifndef WARNING
# define WARNING(ID,Options,Text,Signature) \
DIAG(WARNING,ID,Options,Text,Signature)
#endif
#ifndef NOTE
# define NOTE(ID,Options,Text,Signature) \
DIAG(NOTE,ID,Options,Text,Signature)
#endif
#ifndef FIXIT
# define FIXIT(ID, Text, Signature)
#endif
#ifndef REMARK
# define REMARK(ID,Options,Text,Signature) \
DIAG(REMARK,ID,Options,Text,Signature)
#endif
NOTE(decl_declared_here,none,
"%0 declared here", (DeclName))
NOTE(kind_declared_here,none,
"%0 declared here", (DescriptiveDeclKind))
NOTE(implicit_member_declared_here,none,
"%1 '%0' is implicitly declared", (StringRef, StringRef))
NOTE(extended_type_declared_here,none,
"extended type declared here", ())
NOTE(opaque_return_type_declared_here,none,
"opaque return type declared here", ())
//------------------------------------------------------------------------------
// MARK: Constraint solver diagnostics
//------------------------------------------------------------------------------
ERROR(ambiguous_member_overload_set,none,
"ambiguous reference to member %0", (DeclNameRef))
ERROR(ambiguous_reference_to_decl,none,
"ambiguous reference to %0 %1", (DescriptiveDeclKind, DeclName))
ERROR(no_overloads_match_exactly_in_call,none,
"no exact matches in %select{reference|call}0 to %1 %select{%3|}2",
(bool, DescriptiveDeclKind, bool, DeclBaseName))
NOTE(candidate_partial_match,none,
"candidate has partially matching parameter list %0",
(StringRef))
ERROR(could_not_find_value_subscript,none,
"value of type %0 has no subscripts",
(Type))
ERROR(could_not_find_tuple_member,none,
"value of tuple type %0 has no member %1", (Type, DeclNameRef))
ERROR(could_not_find_value_member,none,
"value of type %0 has no member %1", (Type, DeclNameRef))
ERROR(could_not_find_value_member_corrected,none,
"value of type %0 has no member %1; did you mean %2?",
(Type, DeclNameRef, DeclName))
ERROR(could_not_find_value_dynamic_member_corrected,none,
"value of type %0 has no dynamic member %2 using key path from root type %1; did you mean %3?",
(Type, Type, DeclNameRef, DeclName))
ERROR(could_not_find_value_dynamic_member,none,
"value of type %0 has no dynamic member %2 using key path from root type %1",
(Type, Type, DeclNameRef))
ERROR(could_not_find_type_member,none,
"type %0 has no member %1", (Type, DeclNameRef))
ERROR(could_not_find_type_member_corrected,none,
"type %0 has no member %1; did you mean %2?",
(Type, DeclNameRef, DeclName))
ERROR(could_not_find_subscript_member_did_you_mean,none,
"value of type %0 has no property or method named 'subscript'; "
"did you mean to use the subscript operator?",
(Type))
ERROR(could_not_find_enum_case,none,
"enum type %0 has no case %1; did you mean %2?",
(Type, DeclNameRef, DeclName))
NOTE(did_you_mean_raw_type,none,
"did you mean to specify a raw type on the enum declaration?", ())
NOTE(any_as_anyobject_fixit, none,
"cast 'Any' to 'AnyObject' or use 'as!' to force downcast to a more specific type to access members", ())
ERROR(expected_argument_in_contextual_member,none,
"member %0 expects argument of type %1", (DeclName, Type))
ERROR(expected_parens_in_contextual_member,none,
"member %0 is a function; did you mean to call it?", (DeclName))
ERROR(expected_result_in_contextual_member,none,
"member %0 in %2 produces result of type %1, but context expects %2",
(DeclName, Type, Type))
ERROR(unexpected_arguments_in_enum_case,none,
"enum case %0 has no associated values", (DeclName))
ERROR(could_not_use_type_member_on_instance,none,
"static member %1 cannot be used on instance of type %0",
(Type, DeclNameRef))
ERROR(could_not_use_enum_element_on_instance,none,
"enum case %0 cannot be used as an instance member",
(DeclNameRef))
ERROR(could_not_use_type_member_on_protocol_metatype,none,
"static member %1 cannot be used on protocol metatype %0",
(Type, DeclNameRef))
ERROR(could_not_use_instance_member_on_type,none,
"instance member %1"
"%select{| of type %2}3 cannot be used on"
"%select{| instance of nested}3 type %0",
(Type, DeclNameRef, Type, bool))
ERROR(could_not_use_member_on_existential,none,
"member %1 cannot be used on value of protocol type %0; use a generic"
" constraint instead",
(Type, DeclNameRef))
FIXIT(replace_with_type,"%0",(Type))
FIXIT(insert_type_qualification,"%0.",(Type))
ERROR(candidate_inaccessible,none,
"%0 is inaccessible due to "
"'%select{private|fileprivate|internal|@_spi|@_spi}1' protection level",
(DeclBaseName, AccessLevel))
NOTE(note_candidate_inaccessible,none,
"%0 is inaccessible due to "
"'%select{private|fileprivate|internal|@_spi|@_spi}1' protection level",
(DeclName, AccessLevel))
ERROR(init_candidate_inaccessible,none,
"%0 initializer is inaccessible due to "
"'%select{private|fileprivate|internal|@_spi|@_spi}1' protection level",
(Type, AccessLevel))
ERROR(cannot_pass_rvalue_mutating_subelement,none,
"cannot use mutating member on immutable value: %0",
(StringRef))
ERROR(cannot_pass_rvalue_mutating,none,
"cannot use mutating member on immutable value of type %0",
(Type))
ERROR(cannot_pass_rvalue_mutating_getter_subelement,none,
"cannot use mutating getter on immutable value: %0",
(StringRef))
ERROR(cannot_pass_rvalue_mutating_getter,none,
"cannot use mutating getter on immutable value of type %0",
(Type))
ERROR(expression_too_complex,none,
"the compiler is unable to type-check this expression in reasonable time; "
"try breaking up the expression into distinct sub-expressions", ())
ERROR(value_type_comparison_with_nil_illegal_did_you_mean,none,
"value of type %0 cannot be compared by reference; "
"did you mean to compare by value?",
(Type))
ERROR(value_type_comparison_with_nil_illegal,none,
"type %0 is not optional, value can never be nil",
(Type))
ERROR(cannot_match_expr_pattern_with_value,none,
"expression pattern of type %0 cannot match values of type %1",
(Type, Type))
ERROR(cannot_match_expr_tuple_pattern_with_nontuple_value,none,
"tuple pattern cannot match values of non-tuple type %0",
(Type))
ERROR(cannot_match_unresolved_expr_pattern_with_value,none,
"pattern cannot match values of type %0",
(Type))
ERROR(cannot_reference_compare_types,none,
"cannot check reference equality of functions; operands here have types "
"%1 and %2",
(StringRef, Type, Type))
ERROR(cannot_apply_binop_to_args,none,
"binary operator '%0' cannot be applied to operands of type "
"%1 and %2",
(StringRef, Type, Type))
ERROR(cannot_apply_binop_to_same_args,none,
"binary operator '%0' cannot be applied to two %1 operands",
(StringRef, Type))
ERROR(cannot_apply_unop_to_arg,none,
"unary operator '%0' cannot be applied to an operand of type %1",
(StringRef, Type))
ERROR(cannot_apply_lvalue_unop_to_subelement,none,
"cannot pass immutable value to mutating operator: %0",
(StringRef))
ERROR(cannot_apply_lvalue_unop_to_rvalue,none,
"cannot pass immutable value of type %0 to mutating operator",
(Type))
ERROR(cannot_apply_lvalue_binop_to_subelement,none,
"left side of mutating operator isn't mutable: %0", (StringRef))
ERROR(cannot_apply_lvalue_binop_to_rvalue,none,
"left side of mutating operator has immutable type %0", (Type))
ERROR(cannot_subscript_base,none,
"cannot subscript a value of type %0",
(Type))
ERROR(cannot_subscript_ambiguous_base,none,
"cannot subscript a value of incorrect or ambiguous type", ())
ERROR(cannot_subscript_nil_literal,none,
"cannot subscript a nil literal value", ())
ERROR(conditional_cast_from_nil,none,
"nil literal cannot be the source of a conditional cast", ())
ERROR(cannot_pass_rvalue_inout_subelement,none,
"cannot pass immutable value as inout argument: %0",
(StringRef))
ERROR(cannot_pass_rvalue_inout_converted,none,
"inout argument could be set to a value with a type other than %0; "
"use a value declared as type %1 instead", (Type, Type))
NOTE(inout_change_var_type_if_possible,none,
"change variable type to %1 if it doesn't need to be declared as %0",
(Type, Type))
ERROR(cannot_pass_rvalue_inout,none,
"cannot pass immutable value of type %0 as inout argument",
(Type))
ERROR(cannot_provide_default_value_inout,none,
"cannot provide default value to inout parameter %0", (Identifier))
ERROR(cannot_call_with_params, none,
"cannot invoke %select{|initializer for type }2'%0' with an argument list"
" of type '%1'", (StringRef, StringRef, bool))
ERROR(cannot_call_non_function_value,none,
"cannot call value of non-function type %0", (Type))
ERROR(no_candidates_match_result_type,none,
"no '%0' candidates produce the expected contextual result type %1",
(StringRef, Type))
ERROR(cannot_infer_closure_type,none,
"unable to infer closure type in the current context", ())
ERROR(cannot_infer_closure_result_type,none,
"unable to infer%select{ complex|}0 closure return type; "
"add explicit type to disambiguate", (bool))
FIXIT(insert_closure_return_type_placeholder,
"%select{| () }0-> <#Result#> %select{|in }0",
(bool))
ERROR(incorrect_explicit_closure_result,none,
"declared closure result %0 is incompatible with contextual type %1",
(Type, Type))
NOTE(suggest_expected_match,none,
"%select{expected an argument list|produces result}0 of type '%1'",
(bool, StringRef))
NOTE(suggest_partial_overloads,none,
"overloads for '%1' exist with these %select{"
"partially matching parameter lists|result types}0: %2",
(bool, StringRef, StringRef))
NOTE(no_binary_op_overload_for_enum_with_payload,none,
"binary operator '%0' cannot be synthesized for enums "
"with associated values",
(StringRef))
ERROR(cannot_convert_initializer_value,none,
"cannot convert value of type %0 to specified type %1", (Type,Type))
ERROR(cannot_convert_initializer_value_protocol,none,
"value of type %0 does not conform to specified type %1", (Type,Type))
ERROR(cannot_convert_initializer_value_anyobject,none,
"value of type %0 expected to be instance of class or "
"class-constrained type",
(Type, Type))
ERROR(cannot_convert_initializer_value_nil,none,
"'nil' cannot initialize specified type %0", (Type))
ERROR(cannot_convert_to_return_type,none,
"cannot convert return expression of type %0 to return type %1",
(Type,Type))
ERROR(cannot_convert_to_return_type_protocol,none,
"return expression of type %0 does not conform to %1", (Type,Type))
ERROR(cannot_convert_return_type_to_anyobject,none,
"return expression of type %0 expected to be an instance of "
"a class or class-constrained type",
(Type, Type))
ERROR(cannot_convert_to_return_type_nil,none,
"'nil' is incompatible with return type %0", (Type))
ERROR(cannot_convert_thrown_type,none,
"thrown expression type %0 does not conform to 'Error'", (Type))
ERROR(cannot_throw_error_code,none,
"thrown error code type %0 does not conform to 'Error'; construct an %1 "
"instance", (Type, Type))
FIXIT(insert_type_coercion,
" %select{as!|as}0 %1",(bool, Type))
ERROR(bad_yield_count,none,
"expected %0 yield value(s)", (unsigned))
ERROR(cannot_throw_nil,none,
"cannot infer concrete Error for thrown 'nil' value", ())
ERROR(cannot_convert_raw_initializer_value,none,
"cannot convert value of type %0 to raw type %1", (Type,Type))
ERROR(cannot_convert_raw_initializer_value_nil,none,
"cannot convert 'nil' to raw type %0", (Type))
ERROR(cannot_convert_default_arg_value,none,
"default argument value of type %0 cannot be converted to type %1",
(Type,Type))
ERROR(cannot_convert_default_arg_value_protocol,none,
"default argument value of type %0 does not conform to %1", (Type,Type))
ERROR(cannot_convert_default_arg_value_nil,none,
"nil default argument value cannot be converted to type %0", (Type))
ERROR(cannot_convert_argument_value,none,
"cannot convert value of type %0 to expected argument type %1",
(Type,Type))
NOTE(candidate_has_invalid_argument_at_position,none,
"candidate expects %select{|in-out }2value of type %0 for parameter #%1",
(Type, unsigned, bool))
ERROR(cannot_convert_array_to_variadic,none,
"cannot pass array of type %0 as variadic arguments of type %1",
(Type,Type))
NOTE(candidate_would_match_array_to_variadic,none,
"candidate would match if array elements were passed as"
" variadic arguments of type %0", (Type))
NOTE(suggest_pass_elements_directly,none,
"remove brackets to pass array elements directly", ())
ERROR(cannot_convert_argument_value_generic,none,
"cannot convert value of type %0 (%1) to expected argument type %2 (%3)",
(Type, StringRef, Type, StringRef))
ERROR(conflicting_arguments_for_generic_parameter,none,
"conflicting arguments to generic parameter %0 (%1)",
(Type, StringRef))
// @_nonEphemeral conversion diagnostics
ERROR(cannot_pass_type_to_non_ephemeral,none,
"cannot pass %0 to parameter; argument %1 must be a pointer that "
"outlives the call%select{| to %3}2", (Type, StringRef, bool, DeclName))
WARNING(cannot_pass_type_to_non_ephemeral_warning,none,
"passing %0 to parameter, but argument %1 should be a pointer that "
"outlives the call%select{| to %3}2", (Type, StringRef, bool, DeclName))
ERROR(cannot_use_inout_non_ephemeral,none,
"cannot use inout expression here; argument %0 must be a pointer that "
"outlives the call%select{| to %2}1", (StringRef, bool, DeclName))
WARNING(cannot_use_inout_non_ephemeral_warning,none,
"inout expression creates a temporary pointer, but argument %0 should "
"be a pointer that outlives the call%select{| to %2}1",
(StringRef, bool, DeclName))
ERROR(cannot_construct_dangling_pointer,none,
"initialization of %0 results in a dangling %select{|buffer }1pointer",
(Type, unsigned))
WARNING(cannot_construct_dangling_pointer_warning,none,
"initialization of %0 results in a dangling %select{|buffer }1pointer",
(Type, unsigned))
NOTE(ephemeral_pointer_argument_conversion_note,none,
"implicit argument conversion from %0 to %1 produces a pointer valid only "
"for the duration of the call%select{| to %3}2",
(Type, Type, bool, DeclName))
NOTE(ephemeral_use_with_unsafe_pointer,none,
"use 'withUnsafe%select{Bytes|MutableBytes|Pointer|MutablePointer}0' in "
"order to explicitly convert argument to %select{buffer |buffer ||}0"
"pointer valid for a defined scope", (unsigned))
NOTE(ephemeral_use_string_with_c_string,none,
"use the 'withCString' method on String in order to explicitly "
"convert argument to pointer valid for a defined scope", ())
NOTE(ephemeral_use_array_with_unsafe_buffer,none,
"use the 'withUnsafe%select{Bytes|MutableBytes|BufferPointer|"
"MutableBufferPointer}0' method on Array in order to explicitly convert "
"argument to buffer pointer valid for a defined scope", (unsigned))
NOTE(candidate_performs_illegal_ephemeral_conv,none,
"candidate expects pointer that outlives the call for parameter #%0",
(unsigned))
ERROR(cannot_convert_argument_value_protocol,none,
"argument type %0 does not conform to expected type %1", (Type, Type))
ERROR(cannot_convert_argument_value_anyobject,none,
"argument type %0 expected to be an instance of "
"a class or class-constrained type",
(Type, Type))
ERROR(cannot_convert_argument_value_nil,none,
"'nil' is not compatible with expected argument type %0", (Type))
ERROR(cannot_convert_condition_value,none,
"cannot convert value of type %0 to expected condition type %1",
(Type, Type))
ERROR(cannot_convert_condition_value_nil,none,
"'nil' is not compatible with expected condition type %0", (Type))
ERROR(cannot_yield_rvalue_by_reference_same_type,none,
"cannot yield immutable value of type %0 as an inout yield", (Type))
ERROR(cannot_yield_rvalue_by_reference,none,
"cannot yield immutable value of type %0 as an inout yield of type %1",
(Type,Type))
ERROR(cannot_yield_wrong_type_by_reference,none,
"cannot yield reference to storage of type %0 as an inout yield of type %1",
(Type,Type))
ERROR(cannot_convert_yield_value,none,
"cannot convert value of type %0 to expected yield type %1",
(Type,Type))
ERROR(cannot_convert_yield_value_protocol,none,
"yielded type %0 does not conform to expected type %1",
(Type,Type))
ERROR(cannot_convert_yield_value_nil,none,
"nil is not compatible with expected yield type %0", (Type))
ERROR(cannot_convert_closure_result,none,
"cannot convert value of type %0 to closure result type %1",
(Type,Type))
ERROR(cannot_convert_closure_result_protocol,none,
"result value of type %0 does not conform to closure result type %1",
(Type, Type))
ERROR(cannot_convert_closure_result_nil,none,
"'nil' is not compatible with closure result type %0", (Type))
ERROR(cannot_convert_parent_type,none,
"cannot convert parent type %0 to expected type %1",
(Type, Type))
NOTE(generic_argument_mismatch,none,
"arguments to generic parameter %0 (%1 and %2) are expected to be equal",
(Identifier, Type, Type))
ERROR(destructor_not_accessible,none,
"deinitializers cannot be accessed", ())
// Array Element
ERROR(cannot_convert_array_element,none,
"cannot convert value of type %0 to expected element type %1",
(Type,Type))
ERROR(cannot_convert_array_element_protocol,none,
"value of type %0 does not conform to expected element type %1",
(Type, Type))
ERROR(cannot_convert_array_element_nil,none,
"'nil' is not compatible with expected element type %0", (Type))
// Dictionary Key
ERROR(cannot_convert_dict_key,none,
"cannot convert value of type %0 to expected dictionary key type %1",
(Type,Type))
ERROR(cannot_convert_dict_key_protocol,none,
"value of type %0 does not conform to expected dictionary key type %1",
(Type, Type))
ERROR(cannot_convert_dict_key_nil,none,
"'nil' is not compatible with expected dictionary key type %0", (Type))
// Dictionary Value
ERROR(cannot_convert_dict_value,none,
"cannot convert value of type %0 to expected dictionary value type %1",
(Type,Type))
ERROR(cannot_convert_dict_value_protocol,none,
"value of type %0 does not conform to expected dictionary value type %1",
(Type, Type))
ERROR(cannot_convert_dict_value_nil,none,
"'nil' is not compatible with expected dictionary value type %0", (Type))
// Coerce Expr
ERROR(cannot_convert_coerce,none,
"cannot convert value of type %0 to type %1 in coercion",
(Type,Type))
ERROR(cannot_convert_coerce_protocol,none,
"value of type %0 does not conform to %1 in coercion",
(Type, Type))
ERROR(cannot_convert_coerce_nil,none,
"'nil' is not compatible with type %0 in coercion", (Type))
// Assign Expr
ERROR(cannot_convert_assign,none,
"cannot assign value of type %0 to type %1",
(Type,Type))
NOTE(assign_protocol_conformance_fix_it,none,
"add missing conformance to %0 to %1 %2",
(Type, DescriptiveDeclKind, Type))
ERROR(cannot_convert_assign_protocol,none,
"value of type %0 does not conform to %1 in assignment",
(Type, Type))
ERROR(cannot_convert_assign_anyobject,none,
"value of type %0 expected to be an instance of "
"a class or class-constrained type in assignment",
(Type, Type))
ERROR(cannot_convert_assign_nil,none,
"'nil' cannot be assigned to type %0", (Type))
// Subscript Assign Expr
ERROR(cannot_convert_subscript_assign,none,
"cannot assign value of type %0 to subscript of type %1",
(Type,Type))
ERROR(cannot_convert_subscript_assign_protocol,none,
"value of type %0 does not conform to %1 in subscript assignment",
(Type, Type))
ERROR(cannot_convert_subscript_assign_nil,none,
"'nil' cannot be assigned to subscript of type %0", (Type))
NOTE(cannot_convert_candidate_result_to_contextual_type,none,
"%0 produces %1, not the expected contextual result type %2",
(DeclName, Type, Type))
// for ... in expression
ERROR(cannot_convert_sequence_element_value,none,
"cannot convert sequence element type %0 to expected type %1",
(Type, Type))
ERROR(cannot_convert_sequence_element_protocol,none,
"sequence element type %0 does not conform to expected protocol %1",
(Type, Type))
ERROR(throws_functiontype_mismatch,none,
"invalid conversion from throwing function of type %0 to "
"non-throwing function type %1", (Type, Type))
// Key-path expressions.
ERROR(expr_keypath_no_objc_runtime,none,
"'#keyPath' can only be used with the Objective-C runtime", ())
ERROR(expression_unused_keypath_result,none,
"result of key path is unused", ())
ERROR(expr_keypath_non_objc_property,none,
"argument of '#keyPath' refers to non-'@objc' property %0",
(DeclName))
WARNING(expr_keypath_swift3_objc_inference,none,
"argument of '#keyPath' refers to property %0 in %1 that depends on "
"'@objc' inference deprecated in Swift 4",
(DeclName, Identifier))
ERROR(expr_keypath_type_of_property,none,
"cannot refer to type member %0 within instance of type %1",
(DeclNameRef, Type))
ERROR(expr_keypath_generic_type,none,
"key path cannot refer to generic type %0", (DeclName))
ERROR(expr_keypath_not_property,none,
"%select{key path|dynamic key path member lookup}2 cannot refer to %0 %1",
(DescriptiveDeclKind, DeclName, bool))
ERROR(expr_keypath_mutating_getter,none,
"%select{key path|dynamic key path member lookup}1 cannot refer to %0, "
"which has a mutating getter",
(DeclName, bool))
ERROR(expr_keypath_static_member,none,
"%select{key path|dynamic key path member lookup}1 cannot refer to static member %0",
(DeclName, bool))
ERROR(expr_keypath_empty,none,
"empty key path does not refer to a property", ())
ERROR(expr_unsupported_objc_key_path_component,none,
"an Objective-C key path cannot contain "
"%select{BAD|subscript|BAD|BAD|optional-forcing|optional-chaining|BAD} "
"components",
(unsigned))
ERROR(expr_unsupported_objc_key_path_compound_name,none,
"an Objective-C key path cannot reference a declaration with a "
"compound name", ())
ERROR(expr_keypath_no_keypath_type,none,
"broken standard library: no 'KeyPath' type found", ())
ERROR(expr_swift_keypath_invalid_component,none,
"invalid component of Swift key path", ())
ERROR(expr_swift_keypath_not_starting_with_type,none,
"a Swift key path must begin with a type", ())
ERROR(expr_swift_keypath_not_starting_with_dot,none,
"a Swift key path with contextual root must begin with a leading dot",
())
ERROR(expr_smart_keypath_value_covert_to_contextual_type,none,
"key path value type %0 cannot be converted to contextual type %1",
(Type, Type))
ERROR(expr_swift_keypath_empty, none,
"key path must have at least one component", ())
ERROR(expr_string_interpolation_outside_string,none,
"string interpolation can only appear inside a string literal", ())
ERROR(expr_keypath_subscript_index_not_hashable, none,
"subscript index of type %0 in a key path must be Hashable", (Type))
ERROR(expr_smart_keypath_application_type_mismatch,none,
"key path of type %0 cannot be applied to a base of type %1",
(Type, Type))
ERROR(expr_swift_keypath_anyobject_root,none,
"the root type of a Swift key path cannot be 'AnyObject'", ())
WARNING(expr_deprecated_writable_keypath,none,
"forming a writable keypath to property %0 that is read-only in this context "
"is deprecated and will be removed in a future release",(DeclName))
// Selector expressions.
ERROR(expr_selector_no_objc_runtime,none,
"'#selector' can only be used with the Objective-C runtime", ())
ERROR(expr_selector_module_missing,none,
"import the 'ObjectiveC' module to use '#selector'", ())
ERROR(expr_selector_no_declaration,none,
"argument of '#selector' does not refer to an '@objc' method, property, "
"or initializer", ())
ERROR(expr_selector_not_method,none,
"argument of '#selector' cannot refer to %select{local|global}0 "
"function %1", (bool, DeclName))
ERROR(expr_selector_expected_property,none,
"cannot reference %1 %2 as a property; remove '%select{getter|setter}0:'",
(bool, DescriptiveDeclKind, DeclName))
ERROR(expr_selector_not_property,none,
"argument of '#selector' cannot refer to %select{variable|parameter}0 %1",
(bool, DeclName))
ERROR(expr_selector_expected_method,none,
"use 'getter:'%select{| or 'setter:'}0 to refer to the Objective-C getter"
"%select{| or setter}0 of property %1%select{|, respectively}0",
(bool, DeclName))
NOTE(expr_selector_add_modifier,none,
"add '%select{getter|setter}0:' to reference the Objective-C "
"%select{getter|setter}0 for %1", (bool, DeclName))
ERROR(expr_selector_property_not_settable,none,
"argument of '#selector(setter:)' refers to non-settable %0 %1",
(DescriptiveDeclKind, DeclName))
ERROR(expr_selector_property_setter_inaccessible,none,
"setter of %0 %1 is inaccessible", (DescriptiveDeclKind, DeclName))
ERROR(expr_selector_cannot_be_used,none,
"cannot use %0 as a selector because protocol %1 is not exposed to Objective-C",
(DeclBaseName, DeclName))
ERROR(expr_selector_not_objc,none,
"argument of '#selector' refers to %0 %1 that is not exposed to "
"Objective-C",
(DescriptiveDeclKind, DeclName))
NOTE(make_decl_objc,none,
"add '@objc' to expose this %0 to Objective-C",
(DescriptiveDeclKind))
WARNING(expr_selector_swift3_objc_inference,none,
"argument of '#selector' refers to %0 %1 in %2 that depends on "
"'@objc' inference deprecated in Swift 4",
(DescriptiveDeclKind, DeclName, Identifier))
// Selectors-as-string-literals.
WARNING(selector_literal_invalid,none,
"string literal is not a valid Objective-C selector", ())
WARNING(selector_literal_undeclared,none,
"no method declared with Objective-C selector %0", (ObjCSelector))
WARNING(selector_literal_deprecated,none,
"use of string literal for Objective-C selectors is deprecated; "
"use '#selector' or explicitly construct a 'Selector'", ())
WARNING(selector_literal_deprecated_suggest,none,
"use of string literal for Objective-C selectors is deprecated; "
"use '#selector' instead", ())
WARNING(selector_construction_suggest,none,
"use '#selector' instead of explicitly constructing a 'Selector'", ())
NOTE(selector_construction_suppress_warning,none,
"wrap the selector name in parentheses to suppress this warning", ())
ERROR(cannot_return_value_from_void_func,none,
"unexpected non-void return value in void function", ())
NOTE(add_return_type_note,none,
"did you mean to add a return type?", ())
//------------------------------------------------------------------------------
// MARK: Import Resolution
//------------------------------------------------------------------------------
ERROR(sema_no_import,Fatal,
"no such module '%0'", (StringRef))
ERROR(sema_no_import_target,Fatal,
"could not find module '%0' for target '%1'; "
"found: %2", (StringRef, StringRef, StringRef))
ERROR(sema_no_import_repl,none,
"no such module '%0'", (StringRef))
NOTE(sema_no_import_no_sdk,none,
"did you forget to set an SDK using -sdk or SDKROOT?", ())
NOTE(sema_no_import_no_sdk_xcrun,none,
"use \"xcrun swiftc\" to select the default macOS SDK "
"installed with Xcode", ())
WARNING(sema_import_current_module,none,
"this file is part of module %0; ignoring import", (Identifier))
WARNING(sema_import_current_module_with_file,none,
"file '%0' is part of module %1; ignoring import",
(StringRef, Identifier))
ERROR(sema_opening_import,Fatal,
"opening import file for module %0: %1", (Identifier, StringRef))
ERROR(serialization_load_failed,Fatal,
"failed to load module '%0'", (StringRef))
ERROR(module_interface_build_failed,Fatal,
"failed to build module '%0' from its module interface; "
"%select{the compiler that produced it, '%2', may have used features "
"that aren't supported by this compiler, '%3'"
"|it may have been damaged or it may have triggered a bug in the Swift "
"compiler when it was produced}1",
(StringRef, bool, StringRef, StringRef))
ERROR(serialization_malformed_module,Fatal,
"malformed compiled module: %0", (StringRef))
ERROR(serialization_module_too_new,Fatal,
"compiled module was created by a newer version of the compiler: %0",
(StringRef))
ERROR(serialization_module_language_version_mismatch,Fatal,
"module compiled with Swift %0 cannot be imported by the Swift %1 "
"compiler: %2",
(StringRef, StringRef, StringRef))
ERROR(serialization_module_too_old,Fatal,
"compiled module was created by an older version of the compiler; "
"rebuild %0 and try again: %1",
(Identifier, StringRef))
ERROR(serialization_missing_single_dependency,Fatal,
"missing required module '%0'", (StringRef))
ERROR(serialization_missing_dependencies,Fatal,
"missing required modules: %0", (StringRef))
ERROR(serialization_circular_dependency,Fatal,
"circular dependency between modules '%0' and %1",
(StringRef, Identifier))
ERROR(serialization_missing_underlying_module,Fatal,
"cannot load underlying module for %0", (Identifier))
ERROR(serialization_name_mismatch,Fatal,
"cannot load module '%0' as '%1'", (StringRef, StringRef))
ERROR(serialization_name_mismatch_repl,none,
"cannot load module '%0' as '%1'", (StringRef, StringRef))
ERROR(serialization_target_incompatible,Fatal,
"module %0 was created for incompatible target %1: %2",
(Identifier, StringRef, StringRef))
ERROR(serialization_target_incompatible_repl,none,
"module %0 was created for incompatible target %1: %2",
(Identifier, StringRef, StringRef))
ERROR(serialization_target_too_new,Fatal,
"compiling for %0 %1, but module %2 has a minimum "
"deployment target of %0 %3: %4",
(StringRef, llvm::VersionTuple, Identifier, llvm::VersionTuple,
StringRef))
ERROR(serialization_target_too_new_repl,none,
"compiling for %0 %1, but module %2 has a minimum "
"deployment target of %0 %3: %4",
(StringRef, llvm::VersionTuple, Identifier, llvm::VersionTuple,
StringRef))
ERROR(serialization_fatal,Fatal,
"fatal error encountered while reading from module '%0'; "
"please file a bug report with your project and the crash log",
(StringRef))
NOTE(serialization_compatibility_version_mismatch,none,
"compiling as Swift %0, with '%1' built as Swift %2 "
"(this is supported but may expose additional compiler issues)",
(StringRef, StringRef, StringRef))
ERROR(reserved_member_name,none,
"type member must not be named %0, since it would conflict with the"
" 'foo.%1' expression", (DeclName, StringRef))
ERROR(invalid_redecl,none,"invalid redeclaration of %0", (DeclName))
ERROR(invalid_redecl_init,none,
"invalid redeclaration of synthesized %select{|memberwise }1%0",
(DeclName, bool))
WARNING(invalid_redecl_swift5_warning,none,
"redeclaration of %0 is deprecated and will be an error in Swift 5",
(DeclName))
NOTE(invalid_redecl_prev,none,
"%0 previously declared here", (DeclName))
ERROR(ambiguous_type_base,none,
"%0 is ambiguous for type lookup in this context", (DeclNameRef))
ERROR(invalid_member_type,none,
"%0 is not a member type of %1", (DeclNameRef, Type))
ERROR(invalid_member_type_suggest,none,
"%0 does not have a member type named %1; did you mean %2?",
(Type, DeclNameRef, DeclName))
ERROR(invalid_member_reference,none,
"%0 %1 is not a member type of %2",
(DescriptiveDeclKind, DeclName, Type))
ERROR(ambiguous_member_type,none,
"ambiguous type name %0 in %1", (DeclNameRef, Type))
ERROR(no_module_type,none,
"no type named %0 in module %1", (DeclNameRef, Identifier))
ERROR(ambiguous_module_type,none,
"ambiguous type name %0 in module %1", (DeclNameRef, Identifier))
ERROR(use_nonmatching_operator,none,
"%0 is not a %select{binary|prefix unary|postfix unary}1 operator",
(DeclNameRef, unsigned))
ERROR(unsupported_recursion_in_associated_type_reference,none,
"unsupported recursion for reference to %select{associated type|type alias}0 %1 of type %2",
(bool, DeclName, Type))
ERROR(broken_associated_type_witness,none,
"reference to invalid %select{associated type|type alias}0 %1 of type %2",
(bool, DeclName, Type))
ERROR(unspaced_binary_operator_fixit,none,
"missing whitespace between %0 and %1 operators",
(Identifier, Identifier, bool))
ERROR(unspaced_binary_operator,none,
"ambiguous missing whitespace between unary and binary operators", ())
NOTE(unspaced_binary_operators_candidate,none,
"could be %select{binary|postfix}2 %0 and %select{prefix|binary}2 %1",
(Identifier, Identifier, bool))
ERROR(unspaced_unary_operator,none,
"unary operators must not be juxtaposed; parenthesize inner expression",
())
ERROR(use_unresolved_identifier,none,
"use of unresolved %select{identifier|operator}1 %0", (DeclNameRef, bool))
ERROR(use_unresolved_identifier_corrected,none,
"use of unresolved %select{identifier|operator}1 %0; did you mean '%2'?",
(DeclNameRef, bool, StringRef))
NOTE(confusable_character,none,
"%select{identifier|operator}0 '%1' contains possibly confused characters; "
"did you mean to use '%2'?",
(bool, StringRef, StringRef))
ERROR(use_undeclared_type,none,
"use of undeclared type %0", (DeclNameRef))
ERROR(use_undeclared_type_did_you_mean,none,
"use of undeclared type %0; did you mean to use '%1'?", (DeclNameRef, StringRef))
NOTE(note_typo_candidate_implicit_member,none,
"did you mean the implicitly-synthesized %1 '%0'?", (StringRef, StringRef))
NOTE(note_remapped_type,none,
"did you mean to use '%0'?", (StringRef))
NOTE(note_module_as_type,none,
"cannot use module %0 as a type", (Identifier))
ERROR(use_unknown_object_literal_protocol,none,
"cannot deduce protocol for %0 literal", (StringRef))
ERROR(object_literal_default_type_missing,none,
"could not infer type of %0 literal", (StringRef))
NOTE(object_literal_resolve_import,none,
"import %0 to use '%1' as the default %2 literal type",
(StringRef, StringRef, StringRef))
ERROR(use_local_before_declaration,none,
"use of local variable %0 before its declaration", (DeclNameRef))
ERROR(unsupported_existential_type,none,
"protocol %0 can only be used as a generic constraint because it has "
"Self or associated type requirements", (Identifier))
ERROR(decl_does_not_exist_in_module,none,
"%select{%error|type|struct|class|enum|protocol|variable|function}0 "
"%1 does not exist in module %2",
(/*ImportKind*/ unsigned, Identifier, Identifier))
ERROR(imported_decl_is_wrong_kind,none,
"%0 was imported as '%1', but is "
"%select{%error|a type|a struct|a class|an enum|a protocol|a variable|"
"a function}2",
(Identifier, StringRef, /*ImportKind*/ unsigned))
ERROR(imported_decl_is_wrong_kind_typealias,none,
"%0 %1 cannot be imported as '%2'",
(DescriptiveDeclKind, Type, StringRef))
ERROR(ambiguous_decl_in_module,none,
"ambiguous name %0 in module %1", (Identifier, Identifier))
ERROR(module_not_testable,Fatal,
"module %0 was not compiled for testing", (Identifier))
ERROR(module_not_compiled_for_private_import,none,
"module %0 was not compiled for private import", (Identifier))
ERROR(import_implementation_cannot_be_exported,none,
"module %0 cannot be both exported and implementation-only", (Identifier))
WARNING(module_not_compiled_with_library_evolution,none,
"module %0 was not compiled with library evolution support; "
"using it means binary compatibility for %1 can't be guaranteed",
(Identifier, Identifier))
REMARK(cross_import_added,none,
"import of %0 and %1 triggered a cross-import of %2",
(Identifier, Identifier, Identifier))
// Operator decls
ERROR(ambiguous_operator_decls,none,
"ambiguous operator declarations found for operator", ())
NOTE(found_this_operator_decl,none,
"found this matching operator declaration", ())
ERROR(operator_redeclared,none,
"operator redeclared", ())
NOTE(previous_operator_decl,none,
"previous operator declaration here", ())
ERROR(declared_operator_without_operator_decl,none,
"operator implementation without matching operator declaration", ())
ERROR(declared_unary_op_without_attribute,none,
"unary operator implementation must have a 'prefix' or 'postfix' modifier", ())
ERROR(unary_op_missing_prepos_attribute,none,
"%select{prefix|postfix}0 unary operator missing "
"'%select{prefix|postfix}0' modifier", (bool))
NOTE(unary_operator_declaration_here,none,
"%select{prefix|postfix}0 operator found here", (bool))
ERROR(invalid_arg_count_for_operator,none,
"operators must have one or two arguments", ())
ERROR(operator_in_local_scope,none,
"operator functions can only be declared at global or in type scope", ())
ERROR(nonstatic_operator_in_nominal,none,
"operator %0 declared in type %1 must be 'static'",
(Identifier, DeclName))
ERROR(nonstatic_operator_in_extension,none,
"operator %0 declared in extension of %1 must be 'static'",
(Identifier, TypeRepr*))
ERROR(nonfinal_operator_in_class,none,
"operator %0 declared in non-final class %1 must be 'final'",
(Identifier, Type))
ERROR(operator_in_unrelated_type,none,
"member operator %2%select{| of protocol %0}1 must have at least one "
"argument of type %select{%0|'Self'}1", (Type, bool, DeclName))
// Precedence groups
ERROR(ambiguous_precedence_groups,none,
"multiple precedence groups found", ())
NOTE(found_this_precedence_group,none,
"found this matching precedence group", ())
ERROR(unknown_precedence_group,none,
"unknown precedence group %0", (Identifier))
ERROR(precedence_group_cycle,none,
"cycle in '%select{lowerThan|higherThan}0' relation", (bool))
ERROR(higher_than_precedence_group_cycle,none,
"cycle in higherThan relation: %0", (StringRef))
ERROR(precedence_group_lower_within_module,none,
"precedence group cannot be given lower precedence than group in same"
" module; make the other precedence group higher than this one instead",
())
ERROR(precedence_group_redeclared,none,
"precedence group redeclared", ())
NOTE(previous_precedence_group_decl,none,
"previous precedence group declaration here", ())
NOTE(circular_reference_through_precedence_group, none,
"through reference to precedence group %0 here", (Identifier))
//------------------------------------------------------------------------------
// MARK: Expression Type Checking Errors
//------------------------------------------------------------------------------
ERROR(tuple_types_not_convertible_nelts,none,
"%0 is not convertible to %1, "
"tuples have a different number of elements", (Type, Type))
ERROR(tuple_types_not_convertible,none,
"tuple type %0 is not convertible to tuple type %1", (Type, Type))
ERROR(invalid_force_unwrap,none,
"cannot force unwrap value of non-optional type %0", (Type))
ERROR(invalid_optional_chain,none,
"cannot use optional chaining on non-optional value of type %0",
(Type))
ERROR(if_expr_cases_mismatch,none,
"result values in '? :' expression have mismatching types %0 and %1",
(Type, Type))
ERROR(did_not_call_function_value,none,
"function value was used as a property; add () to call it",
())
ERROR(did_not_call_function,none,
"function %0 was used as a property; add () to call it",
(Identifier))
ERROR(did_not_call_method,none,
"method %0 was used as a property; add () to call it",
(Identifier))
ERROR(init_not_instance_member_use_assignment,none,
"'init' is a member of the type; use assignment "
"to initalize the value instead", ())
ERROR(init_not_instance_member,none,
"'init' is a member of the type; use 'type(of: ...)' to initialize "
"a new object of the same dynamic type", ())
ERROR(super_initializer_not_in_initializer,none,
"'super.init' cannot be called outside of an initializer", ())
WARNING(isa_is_always_true,none, "'%0' test is always true",
(StringRef))
WARNING(isa_is_foreign_check,none,
"'is' test is always true because %0 is a Core Foundation type",
(Type))
WARNING(conditional_downcast_coercion,none,
"conditional cast from %0 to %1 always succeeds",
(Type, Type))
WARNING(literal_conditional_downcast_to_coercion,none,
"conditional downcast from literal to %0 always fails; "
"consider using 'as' coercion",
(Type))
WARNING(forced_downcast_noop,none,
"forced cast of %0 to same type has no effect", (Type))
WARNING(forced_downcast_coercion,none,
"forced cast from %0 to %1 always succeeds; did you mean to use 'as'?",
(Type, Type))
// Note: the Boolean at the end indicates whether bridging is required after
// the cast.
WARNING(downcast_same_type,none,
"forced cast from %0 to %1 %select{only unwraps optionals|only unwraps "
"and bridges}3; did you mean to use '%2'%select{| with 'as'}3?",
(Type, Type, StringRef, bool))
// The unsigned value can be 0 (types are equal), 1 (types implicitly convert),
// or 2 (types bridge).
WARNING(conditional_downcast_same_type,none,
"conditional downcast from %0 to %1 %select{does nothing|"
"is equivalent to an implicit conversion to an optional %1|is a "
"bridging conversion; did you mean to use 'as'?}2",
(Type, Type, unsigned))
WARNING(is_expr_same_type,none,
"checking a value with optional type %0 against dynamic type %1 "
"succeeds whenever the value is non-nil; did you mean to use "
"'!= nil'?", (Type, Type))
WARNING(downcast_to_unrelated,none,
"cast from %0 to unrelated type %1 always fails", (Type, Type))
NOTE(downcast_to_unrelated_fixit,none,
"did you mean to call %0 with '()'?", (Identifier))
ERROR(downcast_to_more_optional,none,
"cannot downcast from %0 to a more optional type %1",
(Type, Type))
ERROR(optional_chain_noop,none,
"optional chain has no effect, expression already produces %0",
(Type))
ERROR(optional_chain_isnt_chaining,none,
"'?' must be followed by a call, member lookup, or subscript",
())
ERROR(pattern_in_expr,none,
"%0 cannot appear in an expression", (PatternKind))
NOTE(note_call_to_operator,none,
"in call to operator %0", (DeclName))
NOTE(note_call_to_func,none,
"in call to function %0", (DeclName))
NOTE(note_call_to_subscript,none,
"in call to %0", (DeclName))
NOTE(note_call_to_initializer,none,
"in call to initializer", ())
NOTE(note_init_parameter,none,
"in initialization of parameter %0", (Identifier))
ERROR(missing_nullary_call,none,
"function produces expected type %0; did you mean to call it with '()'?",
(Type))
ERROR(optional_not_unwrapped,none,
"value of optional type %0 must be unwrapped to a value of type %1",
(Type, Type))
NOTE(unwrap_with_default_value,none,
"coalesce using '?" "?' to provide a default when the optional value "
"contains 'nil'", ())
NOTE(unwrap_with_force_value,none,
"force-unwrap using '!' to abort execution if the optional value contains "
"'nil'", ())
NOTE(unwrap_iuo_initializer,none,
"value inferred to be type %0 when initialized with an implicitly "
"unwrapped value", (Type))
NOTE(unwrap_with_guard,none,
"short-circuit using 'guard' to exit this function early "
"if the optional value contains 'nil'", ())
ERROR(optional_base_not_unwrapped,none,
"value of optional type %0 must be unwrapped to refer to member %1 of "
"wrapped base type %2", (Type, DeclNameRef, Type))
NOTE(optional_base_chain,none,
"chain the optional using '?' to access member %0 only for non-'nil' "
"base values", (DeclNameRef))
ERROR(missing_unwrap_optional_try,none,
"value of optional type %0 not unwrapped; did you mean to use 'try!' "
"or chain with '?'?",
(Type))
ERROR(missing_forced_downcast,none,
"%0 is not convertible to %1; "
"did you mean to use 'as!' to force downcast?", (Type, Type))
WARNING(coercion_may_fail_warning,none,
"coercion from %0 to %1 may fail; use 'as?' or 'as!' instead",
(Type, Type))
ERROR(missing_explicit_conversion,none,
"%0 is not implicitly convertible to %1; "
"did you mean to use 'as' to explicitly convert?", (Type, Type))
ERROR(missing_address_of,none,
"passing value of type %0 to an inout parameter requires explicit '&'",
(Type))
ERROR(missing_address_of_yield,none,
"yielding mutable value of type %0 requires explicit '&'",
(Type))
ERROR(extraneous_address_of,none,
"use of extraneous '&'",
())
ERROR(extra_address_of,none,
"'&' used with non-inout argument of type %0",
(Type))
ERROR(extra_address_of_unsafepointer,none,
"'&' is not allowed passing array value as %0 argument",
(Type))
ERROR(cannot_pass_inout_arg_to_subscript,none,
"cannot pass an inout argument to a subscript; use "
"'withUnsafeMutablePointer' to explicitly convert argument "
"to a pointer", ())
ERROR(incorrect_property_wrapper_reference,none,
"cannot convert value %0 of type %1 to expected type %2, "
"use %select{wrapper|wrapped value}3 instead",
(Identifier, Type, Type, bool))
ERROR(incorrect_property_wrapper_reference_member,none,
"referencing %0 %1 requires %select{wrapper|wrapped value of type}2 %3",
(DescriptiveDeclKind, DeclName, bool, Type))
ERROR(missing_init_on_metatype_initialization,none,
"initializing from a metatype value must reference 'init' explicitly",
())
ERROR(extra_argument_labels,none,
"extraneous argument label%select{|s}0 '%1' in %select{call|subscript}2",
(bool, StringRef, bool))
ERROR(missing_argument_labels,none,
"missing argument label%select{|s}0 '%1' in %select{call|subscript}2",
(bool, StringRef, bool))
ERROR(wrong_argument_labels,none,
"incorrect argument label%select{|s}0 in %select{call|subscript}3 "
"(have '%1', expected '%2')",
(bool, StringRef, StringRef, bool))
ERROR(argument_out_of_order_named_named,none,
"argument %0 must precede argument %1", (Identifier, Identifier))
ERROR(argument_out_of_order_named_unnamed,none,
"argument %0 must precede unnamed argument #%1", (Identifier, unsigned))
ERROR(argument_out_of_order_unnamed_named,none,
"unnamed argument #%0 must precede argument %1", (unsigned, Identifier))
ERROR(argument_out_of_order_unnamed_unnamed,none,
"unnamed argument #%0 must precede unnamed argument #%1",
(unsigned, unsigned))
ERROR(argument_out_of_order_binary_op,none,
"operator argument #%0 must precede operator argument #%1",
(unsigned, unsigned))
NOTE(candidate_expected_different_labels,none,
"incorrect labels for candidate (have: '%0', expected: '%1')",
(StringRef, StringRef))
ERROR(member_shadows_function,none,
"use of %0 refers to %1 rather than %2 %3",
(DeclNameRef, DescriptiveDeclKind, DescriptiveDeclKind, DeclName))
ERROR(member_shadows_global_function,none,
"use of %0 refers to %1 rather than %2 %3 in module %4",
(DeclNameRef, DescriptiveDeclKind, DescriptiveDeclKind, DeclName, DeclName))
ERROR(instance_member_use_on_type,none,
"instance member %1 cannot be used on type %0; "
"did you mean to use a value of this type instead?", (Type, DeclNameRef))
ERROR(instance_member_in_initializer,none,
"cannot use instance member %0 within property initializer; "
"property initializers run before 'self' is available", (DeclNameRef))
ERROR(instance_member_in_default_parameter,none,
"cannot use instance member %0 as a default parameter", (DeclNameRef))
ERROR(missing_argument_named,none,
"missing argument for parameter %0 in call", (Identifier))
ERROR(missing_argument_positional,none,
"missing argument for parameter #%0 in call", (unsigned))
ERROR(missing_arguments_in_call,none,
"missing arguments for parameters %0 in call", (StringRef))
ERROR(extra_argument_named,none,
"extra argument %0 in call", (Identifier))
ERROR(extra_argument_positional,none,
"extra argument in call", ())
ERROR(extra_arguments_in_call,none,
"extra arguments at positions %0 in call", (StringRef))
ERROR(extra_argument_to_nullary_call,none,
"argument passed to call that takes no arguments", ())
ERROR(extra_trailing_closure_in_call,none,
"extra trailing closure passed in call", ())
ERROR(trailing_closure_bad_param,none,
"trailing closure passed to parameter of type %0 that does not "
"accept a closure", (Type))
NOTE(candidate_with_extraneous_args,none,
"candidate %0 requires %1 argument%s1, "
"but %2 %select{were|was}3 %select{provided|used in closure body}4",
(Type, unsigned, unsigned, bool, bool))
ERROR(no_accessible_initializers,none,
"%0 cannot be constructed because it has no accessible initializers",
(Type))
ERROR(non_nominal_no_initializers,none,
"non-nominal type %0 does not support explicit initialization",
(Type))
ERROR(unbound_generic_parameter,none,
"generic parameter %0 could not be inferred", (Type))
ERROR(unbound_generic_parameter_cast,none,
"generic parameter %0 could not be inferred in cast to %1", (Type, Type))
NOTE(archetype_declared_in_type,none,
"%0 declared as parameter to type %1", (Type, Type))
NOTE(unbound_generic_parameter_explicit_fix,none,
"explicitly specify the generic arguments to fix this issue", ())
ERROR(invalid_dynamic_callable_type,none,
"@dynamicCallable attribute requires %0 to have either a valid "
"'dynamicallyCall(withArguments:)' method or "
"'dynamicallyCall(withKeywordArguments:)' method", (Type))
ERROR(missing_dynamic_callable_kwargs_method,none,
"@dynamicCallable type %0 cannot be applied with keyword arguments; "
"missing 'dynamicCall(withKeywordArguments:)' method", (Type))
ERROR(invalid_dynamic_member_lookup_type,none,
"@dynamicMemberLookup attribute requires %0 to have a "
"'subscript(dynamicMember:)' method that accepts either "
"'ExpressibleByStringLiteral' or a key path", (Type))
NOTE(invalid_dynamic_member_subscript, none,
"add an explicit argument label to this subscript to satisfy "
"the @dynamicMemberLookup requirement", ())
ERROR(string_index_not_integer,none,
"String must not be indexed with %0, it has variable size elements",
(Type))
NOTE(string_index_not_integer_note,none,
"consider using an existing high level algorithm, "
"str.startIndex.advanced(by: n), or a projection like str.utf8", ())
ERROR(invalid_c_function_pointer_conversion_expr,none,
"a C function pointer can only be formed from a reference to a 'func' or "
"a literal closure", ())
ERROR(c_function_pointer_from_method,none,
"a C function pointer cannot be formed from a method", ())
ERROR(c_function_pointer_from_generic_function,none,
"a C function pointer cannot be formed from a reference to a generic "
"function", ())
ERROR(unsupported_linear_to_differentiable_conversion,none,
"conversion from '@differentiable(linear)' to '@differentiable' is not "
"yet supported", ())
ERROR(invalid_autoclosure_forwarding,none,
"add () to forward @autoclosure parameter", ())
ERROR(invalid_differentiable_function_conversion_expr,none,
"a '@differentiable%select{|(linear)}0' function can only be formed from "
"a reference to a 'func' or 'init' or a literal closure", (bool))
NOTE(invalid_differentiable_function_conversion_parameter,none,
"did you mean to take a '%0' closure?", (StringRef))
ERROR(invalid_autoclosure_pointer_conversion,none,
"cannot perform pointer conversion of value of type %0 to autoclosure "
"result type %1",
(Type, Type))
//------------------------------------------------------------------------------
// MARK: Type Check Declarations
//------------------------------------------------------------------------------
ERROR(missing_initializer_def,PointsToFirstBadToken,
"initializer requires a body", ())
WARNING(pound_warning, none, "%0", (StringRef))
ERROR(pound_error, none, "%0", (StringRef))
// Attributes
ERROR(operator_not_func,none,
"operators must be declared with 'func'", ())
ERROR(redefining_builtin_operator,none,
"cannot declare a custom %0 '%1' operator", (StringRef, StringRef))
ERROR(attribute_requires_operator_identifier,none,
"'%0' requires a function with an operator identifier", (StringRef))
ERROR(attribute_requires_single_argument,none,
"'%0' requires a function with one argument", (StringRef))
ERROR(nominal_type_not_attribute,none,
"%0 %1 cannot be used as an attribute", (DescriptiveDeclKind, DeclName))
ERROR(mutating_invalid_global_scope,none, "%0 is only valid on methods",
(SelfAccessKind))
ERROR(mutating_invalid_classes,none, "%0 isn't valid on methods in "
"classes or class-bound protocols", (SelfAccessKind))
ERROR(functions_mutating_and_not,none,
"method must not be declared both %0 and %1",
(SelfAccessKind, SelfAccessKind))
ERROR(static_functions_not_mutating,none,
"static functions must not be declared mutating", ())
ERROR(modify_mutatingness_differs_from_setter,none,
"'modify' accessor cannot be %0 when the setter is %1",
(SelfAccessKind, SelfAccessKind))
ERROR(transparent_in_protocols_not_supported,none,
"'@_transparent' attribute is not supported on declarations within protocols", ())
ERROR(transparent_in_classes_not_supported,none,
"'@_transparent' attribute is not supported on declarations within classes", ())
ERROR(invalid_iboutlet,none,
"only instance properties can be declared @IBOutlet", ())
ERROR(iboutlet_nonobjc_class,none,
"@IBOutlet property cannot %select{have|be an array of}0 "
"non-'@objc' class type %1", (bool, Type))
ERROR(iboutlet_nonobjc_protocol,none,
"@IBOutlet property cannot %select{have|be an array of}0 "
"non-'@objc' protocol type %1", (bool, Type))
ERROR(iboutlet_nonobject_type,none,
"@IBOutlet property cannot %select{have|be an array of}0 "
"non-object type %1", (bool, Type))
ERROR(iboutlet_only_mutable,none,
"@IBOutlet attribute requires property to be mutable", ())
ERROR(iboutlet_non_optional,none,
"@IBOutlet property has non-optional type %0", (Type))
NOTE(note_make_optional,none,
"add '?' to form the optional type %0", (Type))
NOTE(note_make_implicitly_unwrapped_optional,none,
"add '!' to form an implicitly unwrapped optional", ())
ERROR(invalid_ibdesignable_extension,none,
"@IBDesignable can only be applied to classes and extensions "
"of classes", ())
ERROR(invalid_ibinspectable,none,
"only instance properties can be declared @%0", (StringRef))
ERROR(invalid_ibaction_decl,none,
"only instance methods can be declared @%0", (StringRef))
ERROR(invalid_ibaction_result,none,
"methods declared @%0 must %select{|not }1return a value", (StringRef, bool))
ERROR(invalid_ibaction_argument_count,none,
"@%0 methods must have %1 to %2 arguments",
(StringRef, int, int))
ERROR(invalid_ibaction_argument_count_exact,none,
"@%0 methods must have %2 argument%s2",
(StringRef, int, int))
ERROR(invalid_ibaction_argument_count_max,none,
"@%0 methods must have at most %2 argument%s2",
(StringRef, int, int))
ERROR(ibsegueaction_objc_method_family,none,
"@%0 method cannot have selector %1 because it has special memory "
"management behavior", (StringRef, ObjCSelector))
NOTE(fixit_rename_in_swift,none,
"change Swift name to %0", (DeclName))
NOTE(fixit_rename_in_objc,none,
"change Objective-C selector to %0", (ObjCSelector))
ERROR(no_objc_tagged_pointer_not_class_protocol,none,
"@unsafe_no_objc_tagged_pointer can only be applied to class protocols",
())
ERROR(swift_native_objc_runtime_base_not_on_root_class,none,
"@_swift_native_objc_runtime_base_not_on_root_class can only be applied "
"to root classes", ())
ERROR(cdecl_not_at_top_level,none,
"@_cdecl can only be applied to global functions", ())
ERROR(cdecl_empty_name,none,
"@_cdecl symbol name cannot be empty", ())
ERROR(cdecl_throws,none,
"raising errors from @_cdecl functions is not supported", ())
ERROR(attr_methods_only,none,
"only methods can be declared %0", (DeclAttribute))
ERROR(access_control_in_protocol,none,
"%0 modifier cannot be used in protocols", (DeclAttribute))
NOTE(access_control_in_protocol_detail,none,
"protocol requirements implicitly have the same access as the "
"protocol itself", ())
ERROR(access_control_setter,none,
"'%select{private|fileprivate|internal|public|open}0(set)' modifier can only "
"be applied to variables and subscripts",
(AccessLevel))
ERROR(access_control_setter_read_only,none,
"'%select{private|fileprivate|internal|public|%error}0(set)' modifier cannot be "
"applied to %select{constants|read-only variables|read-only properties"
"|read-only subscripts}1",
(AccessLevel, unsigned))
ERROR(access_control_setter_more,none,
"%select{private|fileprivate|internal|public|%error}0 "
"%select{variable|property|subscript}1 cannot have "
"%select{%error|a fileprivate|an internal|a public|an open}2 setter",
(AccessLevel, unsigned, AccessLevel))
WARNING(access_control_setter_redundant,none,
"'%select{private|fileprivate|internal|public|open}0(set)' modifier is "
"redundant for %select{a private|a fileprivate|an internal|a public|an open}2 "
"%1",
(AccessLevel, DescriptiveDeclKind, AccessLevel))
WARNING(access_control_ext_member_more,none,
"'%select{%error|fileprivate|internal|public|open}0' modifier conflicts "
"with extension's default access of "
"'%select{private|fileprivate|internal|public|%error}1'",
(AccessLevel, AccessLevel))
WARNING(access_control_ext_member_redundant,none,
"'%select{%error|fileprivate|internal|public|%error}0' modifier is redundant "
"for %1 declared in %select{a private (equivalent to fileprivate)|a fileprivate"
"|an internal|a public|%error}2 extension",
(AccessLevel, DescriptiveDeclKind, AccessLevel))
ERROR(access_control_ext_requirement_member_more,none,
"cannot declare %select{%error|a fileprivate|an internal|a public|an open}0 %1 "
"in an extension with %select{private|fileprivate|internal|public|%error}2 "
"requirements",
(AccessLevel, DescriptiveDeclKind, AccessLevel))
ERROR(access_control_extension_more,none,
"extension of %select{private|fileprivate|internal|%error|%error}0 %1 cannot "
"be declared %select{%error|fileprivate|internal|public|%error}2",
(AccessLevel, DescriptiveDeclKind, AccessLevel))
ERROR(access_control_extension_open,none,
"extensions cannot use 'open' as their default access; use 'public'",
())
ERROR(access_control_open_bad_decl,none,
"only classes and overridable class members can be declared 'open';"
" use 'public'", ())
ERROR(invalid_decl_attribute,none,
"'%0' attribute cannot be applied to this declaration", (DeclAttribute))
ERROR(invalid_decl_modifier,none,
"%0 modifier cannot be applied to this declaration", (DeclAttribute))
ERROR(attribute_does_not_apply_to_type,none,
"attribute does not apply to type", ())
ERROR(optional_attribute_non_protocol,none,
"'optional' can only be applied to protocol members", ())
ERROR(optional_attribute_non_objc_protocol,none,
"'optional' can only be applied to members of an @objc protocol", ())
ERROR(optional_attribute_missing_explicit_objc,none,
"'optional' requirements are an Objective-C compatibility feature; add '@objc'",
())
ERROR(objcmembers_attribute_nonclass,none,
"'@objcMembers' attribute can only be applied to a class", ())
ERROR(optional_attribute_initializer,none,
"'optional' cannot be applied to an initializer", ())
ERROR(unavailable_method_non_objc_protocol,none,
"protocol members can only be marked unavailable in an @objc protocol",
())
ERROR(missing_in_class_init_1,none,
"stored property %0 requires an initial value%select{| or should be "
"@NSManaged}1", (Identifier, bool))
ERROR(missing_in_class_init_2,none,
"stored properties %0 and %1 require initial values%select{| or should "
"be @NSManaged}2",
(Identifier, Identifier, bool))
ERROR(missing_in_class_init_3plus,none,
"stored properties %0, %1, %select{and %2|%2, and others}3 "
"require initial values%select{| or should be @NSManaged}4",
(Identifier, Identifier, Identifier, bool, bool))
NOTE(requires_stored_property_inits_here,none,
"%select{superclass|class}1 %0 requires all stored properties to have "
"initial values%select{| or use @NSManaged}2", (Type, bool, bool))
ERROR(class_without_init,none,
"class %0 has no initializers", (Type))
NOTE(note_no_in_class_init_1,none,
"stored property %0 without initial value prevents synthesized "
"initializers",
(Identifier))
NOTE(note_no_in_class_init_2,none,
"stored properties %0 and %1 without initial values prevent synthesized "
"initializers",
(Identifier, Identifier))
NOTE(note_no_in_class_init_3plus,none,
"stored properties %0, %1, %select{and %2|%2, and others}3 "
"without initial values prevent synthesized initializers",
(Identifier, Identifier, Identifier, bool))
ERROR(missing_unimplemented_init_runtime,none,
"standard library error: missing _unimplementedInitializer", ())
ERROR(missing_undefined_runtime,none,
"standard library error: missing _undefined", ())
WARNING(expr_dynamic_lookup_swift3_objc_inference,none,
"reference to %0 %1 of %2 depends on '@objc' inference "
"deprecated in Swift 4",
(DescriptiveDeclKind, DeclName, Identifier))
ERROR(inherited_default_value_not_in_designated_constructor,none,
"default value inheritance via 'super' is only valid on the parameters of "
"designated initializers", ())
ERROR(inherited_default_value_used_in_non_overriding_constructor,none,
"default value inheritance via 'super' can only be used when "
"overriding a designated initializer", ())
ERROR(corresponding_param_not_defaulted,none,
"default value inheritance via 'super' requires that the corresponding "
"parameter of the overridden designated initializer has a default value",
())
NOTE(inherited_default_param_here,none,
"corresponding parameter declared here", ())
WARNING(option_set_zero_constant,none,
"static property %0 produces an empty option set",
(Identifier))
NOTE(option_set_empty_set_init,none,
"use [] to silence this warning", ())
ERROR(originally_defined_in_dupe_platform,none,
"duplicate version number for platform %0", (StringRef))
ERROR(originally_definedin_topleve_decl,none,
"@%0 is only applicable to top-level decl", (StringRef))
ERROR(originally_definedin_need_available,none,
"need @available attribute for @%0", (StringRef))
ERROR(originally_definedin_must_after_available_version,none,
"moved version from @%0 must after introduced OS version", (StringRef))
// Alignment attribute
ERROR(alignment_not_power_of_two,none,
"alignment value must be a power of two", ())
// Enum annotations
ERROR(indirect_case_without_payload,none,
"enum case %0 without associated value cannot be 'indirect'", (Identifier))
ERROR(indirect_case_in_indirect_enum,none,
"enum case in 'indirect' enum cannot also be 'indirect'", ())
WARNING(enum_frozen_nonpublic,none,
"%0 has no effect on non-public enums", (DeclAttribute))
// Variables (var and let).
ERROR(getset_init,none,
"variable with getter/setter cannot have an initial value", ())
ERROR(unimplemented_static_var,none,
"%select{ERROR|static|class}1 stored properties not supported"
"%select{ in this context| in generic types| in classes| in protocol extensions}0"
"%select{|; did you mean 'static'?}2",
(unsigned, StaticSpellingKind, unsigned))
ERROR(observingprop_requires_initializer,none,
"non-member observing properties require an initializer", ())
ERROR(global_requires_initializer,none,
"global '%select{var|let}0' declaration requires an initializer expression"
"%select{ or getter/setter specifier|}0", (bool))
ERROR(static_requires_initializer,none,
"%select{ERROR|'static var'|'class var'|}0 declaration requires an initializer "
"expression or getter/setter specifier", (StaticSpellingKind))
ERROR(pattern_type_access,none,
"%select{%select{variable|constant}0|property}1 "
"%select{must be declared %select{"
"%select{private|fileprivate|internal|%error|%error}3|private or fileprivate}4"
"|cannot be declared "
"%select{in this context|fileprivate|internal|public|open}3}2 "
"because its type uses "
"%select{a private|a fileprivate|an internal|%error|%error}5 type",
(bool, bool, bool, AccessLevel, bool, AccessLevel))
WARNING(pattern_type_access_warn,none,
"%select{%select{variable|constant}0|property}1 "
"%select{should be declared %select{private|fileprivate|internal|%error|%error}5"
"|should not be declared %select{in this context|fileprivate|internal|public|open}3}2 "
"because its type uses "
"%select{a private|a fileprivate|an internal|%error|%error}5 type",
(bool, bool, bool, AccessLevel, bool, AccessLevel))
ERROR(pattern_type_access_inferred,none,
"%select{%select{variable|constant}0|property}1 "
"%select{must be declared %select{"
"%select{private|fileprivate|internal|%error|%error}3|private or fileprivate}4"
"|cannot be declared "
"%select{in this context|fileprivate|internal|public|open}3}2 "
"because its type %6 uses "
"%select{a private|a fileprivate|an internal|%error|%error}5 type",
(bool, bool, bool, AccessLevel, bool, AccessLevel, Type))
WARNING(pattern_type_access_inferred_warn,none,
"%select{%select{variable|constant}0|property}1 "
"%select{should be declared %select{private|fileprivate|internal|%error|%error}5"
"|should not be declared %select{in this context|fileprivate|internal|public|open}3}2 "
"because its type %6 uses "
"%select{a private|a fileprivate|an internal|%error|%error}5 type",
(bool, bool, bool, AccessLevel, bool, AccessLevel, Type))
ERROR(pattern_type_not_usable_from_inline,none,
"type referenced from a '@usableFromInline' "
"%select{%select{variable|constant}0|property}1 "
"must be '@usableFromInline' or public",
(bool, bool))
WARNING(pattern_type_not_usable_from_inline_warn,none,
"type referenced from a '@usableFromInline' "
"%select{%select{variable|constant}0|property}1 "
"should be '@usableFromInline' or public",
(bool, bool))
ERROR(pattern_type_not_usable_from_inline_frozen,none,
"type referenced from a stored property in a '@frozen' struct must "
"be '@usableFromInline' or public",
(/*ignored*/bool, /*ignored*/bool))
ERROR(pattern_type_not_usable_from_inline_inferred,none,
"type referenced from a '@usableFromInline' "
"%select{%select{variable|constant}0|property}1 "
"with inferred type %2 "
"must be '@usableFromInline' or public",
(bool, bool, Type))
WARNING(pattern_type_not_usable_from_inline_inferred_warn,none,
"type referenced from a '@usableFromInline' "
"%select{%select{variable|constant}0|property}1 "
"with inferred type %2 "
"should be '@usableFromInline' or public",
(bool, bool, Type))
ERROR(pattern_type_not_usable_from_inline_inferred_frozen,none,
"type referenced from a stored property with inferred type %2 in a "
"'@frozen' struct must be '@usableFromInline' or public",
(/*ignored*/bool, /*ignored*/bool, Type))
ERROR(pattern_binds_no_variables,none,
"%select{property|global variable}0 declaration does not bind any "
"variables",
(unsigned))
ERROR(variable_bound_by_no_pattern,none,
"variable %0 is not bound by any pattern",
(DeclName))
WARNING(optional_ambiguous_case_ref,none,
"assuming you mean '%0.%2'; did you mean '%1.%2' instead?",
(StringRef, StringRef, StringRef))
NOTE(optional_fixit_ambiguous_case_ref,none,
"explicitly specify 'Optional' to silence this warning", ())
NOTE(optional_fixit_ambiguous_case_ref_switch,none,
"use 'nil' to silence this warning", ())
NOTE(type_fixit_optional_ambiguous_case_ref,none,
"use '%0.%1' instead", (StringRef, StringRef))
NOTE(type_fixit_optional_ambiguous_case_ref_switch,none,
"use '%0' instead", (StringRef))
ERROR(nscoding_unstable_mangled_name,none,
"%select{private|fileprivate|nested|local}0 class %1 has an "
"unstable name when archiving via 'NSCoding'",
(unsigned, Type))
NOTE(unstable_mangled_name_add_objc_new,none,
"for new classes, use '@objc' to specify a unique, prefixed Objective-C "
"runtime name", ())
NOTE(unstable_mangled_name_add_objc,none,
"for compatibility with existing archives, use '@objc' "
"to record the Swift 3 runtime name", ())
// Generic declarations
ERROR(unsupported_type_nested_in_generic_function,none,
"type %0 cannot be nested in generic function %1",
(Identifier, DeclName))
ERROR(unsupported_type_nested_in_generic_closure,none,
"type %0 cannot be nested in closure in generic context",
(Identifier))
ERROR(unsupported_type_nested_in_protocol,none,
"type %0 cannot be nested in protocol %1",
(Identifier, Identifier))
ERROR(unsupported_type_nested_in_protocol_extension,none,
"type %0 cannot be nested in protocol extension of %1",
(Identifier, Identifier))
ERROR(unsupported_nested_protocol,none,
"protocol %0 cannot be nested inside another declaration",
(Identifier))
ERROR(where_nongeneric_ctx,none,
"'where' clause on non-generic member declaration requires a "
"generic context", ())
ERROR(where_nongeneric_toplevel,none,
"'where' clause cannot be applied to a non-generic top-level "
"declaration", ())
// Type aliases
ERROR(type_alias_underlying_type_access,none,
"type alias %select{must be declared %select{"
"%select{private|fileprivate|internal|%error|%error}1|private or fileprivate}3"
"|cannot be declared "
"%select{in this context|fileprivate|internal|public|open}1}0 "
"because its underlying type uses "
"%select{a private|a fileprivate|an internal|%error|%error}2 type",
(bool, AccessLevel, AccessLevel, bool))
WARNING(type_alias_underlying_type_access_warn,none,
"type alias %select{should be declared "
"%select{private|fileprivate|internal|%error|%error}1"
"|should not be declared "
"%select{in this context|fileprivate|internal|public|open}1}0 "
"because its underlying type uses "
"%select{a private|a fileprivate|an internal|%error|%error}2 type",
(bool, AccessLevel, AccessLevel, bool))
ERROR(type_alias_underlying_type_not_usable_from_inline,none,
"type referenced from the underlying type of a "
"'@usableFromInline' type alias "
"must be '@usableFromInline' or public",
())
WARNING(type_alias_underlying_type_not_usable_from_inline_warn,none,
"type referenced from the underlying type of a "
"'@usableFromInline' type alias "
"should be '@usableFromInline' or public",
())
// Subscripts
ERROR(subscript_type_access,none,
"subscript %select{must be declared "
"%select{private|fileprivate|internal|%error|%error}1"
"|cannot be declared "
"%select{in this context|fileprivate|internal|public|open}1}0 "
"because its %select{index|element type}3 uses "
"%select{a private|a fileprivate|an internal|%error|%error}2 type",
(bool, AccessLevel, AccessLevel, bool))
WARNING(subscript_type_access_warn,none,
"subscript %select{should be declared "
"%select{private|fileprivate|internal|%error|%error}1"
"|should not be declared %select{in this context|fileprivate|internal|public|open}1}0 "
"because its %select{index|element type}3 uses "
"%select{a private|a fileprivate|an internal|%error|%error}2 type",
(bool, AccessLevel, AccessLevel, bool))
ERROR(subscript_type_usable_from_inline,none,
"%select{index type|element type}0 of a '@usableFromInline' subscript "
"must be '@usableFromInline' or public",
(bool))
WARNING(subscript_type_usable_from_inline_warn,none,
"%select{index type|element type}0 of a '@usableFromInline' subscript "
"should be '@usableFromInline' or public",
(bool))
// Functions
ERROR(function_type_access,none,
"%select{function|method|initializer}4 "
"%select{must be declared %select{"
"%select{private|fileprivate|internal|%error|%error}1|private or fileprivate}2"
"|cannot be declared "
"%select{in this context|fileprivate|internal|public|open}1}0 "
"because its %select{parameter|result}5 uses "
"%select{a private|a fileprivate|an internal|an '@_spi'|an '@_spi'}3 type",
(bool, AccessLevel, bool, AccessLevel, unsigned, bool))
ERROR(function_type_spi,none,
"%select{function|method|initializer}0 "
"cannot be declared '@_spi' "
"because its %select{parameter|result}1 uses "
"%select{a private|a fileprivate|an internal|a public|an open}2 type"
"%select{| that is not '@_spi'}3",
(unsigned, bool, AccessLevel, bool))
WARNING(function_type_access_warn,none,
"%select{function|method|initializer}4 "
"%select{should be declared %select{private|fileprivate|internal|%error|%error}1"
"|should not be declared %select{in this context|fileprivate|internal|public|open}1}0 "
"because its %select{parameter|result}5 uses "
"%select{a private|a fileprivate|an internal|%error|%error}3 type",
(bool, AccessLevel, bool, AccessLevel, unsigned, bool))
ERROR(function_type_usable_from_inline,none,
"the %select{parameter|result}1 of a "
"'@usableFromInline' %select{function|method|initializer}0 "
"must be '@usableFromInline' or public",
(unsigned, bool))
WARNING(function_type_usable_from_inline_warn,none,
"the %select{parameter|result}1 of a "
"'@usableFromInline' %select{function|method|initializer}0 "
"should be '@usableFromInline' or public",
(unsigned, bool))
ERROR(spi_attribute_on_non_public,none,
"%select{private|fileprivate|internal|%error|%error}0 %1 "
"cannot be declared '@_spi' because only public and open "
"declarations can be '@_spi'",
(AccessLevel, DescriptiveDeclKind))
// Opaque return types
ERROR(opaque_type_invalid_constraint,none,
"an 'opaque' type must specify only 'Any', 'AnyObject', protocols, "
"and/or a base class", ())
ERROR(inferred_opaque_type,none,
"property definition has inferred type %0, involving the 'some' "
"return type of another declaration", (Type))
// Extensions
ERROR(non_nominal_extension,none,
"non-nominal type %0 cannot be extended", (Type))
WARNING(composition_in_extended_type,none,
"extending a protocol composition is not supported; extending %0 "
"instead", (Type))
NOTE(composition_in_extended_type_alternative,none,
"did you mean to extend the most specific type %0 instead?", (Type))
ERROR(extension_access_with_conformances,none,
"%0 modifier cannot be used with extensions that declare "
"protocol conformances", (DeclAttribute))
ERROR(extension_metatype,none,
"cannot extend a metatype %0", (Type))
ERROR(extension_specialization,none,
"constrained extension must be declared on the unspecialized generic "
"type %0 with constraints specified by a 'where' clause", (Identifier))
ERROR(extension_stored_property,none,
"extensions must not contain stored properties", ())
NOTE(extension_stored_property_fixit,none,
"Remove '=' to make %0 a computed property", (Identifier))
ERROR(extension_nongeneric_trailing_where,none,
"trailing 'where' clause for extension of non-generic type %0",
(DeclName))
ERROR(extension_protocol_inheritance,none,
"extension of protocol %0 cannot have an inheritance clause", (DeclName))
ERROR(objc_generic_extension_using_type_parameter,none,
"extension of a generic Objective-C class cannot access the class's "
"generic parameters at runtime", ())
NOTE(objc_generic_extension_using_type_parameter_here,none,
"generic parameter used here", ())
NOTE(objc_generic_extension_using_type_parameter_try_objc,none,
"add '@objc' to allow uses of 'self' within the function body", ())
ERROR(invalid_nominal_extension,none,
"extension of type %0 must be declared as an extension of %1",
(Type, Type))
NOTE(invalid_nominal_extension_rewrite,none,
"did you mean to extend %0 instead?", (Type))
// Protocols
ERROR(type_does_not_conform,none,
"type %0 does not conform to protocol %1", (Type, Type))
ERROR(cannot_use_nil_with_this_type,none,
"'nil' cannot be used in context expecting type %0", (Type))
ERROR(type_cannot_conform_to_nsobject,none,
"cannot declare conformance to 'NSObjectProtocol' in Swift; %0 should "
"inherit 'NSObject' instead", (Type))
ERROR(use_of_equal_instead_of_equality,none,
"use of '=' in a boolean context, did you mean '=='?", ())
ERROR(type_cannot_conform, none,
"%select{|value of protocol }0type %1 cannot conform to %2; "
"only struct/enum/class types can conform to protocols",
(bool, Type, Type))
NOTE(required_by_opaque_return,none,
"required by opaque return type of %0 %1", (DescriptiveDeclKind, DeclName))
NOTE(required_by_decl,none,
"required by %0 %1 where %2 = %3",
(DescriptiveDeclKind, DeclName, Type, Type))
NOTE(required_by_decl_ref,none,
"required by referencing %0 %1 on %2 where %3 = %4",
(DescriptiveDeclKind, DeclName, Type, Type, Type))
ERROR(protocol_does_not_conform_static,none,
"%0 cannot be used as a type conforming to protocol %1 because %1 "
"has static requirements",
(Type, Type))
ERROR(protocol_derivation_is_broken,none,
"protocol %0 is broken; cannot derive conformance for type %1", (Type, Type))
ERROR(type_does_not_inherit,none,
"%0 requires that %1 inherit from %2", (Type, Type, Type))
NOTE(type_does_not_inherit_or_conform_requirement,none,
"requirement specified as %0 : %1%2", (Type, Type, StringRef))
ERROR(types_not_equal,none,
"%0 requires the types %1 and %2 be equivalent",
(Type, Type, Type))
ERROR(type_does_not_conform_owner,none,
"%0 requires that %1 conform to %2", (Type, Type, Type))
ERROR(type_does_not_conform_in_decl_ref,none,
"referencing %0 %1 on %2 requires that %3 conform to %4",
(DescriptiveDeclKind, DeclName, Type, Type, Type))
ERROR(type_does_not_conform_anyobject_in_decl_ref,none,
"referencing %0 %1 on %2 requires that %3 be a class type",
(DescriptiveDeclKind, DeclName, Type, Type, Type))
ERROR(type_does_not_conform_decl_owner,none,
"%0 %1 requires that %2 conform to %3",
(DescriptiveDeclKind, DeclName, Type, Type))
ERROR(type_does_not_conform_anyobject_decl_owner,none,
"%0 %1 requires that %2 be a class type",
(DescriptiveDeclKind, DeclName, Type, Type))
ERROR(type_does_not_conform_in_opaque_return,none,
"return type of %0 %1 requires that %2 %select{conform to %3|be a class type}4",
(DescriptiveDeclKind, DeclName, Type, Type, bool))
ERROR(types_not_equal_decl,none,
"%0 %1 requires the types %2 and %3 be equivalent",
(DescriptiveDeclKind, DeclName, Type, Type))
ERROR(types_not_equal_in_decl_ref,none,
"referencing %0 %1 on %2 requires the types %3 and %4 be equivalent",
(DescriptiveDeclKind, DeclName, Type, Type, Type))
ERROR(types_not_inherited_decl,none,
"%0 %1 requires that %2 inherit from %3",
(DescriptiveDeclKind, DeclName, Type, Type))
ERROR(types_not_inherited_in_decl_ref,none,
"referencing %0 %1 on %2 requires that %3 inherit from %4",
(DescriptiveDeclKind, DeclName, Type, Type, Type))
NOTE(where_requirement_failure_one_subst,none,
"where %0 = %1", (Type, Type))
NOTE(where_requirement_failure_both_subst,none,
"where %0 = %1, %2 = %3", (Type, Type, Type, Type))
NOTE(requirement_implied_by_conditional_conformance,none,
"requirement from conditional conformance of %0 to %1", (Type, Type))
NOTE(wrapped_type_satisfies_requirement,none,
"wrapped type %0 satisfies this requirement; did you mean to unwrap?", (Type))
NOTE(candidate_types_conformance_requirement,none,
"candidate requires that %0 conform to %1 "
"(requirement specified as %2 == %3%4)",
(Type, Type, Type, Type, StringRef))
NOTE(candidate_types_equal_requirement,none,
"candidate requires that the types %0 and %1 be equivalent "
"(requirement specified as %2 == %3%4)",
(Type, Type, Type, Type, StringRef))
NOTE(candidate_types_inheritance_requirement,none,
"candidate requires that %1 inherit from %2 "
"(requirement specified as %2 : %3%4)",
(Type, Type, Type, Type, StringRef))
NOTE(types_not_equal_requirement,none,
"requirement specified as %0 == %1%2", (Type, Type, StringRef))
ERROR(type_is_not_a_class,none,
"%0 requires that %1 be a class type", (Type, Type, Type))
NOTE(anyobject_requirement,none,
"requirement specified as %0 : 'AnyObject'%2", (Type, Type, StringRef))
ERROR(non_class_cannot_conform_to_class_protocol,none,
"non-class type %0 cannot conform to class protocol %1",
(Type, Type))
ERROR(cf_class_cannot_conform_to_objc_protocol,none,
"Core Foundation class %0 cannot conform to @objc protocol %1 because "
"Core Foundation types are not classes in Objective-C",
(Type, Type))
ERROR(objc_runtime_visible_cannot_conform_to_objc_protocol,none,
"class %0 cannot conform to @objc protocol %1 because "
"the class is only visible via the Objective-C runtime",
(Type, Type))
ERROR(objc_generics_cannot_conditionally_conform,none,
"type %0 cannot conditionally conform to protocol %1 because "
"the type uses the Objective-C generics model",
(Type, Type))
ERROR(objc_protocol_cannot_have_conditional_conformance,none,
"type %0 cannot conditionally conform to @objc protocol %1 because "
"Objective-C does not support conditional conformances",
(Type, Type))
ERROR(objc_protocol_in_generic_extension,none,
"conformance of "
"%select{class from generic context|generic class}0 "
"%1 to @objc protocol %2 cannot be in an extension",
(bool, Type, Type))
ERROR(conditional_conformances_cannot_imply_conformances,none,
"conditional conformance of type %0 to protocol %1 does not imply conformance to "
"inherited protocol %2",
(Type, Type, Type))
NOTE(note_explicitly_state_conditional_conformance_different,none,
"did you mean to explicitly state the conformance with different bounds?", ())
NOTE(note_explicitly_state_conditional_conformance_relaxed,none,
"did you mean to explicitly state the conformance with relaxed bounds?", ())
NOTE(note_explicitly_state_conditional_conformance_same,none,
"did you mean to explicitly state the conformance with the same bounds?", ())
NOTE(note_explicitly_state_conditional_conformance_noneditor,none,
"did you mean to explicitly state the conformance like '%0where ...'?",
(StringRef))
ERROR(protocol_has_missing_requirements,none,
"type %0 cannot conform to protocol %1 because it has requirements that "
"cannot be satisfied", (Type, Type))
ERROR(protocol_has_missing_requirements_versioned,none,
"type %0 cannot conform to protocol %1 (compiled with Swift %2) because "
"it has requirements that could not be loaded in Swift %3",
(Type, Type, llvm::VersionTuple, llvm::VersionTuple))
ERROR(requirement_restricts_self,none,
"%0 requirement %1 cannot add constraint '%2%select{:|:| ==|:}3 %4' on "
"'Self'",
(DescriptiveDeclKind, DeclName, StringRef, unsigned, StringRef))
ERROR(witness_argument_name_mismatch,none,
"%0 %1 has different argument labels "
"from those required by protocol %2 (%3)",
(DescriptiveDeclKind, DeclName, Type, DeclName))
ERROR(witness_initializer_not_required,none,
"initializer requirement %0 can only be satisfied by a 'required' "
"initializer in%select{| the definition of}1 non-final class %2",
(DeclName, bool, Type))
ERROR(witness_initializer_failability,none,
"non-failable initializer requirement %0"
"%select{| in Objective-C protocol}1 cannot be satisfied by a "
"failable initializer ('init%select{?|!}1')",
(DeclName, bool))
ERROR(witness_self_non_subtype,none,
"protocol %0 requirement %1 cannot be satisfied by a non-final class "
"(%2) because it uses 'Self' in a non-parameter, non-result type "
"position",
(Type, DeclName, Type))
ERROR(witness_self_same_type,none,
"%0 %1 in non-final class %2 cannot be used to satisfy requirement %3 %4"
" (in protocol %5) due to same-type requirement involving 'Self'",
(DescriptiveDeclKind, DeclName, Type, DescriptiveDeclKind,
DeclName, Type))
NOTE(witness_self_weaken_same_type,none,
"consider weakening the same-type requirement %0 == %1 to a superclass "
"requirement", (Type, Type))
ERROR(witness_requires_dynamic_self,none,
"method %0 in non-final class %1 must return 'Self' to conform to "
"protocol %2",
(DeclName, Type, Type))
ERROR(witness_requires_class_implementation,none,
"method %0 in non-final class %1 cannot be implemented in a "
"protocol extension because it returns 'Self' and has associated type "
"requirements",
(DeclName, Type))
ERROR(witness_not_accessible_proto,none,
"%select{initializer %1|method %1|%select{|setter for }2property %1"
"|subscript%select{| setter}2}0 must be declared "
"%select{%error|fileprivate|internal|public|%error}3 because it matches a "
"requirement in %select{private|fileprivate|internal|public|%error}4 protocol "
"%5",
(RequirementKind, DeclName, bool, AccessLevel, AccessLevel, DeclName))
ERROR(witness_not_accessible_type,none,
"%select{initializer %1|method %1|%select{|setter for }2property %1"
"|subscript%select{| setter}2}0 must be as accessible as its enclosing "
"type because it matches a requirement in protocol %5",
(RequirementKind, DeclName, bool, AccessLevel, AccessLevel, DeclName))
ERROR(type_witness_not_accessible_proto,none,
"%0 %1 must be declared %select{%error|fileprivate|internal|public|%error}2 "
"because it matches a requirement in "
"%select{%error|fileprivate|internal|public|%error}2 protocol %3",
(DescriptiveDeclKind, DeclName, AccessLevel, DeclName))
ERROR(type_witness_not_accessible_type,none,
"%0 %1 must be as accessible as its enclosing type because it "
"matches a requirement in protocol %3",
(DescriptiveDeclKind, DeclName, AccessLevel, DeclName))
ERROR(witness_not_usable_from_inline,none,
"%0 %1 must be declared '@usableFromInline' "
"because it matches a requirement in protocol %2",
(DescriptiveDeclKind, DeclName, DeclName))
WARNING(witness_not_usable_from_inline_warn,none,
"%0 %1 should be declared '@usableFromInline' "
"because it matches a requirement in protocol %2",
(DescriptiveDeclKind, DeclName, DeclName))
ERROR(type_witness_objc_generic_parameter,none,
"type %0 involving Objective-C type parameter%select{| %1}2 cannot be "
"used for associated type %3 of protocol %4",
(Type, Type, bool, DeclName, DeclName))
NOTE(witness_fix_access,none,
"mark the %0 as '%select{%error|fileprivate|internal|public|%error}1' to "
"satisfy the requirement", (DescriptiveDeclKind, AccessLevel))
NOTE(witness_move_to_another_extension,none,
"move the %0 to another extension where it can be declared "
"'%select{%error|%error|internal|public|%error}1' to "
"satisfy the requirement", (DescriptiveDeclKind, AccessLevel))
WARNING(assoc_type_default_conformance_failed,none,
"default type %0 for associated type %1 does not satisfy constraint "
"%2: %3", (Type, DeclName, Type, Type))
NOTE(assoc_type_default_here,none,
"associated type %0 has default type %1 written here", (DeclName, Type))
ERROR(protocol_access,none,
"%select{protocol must be declared %select{"
"%select{private|fileprivate|internal|%error|%error}1"
"|private or fileprivate}4 because %select{it refines|its 'where' clause uses}2"
"|%select{in this context|fileprivate|internal|public|%error}1 "
"%select{protocol cannot refine|protocol's 'where' clause cannot use}2}0 "
"%select{a private|a fileprivate|an internal|%error|%error}3 %5",
(bool, AccessLevel, bool, AccessLevel, bool, DescriptiveDeclKind))
WARNING(protocol_access_warn,none,
"%select{protocol should be declared "
"%select{private|fileprivate|internal|%error|%error}1 because "
"%select{it refines|its 'where' clause uses}2"
"|%select{in this context|fileprivate|internal|public|%error}1 "
"%select{protocol should not refine|protocol's 'where' clause should not use}2}0 "
"%select{a private|a fileprivate|an internal|%error|%error}3 %5",
(bool, AccessLevel, bool, AccessLevel, bool, DescriptiveDeclKind))
ERROR(protocol_usable_from_inline,none,
"protocol %select{refined|used}0 by '@usableFromInline' protocol "
"must be '@usableForInline' or public", (bool))
WARNING(protocol_usable_from_inline_warn,none,
"protocol %select{refined|used}0 by '@usableFromInline' protocol "
"should be '@usableForInline' or public", (bool))
ERROR(protocol_property_must_be_computed_var,none,
"protocols cannot require properties to be immutable; declare read-only "
"properties by using 'var' with a '{ get }' specifier", ())
ERROR(protocol_property_must_be_computed,none,
"property in protocol must have explicit { get } or { get set } specifier",
())
NOTE(inherited_protocol_does_not_conform,none,
"type %0 does not conform to inherited protocol %1", (Type, Type))
NOTE(no_witnesses,none,
"protocol requires "
"%select{initializer %1|function %1|property %1|subscript}0 with type %2"
"%select{|; do you want to add a stub?}3",
(RequirementKind, DeclName, Type, bool))
NOTE(missing_witnesses_general,none, "do you want to add protocol stubs?",
())
NOTE(ambiguous_witnesses,none,
"multiple matching "
"%select{initializers named %1|functions named %1|properties named %1|"
"subscript operators}0 with type %2", (RequirementKind, DeclName, Type))
NOTE(ambiguous_witnesses_wrong_name,none,
"multiple matching "
"%select{initializers named %1|functions named %1|properties named %1|"
"subscript operators}0 with type %2", (RequirementKind, DeclName, Type))
NOTE(no_witnesses_type,none,
"protocol requires nested type %0; do you want to add it?", (Identifier))
NOTE(default_associated_type_req_fail,none,
"default type %0 for associated type %1 (from protocol %2) "
"does not %select{inherit from|conform to}4 %3",
(Type, DeclName, Type, Type, bool))
ERROR(associated_type_access,none,
"associated type in "
"%select{a private|a fileprivate|an internal|a public|%error}0 protocol "
"uses "
"%select{a private|a fileprivate|an internal|%error|%error}1 type in its "
"%select{default definition|requirement}2 ",
(AccessLevel, AccessLevel, unsigned))
WARNING(associated_type_access_warn,none,
"associated type in "
"%select{a private|a fileprivate|an internal|a public|%error}0 protocol uses "
"%select{a private|a fileprivate|an internal|%error|%error}1 type in its "
"%select{default definition|requirement}2 ",
(AccessLevel, AccessLevel, unsigned))
ERROR(associated_type_not_usable_from_inline,none,
"type referenced from a "
"%select{default definition|requirement}0 of an associated type in a "
"'@usableFromInline' protocol must be '@usableFromInline' or public",
(unsigned))
WARNING(associated_type_not_usable_from_inline_warn,none,
"type referenced from a "
"%select{default definition|requirement}0 of an associated type in a "
"'@usableFromInline' protocol should be '@usableFromInline' or public",
(unsigned))
NOTE(bad_associated_type_deduction,none,
"unable to infer associated type %0 for protocol %1",
(DeclName, DeclName))
NOTE(associated_type_deduction_witness_failed,none,
"candidate would match and infer %0 = %1 if %1 "
"%select{inherited from|conformed to}3 %2",
(DeclName, Type, Type, bool))
NOTE(associated_type_witness_conform_impossible,none,
"candidate can not infer %0 = %1 because %1 "
"is not a nominal type and so can't conform to %2",
(DeclName, Type, Type))
NOTE(associated_type_witness_inherit_impossible,none,
"candidate can not infer %0 = %1 because %1 "
"is not a class type and so can't inherit from %2",
(DeclName, Type, Type))
NOTE(ambiguous_associated_type_deduction,none,
"ambiguous inference of associated type %0: %1 vs. %2",
(DeclName, Type, Type))
NOTE(associated_type_deduction_witness,none,
"matching requirement %0 to this declaration inferred associated type to "
"%1",
(DeclName, Type))
NOTE(associated_type_deduction_default,none,
"using associated type default %0", (Type))
NOTE(ambiguous_witnesses_type,none,
"multiple matching types named %0", (Identifier))
NOTE(protocol_witness_exact_match,none,
"candidate exactly matches%0", (StringRef))
NOTE(protocol_witness_renamed,none,
"rename to %0 to satisfy this requirement%1", (DeclName, StringRef))
NOTE(protocol_witness_kind_conflict,none,
"candidate is not %select{an initializer|a function|a variable|"
"a subscript}0", (RequirementKind))
NOTE(protocol_witness_type_conflict,none,
"candidate has non-matching type %0%1", (Type, StringRef))
NOTE(protocol_witness_missing_requirement,none,
"candidate would match if %0 %select{conformed to|subclassed|"
"was the same type as}2 %1", (Type, Type, unsigned))
NOTE(protocol_witness_optionality_conflict,none,
"candidate %select{type has|result type has|parameter type has|"
"parameter types have|result and parameter types have}0 incorrect "
"optionality%1",
(unsigned, StringRef))
ERROR(err_protocol_witness_optionality,none,
"%select{type|result|parameter|parameters|"
"result and parameters}0 of %1 %select{has|has|has|have|have|}0"
" different optionality than required by protocol %2",
(unsigned, DeclName, DeclName))
WARNING(warn_protocol_witness_optionality,none,
"%select{type|result|parameter|parameters|"
"result and parameters}0 of %1 %select{has|has|has|have|have|}0"
" different optionality than expected by protocol %2",
(unsigned, DeclName, DeclName))
NOTE(protocol_witness_static_conflict,none,
"candidate operates on %select{a type|an instance}0, not "
"%select{an instance|a type}0 as required", (bool))
NOTE(protocol_witness_prefix_postfix_conflict,none,
"candidate is %select{|prefix, |postfix, }1not "
"%select{prefix|postfix}0 as required", (bool, unsigned))
NOTE(protocol_witness_mutation_modifier_conflict,none,
"candidate is marked %0 but protocol does not allow it",
(SelfAccessKind))
NOTE(protocol_witness_settable_conflict,none,
"candidate is not settable, but protocol requires it", ())
NOTE(protocol_witness_rethrows_conflict,none,
"candidate is not 'rethrows', but protocol requires it", ())
NOTE(protocol_witness_throws_conflict,none,
"candidate throws, but protocol does not allow it", ())
NOTE(protocol_witness_not_objc,none,
"candidate is explicitly '@nonobjc'", ())
NOTE(protocol_witness_enum_case_payload, none,
"candidate is an enum case with associated values, "
"but protocol does not allow it", ())
NOTE(protocol_witness_type,none,
"possibly intended match", ())
NOTE(protocol_witness_nonconform_type,none,
"possibly intended match %0 does not "
"%select{inherit from|conform to}2 %1", (Type, Type, bool))
NOTE(protocol_witness_circularity,none,
"candidate references itself", ())
NOTE(protocol_conformance_here,none,
"%select{|class }0%1 declares conformance to protocol %2 here",
(bool, DeclName, DeclName))
NOTE(declared_protocol_conformance_here,none,
"%select{%0 inherits conformance to protocol %2 from superclass|"
"%0 declares conformance to protocol %2|"
"%0 implicitly conforms to protocol %2 (via conformance to %3)|"
"%0 implicitly conforms to protocol %2}1 here",
(Type, unsigned, DeclName, DeclName))
ERROR(witness_unavailable,none,
"unavailable %0 %1 was used to satisfy a requirement of protocol %2",
(DescriptiveDeclKind, DeclName, DeclName))
ERROR(redundant_conformance,none,
"redundant conformance of %0 to protocol %1", (Type, DeclName))
ERROR(redundant_conformance_conditional,none,
"conflicting conformance of %0 to protocol %1; there cannot be more "
"than one conformance, even with different conditional bounds",
(Type, DeclName))
WARNING(redundant_conformance_adhoc,none,
"conformance of %0 to protocol %1 was already stated in "
"%select{the protocol's|the type's}2 module %3",
(Type, DeclName, bool, Identifier))
WARNING(redundant_conformance_adhoc_conditional,none,
"conformance of %0 to protocol %1 conflicts with that stated in "
"%select{the protocol's|the type's}2 module %3 and will be ignored; "
"there cannot be more than one conformance, even with different conditional bounds",
(Type, DeclName, bool, Identifier))
NOTE(redundant_conformance_witness_ignored,none,
"%0 %1 will not be used to satisfy the conformance to %2",
(DescriptiveDeclKind, DeclName, DeclName))
// "Near matches"
WARNING(req_near_match,none,
"%0 %1 nearly matches %select{defaulted|optional}2 requirement %3 "
"of protocol %4",
(DescriptiveDeclKind, DeclName, bool, DeclName, DeclName))
NOTE(optional_req_nonobjc_near_match_add_objc,none,
"add '@objc' to provide an Objective-C entrypoint", ())
NOTE(req_near_match_move,none,
"move %0 to %select{an|another}1 extension to silence this warning",
(DeclName, unsigned))
NOTE(req_near_match_nonobjc,none,
"add '@nonobjc' to silence this %select{warning|error}0", (bool))
NOTE(req_near_match_access,none,
"make %0 %select{ERROR|private|private|non-public|non-public}1 to silence this "
"warning", (DeclName, AccessLevel))
// appendInterpolation methods
ERROR(missing_append_interpolation,none,
"type conforming to 'StringInterpolationProtocol' does not implement "
"a valid 'appendInterpolation' method", ())
WARNING(append_interpolation_static,none,
"'appendInterpolation' method will never be used because it is static",
())
WARNING(append_interpolation_void_or_discardable,none,
"'appendInterpolation' method does not return 'Void' or have a "
"discardable result", ())
WARNING(append_interpolation_access_control,none,
"'appendInterpolation' method is %select{private|fileprivate|internal|"
"public|open}0, but %1 is %select{private|fileprivate|internal|public|"
"open}2",
(AccessLevel, DeclName, AccessLevel))
// Protocols and existentials
ERROR(assoc_type_outside_of_protocol,none,
"associated type %0 can only be used with a concrete type or "
"generic parameter base", (DeclNameRef))
ERROR(typealias_outside_of_protocol,none,
"type alias %0 can only be used with a concrete type or "
"generic parameter base", (DeclNameRef))
ERROR(objc_protocol_inherits_non_objc_protocol,none,
"@objc protocol %0 cannot refine non-@objc protocol %1", (Type, Type))
ERROR(protocol_where_clause_self_requirement,none,
"constraint with subject type of 'Self' is not supported; "
"consider adding requirement to protocol inheritance clause instead", ())
ERROR(invalid_protocol_composition_member,none,
"non-protocol, non-class type %0 cannot be used within a "
"protocol-constrained type", (Type))
ERROR(protocol_composition_one_class,none,
"protocol-constrained type cannot contain class %0 because it already "
"contains class %1", (Type, Type))
ERROR(requires_conformance_nonprotocol,none,
"type %0 constrained to non-protocol, non-class type %1",
(Type, Type))
NOTE(requires_conformance_nonprotocol_fixit,none,
"use '%0 == %1' to require '%0' to be '%1'",
(StringRef, StringRef))
ERROR(requires_not_suitable_archetype,none,
"type %0 in conformance requirement does not refer to a "
"generic parameter or associated type",
(Type))
WARNING(requires_no_same_type_archetype,none,
"neither type in same-type constraint (%0 or %1) refers to a "
"generic parameter or associated type",
(Type, Type))
ERROR(requires_generic_params_made_equal,none,
"same-type requirement makes generic parameters %0 and %1 equivalent",
(Type, Type))
ERROR(requires_generic_param_made_equal_to_concrete,none,
"same-type requirement makes generic parameter %0 non-generic",
(Type))
ERROR(recursive_decl_reference,none,
"%0 %1 references itself", (DescriptiveDeclKind, DeclBaseName))
ERROR(recursive_same_type_constraint,none,
"same-type constraint %0 == %1 is recursive", (Type, Type))
ERROR(recursive_superclass_constraint,none,
"superclass constraint %0 : %1 is recursive", (Type, Type))
ERROR(requires_generic_param_same_type_does_not_conform,none,
"same-type constraint type %0 does not conform to required protocol %1",
(Type, Identifier))
ERROR(requires_same_concrete_type,none,
"generic signature requires types %0 and %1 to be the same", (Type, Type))
WARNING(redundant_conformance_constraint,none,
"redundant conformance constraint %0: %1", (Type, ProtocolDecl *))
NOTE(redundant_conformance_here,none,
"conformance constraint %1: %2 %select{written here|implied here|"
"inferred from type here}0",
(unsigned, Type, ProtocolDecl *))
ERROR(unsupported_recursive_requirements, none,
"requirement involves recursion that is not currently supported", ())
ERROR(same_type_conflict,none,
"%select{generic parameter |protocol |}0%1 cannot be equal to both "
"%2 and %3", (unsigned, Type, Type, Type))
WARNING(redundant_same_type_to_concrete,none,
"redundant same-type constraint %0 == %1", (Type, Type))
NOTE(same_type_redundancy_here,none,
"same-type constraint %1 == %2 %select{written here|implied here|"
"inferred from type here}0",
(unsigned, Type, Type))
ERROR(requires_superclass_conflict,none,
"%select{generic parameter %1 cannot|protocol %1 cannot require 'Self' to|"
"%1 cannot}0 be a subclass of both %2 and %3",
(unsigned, Type, Type, Type))
WARNING(redundant_superclass_constraint,none,
"redundant superclass constraint %0 : %1", (Type, Type))
NOTE(superclass_redundancy_here,none,
"superclass constraint %1 : %2 %select{written here|implied here|"
"inferred from type here}0",
(unsigned, Type, Type))
ERROR(conflicting_layout_constraints,none,
"%select{generic parameter |protocol |}0%1 has conflicting "
"constraints %2 and %3",
(unsigned, Type, LayoutConstraint, LayoutConstraint))
WARNING(redundant_layout_constraint,none,
"redundant constraint %0 : %1", (Type, LayoutConstraint))
NOTE(previous_layout_constraint, none,
"constraint %1 : %2 %select{written here|implied here|"
"inferred from type here}0",
(unsigned, Type, LayoutConstraint))
WARNING(redundant_same_type_constraint,none,
"redundant same-type constraint %0 == %1", (Type, Type))
NOTE(previous_same_type_constraint, none,
"previous same-type constraint %1 == %2 "
"%select{written here|implied here|inferred from type here}0",
(unsigned, Type, Type))
WARNING(inherited_associated_type_redecl,none,
"redeclaration of associated type %0 from protocol %1 is better "
"expressed as a 'where' clause on the protocol", (DeclName, Type))
WARNING(typealias_override_associated_type,none,
"typealias overriding associated type %0 from protocol %1 is better "
"expressed as same-type constraint on the protocol", (DeclName, Type))
WARNING(associated_type_override_typealias,none,
"associated type %0 is redundant with type %0 declared in inherited "
"%1 %2", (DeclName, DescriptiveDeclKind, Type))
ERROR(associated_type_objc,none,
"associated type %0 cannot be declared inside '@objc' protocol %1",
(DeclName, DeclName))
ERROR(generic_param_access,none,
"%0 %select{must be declared %select{"
"%select{private|fileprivate|internal|%error|%error}3|private or fileprivate}4"
"|cannot be declared "
"%select{in this context|fileprivate|internal|public|open}2}1 "
"because its generic %select{parameter|requirement}5 uses "
"%select{a private|a fileprivate|an internal|an '@_spi'|an '@_spi'}3 type",
(DescriptiveDeclKind, bool, AccessLevel, AccessLevel, bool, bool))
WARNING(generic_param_access_warn,none,
"%0 %select{should be declared "
"%select{private|fileprivate|internal|%error|%error}3"
"|should not be declared %select{in this context|fileprivate|internal|public|open}2}1 "
"because its generic %select{parameter|requirement}5 uses "
"%select{a private|a fileprivate|an internal|an '@_spi'|an '@_spi'}3 type",
(DescriptiveDeclKind, bool, AccessLevel, AccessLevel, bool, bool))
ERROR(generic_param_usable_from_inline,none,
"type referenced from a "
"generic %select{parameter|requirement}1 of a '@usableFromInline' %0 "
"must be '@usableFromInline' or public",
(DescriptiveDeclKind, bool))
WARNING(generic_param_usable_from_inline_warn,none,
"type referenced from a "
"generic %select{parameter|requirement}1 of a '@usableFromInline' %0 "
"should be '@usableFromInline' or public",
(DescriptiveDeclKind, bool))
ERROR(override_multiple_decls_base,none,
"declaration %0 cannot override more than one superclass declaration",
(DeclName))
ERROR(override_multiple_decls_arg_mismatch,none,
"declaration %0 has different argument labels from any potential "
"overrides", (DeclName))
NOTE(overridden_near_match_here,none,
"potential overridden %0 %1 here",
(DescriptiveDeclKind, DeclName))
ERROR(override_decl_extension,none,
"overriding %select{|non-@objc }0declarations "
"%select{in extensions|from extensions}0 is not supported", (bool, bool))
NOTE(overridden_here,none,
"overridden declaration is here", ())
NOTE(overridden_here_can_be_objc,none,
"add '@objc' to make this declaration overridable", ())
ERROR(missing_override,none,
"overriding declaration requires an 'override' keyword", ())
WARNING(missing_override_warn,none,
"implicit override should be marked with 'override' or suppressed "
"with '@_nonoverride'", ())
ERROR(multiple_override,none,
"%0 has already been overridden", (DeclName))
NOTE(multiple_override_prev,none,
"%0 previously overridden here", (DeclName))
ERROR(override_unavailable, none,
"cannot override %0 which has been marked unavailable%select{|: %1}1",
(DeclBaseName, StringRef))
ERROR(override_less_available,none,
"overriding %0 must be as available as declaration it overrides",
(DeclBaseName))
ERROR(override_accessor_less_available,none,
"overriding %0 for %1 must be as available as declaration it overrides",
(DescriptiveDeclKind, DeclBaseName))
ERROR(override_let_property,none,
"cannot override immutable 'let' property %0 with the getter of a 'var'",
(Identifier))
ERROR(override_not_accessible,none,
"%select{|setter of }0overriding %1 must be as accessible as "
"%select{its enclosing type|the declaration it overrides}2",
(bool, DescriptiveDeclKind, bool))
ERROR(override_of_non_open,none,
"overriding non-open %0 outside of its defining module",
(DescriptiveDeclKind))
ERROR(method_does_not_override,none,
"method does not override any method from its superclass", ())
ERROR(property_does_not_override,none,
"property does not override any property from its superclass", ())
ERROR(subscript_does_not_override,none,
"subscript does not override any subscript from its superclass", ())
ERROR(initializer_does_not_override,none,
"initializer does not override a designated initializer from its "
"superclass", ())
ERROR(failable_initializer_override,none,
"failable initializer %0 cannot override a non-failable initializer",
(DeclName))
NOTE(nonfailable_initializer_override_here,none,
"non-failable initializer %0 overridden here", (DeclName))
NOTE(property_override_here,none,
"attempt to override property here", ())
NOTE(subscript_override_here,none,
"attempt to override subscript here", ())
NOTE(convenience_init_override_here,none,
"attempt to override convenience initializer here", ())
NOTE(override_type_mismatch_with_fixits,none,
"type does not match superclass %0 with type %1",
(DescriptiveDeclKind, Type))
NOTE(override_type_mismatch_with_fixits_init,none,
"type does not match superclass initializer with %select{no arguments|argument %1|arguments %1}0",
(unsigned, Type))
ERROR(override_nonclass_decl,none,
"'override' can only be specified on class members", ())
ERROR(nonoverride_wrong_decl_context,none,
"'@_nonoverride' can only be specified on class or protocol members", ())
ERROR(nonoverride_and_override_attr,none,
"'override' cannot be combined with '@_nonoverride'", ())
ERROR(override_property_type_mismatch,none,
"property %0 with type %1 cannot override a property with type %2",
(Identifier, Type, Type))
ERROR(override_with_stored_property,none,
"cannot override with a stored property %0", (Identifier))
WARNING(override_with_stored_property_warn,none,
"cannot override with a stored property %0", (Identifier))
ERROR(observing_readonly_property,none,
"cannot observe read-only property %0; it can't change", (Identifier))
ERROR(override_mutable_with_readonly_property,none,
"cannot override mutable property with read-only property %0",
(Identifier))
ERROR(override_argument_name_mismatch,none,
"argument labels for %select{method|initializer}0 %1 do not match those "
"of overridden %select{method|initializer}0 %2",
(bool, DeclName, DeclName))
ERROR(override_ownership_mismatch,none,
"cannot override %0 property with %1 property",
(ReferenceOwnership, ReferenceOwnership))
ERROR(override_dynamic_self_mismatch,none,
"cannot override a Self return type with a non-Self return type",
())
ERROR(override_class_declaration_in_extension,none,
"cannot override a non-dynamic class declaration from an extension",
())
ERROR(override_throws,none,
"cannot override non-throwing %select{method|initializer}0 with "
"throwing %select{method|initializer}0", (bool))
ERROR(override_throws_objc,none,
"overriding a throwing @objc %select{method|initializer}0 with "
"a non-throwing %select{method|initializer}0 is not supported", (bool))
ERROR(override_optional_mismatch,none,
"cannot override %0 %select{parameter|index}1 of type %2 with "
"non-optional type %3",
(DescriptiveDeclKind, bool, Type, Type))
ERROR(override_optional_result_mismatch,none,
"cannot override %0 %select{result|element}1 type %2 with "
"optional type %3",
(DescriptiveDeclKind, bool, Type, Type))
WARNING(override_unnecessary_IUO,none,
"overriding %0 parameter of type %1 with implicitly unwrapped optional "
"type %2",
(DescriptiveDeclKind, Type, Type))
WARNING(override_unnecessary_result_IUO,none,
"overriding %0 optional result type %1 with implicitly unwrapped "
"optional type %2",
(DescriptiveDeclKind, Type, Type))
NOTE(override_unnecessary_IUO_remove,none,
"remove '!' to make the parameter required", ())
NOTE(override_unnecessary_IUO_use_strict,none,
"use '?' to make the result optional", ())
NOTE(override_unnecessary_IUO_silence,none,
"add parentheses to silence this warning", ())
ERROR(override_mutable_covariant_property,none,
"cannot override mutable property %0 of type %1 with covariant type %2",
(Identifier, Type, Type))
ERROR(override_mutable_covariant_subscript,none,
"cannot override mutable subscript of type %0 with covariant type %1",
(Type, Type))
ERROR(static_decl_already_final,none,
"static declarations are already final", ())
ERROR(open_decl_cannot_be_final,none,
"%0 cannot be declared both 'final' and 'open'", (DescriptiveDeclKind))
ERROR(implicitly_final_cannot_be_open,none,
"%select{'let' properties|members of 'final' classes|"
"static declarations}0 are implicitly 'final'; use 'public' instead of "
"'open'", (unsigned))
WARNING(implicitly_final_cannot_be_open_swift4,none,
"%select{'let' properties|members of 'final' classes|"
"static declarations}0 are implicitly 'final'; use 'public' instead of "
"'open'", (unsigned))
WARNING(override_swift3_objc_inference,none,
"override of %0 %1 from extension of %2 depends on deprecated "
"inference of '@objc'",
(DescriptiveDeclKind, DeclName, Identifier))
ERROR(override_method_different_generic_sig,none,
"overridden method %0 has generic signature %1 which is incompatible with "
"base method's generic signature %2; expected generic signature to be %3",
(DeclBaseName, StringRef, StringRef, StringRef))
// Inheritance
ERROR(duplicate_inheritance,none,
"duplicate inheritance from %0", (Type))
WARNING(duplicate_anyobject_class_inheritance,none,
"redundant inheritance from 'AnyObject' and Swift 3 'class' keyword", ())
ERROR(inheritance_from_protocol_with_superclass,none,
"inheritance from class-constrained protocol composition type %0", (Type))
ERROR(multiple_inheritance,none,
"multiple inheritance from classes %0 and %1", (Type, Type))
ERROR(inheritance_from_non_protocol_or_class,none,
"inheritance from non-protocol, non-class type %0", (Type))
ERROR(inheritance_from_non_protocol,none,
"inheritance from non-protocol type %0", (Type))
ERROR(superclass_not_first,none,
"superclass %0 must appear first in the inheritance clause", (Type))
ERROR(superclass_not_open,none,
"cannot inherit from non-open class %0 outside of its defining module",
(Type))
NOTE(superclass_here,none,"superclass is declared here", ())
ERROR(superclass_of_open_not_open,none,
"superclass %0 of open class must be open", (Type))
ERROR(inheritance_from_final_class,none,
"inheritance from a final class %0", (Identifier))
ERROR(inheritance_from_unspecialized_objc_generic_class,none,
"inheritance from a generic Objective-C class %0 must bind "
"type parameters of %0 to specific concrete types", (Identifier))
ERROR(inheritance_from_class_with_missing_vtable_entries,none,
"cannot inherit from class %0 because it has overridable members that "
"could not be loaded",
(Identifier))
ERROR(inheritance_from_class_with_missing_vtable_entries_versioned,none,
"cannot inherit from class %0 (compiled with Swift %1) because it has "
"overridable members that could not be loaded in Swift %2",
(Identifier, llvm::VersionTuple, llvm::VersionTuple))
ERROR(inheritance_from_cf_class,none,
"cannot inherit from Core Foundation type %0", (Identifier))
ERROR(inheritance_from_objc_runtime_visible_class,none,
"cannot inherit from class %0 because it is only visible via the "
"Objective-C runtime", (Identifier))
// Enums
ERROR(enum_case_access,none,
"enum case in %select{a private|a fileprivate|an internal|a public|%error}0 enum "
"uses %select{a private|a fileprivate|an internal|%error|%error}1 type",
(AccessLevel, AccessLevel))
WARNING(enum_case_access_warn,none,
"enum case in %select{a private|a fileprivate|an internal|a public|%error}0 enum "
"uses %select{a private|a fileprivate|an internal|%error|%error}1 type",
(AccessLevel, AccessLevel))
ERROR(enum_case_usable_from_inline,none,
"type of enum case in '@usableFromInline' enum "
"must be '@usableFromInline' or public", ())
WARNING(enum_case_usable_from_inline_warn,none,
"type of enum case in '@usableFromInline' enum "
"should be '@usableFromInline' or public", ())
ERROR(enum_stored_property,none,
"enums must not contain stored properties", ())
// Enum raw types
ERROR(multiple_enum_raw_types,none,
"multiple enum raw types %0 and %1", (Type, Type))
ERROR(raw_type_not_first,none,
"raw type %0 must appear first in the enum inheritance clause", (Type))
ERROR(raw_type_not_literal_convertible,none,
"raw type %0 is not expressible by a string, integer, or floating-point literal",
(Type))
ERROR(enum_raw_type_not_equatable,none,
"RawRepresentable conformance cannot be synthesized because raw type %0 is not "
"Equatable", (Type))
ERROR(enum_raw_type_nonconforming_and_nonsynthable,none,
"%0 declares raw type %1, but does not conform to RawRepresentable "
"and conformance could not be synthesized", (Type, Type))
NOTE(enum_declares_rawrep_with_raw_type,none,
"%0 declares raw type %1, which implies RawRepresentable", (Type, Type))
ERROR(enum_raw_type_access,none,
"enum %select{must be declared %select{"
"%select{private|fileprivate|internal|%error|%error}1|private or fileprivate}3"
"|cannot be declared "
"%select{in this context|fileprivate|internal|public|open}1}0 "
"because its raw type uses "
"%select{a private|a fileprivate|an internal|%error|%error}2 type",
(bool, AccessLevel, AccessLevel, bool))
WARNING(enum_raw_type_access_warn,none,
"enum %select{should be declared "
"%select{private|fileprivate|internal|%error|%error}1"
"|should not be declared %select{in this context|fileprivate|internal|public|open}1}0 "
"because its raw type uses "
"%select{a private|a fileprivate|an internal|%error|%error}2 type",
(bool, AccessLevel, AccessLevel, bool))
ERROR(enum_raw_type_not_usable_from_inline,none,
"type referenced from the raw type of a "
"'@usableFromInline' enum "
"must be '@usableFromInline' or public",
())
WARNING(enum_raw_type_not_usable_from_inline_warn,none,
"type referenced from the raw type of a "
"'@usableFromInline' enum "
"should be '@usableFromInline' or public",
())
ERROR(empty_enum_raw_type,none,
"an enum with no cases cannot declare a raw type", ())
ERROR(enum_raw_value_without_raw_type,none,
"enum case cannot have a raw value if the enum does not have a raw type", ())
ERROR(enum_with_raw_type_case_with_argument,none,
"enum with raw type cannot have cases with arguments", ())
NOTE(enum_raw_type_here,none,
"declared raw type %0 here", (Type))
ERROR(objc_enum_no_raw_type,none,
"'@objc' enum must declare an integer raw type", ())
ERROR(objc_enum_raw_type_not_integer,none,
"'@objc' enum raw type %0 is not an integer type", (Type))
ERROR(enum_non_integer_raw_value_auto_increment,none,
"enum case must declare a raw value when the preceding raw value is not an integer", ())
ERROR(enum_non_integer_convertible_raw_type_no_value,none,
"enum cases require explicit raw values when the raw type is not "
"expressible by integer or string literal", ())
ERROR(enum_raw_value_not_unique,none,
"raw value for enum case is not unique", ())
NOTE(enum_raw_value_used_here,none,
"raw value previously used here", ())
NOTE(enum_raw_value_incrementing_from_here,none,
"raw value auto-incremented from here",())
NOTE(enum_raw_value_incrementing_from_zero,none,
"raw value implicitly auto-incremented from zero",())
NOTE(construct_raw_representable_from_unwrapped_value,none,
"construct %0 from unwrapped %1 value", (Type, Type))
ERROR(decl_from_hidden_module,none,
"cannot use %0 %1 %select{here|as property wrapper here|"
"in an extension with public or '@usableFromInline' members|"
"in an extension with conditional conformances}2; "
"%select{%3 has been imported as implementation-only|"
"it is an SPI imported from %3}4",
(DescriptiveDeclKind, DeclName, unsigned, Identifier, unsigned))
ERROR(conformance_from_implementation_only_module,none,
"cannot use conformance of %0 to %1 %select{here|as property wrapper here|"
"in an extension with public or '@usableFromInline' members|"
"in an extension with conditional conformances}2; %3 has been imported "
"as implementation-only",
(Type, DeclName, unsigned, Identifier))
ERROR(assoc_conformance_from_implementation_only_module,none,
"cannot use conformance of %0 to %1 in associated type %3 (inferred as "
"%4); %2 has been imported as implementation-only",
(Type, DeclName, Identifier, Type, Type))
ERROR(unexportable_clang_function_type,none,
"cannot export the underlying C type of the function type %0; "
"it may use anonymous types or types defined outside of a module",
(Type))
WARNING(warn_implementation_only_conflict,none,
"%0 inconsistently imported as implementation-only",
(Identifier))
NOTE(implementation_only_conflict_here,none,
"imported as implementation-only here", ())
ERROR(implementation_only_decl_non_override,none,
"'@_implementationOnly' can only be used on overrides", ())
ERROR(implementation_only_override_changed_type,none,
"'@_implementationOnly' override must have the same type as the "
"declaration it overrides (%0)", (Type))
ERROR(implementation_only_override_without_attr,none,
"override of '@_implementationOnly' %0 should also be declared "
"'@_implementationOnly'", (DescriptiveDeclKind))
ERROR(implementation_only_override_import_without_attr,none,
"override of %0 imported as implementation-only must be declared "
"'@_implementationOnly'", (DescriptiveDeclKind))
// Derived conformances
ERROR(cannot_synthesize_init_in_extension_of_nonfinal,none,
"implementation of %0 for non-final class cannot be automatically "
"synthesized in extension because initializer requirement %1 can only be "
"be satisfied by a 'required' initializer in the class definition",
(Type, DeclName))
ERROR(cannot_synthesize_in_crossfile_extension,none,
"implementation of %0 cannot be automatically synthesized in an extension "
"in a different file to the type", (Type))
ERROR(broken_additive_arithmetic_requirement,none,
"AdditiveArithmetic protocol is broken: unexpected requirement", ())
ERROR(broken_case_iterable_requirement,none,
"CaseIterable protocol is broken: unexpected requirement", ())
ERROR(broken_raw_representable_requirement,none,
"RawRepresentable protocol is broken: unexpected requirement", ())
ERROR(broken_comparable_requirement,none,
"Comparable protocol is broken: unexpected requirement", ())
ERROR(broken_equatable_requirement,none,
"Equatable protocol is broken: unexpected requirement", ())
ERROR(broken_hashable_requirement,none,
"Hashable protocol is broken: unexpected requirement", ())
ERROR(broken_hashable_no_hasher,none,
"Hashable protocol is broken: Hasher type not found", ())
ERROR(broken_errortype_requirement,none,
"Error protocol is broken: unexpected requirement", ())
ERROR(broken_int_hashable_conformance,none,
"Int type is broken: does not conform to Hashable", ())
ERROR(broken_int_integer_literal_convertible_conformance,none,
"Int type is broken: does not conform to ExpressibleByIntegerLiteral", ())
ERROR(no_less_than_overload_for_int,none,
"no overload of '<' for Int", ())
ERROR(no_equal_overload_for_int,none,
"no overload of '==' for Int", ())
ERROR(broken_coding_key_requirement,none,
"CodingKey protocol is broken: unexpected requirement", ())
ERROR(broken_encodable_requirement,none,
"Encodable protocol is broken: unexpected requirement", ())
ERROR(broken_decodable_requirement,none,
"Decodable protocol is broken: unexpected requirement", ())
ERROR(broken_differentiable_requirement,none,
"Differentiable protocol is broken: unexpected requirement", ())
WARNING(differentiable_nondiff_type_implicit_noderivative_fixit,none,
"stored property %0 has no derivative because %1 does not conform to "
"'Differentiable'; add an explicit '@noDerivative' attribute"
"%select{|, or conform %2 to 'AdditiveArithmetic'}3",
(Identifier, Type, Identifier, bool))
WARNING(differentiable_let_property_implicit_noderivative_fixit,none,
"synthesis of the 'Differentiable.move(along:)' requirement for %1 "
"requires all stored properties to be mutable; use 'var' instead, or add "
"an explicit '@noDerivative' attribute"
"%select{|, or conform %1 to 'AdditiveArithmetic'}2",
(Identifier, Identifier, bool))
NOTE(codable_extraneous_codingkey_case_here,none,
"CodingKey case %0 does not match any stored properties", (Identifier))
NOTE(codable_non_conforming_property_here,none,
"cannot automatically synthesize %0 because %1 does not conform to %0", (Type, Type))
NOTE(codable_non_decoded_property_here,none,
"cannot automatically synthesize %0 because %1 does not have a matching CodingKey and does not have a default value", (Type, Identifier))
NOTE(codable_codingkeys_type_is_not_an_enum_here,none,
"cannot automatically synthesize %0 because 'CodingKeys' is not an enum", (Type))
NOTE(codable_codingkeys_type_does_not_conform_here,none,
"cannot automatically synthesize %0 because 'CodingKeys' does not conform to CodingKey", (Type))
NOTE(decodable_no_super_init_here,none,
"cannot automatically synthesize %0 because superclass does not have a callable %1", (DeclName, DeclName))
NOTE(decodable_super_init_not_designated_here,none,
"cannot automatically synthesize %0 because implementation would need to call %1, which is not designated", (DeclName, DeclName))
NOTE(decodable_inaccessible_super_init_here,none,
"cannot automatically synthesize %0 because implementation would need to call %1, which is inaccessible due to "
"'%select{private|fileprivate|internal|%error|%error}2' protection level",
(DeclName, DeclName, AccessLevel))
NOTE(decodable_super_init_is_failable_here,none,
"cannot automatically synthesize %0 because implementation would need to call %1, which is failable", (DeclName, DeclName))
NOTE(decodable_suggest_overriding_init_here,none,
"did you mean to override 'init(from:)'?", ())
NOTE(codable_suggest_overriding_init_here,none,
"did you mean to override 'init(from:)' and 'encode(to:)'?", ())
WARNING(decodable_property_will_not_be_decoded, none,
"immutable property will not be decoded because it is declared with "
"an initial value which cannot be overwritten", ())
NOTE(decodable_property_init_or_codingkeys_implicit, none,
"set the initial value via the initializer or explicitly define a "
"CodingKeys enum %select{including|without}0 a %1 case to silence "
"this warning", (unsigned, DeclName))
NOTE(decodable_property_init_or_codingkeys_explicit, none,
"set the initial value via the initializer or remove the %0 case from "
"the CodingKeys enum to silence this warning", (DeclName))
NOTE(decodable_make_property_mutable, none,
"make the property mutable instead", ())
NOTE(missing_member_type_conformance_prevents_synthesis, none,
"%select{associated value|stored property}0 type %1 does not conform to "
"protocol %2, preventing synthesized conformance "
"of %3 to %2",
(unsigned, Type, Type, Type))
NOTE(classes_automatic_protocol_synthesis,none,
"automatic synthesis of '%0' is not supported for classes",
(StringRef))
// Dynamic Self
ERROR(dynamic_self_non_method,none,
"%select{global|local}0 function cannot return 'Self'", (bool))
ERROR(dynamic_self_invalid,none,
"covariant 'Self' can only appear as the type of a property, subscript or method result; "
"did you mean '%0'?", (StringRef))
ERROR(dynamic_self_in_mutable_property,none,
"mutable property cannot have covariant 'Self' type", ())
ERROR(dynamic_self_in_stored_property,none,
"stored property cannot have covariant 'Self' type", ())
ERROR(dynamic_self_in_mutable_subscript,none,
"mutable subscript cannot have covariant 'Self' type", ())
ERROR(dynamic_self_invalid_property,none,
"covariant 'Self' can only appear at the top level of property type", ())
ERROR(dynamic_self_invalid_subscript,none,
"covariant 'Self' can only appear at the top level of subscript element type", ())
ERROR(dynamic_self_invalid_method,none,
"covariant 'Self' can only appear at the top level of method result type", ())
ERROR(dynamic_self_stored_property_init,none,
"covariant 'Self' type cannot be referenced from a stored property initializer", ())
ERROR(dynamic_self_default_arg,none,
"covariant 'Self' type cannot be referenced from a default argument expression", ())
//------------------------------------------------------------------------------
// MARK: Type Check Attributes
//------------------------------------------------------------------------------
ERROR(attr_only_one_decl_kind,none,
"%0 may only be used on '%1' declarations", (DeclAttribute,StringRef))
ERROR(attr_not_on_variadic_parameters,none,
"'%0' must not be used on variadic parameters", (StringRef))
ERROR(attr_not_on_subscript_parameters,none,
"'%0' must not be used on subscript parameters", (StringRef))
ERROR(attr_ambiguous_reference_to_decl,none,
"ambiguous reference to %0 in '@%1' attribute", (DeclNameRef, StringRef))
ERROR(override_final,none,
"%0 overrides a 'final' %1", (DescriptiveDeclKind, DescriptiveDeclKind))
ERROR(override_static,none,
"cannot override %0", (DescriptiveDeclKind))
ERROR(member_cannot_be_final,none,
"only classes and class members may be marked with 'final'",
())
ERROR(final_not_allowed_here,none,
"'final' may only be applied to classes, properties, methods, and "
"subscripts", ())
ERROR(final_not_on_accessors,none,
"'final' cannot be applied to accessors, it must be put on the "
"%select{var|let|subscript}0", (unsigned))
ERROR(override_rethrows_with_non_rethrows,none,
"override of 'rethrows' %select{method|initializer}0 should also "
"be 'rethrows'", (bool))
ERROR(rethrows_without_throwing_parameter,none,
"'rethrows' function must take a throwing function argument", ())
ERROR(autoclosure_function_type,none,
"@autoclosure attribute only applies to function types",
())
ERROR(invalid_autoclosure_and_convention_attributes,none,
"'@convention(%0)' attribute is not allowed on '@autoclosure' types",
(StringRef))
ERROR(autoclosure_function_input_nonunit,none,
"argument type of @autoclosure parameter must be '()'", ())
ERROR(escaping_non_function_parameter,none,
"@escaping attribute may only be used in function parameter position", ())
ERROR(escaping_optional_type_argument, none,
"closure is already escaping in optional type argument", ())
// @_nonEphemeral attribute
ERROR(non_ephemeral_non_pointer_type,none,
"@_nonEphemeral attribute only applies to pointer types", ())
// NSManaged attribute
ERROR(attr_NSManaged_not_instance_member,none,
"@NSManaged only allowed on an instance property or method", ())
ERROR(attr_NSManaged_not_stored,none,
"@NSManaged not allowed on %select{computed|observing|addressed}0 "
"properties", (unsigned))
ERROR(attr_NSManaged_let_property,none,
"@NSManaged not allowed on a 'let' property", ())
ERROR(attr_NSManaged_initial_value,none,
"@NSManaged property cannot have an initial value", ())
ERROR(attr_NSManaged_NSCopying,none,
"@NSManaged property cannot also be marked @NSCopying", ())
ERROR(attr_NSManaged_method_body,none,
"@NSManaged method cannot have a body; it must be provided at runtime",())
// NSCopying attribute
ERROR(nscopying_only_on_class_properties,none,
"@NSCopying may only be used on properties in classes",
())
ERROR(nscopying_only_mutable,none,
"@NSCopying requires property to be mutable", ())
ERROR(nscopying_only_stored_property,none,
"@NSCopying is only valid on stored properties", ())
ERROR(nscopying_doesnt_conform,none,
"@NSCopying is only valid with types that conform to"
" the NSCopying protocol", ())
// UIApplicationMain/NSApplicationMain attribute
#define SELECT_APPLICATION_MAIN "select{'UIApplicationMain'|'NSApplicationMain'}"
#define SELECT_APPLICATION_DELEGATE "select{'UIApplicationDelegate'|'NSApplicationDelegate'}"
ERROR(attr_ApplicationMain_not_ApplicationDelegate,none,
"%" SELECT_APPLICATION_MAIN "0 class must conform to the %" SELECT_APPLICATION_DELEGATE "0 protocol",
(unsigned))
ERROR(attr_generic_ApplicationMain_not_supported,none,
"generic %" SELECT_APPLICATION_MAIN "0 classes are not supported",
(unsigned))
ERROR(attr_ApplicationMain_multiple,none,
"%" SELECT_APPLICATION_MAIN "0 attribute can only apply to one class in a module",
(unsigned))
ERROR(attr_ApplicationMain_with_script,none,
"%" SELECT_APPLICATION_MAIN "0 attribute cannot be used in a module that contains "
"top-level code",
(unsigned))
NOTE(attr_ApplicationMain_script_here,none,
"top-level code defined in this source file",
())
#undef SELECT_APPLICATION_MAIN
#undef SELECT_APPLICATION_DELEGATE
// lazy
ERROR(lazy_not_on_let,none,
"'lazy' cannot be used on a let", ())
ERROR(lazy_not_on_computed,none,
"'lazy' must not be used on a computed property", ())
ERROR(lazy_on_already_lazy_global,none,
"'lazy' must not be used on an already-lazy global", ())
ERROR(lazy_not_in_protocol,none,
"'lazy' isn't allowed on a protocol requirement", ())
ERROR(lazy_requires_initializer,none,
"lazy properties must have an initializer", ())
ERROR(lazy_requires_single_var,none,
"'lazy' cannot destructure an initializer", ())
ERROR(lazy_must_be_property,none,
"lazy is only valid for members of a struct or class", ())
ERROR(lazy_not_observable,none,
"lazy properties must not have observers", ())
ERROR(lazy_not_strong,none,
"lazy properties cannot be %0", (ReferenceOwnership))
// Debugger function attribute.
ERROR(attr_for_debugger_support_only,none,
"@LLDBDebuggerSupport may only be used when debugger support is on", ())
// @_implements
ERROR(implements_attr_protocol_lacks_member,none,
"protocol %0 has no member %1", (DeclName, DeclName))
ERROR(implements_attr_non_protocol_type,none,
"non-protocol type in @_implements attribute", ())
ERROR(implements_attr_protocol_not_conformed_to,none,
"containing type %0 does not conform to protocol %1",
(DeclName, DeclName))
// @differentiable
ERROR(differentiable_attr_no_vjp_or_jvp_when_linear,none,
"cannot specify 'vjp:' or 'jvp:' for linear functions; use '@transpose' "
"attribute for transpose registration instead", ())
ERROR(differentiable_attr_void_result,none,
"cannot differentiate void function %0", (DeclName))
ERROR(differentiable_attr_overload_not_found,none,
"%0 does not have expected type %1", (DeclNameRef, Type))
// TODO(TF-482): Change duplicate `@differentiable` attribute diagnostic to also
// mention "same generic requirements".
ERROR(differentiable_attr_duplicate,none,
"duplicate '@differentiable' attribute with same parameters", ())
NOTE(differentiable_attr_duplicate_note,none,
"other attribute declared here", ())
ERROR(differentiable_attr_function_not_same_type_context,none,
"%0 is not defined in the current type context", (DeclNameRef))
ERROR(differentiable_attr_derivative_not_function,none,
"registered derivative %0 must be a 'func' declaration", (DeclNameRef))
ERROR(differentiable_attr_class_derivative_not_final,none,
"class member derivative must be final", ())
ERROR(differentiable_attr_invalid_access,none,
"derivative function %0 is required to either be public or "
"'@usableFromInline' because the original function %1 is public or "
"'@usableFromInline'", (DeclNameRef, DeclName))
ERROR(differentiable_attr_result_not_differentiable,none,
"can only differentiate functions with results that conform to "
"'Differentiable', but %0 does not conform to 'Differentiable'", (Type))
ERROR(differentiable_attr_protocol_req_where_clause,none,
"'@differentiable' attribute on protocol requirement cannot specify "
"'where' clause", ())
ERROR(differentiable_attr_class_member_dynamic_self_result_unsupported,none,
"'@differentiable' attribute cannot be declared on class members "
"returning 'Self'", ())
ERROR(differentiable_attr_nonfinal_class_init_unsupported,none,
"'@differentiable' attribute cannot be declared on 'init' in a non-final "
"class; consider making %0 final", (Type))
ERROR(differentiable_attr_empty_where_clause,none,
"empty 'where' clause in '@differentiable' attribute", ())
ERROR(differentiable_attr_where_clause_for_nongeneric_original,none,
"'where' clause is valid only when original function is generic %0",
(DeclName))
ERROR(differentiable_attr_layout_req_unsupported,none,
"'@differentiable' attribute does not yet support layout requirements",
())
ERROR(overriding_decl_missing_differentiable_attr,none,
"overriding declaration is missing attribute '%0'", (StringRef))
NOTE(protocol_witness_missing_differentiable_attr,none,
"candidate is missing attribute '%0'", (StringRef))
NOTE(protocol_witness_missing_differentiable_attr_nonpublic_other_file,none,
"non-public %1 %2 must have explicit '%0' attribute to satisfy "
"requirement %3 %4 (in protocol %6) because it is declared in a different "
"file than the conformance of %5 to %6",
(StringRef, DescriptiveDeclKind, DeclName, DescriptiveDeclKind, DeclName,
Type, Type))
// @derivative
ERROR(derivative_attr_expected_result_tuple,none,
"'@derivative(of:)' attribute requires function to return a two-element "
"tuple; first element must have label 'value:' and second element must "
"have label 'pullback:' or 'differential:'", ())
ERROR(derivative_attr_invalid_result_tuple_value_label,none,
"'@derivative(of:)' attribute requires function to return a two-element "
"tuple; first element must have label 'value:'", ())
ERROR(derivative_attr_invalid_result_tuple_func_label,none,
"'@derivative(of:)' attribute requires function to return a two-element "
"tuple; second element must have label 'pullback:' or 'differential:'",
())
ERROR(derivative_attr_result_value_not_differentiable,none,
"'@derivative(of:)' attribute requires function to return a two-element "
"tuple; first element type %0 must conform to 'Differentiable'", (Type))
ERROR(derivative_attr_result_func_type_mismatch,none,
"function result's %0 type does not match %1", (Identifier, DeclName))
NOTE(derivative_attr_result_func_type_mismatch_note,none,
"%0 does not have expected type %1", (Identifier, Type))
NOTE(derivative_attr_result_func_original_note,none,
"%0 defined here", (DeclName))
ERROR(derivative_attr_not_in_same_file_as_original,none,
"derivative not in the same file as the original function", ())
ERROR(derivative_attr_original_stored_property_unsupported,none,
"cannot register derivative for stored property %0", (DeclNameRef))
ERROR(derivative_attr_class_member_dynamic_self_result_unsupported,none,
"cannot register derivative for class member %0 returning 'Self'",
(DeclNameRef))
ERROR(derivative_attr_nonfinal_class_init_unsupported,none,
"cannot register derivative for 'init' in a non-final class; consider "
"making %0 final", (Type))
ERROR(derivative_attr_original_already_has_derivative,none,
"a derivative already exists for %0", (DeclName))
NOTE(derivative_attr_duplicate_note,none,
"other attribute declared here", ())
// @transpose
ERROR(transpose_attr_invalid_linearity_parameter_or_result,none,
"cannot transpose with respect to original %select{result|parameter}1 "
"'%0' that does not conform to 'Differentiable' and satisfy "
"'%0 == %0.TangentVector'", (StringRef, /*isParameter*/ bool))
ERROR(transpose_attr_overload_not_found,none,
"could not find function %0 with expected type %1", (DeclName, Type))
ERROR(transpose_attr_cannot_use_named_wrt_params,none,
"cannot use named 'wrt' parameters in '@transpose(of:)' attribute, found "
"%0", (Identifier))
ERROR(transpose_attr_wrt_self_must_be_static,none,
"the transpose of an instance method must be a 'static' method in the "
"same type when 'self' is a linearity parameter", ())
NOTE(transpose_attr_wrt_self_self_type_mismatch_note,none,
"the transpose is declared in %0 but the original function is declared in "
"%1", (Type, Type))
// Automatic differentiation attributes
ERROR(autodiff_attr_original_decl_invalid_kind,none,
"%0 is not a 'func', 'init', 'subscript', or 'var' computed property "
"declaration", (DeclNameRef))
ERROR(autodiff_attr_original_decl_none_valid_found,none,
"could not find function %0 with expected type %1", (DeclNameRef, Type))
ERROR(autodiff_attr_original_decl_not_same_type_context,none,
"%0 is not defined in the current type context", (DeclNameRef))
ERROR(autodiff_attr_original_void_result,none,
"cannot differentiate void function %0", (DeclName))
ERROR(autodiff_attr_original_multiple_semantic_results,none,
"cannot differentiate functions with both an 'inout' parameter and a "
"result", ())
// differentiation `wrt` parameters clause
ERROR(diff_function_no_parameters,none,
"%0 has no parameters to differentiate with respect to", (DeclName))
ERROR(diff_params_clause_param_name_unknown,none,
"unknown parameter name %0", (Identifier))
ERROR(diff_params_clause_self_instance_method_only,none,
"'self' parameter is only applicable to instance methods", ())
ERROR(diff_params_clause_self_must_be_first,none,
"'self' parameter must come first in the parameter list", ())
ERROR(diff_params_clause_params_not_original_order,none,
"parameters must be specified in original order", ())
ERROR(diff_params_clause_param_index_out_of_range,none,
"parameter index is larger than total number of parameters", ())
ERROR(diff_params_clause_no_inferred_parameters,PointsToFirstBadToken,
"no differentiation parameters could be inferred; must differentiate "
"with respect to at least one parameter conforming to 'Differentiable'",
())
ERROR(diff_params_clause_cannot_diff_wrt_inout_parameter,none,
"cannot differentiate with respect to 'inout' parameter (%0)", (Type))
ERROR(diff_params_clause_param_not_differentiable,none,
"can only differentiate with respect to parameters that conform to "
"'Differentiable', but %0 does not conform to 'Differentiable'", (Type))
//------------------------------------------------------------------------------
// MARK: Type Check Expressions
//------------------------------------------------------------------------------
NOTE(found_candidate,none,
"found this candidate", ())
NOTE(found_candidate_type,none,
"found candidate with type %0", (Type))
ERROR(no_MaxBuiltinFloatType_found,none,
"standard library error: _MaxBuiltinFloatType is not properly defined", ())
ERROR(no_member_of_module,none,
"module %0 has no member named %1", (Identifier, DeclNameRef))
ERROR(super_with_no_base_class,none,
"'super' members cannot be referenced in a root class", ())
ERROR(bad_init_ref_base, none,
"'init' can only refer to the initializers of "
"'self'%select{| or 'super'}0", (bool))
ERROR(init_delegation_outside_initializer,none,
"initializer delegation can only occur within an initializer", ())
ERROR(init_delegates_and_chains,none,
"initializer cannot both delegate ('self.init') and chain to a "
"superclass initializer ('super.init')", ())
NOTE(init_delegation_or_chain,none,
"previous %select{delegation|chaining}0 call is here", (bool))
ERROR(delegating_convenience_super_init,none,
"convenience initializer for %0 must delegate (with 'self.init') rather "
"than chaining to a superclass initializer (with 'super.init')",
(Type))
ERROR(delegating_designated_init,none,
"designated initializer for %0 cannot delegate (with 'self.init'); "
"did you mean this to be a convenience initializer?",
(Type))
ERROR(delegating_designated_init_in_extension,none,
"designated initializer for %0 cannot delegate (with 'self.init')",
(Type))
NOTE(delegation_here,none, "delegation occurs here", ())
ERROR(chain_convenience_init,none,
"must call a designated initializer of the superclass %0",
(Type))
ERROR(delegate_chain_nonoptional_to_optional,none,
"a non-failable initializer cannot %select{delegate|chain}0 to "
"failable initializer %1 written with 'init?'", (bool, DeclName))
NOTE(init_force_unwrap,none,
"force potentially-failing result with '!'", ())
NOTE(init_propagate_failure,none,
"propagate the failure with 'init?'", ())
ERROR(delegate_chain_nonoptional_to_optional_try,none,
"a non-failable initializer cannot use 'try?' to "
"%select{delegate|chain}0 to another initializer", (bool))
NOTE(init_delegate_force_try,none,
"force potentially-failing result with 'try!'", ())
ERROR(init_delegation_nested,none,
"%select{initializer delegation ('self.init')|"
"initializer chaining ('super.init')}0 cannot be nested in another "
"%select{expression|statement}1", (bool, bool))
NOTE(convenience_init_here,none,
"convenience initializer is declared here", ())
ERROR(designated_init_in_extension,none,
"designated initializer cannot be declared in an extension of %0; "
"did you mean this to be a convenience initializer?",
(DeclName))
ERROR(cfclass_designated_init_in_extension,none,
"designated initializer cannot be declared in an extension of %0",
(DeclName))
ERROR(enumstruct_convenience_init,none,
"delegating initializers in %0 are not marked with 'convenience'",
(StringRef))
ERROR(nonclass_convenience_init,none,
"convenience initializer not allowed in non-class type %0",
(DeclName))
ERROR(cfclass_convenience_init,none,
"convenience initializers are not supported in extensions of CF types",
())
ERROR(dynamic_construct_class,none,
"constructing an object of class type %0 with a metatype value must use "
"a 'required' initializer", (Type))
NOTE(note_nonrequired_initializer,none,
"selected %select{non-required|implicit}0 initializer %1",
(bool, DeclName))
ERROR(construct_protocol_value,none,
"value of type %0 is a protocol; it cannot be instantiated",
(Type))
ERROR(construct_protocol_by_name,none,
"protocol type %0 cannot be instantiated",
(Type))
// Operators
ERROR(unknown_binop,none,
"operator is not a known binary operator", ())
ERROR(non_associative_adjacent_operators,none,
"adjacent operators are in non-associative precedence group %0",
(Identifier))
ERROR(unordered_adjacent_operators,none,
"adjacent operators are in unordered precedence groups %0 and %1",
(Identifier, Identifier))
ERROR(missing_builtin_precedence_group,none,
"broken standard library: missing builtin precedence group %0",
(Identifier))
// If you change this, also change enum TryKindForDiagnostics.
#define TRY_KIND_SELECT(SUB) "%select{try|try!|try?}" #SUB
ERROR(try_rhs,none,
"'" TRY_KIND_SELECT(0) "' cannot appear to the right of a "
"non-assignment operator", (unsigned))
ERROR(try_if_rhs_noncovering,none,
"'" TRY_KIND_SELECT(0) "' following conditional operator does not cover "
"everything to its right", (unsigned))
ERROR(try_assign_rhs_noncovering,none,
"'" TRY_KIND_SELECT(0) "' following assignment operator does not cover "
"everything to its right", (unsigned))
ERROR(broken_bool,none, "type 'Bool' is broken", ())
WARNING(inject_forced_downcast,none,
"treating a forced downcast to %0 as optional will never produce 'nil'",
(Type))
NOTE(forced_to_conditional_downcast,none,
"use 'as?' to perform a conditional downcast to %0", (Type))
NOTE(silence_inject_forced_downcast,none,
"add parentheses around the cast to silence this warning", ())
ERROR(conditional_downcast_foreign,none,
"conditional downcast to CoreFoundation type %0 will always succeed",
(Type))
NOTE(note_explicitly_compare_cftypeid,none,
"did you mean to explicitly compare the CFTypeIDs of %0 and %1?",
(DeclBaseName, Type))
ERROR(optional_used_as_boolean,none,
"optional type %0 cannot be used as a boolean; "
"test for '%select{!|=}1= nil' instead", (Type, bool))
ERROR(integer_used_as_boolean,none,
"type %0 cannot be used as a boolean; "
"test for '%select{!|=}1= 0' instead", (Type, bool))
ERROR(interpolation_missing_proto,none,
"string interpolation requires the protocol 'ExpressibleByStringInterpolation' to be defined",
())
ERROR(interpolation_broken_proto,none,
"protocol 'ExpressibleByStringInterpolation' is broken",
())
ERROR(object_literal_broken_proto,none,
"object literal protocol is broken", ())
ERROR(discard_expr_outside_of_assignment,none,
"'_' can only appear in a pattern or on the left side of an assignment",
())
WARNING(discard_expr_void_result_redundant, none,
"using '_' to ignore the result of a Void-returning function "
"is redundant", ())
ERROR(collection_literal_heterogeneous,none,
"heterogeneous collection literal could only be inferred to %0; add"
" explicit type annotation if this is intentional", (Type))
ERROR(collection_literal_empty,none,
"empty collection literal requires an explicit type", ())
ERROR(unresolved_member_no_inference,none,
"reference to member %0 cannot be resolved without a contextual type",
(DeclNameRef))
ERROR(cannot_infer_base_of_unresolved_member,none,
"cannot infer contextual base in reference to member %0", (DeclNameRef))
ERROR(unresolved_nil_literal,none,
"'nil' requires a contextual type", ())
ERROR(cannot_force_unwrap_nil_literal,none,
"'nil' literal cannot be force unwrapped", ())
ERROR(type_of_expression_is_ambiguous,none,
"type of expression is ambiguous without more context", ())
ERROR(failed_to_produce_diagnostic,Fatal,
"failed to produce diagnostic for expression; "
"please file a bug report", ())
ERROR(missing_protocol,none,
"missing protocol %0", (Identifier))
ERROR(nil_literal_broken_proto,none,
"protocol 'ExpressibleByNilLiteral' is broken", ())
ERROR(builtin_integer_literal_broken_proto,none,
"protocol '_ExpressibleByBuiltinIntegerLiteral' is broken", ())
ERROR(integer_literal_broken_proto,none,
"protocol 'ExpressibleByIntegerLiteral' is broken", ())
ERROR(builtin_float_literal_broken_proto,none,
"protocol '_ExpressibleByBuiltinFloatLiteral' is broken", ())
ERROR(float_literal_broken_proto,none,
"protocol 'ExpressibleByFloatLiteral' is broken", ())
ERROR(builtin_boolean_literal_broken_proto,none,
"protocol '_ExpressibleByBuiltinBooleanLiteral' is broken", ())
ERROR(boolean_literal_broken_proto,none,
"protocol 'ExpressibleByBooleanLiteral' is broken", ())
ERROR(builtin_unicode_scalar_literal_broken_proto,none,
"protocol '_ExpressibleByBuiltinUnicodeScalarLiteral' is broken", ())
ERROR(unicode_scalar_literal_broken_proto,none,
"protocol 'ExpressibleByUnicodeScalarLiteral' is broken", ())
ERROR(builtin_extended_grapheme_cluster_literal_broken_proto,none,
"protocol '_ExpressibleByBuiltinExtendedGraphemeClusterLiteral' is broken", ())
ERROR(extended_grapheme_cluster_literal_broken_proto,none,
"protocol 'ExpressibleByExtendedGraphemeClusterLiteral' is broken", ())
ERROR(builtin_string_literal_broken_proto,none,
"protocol '_ExpressibleByBuiltinStringLiteral' is broken", ())
ERROR(string_literal_broken_proto,none,
"protocol 'ExpressibleByStringLiteral' is broken", ())
// Array literals
ERROR(should_use_dictionary_literal,none,
"dictionary of type %0 cannot be %select{used|initialized}1 "
"with array literal", (Type, bool))
NOTE(meant_dictionary_lit,none,
"did you mean to use a dictionary literal instead?", ())
ERROR(should_use_empty_dictionary_literal,none,
"use [:] to get an empty dictionary literal", ())
// Dictionary literals
ERROR(type_is_not_dictionary,none,
"contextual type %0 cannot be used with dictionary literal", (Type))
// Generic specializations
ERROR(cannot_explicitly_specialize_generic_function,none,
"cannot explicitly specialize a generic function", ())
ERROR(not_a_generic_definition,none,
"cannot specialize a non-generic definition", ())
ERROR(not_a_generic_type,none,
"cannot specialize non-generic type %0", (Type))
ERROR(type_parameter_count_mismatch,none,
"generic type %0 specialized with %select{too many|too few}3 type "
"parameters (got %2, but expected %1)",
(Identifier, unsigned, unsigned, bool))
ERROR(generic_type_requires_arguments,none,
"reference to generic type %0 requires arguments in <...>", (Type))
NOTE(descriptive_generic_type_declared_here,none,
"%0 declared here", (StringRef))
WARNING(use_of_void_pointer,none,
"Unsafe%0Pointer<Void> has been replaced by Unsafe%0RawPointer", (StringRef))
// Ambiguities
ERROR(ambiguous_decl_ref,none,
"ambiguous use of %0", (DeclNameRef))
ERROR(ambiguous_operator_ref,none,
"ambiguous use of operator %0", (DeclNameRef))
NOTE(ambiguous_because_of_trailing_closure,none,
"%select{use an explicit argument label instead of a trailing closure|"
"avoid using a trailing closure}0 to call %1",
(bool, DeclName))
// Cannot capture inout-ness of a parameter
// Partial application of foreign functions not supported
ERROR(partial_application_of_function_invalid,none,
"partial application of %select{"
"'mutating' method|"
"'super.init' initializer chain|"
"'self.init' initializer delegation|"
"'super' instance method with metatype base"
"}0 is not allowed",
(unsigned))
WARNING(partial_application_of_function_invalid_swift4,none,
"partial application of %select{"
"'mutating' method|"
"'super.init' initializer chain|"
"'self.init' initializer delegation|"
"'super' instance method with metatype base"
"}0 is not allowed; calling the function has undefined behavior and will "
"be an error in future Swift versions",
(unsigned))
ERROR(self_assignment_var,none,
"assigning a variable to itself", ())
ERROR(self_assignment_prop,none,
"assigning a property to itself", ())
ERROR(property_use_in_closure_without_explicit_self,none,
"reference to property %0 in closure requires explicit use of 'self' to"
" make capture semantics explicit", (Identifier))
ERROR(method_call_in_closure_without_explicit_self,none,
"call to method %0 in closure requires explicit use of 'self' to make"
" capture semantics explicit", (Identifier))
NOTE(note_capture_self_explicitly,none,
"capture 'self' explicitly to enable implicit 'self' in this closure", ())
NOTE(note_reference_self_explicitly,none,
"reference 'self.' explicitly", ())
NOTE(note_other_self_capture,none,
"variable other than 'self' captured here under the name 'self' does not "
"enable implicit 'self'", ())
NOTE(note_self_captured_weakly,none,
"weak capture of 'self' here does not enable implicit 'self'", ())
ERROR(implicit_use_of_self_in_closure,none,
"implicit use of 'self' in closure; use 'self.' to make"
" capture semantics explicit", ())
WARNING(recursive_accessor_reference,none,
"attempting to %select{access|modify}1 %0 within its own "
"%select{getter|setter}1", (Identifier, bool))
NOTE(recursive_accessor_reference_silence,none,
"access 'self' explicitly to silence this warning", ())
WARNING(store_in_willset,none,
"attempting to store to property %0 within its own willSet, which is "
"about to be overwritten by the new value", (Identifier))
ERROR(value_of_module_type,none,
"expected module member name after module name", ())
ERROR(value_of_metatype_type,none,
"expected member name or constructor call after type name", ())
NOTE(add_parens_to_type,none,
"add arguments after the type to construct a value of the type", ())
NOTE(add_self_to_type,none,
"use '.self' to reference the type object", ())
WARNING(warn_unqualified_access,none,
"use of %0 treated as a reference to %1 in %2 %3",
(Identifier, DescriptiveDeclKind, DescriptiveDeclKind, DeclName))
NOTE(fix_unqualified_access_member,none,
"use 'self.' to silence this warning", ())
NOTE(fix_unqualified_access_top_level,none,
"use '%0' to reference the %1",
(StringRef, DescriptiveDeclKind, Identifier))
NOTE(fix_unqualified_access_top_level_multi,none,
"use '%0' to reference the %1 in module %2",
(StringRef, DescriptiveDeclKind, Identifier))
WARNING(warn_deprecated_conditional_conformance_outer_access,none,
"use of %0 as reference to %1 in %2 %3 will change in future versions of Swift to reference %4 in %5 %6 "
"which comes via a conditional conformance",
(DeclNameRef, DescriptiveDeclKind, DescriptiveDeclKind, DeclName,
DescriptiveDeclKind, DescriptiveDeclKind, DeclName))
NOTE(fix_deprecated_conditional_conformance_outer_access,none,
"use '%0' to continue to reference the %1",
(StringRef, DescriptiveDeclKind, Identifier))
ERROR(unsupported_special_decl_ref, none,
"referencing %0 as a function value is not implemented", (Identifier))
WARNING(bitcasting_away_noescape, none,
"'unsafeBitCast' from non-escaping function type %0 to escaping "
"function type %1 is undefined; use "
"'withoutActuallyEscaping' to temporarily escape a function",
(Type, Type))
WARNING(bitcasting_to_change_function_rep, none,
"'unsafeBitCast' from function type %0 to %1 changes @convention and "
"is undefined; use an implicit conversion to change conventions",
(Type, Type))
WARNING(bitcasting_to_downcast, none,
"'unsafeBitCast' from %0 to %1 can be replaced with 'unsafeDowncast'",
(Type, Type))
WARNING(bitcasting_is_no_op, none,
"'unsafeBitCast' from %0 to %1 is unnecessary and can be removed",
(Type, Type))
WARNING(bitcasting_to_change_pointer_kind, none,
"'unsafeBitCast' from %0 to %1 can be replaced with %2 initializer",
(Type, Type, Identifier))
WARNING(bitcasting_to_change_pointee_type, none,
"'unsafeBitCast' from %0 to %1 changes pointee type and may lead to "
"undefined behavior; use the 'withMemoryRebound' method on %0 to "
"rebind the type of memory",
(Type, Type))
WARNING(bitcasting_to_give_type_to_raw_pointer, none,
"'unsafeBitCast' from %0 to %1 gives a type to a raw pointer and may "
"lead to undefined behavior",
(Type, Type))
NOTE(bitcast_assume_memory_rebound, none,
"use the 'assumingMemoryBound' method if the pointer is known to point to "
"an existing value or array of type %0 in memory",
(Type))
NOTE(bitcast_bind_memory, none,
"use the 'bindMemory' method to assign type %0 to uninitialized raw "
"memory",
(Type))
WARNING(bitcasting_for_number_bit_pattern_init, none,
"'unsafeBitCast' from %0 to %1 can be replaced with 'bitPattern:' "
"initializer on %1",
(Type, Type))
WARNING(bitcasting_for_number_bit_pattern_property, none,
"'unsafeBitCast' from %0 to %1 can be replaced with 'bitPattern' "
"property on %0",
(Type, Type))
WARNING(bitcasting_to_change_from_unsized_to_sized_int, none,
"'unsafeBitCast' from %0 to %1 can be replaced with %1 "
"initializer",
(Type, Type))
WARNING(use_of_qq_on_non_optional_value,none,
"left side of nil coalescing operator '?""?' has non-optional type %0, "
"so the right side is never used", (Type))
WARNING(nonoptional_compare_to_nil,none,
"comparing non-optional value of type %0 to 'nil' always returns"
" %select{false|true}1", (Type, bool))
WARNING(optional_check_nonoptional,none,
"non-optional expression of type %0 used in a check for optionals",
(Type))
WARNING(optional_check_promotion,none,
"explicitly specified type %0 adds an additional level of optional to"
" the initializer, making the optional check always succeed",
(Type))
WARNING(optional_pattern_match_promotion,none,
"pattern match introduces an implicit promotion from %0 to %1",
(Type, Type))
WARNING(optional_to_any_coercion,none,
"expression implicitly coerced from %0 to %1", (Type, Type))
WARNING(iuo_to_any_coercion,none,
"coercion of implicitly unwrappable value of type %0 to %1 does not "
"unwrap optional", (Type, Type))
NOTE(iuo_to_any_coercion_note,none,
"implicitly unwrapped %0 %1 declared here",
(DescriptiveDeclKind, DeclName))
NOTE(iuo_to_any_coercion_note_func_result,none,
"%0 %1 with implicitly unwrapped result type is declared here",
(DescriptiveDeclKind, DeclName))
NOTE(default_optional_to_any,none,
"provide a default value to avoid this warning", ())
NOTE(force_optional_to_any,none,
"force-unwrap the value to avoid this warning", ())
NOTE(silence_optional_to_any,none,
"explicitly cast to %0 with '%1' to silence this warning",
(Type, StringRef))
WARNING(debug_description_in_string_interpolation_segment,none,
"string interpolation produces a debug description for %select{an optional|a function}0 "
"value; did you mean to make this explicit?",
(bool))
NOTE(silence_debug_description_in_interpolation_segment_call,none,
"use 'String(describing:)' to silence this warning", ())
NOTE(noescape_parameter,none,
"parameter %0 is implicitly non-escaping",
(Identifier))
NOTE(generic_parameters_always_escaping,none,
"generic parameters are always considered '@escaping'", ())
ERROR(passing_noescape_to_escaping,none,
"passing non-escaping parameter %0 to function expecting an @escaping closure",
(Identifier))
ERROR(converting_noespace_param_to_generic_type,none,
"converting non-escaping parameter %0 to generic parameter %1 may allow it to escape",
(Identifier, Type))
ERROR(assigning_noescape_to_escaping,none,
"assigning non-escaping parameter %0 to an @escaping closure",
(Identifier))
ERROR(general_noescape_to_escaping,none,
"using non-escaping parameter %0 in a context expecting an @escaping closure",
(Identifier))
ERROR(converting_noescape_to_type,none,
"converting non-escaping value to %0 may allow it to escape",
(Type))
ERROR(capture_across_type_decl,none,
"%0 declaration cannot close over value %1 defined in outer scope",
(DescriptiveDeclKind, Identifier))
//------------------------------------------------------------------------------
// MARK: Type Check Statements
//------------------------------------------------------------------------------
ERROR(jump_out_of_defer,none,
"'%0' cannot transfer control out of a defer statement",
(StringRef))
WARNING(defer_stmt_at_block_end,none,
"'defer' statement at end of scope always executes immediately; "
"replace with 'do' statement to silence this warning", ())
ERROR(return_invalid_outside_func,none,
"return invalid outside of a func", ())
ERROR(return_expr_missing,none,
"non-void function should return a value", ())
ERROR(return_non_failable_init,none,
"only a failable initializer can return 'nil'", ())
NOTE(make_init_failable,none,
"use 'init?' to make the initializer %0 failable", (DeclName))
ERROR(return_init_non_nil,none,
"'nil' is the only return value permitted in an initializer",
())
WARNING(if_always_true,none,
"'if' condition is always true", ())
WARNING(while_always_true,none,
"'while' condition is always true", ())
WARNING(guard_always_succeeds,none,
"'guard' condition is always true, body is unreachable", ())
ERROR(expression_unused_closure,none,
"closure expression is unused", ())
ERROR(expression_unused_function,none,
"expression resolves to an unused function", ())
ERROR(expression_unused_lvalue,none,
"expression resolves to an unused %select{variable|property|subscript}0", (unsigned))
WARNING(expression_unused_result_call,none,
"result of call to %0 is unused", (DeclName))
WARNING(expression_unused_result_operator,none,
"result of operator %0 is unused", (DeclName))
WARNING(expression_unused_result_unknown, none,
"result of call to %select{function|closure}0 returning %1 is unused", (bool, Type))
WARNING(expression_unused_result, none,
"expression of type %0 is unused", (Type))
WARNING(expression_unused_init_result,none,
"result of %0 initializer is unused", (Type))
WARNING(expression_unused_optional_try,none,
"result of 'try?' is unused", ())
WARNING(expression_unused_selector_result, none,
"result of '#selector' is unused", ())
WARNING(expression_unused_literal,none,
"%0 literal is unused", (StringRef))
ERROR(assignment_lhs_not_lvalue,none,
"cannot assign to immutable expression of type %0", (Type))
ERROR(assignment_lhs_is_apply_expression,none,
"expression is not assignable: %0", (StringRef))
ERROR(assignment_lhs_is_immutable_variable,none,
"cannot assign to value: %0", (StringRef))
ERROR(assignment_lhs_is_immutable_property,none,
"cannot assign to property: %0", (StringRef))
ERROR(assignment_subscript_has_immutable_base,none,
"cannot assign through subscript: %0", (StringRef))
ERROR(assignment_dynamic_property_has_immutable_base,none,
"cannot assign through dynamic lookup property: %0", (StringRef))
ERROR(assignment_bang_has_immutable_subcomponent,none,
"cannot assign through '!': %0", (StringRef))
NOTE(candidate_is_not_assignable,none,
"candidate is not assignable: %0 %1",
(DescriptiveDeclKind, DeclName))
NOTE(change_to_mutating,none,
"mark %select{method|accessor}0 'mutating' to make 'self' mutable",
(bool))
NOTE(masked_mutable_property,none,
"add explicit '%0' to refer to mutable %1 of %2",
(StringRef, DescriptiveDeclKind, Type))
ERROR(assignment_let_property_delegating_init,none,
"'let' property %0 may not be initialized directly; use "
"\"self.init(...)\" or \"self = ...\" instead", (DeclNameRef))
ERROR(label_shadowed, none,
"label %0 cannot be reused on an inner statement", (Identifier))
ERROR(break_outside_loop,none,
"'break' is only allowed inside a loop, if, do, or switch", ())
ERROR(unlabeled_break_outside_loop,none,
"unlabeled 'break' is only allowed inside a loop or switch, a"
" labeled break is required to exit an if or do", ())
ERROR(continue_outside_loop,none,
"'continue' is only allowed inside a loop", ())
ERROR(continue_not_in_this_stmt,none,
"'continue' cannot be used with %0 statements", (StringRef))
ERROR(unresolved_label,none,
"use of unresolved label %0", (Identifier))
ERROR(unresolved_label_corrected,none,
"use of unresolved label %0; did you mean %1?",
(Identifier, Identifier))
ERROR(foreach_sequence_does_not_conform_to_expected_protocol,none,
"for-in loop requires %0 to conform to %1"
"%select{|; did you mean to unwrap optional?}2",
(Type, Type, bool))
// Switch Stmt
ERROR(no_match_operator,none,
"no binary '~=' operator available for 'switch' statement", ())
ERROR(fallthrough_outside_switch,none,
"'fallthrough' is only allowed inside a switch", ())
ERROR(fallthrough_from_last_case,none,
"'fallthrough' without a following 'case' or 'default' block", ())
ERROR(fallthrough_into_case_with_var_binding,none,
"'fallthrough' from a case which doesn't bind variable %0",
(Identifier))
ERROR(unnecessary_cast_over_optionset,none,
"unnecessary cast over raw value of %0", (Type))
ERROR(mutability_mismatch_multiple_pattern_list,none,
"'%select{var|let}0' pattern binding must match previous "
"'%select{var|let}1' pattern binding", (bool, bool))
ERROR(type_mismatch_multiple_pattern_list,none,
"pattern variable bound to type %0, expected type %1", (Type, Type))
ERROR(type_mismatch_fallthrough_pattern_list,none,
"pattern variable bound to type %0, fallthrough case bound to type %1", (Type, Type))
ERROR(unknown_case_must_be_catchall,none,
"'@unknown' is only supported for catch-all cases (\"case _\")", ())
ERROR(unknown_case_where_clause,none,
"'where' cannot be used with '@unknown'", ())
ERROR(unknown_case_multiple_patterns,none,
"'@unknown' cannot be applied to multiple patterns", ())
ERROR(unknown_case_must_be_last,none,
"'@unknown' can only be applied to the last case in a switch", ())
WARNING(where_on_one_item, none,
"'where' only applies to the second pattern match in this case", ())
NOTE(add_where_newline, none,
"disambiguate by adding a line break between them if this is desired", ())
NOTE(duplicate_where, none,
"duplicate the 'where' on both patterns to check both patterns",())
WARNING(trailing_closure_requires_parens,none,
"trailing closure in this context is confusable with the body of the"
" statement; pass as a parenthesized argument to silence this warning",
())
ERROR(opaque_type_var_no_init,none,
"property declares an opaque return type, but has no initializer "
"expression from which to infer an underlying type", ())
ERROR(opaque_type_no_underlying_type_candidates,none,
"function declares an opaque return type, but has no return statements "
"in its body from which to infer an underlying type", ())
ERROR(opaque_type_mismatched_underlying_type_candidates,none,
"function declares an opaque return type, but the return statements "
"in its body do not have matching underlying types", ())
NOTE(opaque_type_underlying_type_candidate_here,none,
"return statement has underlying type %0", (Type))
ERROR(opaque_type_self_referential_underlying_type,none,
"function opaque return type was inferred as %0, which defines the "
"opaque type in terms of itself", (Type))
ERROR(opaque_type_var_no_underlying_type,none,
"property declares an opaque return type, but cannot infer the "
"underlying type from its initializer expression", ())
//------------------------------------------------------------------------------
// MARK: Type Check Patterns
//------------------------------------------------------------------------------
ERROR(cannot_infer_type_for_pattern,none,
"type annotation missing in pattern", ())
ERROR(refutable_pattern_requires_initializer,none,
"pattern matching requires an initializer value to match against", ())
WARNING(var_pattern_didnt_bind_variables,none,
"'%0' pattern has no effect; sub-pattern didn't bind any variables",
(StringRef))
ERROR(iflet_pattern_matching,none,
"pattern matching in a condition requires the 'case' keyword", ())
ERROR(iflet_implicitly_unwraps,none,
"pattern matching in a condition implicitly unwraps optionals", ())
ERROR(type_pattern_missing_is,none,
"'is' keyword required to pattern match against type name", ())
ERROR(pattern_type_mismatch_context,none,
"type annotation does not match contextual type %0", (Type))
ERROR(tuple_pattern_in_non_tuple_context,none,
"tuple pattern cannot match values of the non-tuple type %0", (Type))
WARNING(found_one_pattern_for_several_associated_values,none,
"enum case '%0' has %1 associated values; matching them as a tuple "
"is deprecated", (StringRef, unsigned))
WARNING(converting_tuple_into_several_associated_values,none,
"enum case '%0' has %1 associated values", (StringRef, unsigned))
WARNING(converting_several_associated_values_into_tuple,none,
"enum case '%0' has one associated value that is a tuple of %1 "
"elements",(StringRef, unsigned))
ERROR(closure_argument_list_tuple,none,
"contextual closure type %0 expects %1 argument%s1, "
"but %2 %select{were|was}3 used in closure body", (Type, unsigned, unsigned, bool))
ERROR(closure_argument_list_missing,none,
"contextual type for closure argument list expects %0 argument%s0, "
"which cannot be implicitly ignored", (unsigned))
ERROR(closure_tuple_parameter_destructuring,none,
"closure tuple parameter %0 does not support destructuring", (Type))
ERROR(closure_tuple_parameter_destructuring_implicit,none,
"closure tuple parameter %0 does not support destructuring "
"with implicit parameters", (Type))
ERROR(single_tuple_parameter_mismatch_special,none,
"%0 expects a single parameter of type %1%2",
(DescriptiveDeclKind, Type, StringRef))
ERROR(single_tuple_parameter_mismatch_normal,none,
"%0 %1 expects a single parameter of type %2%3",
(DescriptiveDeclKind, DeclBaseName, Type, StringRef))
ERROR(cannot_convert_single_tuple_into_multiple_arguments,none,
"%0 %select{%1 |}2expects %3 separate arguments"
"%select{|; remove extra parentheses to change tuple into separate arguments}4",
(DescriptiveDeclKind, DeclName, bool, unsigned, bool))
ERROR(enum_element_pattern_assoc_values_mismatch,none,
"pattern with associated values does not match enum case %0",
(DeclNameRef))
NOTE(enum_element_pattern_assoc_values_remove,none,
"remove associated values to make the pattern match", ())
ERROR(tuple_pattern_length_mismatch,none,
"tuple pattern has the wrong length for tuple type %0", (Type))
ERROR(tuple_pattern_label_mismatch,none,
"tuple pattern element label %0 must be %1", (Identifier, Identifier))
ERROR(enum_element_pattern_member_not_found,none,
"enum case %0 not found in type %1", (DeclNameRef, Type))
ERROR(optional_element_pattern_not_valid_type,none,
"'?' pattern cannot match values of type %0", (Type))
ERROR(condition_optional_element_pattern_not_valid_type,none,
"initializer for conditional binding must have Optional type, not %0",
(Type))
ERROR(enum_element_pattern_not_member_of_enum,none,
"enum case %0 is not a member of type %1", (DeclNameRef, Type))
ERROR(ambiguous_enum_pattern_type,none,
"generic enum type %0 is ambiguous without explicit generic parameters "
"when matching value of type %1", (Type, Type))
WARNING(type_inferred_to_undesirable_type,none,
"%select{variable|constant}2 %0 inferred to have type %1, "
"which may be unexpected", (Identifier, Type, bool))
WARNING(type_inferred_to_uninhabited_type,none,
"%select{variable|constant}2 %0 inferred to have type %1, "
"which is an enum with no cases", (Identifier, Type, bool))
WARNING(type_inferred_to_uninhabited_tuple_type,none,
"%select{variable|constant}2 %0 inferred to have type %1, "
"which contains an enum with no cases", (Identifier, Type, bool))
NOTE(add_explicit_type_annotation_to_silence,none,
"add an explicit type annotation to silence this warning", ())
WARNING(unowned_assignment_immediate_deallocation,none,
"instance will be immediately deallocated because "
"%select{variable|property}2 %0 is %1",
(Identifier, ReferenceOwnership, /*Is Property*/unsigned))
NOTE(unowned_assignment_requires_strong,none,
"a strong reference is required to prevent the instance from being "
"deallocated", ())
ERROR(isa_collection_downcast_pattern_value_unimplemented,none,
"collection downcast in cast pattern is not implemented; use an explicit "
"downcast to %0 instead", (Type))
//------------------------------------------------------------------------------
// MARK: Error-handling diagnostics
//------------------------------------------------------------------------------
ERROR(try_unhandled,none,
"errors thrown from here are not handled", ())
ERROR(throwing_call_unhandled,none,
"call can throw, but the error is not handled", ())
ERROR(tryless_throwing_call_unhandled,none,
"call can throw, but it is not marked with 'try' and "
"the error is not handled", ())
ERROR(throw_in_nonthrowing_function,none,
"error is not handled because the enclosing function "
"is not declared 'throws'", ())
ERROR(throwing_call_in_rethrows_function,none,
"call can throw, but the error is not handled; a function declared "
"'rethrows' may only throw if its parameter does", ())
ERROR(tryless_throwing_call_in_rethrows_function,none,
"call can throw, but it is not marked with 'try' and "
"the error is not handled; a function declared "
"'rethrows' may only throw if its parameter does", ())
ERROR(throw_in_rethrows_function,none,
"a function declared 'rethrows' may only throw if its parameter does", ())
NOTE(because_rethrows_argument_throws,none,
"call is to 'rethrows' function, but argument function can throw", ())
NOTE(because_rethrows_default_argument_throws,none,
"call is to 'rethrows' function, but a defaulted argument function"
" can throw", ())
ERROR(throwing_call_in_nonthrowing_autoclosure,none,
"call can throw, but it is executed in a non-throwing "
"autoclosure",())
ERROR(tryless_throwing_call_in_nonthrowing_autoclosure,none,
"call can throw, but it is not marked with 'try' and "
"it is executed in a non-throwing autoclosure",())
ERROR(throw_in_nonthrowing_autoclosure,none,
"error is not handled because it is thrown in a non-throwing "
"autoclosure", ())
ERROR(try_unhandled_in_nonexhaustive_catch,none,
"errors thrown from here are not handled because the "
"enclosing catch is not exhaustive", ())
ERROR(throwing_call_in_nonexhaustive_catch,none,
"call can throw, but the enclosing catch is not exhaustive", ())
ERROR(tryless_throwing_call_in_nonexhaustive_catch,none,
"call can throw, but it is not marked with 'try' and "
"the enclosing catch is not exhaustive", ())
ERROR(throw_in_nonexhaustive_catch,none,
"error is not handled because the enclosing catch is not exhaustive", ())
ERROR(throwing_call_in_illegal_context,none,
"call can throw, but errors cannot be thrown out of %0",
(StringRef))
ERROR(throw_in_illegal_context,none,
"errors cannot be thrown out of %0", (StringRef))
ERROR(throwing_operator_without_try,none,
"operator can throw but expression is not marked with 'try'", ())
ERROR(throwing_interpolation_without_try,none,
"interpolation can throw but is not marked with 'try'", ())
ERROR(throwing_call_without_try,none,
"call can throw but is not marked with 'try'", ())
NOTE(note_forgot_try,none,
"did you mean to use 'try'?", ())
NOTE(note_error_to_optional,none,
"did you mean to handle error as optional value?", ())
NOTE(note_disable_error_propagation,none,
"did you mean to disable error propagation?", ())
WARNING(no_throw_in_try,none,
"no calls to throwing functions occur within 'try' expression", ())
WARNING(no_throw_in_do_with_catch,none,
"'catch' block is unreachable because no errors are thrown in 'do' block", ())
//------------------------------------------------------------------------------
// MARK: Type Check Types
//------------------------------------------------------------------------------
ERROR(unsupported_recursive_struct,none,
"value type %0 cannot have a stored property that recursively "
"contains it",
(Type))
WARNING(enum_non_well_founded,none,
"enum containing only recursive cases is impossible to instantiate", ())
ERROR(recursive_enum_not_indirect,none,
"recursive enum %0 is not marked 'indirect'", (Type))
ERROR(unsupported_infinitely_sized_type,none,
"value type %0 has infinite size", (Type))
NOTE(note_type_cycle_starts_here,none,
"cycle beginning here: %0", (StringRef))
NOTE(note_recursive_enum_case_here,none,
"recursive case here", ())
ERROR(sugar_type_not_found,none,
"broken standard library: cannot find "
"%select{Array|Optional|ImplicitlyUnwrappedOptional|Dictionary|"
"Error}0 type", (unsigned))
ERROR(optional_intrinsics_not_found,none,
"broken standard library: cannot find intrinsic operations on "
"Optional<T>", ())
ERROR(pointer_argument_intrinsics_not_found,none,
"broken standard library: cannot find intrinsic operations on "
"UnsafeMutablePointer<T>", ())
ERROR(array_literal_intrinsics_not_found,none,
"broken standard library: cannot find intrinsic operations on "
"Array<T>", ())
ERROR(class_super_access,none,
"class %select{must be declared %select{"
"%select{private|fileprivate|internal|%error|%error}1|private or fileprivate}3"
"|cannot be declared %select{in this context|fileprivate|internal|public|open}1}0 "
"because its superclass "
"%select{is %select{private|fileprivate|internal|'@_spi'|'@_spi'}2"
"|uses %select{a private|a fileprivate|an internal|an '@_spi'|an '@_spi'}2 "
"type as a generic parameter}4",
(bool, AccessLevel, AccessLevel, bool, bool))
WARNING(class_super_access_warn,none,
"class %select{should be declared "
"%select{private|fileprivate|internal|%error|%error}1"
"|should not be declared %select{in this context|fileprivate|internal|public|open}1}0 "
"because its superclass "
"%select{is %select{private|fileprivate|internal|'@_spi'|'@_spi'}2"
"|uses %select{a private|a fileprivate|an internal|an '@_spi'|an '@_spi'}2 "
"type as a generic parameter}4",
(bool, AccessLevel, AccessLevel, bool, bool))
ERROR(class_super_not_usable_from_inline,none,
"%select{type referenced from |}0the superclass of "
"a '@usableFromInline' class "
"must be '@usableFromInline' or public",
(bool))
WARNING(class_super_not_usable_from_inline_warn,none,
"%select{type referenced from |}0the superclass of "
"a '@usableFromInline' class "
"should be '@usableFromInline' or public",
(bool))
ERROR(dot_protocol_on_non_existential,none,
"cannot use 'Protocol' with non-protocol type %0", (Type))
ERROR(tuple_single_element,none,
"cannot create a single-element tuple with an element label", ())
ERROR(tuple_ellipsis,none,
"cannot create a variadic tuple", ())
ERROR(tuple_duplicate_label,none,
"cannot create a tuple with a duplicate element label", ())
ERROR(enum_element_ellipsis,none,
"variadic enum cases are not supported", ())
WARNING(implicitly_unwrapped_optional_in_illegal_position_interpreted_as_optional,none,
"using '!' is not allowed here; treating this as '?' instead", ())
WARNING(implicitly_unwrapped_optional_deprecated_in_this_position,none,
"using '!' here is deprecated and will be removed in a future release", ())
ERROR(implicitly_unwrapped_optional_in_illegal_position,none,
"using '!' is not allowed here; perhaps '?' was intended?", ())
// Ownership
ERROR(invalid_ownership_type,none,
"%0 may only be applied to class and class-bound protocol types, not %1",
(ReferenceOwnership, Type))
ERROR(invalid_ownership_protocol_type,none,
"%0 must not be applied to non-class-bound %1; "
"consider adding a protocol conformance that has a class bound",
(ReferenceOwnership, Type))
ERROR(invalid_ownership_incompatible_class,none,
"%0 is incompatible with %1 references",
(Type, ReferenceOwnership))
ERROR(invalid_ownership_with_optional,none,
"%0 variable cannot have optional type", (ReferenceOwnership))
ERROR(invalid_ownership_not_optional,none,
"%0 variable should have optional type %1",
(ReferenceOwnership, Type))
ERROR(invalid_ownership_is_let,none,
"%0 must be a mutable variable, because it may change at runtime",
(ReferenceOwnership))
ERROR(ownership_invalid_in_protocols,none,
"%0 cannot be applied to a property declaration in a protocol",
(ReferenceOwnership))
WARNING(ownership_invalid_in_protocols_compat_warning,none,
"%0 should not be applied to a property declaration "
"in a protocol and will be disallowed in future versions",
(ReferenceOwnership))
// required
ERROR(required_initializer_nonclass,none,
"'required' initializer in non-class type %0", (Type))
ERROR(required_initializer_in_extension,none,
"'required' initializer must be declared directly in class %0"
" (not in an extension)", (Type))
ERROR(required_initializer_missing,none,
"'required' initializer %0 must be provided by subclass of %1",
(DeclName, Type))
NOTE(required_initializer_here,none,
"'required' initializer is declared in superclass here", ())
ERROR(required_initializer_not_accessible,none,
"'required' initializer must be accessible wherever class %0 can be "
"subclassed",
(DeclName))
ERROR(required_initializer_missing_keyword,none,
"'required' modifier must be present on all overrides of a required "
"initializer", ())
ERROR(required_initializer_override_wrong_keyword,none,
"use the 'required' modifier to override a required initializer", ())
WARNING(required_initializer_override_keyword,none,
"'override' is implied when overriding a required initializer", ())
NOTE(overridden_required_initializer_here,none,
"overridden required initializer is here", ())
// Functions
ERROR(attribute_requires_function_type,none,
"@%0 attribute only applies to function types", (StringRef))
ERROR(unsupported_convention,none,
"convention '%0' not supported", (StringRef))
ERROR(unreferenced_generic_parameter,none,
"generic parameter '%0' is not used in function signature", (StringRef))
ERROR(unexpected_ctype_for_non_c_convention,none,
"convention '%0' does not support the 'cType' argument label, did you "
"mean @convention(c, cType: \"%1\") or @convention(block, cType: \"%1\") "
"instead?", (StringRef, StringRef))
ERROR(unable_to_parse_c_function_type,none,
"unable to parse '%0'; it should be a C function pointer type or a "
"block pointer type", (StringRef))
// Opaque types
ERROR(unsupported_opaque_type,none,
"'some' types are only implemented for the declared type of properties and subscripts and the return type of functions", ())
ERROR(opaque_type_unsupported_pattern,none,
"'some' type can only be declared on a single property declaration", ())
ERROR(opaque_type_in_protocol_requirement,none,
"'some' type cannot be the return type of a protocol requirement; did you mean to add an associated type?",
())
// Function differentiability
ERROR(attr_only_on_parameters_of_differentiable,none,
"'%0' may only be used on parameters of '@differentiable' function "
"types", (StringRef))
ERROR(differentiable_function_type_invalid_parameter,none,
"parameter type '%0' does not conform to 'Differentiable'"
"%select{| and satisfy '%0 == %0.TangentVector'}1, but the enclosing "
"function type is '@differentiable%select{|(linear)}1'"
"%select{|; did you want to add '@noDerivative' to this parameter?}2",
(StringRef, /*tangentVectorEqualsSelf*/ bool,
/*hasValidDifferentiabilityParameter*/ bool))
ERROR(differentiable_function_type_invalid_result,none,
"result type '%0' does not conform to 'Differentiable'"
"%select{| and satisfy '%0 == %0.TangentVector'}1, but the enclosing "
"function type is '@differentiable%select{|(linear)}1'",
(StringRef, bool))
// SIL
ERROR(opened_non_protocol,none,
"@opened cannot be applied to non-protocol type %0", (Type))
ERROR(sil_function_ellipsis,PointsToFirstBadToken,
"SIL function types cannot be variadic", ())
ERROR(sil_function_input_label,PointsToFirstBadToken,
"SIL function types cannot have labeled inputs", ())
ERROR(sil_function_output_label,PointsToFirstBadToken,
"SIL function types cannot have labeled results", ())
ERROR(sil_non_coro_yields,PointsToFirstBadToken,
"non-coroutine SIL function types cannot have @yield results", ())
ERROR(sil_function_repeat_convention,PointsToFirstBadToken,
"repeated %select{parameter|result|callee}0 convention attribute",
(unsigned))
ERROR(ast_subst_function_type,none,
"substitutions cannot be provided on a formal function type", ())
ERROR(sil_function_multiple_error_results,PointsToFirstBadToken,
"SIL function types cannot have multiple @error results", ())
ERROR(unsupported_sil_convention,none,
"convention '%0' not supported in SIL", (StringRef))
ERROR(illegal_sil_type,none,
"type %0 is not a legal SIL value type", (Type))
ERROR(sil_box_arg_mismatch,none,
"SIL box type has wrong number of generic arguments for layout", ())
// SIL Metatypes
ERROR(sil_metatype_without_repr,none,
"metatypes in SIL must have @thin, @thick, or @objc_metatype attribute",
())
ERROR(sil_metatype_multiple_reprs,none,
"metatypes in SIL can only be one of @thin, @thick, or @objc_metatype",
())
//------------------------------------------------------------------------------
// MARK: @objc and @nonobjc
//------------------------------------------------------------------------------
ERROR(objc_interop_disabled,none,
"Objective-C interoperability is disabled", ())
ERROR(attr_used_without_required_module, none,
"%0 attribute used without importing module %1",
(DeclAttribute, Identifier))
ERROR(invalid_objc_decl_context,none,
"@objc can only be used with members of classes, @objc protocols, and "
"concrete extensions of classes", ())
ERROR(invalid_objc_decl,none,
"only classes (and their extensions), protocols, methods, initializers, "
"properties, and subscript declarations can be declared @objc", ())
ERROR(invalid_objc_swift_rooted_class,none,
"only classes that inherit from NSObject can be declared @objc", ())
ERROR(invalid_nonobjc_decl,none,
"only class members and extensions of classes can be declared @nonobjc", ())
ERROR(invalid_nonobjc_extension,none,
"only extensions of classes can be declared @nonobjc", ())
ERROR(objc_in_extension_context,none,
"members of constrained extensions cannot be declared @objc", ())
ERROR(objc_in_generic_extension,none,
"extensions of %select{classes from generic context|generic classes}0 "
"cannot contain '@objc' members", (bool))
ERROR(objc_in_resilient_extension,none,
"'@objc' %0 in extension of subclass of %1 requires %2 %3",
(DescriptiveDeclKind, Identifier, StringRef, llvm::VersionTuple))
ERROR(objc_operator, none,
"operator methods cannot be declared @objc", ())
ERROR(objc_operator_proto, none,
"@objc protocols must not have operator requirements", ())
WARNING(objc_inference_swift3_dynamic,none,
"inference of '@objc' for 'dynamic' members is deprecated", ())
WARNING(objc_inference_swift3_objc_derived,none,
"inference of '@objc' for members of Objective-C-derived classes is "
"deprecated", ())
NOTE(objc_inference_swift3_addobjc,none,
"add '@objc' to continue exposing an Objective-C entry point (Swift 3 "
"behavior)", ())
NOTE(objc_inference_swift3_addnonobjc,none,
"add '@nonobjc' to suppress the Objective-C entry point (Swift 4 "
"behavior)", ())
ERROR(objc_for_generic_class,none,
"generic subclasses of '@objc' classes cannot have an explicit '@objc' "
"because they are not directly visible from Objective-C", ())
ERROR(objc_for_resilient_class,none,
"explicit '@objc' on subclass of %0 requires %1 %2",
(Identifier, StringRef, llvm::VersionTuple))
ERROR(objc_getter_for_nonobjc_property,none,
"'@objc' getter for non-'@objc' property", ())
ERROR(objc_getter_for_nonobjc_subscript,none,
"'@objc' getter for non-'@objc' subscript", ())
ERROR(objc_setter_for_nonobjc_property,none,
"'@objc' setter for non-'@objc' property", ())
ERROR(objc_setter_for_nonobjc_subscript,none,
"'@objc' setter for non-'@objc' subscript", ())
WARNING(accessor_swift3_objc_inference,none,
"%select{%0 %1|%1}2 with '@objc' %select{getter|setter}3 depends on "
"deprecated inference of '@objc'",
(DescriptiveDeclKind, DeclName, bool, bool))
ERROR(objc_enum_generic,none,
"'@objc' enum cannot be generic", ())
ERROR(objc_name_req_nullary,none,
"'@objc' %0 must have a simple name", (DescriptiveDeclKind))
ERROR(objc_name_subscript,none,
"'@objc' subscript cannot have a name; did you mean to put "
"the name on the getter or setter?", ())
ERROR(objc_name_deinit,none,
"'@objc' deinitializer cannot have a name", ())
ERROR(objc_name_func_mismatch,none,
"'@objc' %select{initializer|method}0 name provides "
"%select{one argument name|names for %1 arguments}2, but "
"%select{initializer|method}0 has %select{one parameter|%3 parameters}4"
"%select{| (%select{|including }4the error parameter)}5",
(bool, unsigned, bool, unsigned, bool, bool))
ERROR(objc_enum_case_req_name,none,
"attribute has no effect; cases within an '@objc' enum are already "
"exposed to Objective-C", ())
ERROR(objc_enum_case_req_objc_enum,none,
"'@objc' enum case is not allowed outside of an '@objc' enum", ())
ERROR(objc_enum_case_multi,none,
"'@objc' enum case declaration defines multiple enum cases with the same Objective-C name", ())
ERROR(objc_extension_not_class,none,
"'@objc' can only be applied to an extension of a class", ())
// If you change this, also change enum ObjCReason
#define OBJC_ATTR_SELECT "select{marked @_cdecl|marked dynamic|marked @objc|marked @IBOutlet|marked @IBAction|marked @IBSegueAction|marked @NSManaged|a member of an @objc protocol|implicitly @objc|an @objc override|an implementation of an @objc requirement|marked @IBInspectable|marked @GKInspectable|in an @objc extension of a class (without @nonobjc)}"
WARNING(attribute_meaningless_when_nonobjc,none,
"'@%0' attribute is meaningless on a property that cannot be "
"represented in Objective-C", (StringRef))
ERROR(objc_invalid_on_var,none,
"property cannot be %" OBJC_ATTR_SELECT "0 "
"because its type cannot be represented in Objective-C", (unsigned))
ERROR(objc_invalid_on_subscript,none,
"subscript cannot be %" OBJC_ATTR_SELECT "0 because its type "
"cannot be represented in Objective-C", (unsigned))
ERROR(objc_invalid_on_static_subscript,none,
"%0 cannot be %" OBJC_ATTR_SELECT "1", (DescriptiveDeclKind, unsigned))
ERROR(objc_invalid_with_generic_params,none,
"method cannot be %" OBJC_ATTR_SELECT "0 because it has generic "
"parameters", (unsigned))
ERROR(objc_convention_invalid,none,
"%0 is not representable in Objective-C, so it cannot be used"
" with '@convention(%1)'", (Type, StringRef))
WARNING(paren_void_probably_void,none,
"when calling this function in Swift 4 or later, you must pass a '()' tuple; did you mean for the input type to be '()'?", ())
NOTE(not_objc_empty_protocol_composition,none,
"'Any' is not considered '@objc'; use 'AnyObject' instead", ())
NOTE(not_objc_protocol,none,
"protocol-constrained type containing protocol %0 cannot be represented "
"in Objective-C", (Type))
NOTE(not_objc_class_constraint,none,
"protocol-constrained type containing class %0 cannot be represented "
"in Objective-C", (Type))
NOTE(not_objc_error_protocol_composition,none,
"protocol-constrained type containing 'Error' cannot be represented "
"in Objective-C", ())
NOTE(not_objc_empty_tuple,none,
"empty tuple type cannot be represented in Objective-C", ())
NOTE(not_objc_tuple,none,
"tuples cannot be represented in Objective-C", ())
NOTE(not_objc_swift_class,none,
"classes not annotated with @objc cannot be represented "
"in Objective-C", ())
NOTE(not_objc_swift_struct,none,
"Swift structs cannot be represented in Objective-C", ())
NOTE(not_objc_swift_enum,none,
"non-'@objc' enums cannot be represented in Objective-C", ())
NOTE(not_objc_generic_type_param,none,
"generic type parameters cannot be represented in Objective-C", ())
NOTE(not_objc_function_type_param,none,
"function types cannot be represented in Objective-C unless their "
"parameters and returns can be", ())
NOTE(not_objc_function_type_throwing,none,
"throwing function types cannot be represented in Objective-C", ())
NOTE(objc_inferring_on_objc_protocol_member,none,
"inferring '@objc' because the declaration is a member of "
"an '@objc' protocol", ())
NOTE(objc_overriding_objc_decl,none,
"overriding '@objc' %select{property|subscript|initializer|method}0 %1 "
"here", (unsigned, DeclName))
NOTE(objc_witness_objc_requirement,none,
"satisfying requirement for %0 %1 in protocol %2",
(DescriptiveDeclKind, DeclName, DeclName))
WARNING(witness_swift3_objc_inference,none,
"use of %0 %1 to satisfy a requirement of protocol %2 depends on "
"'@objc' inference deprecated in Swift 4",
(DescriptiveDeclKind, DeclName, Type))
ERROR(no_opaque_return_type_of,none,
"unable to resolve type for _opaqueReturnTypeOf attribute", ())
ERROR(objc_observing_accessor, none,
"observing accessors are not allowed to be marked @objc", ())
ERROR(objc_addressor, none,
"addressors are not allowed to be marked @objc", ())
ERROR(objc_coroutine_accessor, none,
"'read' and 'modify' accessors are not allowed to be marked @objc", ())
ERROR(objc_invalid_on_func_variadic,none,
"method cannot be %" OBJC_ATTR_SELECT "0 because it has a variadic "
"parameter", (unsigned))
ERROR(objc_invalid_on_func_inout,none,
"method cannot be %" OBJC_ATTR_SELECT "0 because inout "
"parameters cannot be represented in Objective-C", (unsigned))
ERROR(objc_invalid_on_func_param_type,none,
"method cannot be %" OBJC_ATTR_SELECT "1 because the type of the "
"parameter %0 cannot be represented in Objective-C", (unsigned, unsigned))
ERROR(objc_invalid_on_func_single_param_type,none,
"method cannot be %" OBJC_ATTR_SELECT "0 because the type of the "
"parameter cannot be represented in Objective-C", (unsigned))
ERROR(objc_invalid_on_func_result_type,none,
"method cannot be %" OBJC_ATTR_SELECT "0 because its result type "
"cannot be represented in Objective-C", (unsigned))
ERROR(objc_invalid_on_foreign_class,none,
"method cannot be %" OBJC_ATTR_SELECT "0 because Core Foundation "
"types are not classes in Objective-C", (unsigned))
ERROR(objc_invalid_on_throwing_optional_result,none,
"throwing method cannot be %" OBJC_ATTR_SELECT "0 because "
"it returns a value of optional type %1; 'nil' indicates failure to "
"Objective-C",
(unsigned, Type))
ERROR(objc_invalid_on_throwing_result,none,
"throwing method cannot be %" OBJC_ATTR_SELECT "0 because "
"it returns a value of type %1; return 'Void' or a type that bridges "
"to an Objective-C class",
(unsigned, Type))
ERROR(objc_invalid_on_failing_init,none,
"a failable and throwing initializer cannot be "
"%" OBJC_ATTR_SELECT "0 because 'nil' indicates failure to Objective-C",
(unsigned))
ERROR(objc_in_objc_runtime_visible,none,
"%0 cannot be %" OBJC_ATTR_SELECT "1 because class %2 is only visible "
"via the Objective-C runtime",
(DescriptiveDeclKind, unsigned, Identifier))
ERROR(objc_override_method_selector_mismatch,none,
"Objective-C method has a different selector from the "
"method it overrides (%0 vs. %1)", (ObjCSelector, ObjCSelector))
ERROR(objc_override_property_name_mismatch,none,
"Objective-C property has a different name from the "
"property it overrides (%0 vs. %1)", (Identifier, Identifier))
ERROR(objc_ambiguous_inference,none,
"ambiguous inference of Objective-C name for %0 %1 (%2 vs %3)",
(DescriptiveDeclKind, DeclName, ObjCSelector, ObjCSelector))
NOTE(objc_ambiguous_inference_candidate,none,
"%0 (in protocol %1) provides Objective-C name %2",
(DeclName, DeclName, ObjCSelector))
ERROR(objc_ambiguous_error_convention,none,
"%0 overrides or implements protocol requirements for Objective-C "
"declarations with incompatible error argument conventions",
(DeclName))
NOTE(objc_ambiguous_error_convention_candidate,none,
"%0 provides an error argument here", (DeclName))
ERROR(nonlocal_bridged_to_objc,none,
"conformance of %0 to %1 can only be written in module %2",
(Identifier, Identifier, Identifier))
ERROR(missing_bridging_function,Fatal,
"missing '%select{_forceBridgeFromObjectiveC|"
"_conditionallyBridgeFromObjectiveC}0'", (bool))
#define OBJC_DIAG_SELECT "%select{initializer %1|implicit initializer %1|deinitializer|implicit deinitializer|method %1|getter for %1|subscript getter|setter for %1|subscript setter}0"
#define OBJC_DIAG_SELECT_2 "%select{initializer %3|implicit initializer %3|deinitializer|implicit deinitializer|method %3|getter for %3|subscript getter|setter for %3|subscript setter}2"
ERROR(objc_redecl,none,
OBJC_DIAG_SELECT " with Objective-C selector %4 conflicts with "
OBJC_DIAG_SELECT_2 " with the same Objective-C selector",
(unsigned, DeclName, unsigned, DeclName, ObjCSelector))
NOTE(objc_declared_here,none,
OBJC_DIAG_SELECT " declared here",
(unsigned, DeclName))
ERROR(objc_redecl_same,none,
OBJC_DIAG_SELECT " with Objective-C selector %2 conflicts with "
"previous declaration with the same Objective-C selector",
(unsigned, DeclName, ObjCSelector))
ERROR(objc_override_other,none,
OBJC_DIAG_SELECT " with Objective-C selector %4 conflicts with "
OBJC_DIAG_SELECT_2 " from superclass %5 with the same Objective-C "
"selector",
(unsigned, DeclName, unsigned, DeclName, ObjCSelector, Type))
ERROR(objc_class_method_not_permitted,none,
OBJC_DIAG_SELECT " defines Objective-C class method %2, which is "
"not permitted by Swift", (unsigned, DeclName, ObjCSelector))
ERROR(objc_witness_selector_mismatch,none,
"Objective-C method %2 provided by " OBJC_DIAG_SELECT
" does not match the requirement's selector (%3)",
(unsigned, DeclName, ObjCSelector, ObjCSelector))
ERROR(objc_optional_requirement_conflict,none,
"Objective-C method %4 provided by " OBJC_DIAG_SELECT
" conflicts with optional requirement " OBJC_DIAG_SELECT_2
" in protocol %5",
(unsigned, DeclName, unsigned, DeclName, ObjCSelector, DeclName))
NOTE(objc_optional_requirement_swift_rename,none,
"rename %select{method|initializer|property|subscript}0 to match "
"requirement %1", (bool, DeclName))
ERROR(witness_non_objc,none,
"non-'@objc' " OBJC_DIAG_SELECT " does not satisfy requirement "
"of '@objc' protocol %2",
(unsigned, DeclName, DeclName))
WARNING(witness_non_objc_optional,none,
"non-'@objc' " OBJC_DIAG_SELECT " does not satisfy optional "
"requirement of '@objc' protocol %2",
(unsigned, DeclName, DeclName))
ERROR(witness_non_objc_storage,none,
"non-'@objc' %select{property %1|subscript}0 does not satisfy "
"requirement of '@objc' protocol %2",
(bool, DeclName, DeclName))
WARNING(witness_non_objc_storage_optional,none,
"non-'@objc' %select{property %1|subscript}0 does not satisfy "
"optional requirement of '@objc' protocol %2",
(bool, DeclName, DeclName))
ERROR(nonobjc_not_allowed,none,
"declaration is %" OBJC_ATTR_SELECT "0, and cannot be marked @nonobjc",
(unsigned))
#undef OBJC_DIAG_SELECT_2
#undef OBJC_DIAG_SELECT
#undef OBJC_ATTR_SELECT
//------------------------------------------------------------------------------
// MARK: @_borrowed
//------------------------------------------------------------------------------
ERROR(borrowed_with_objc_dynamic,none,
"%0 cannot be '@_borrowed' if it is '@objc dynamic'",
(DescriptiveDeclKind))
ERROR(borrowed_on_objc_protocol_requirement,none,
"%0 cannot be '@_borrowed' if it is an @objc protocol requirement",
(DescriptiveDeclKind))
//------------------------------------------------------------------------------
// MARK: dynamic
//------------------------------------------------------------------------------
ERROR(dynamic_with_transparent,none,
"a declaration cannot be both '@_tranparent' and 'dynamic'",
())
//------------------------------------------------------------------------------
// MARK: @_dynamicReplacement(for:)
//------------------------------------------------------------------------------
ERROR(dynamic_replacement_accessor_type_mismatch, none,
"replaced accessor %0's type does not match", (DeclName))
ERROR(dynamic_replacement_accessor_not_dynamic, none,
"replaced accessor for %0 is not marked dynamic", (DeclName))
ERROR(dynamic_replacement_accessor_not_explicit, none,
"replaced accessor %select{get|set|_read|_modify|willSet|didSet|unsafeAddress|addressWithOwner|addressWithNativeOwner|unsafeMutableAddress|mutableAddressWithOwner|}0 for %1 is not explicitly defined",
(unsigned, DeclName))
ERROR(dynamic_replacement_function_not_dynamic, none,
"replaced function %0 is not marked dynamic", (DeclName))
ERROR(dynamic_replacement_function_not_found, none,
"replaced function %0 could not be found", (DeclNameRef))
ERROR(dynamic_replacement_accessor_not_found, none,
"replaced accessor for %0 could not be found", (DeclNameRef))
ERROR(dynamic_replacement_accessor_ambiguous, none,
"replaced accessor for %0 occurs in multiple places", (DeclNameRef))
NOTE(dynamic_replacement_accessor_ambiguous_candidate, none,
"candidate accessor found in module %0", (DeclName))
ERROR(dynamic_replacement_function_of_type_not_found, none,
"replaced function %0 of type %1 could not be found", (DeclNameRef, Type))
NOTE(dynamic_replacement_found_function_of_type, none,
"found function %0 of type %1", (DeclName, Type))
ERROR(dynamic_replacement_not_in_extension, none,
"dynamicReplacement(for:) of %0 is not defined in an extension or at the "
"file level", (DeclName))
ERROR(dynamic_replacement_must_not_be_dynamic, none,
"dynamicReplacement(for:) of %0 must not be dynamic itself", (DeclName))
ERROR(dynamic_replacement_replaced_not_objc_dynamic, none,
"%0 is not marked @objc dynamic", (DeclName))
ERROR(dynamic_replacement_replacement_not_objc_dynamic, none,
"%0 is marked @objc dynamic", (DeclName))
ERROR(dynamic_replacement_replaced_constructor_is_convenience, none,
"replaced constructor %0 is marked as convenience", (DeclNameRef))
ERROR(dynamic_replacement_replaced_constructor_is_not_convenience, none,
"replaced constructor %0 is not marked as convenience", (DeclNameRef))
//------------------------------------------------------------------------------
// MARK: @_typeEraser()
//------------------------------------------------------------------------------
ERROR(non_nominal_type_eraser,none,
"type eraser must be a class, struct, or enum", ())
ERROR(type_eraser_does_not_conform,none,
"type eraser %0 must conform to protocol %1", (Type, Type))
ERROR(type_eraser_not_accessible,none,
"%select{private|fileprivate|internal|public|open}0 type eraser %1 "
"cannot have more restrictive access than protocol %2 "
"(which is %select{private|fileprivate|internal|public|open}3)",
(AccessLevel, Identifier, Type, AccessLevel))
ERROR(type_eraser_missing_init,none,
"type eraser %0 must have an initializer of the form "
"'init<T: %1>(erasing: T)'", (Type, StringRef))
ERROR(type_eraser_unviable_init,none,
"type eraser %0 has no viable initializer of the form "
"'init<T: %1>(erasing: T)'", (Type, StringRef))
NOTE(type_eraser_declared_here,none,
"type eraser declared here",())
NOTE(type_eraser_failable_init,none,
"'init(erasing:)' cannot be failable",())
NOTE(type_eraser_init_unsatisfied_requirements,none,
"'init(erasing:)' cannot have unsatisfied requirements "
"when %0 = 'some %1'", (Type, StringRef))
NOTE(type_eraser_init_not_accessible,none,
"%select{private|fileprivate|internal|public|open}0 'init(erasing:)' "
"cannot have more restrictive access than protocol %1 "
"(which is %select{private|fileprivate|internal|public|open}2)",
(AccessLevel, Type, AccessLevel))
//------------------------------------------------------------------------------
// MARK: @available
//------------------------------------------------------------------------------
ERROR(availability_decl_unavailable, none,
"%select{getter for |setter for |}0%1 is unavailable"
"%select{ in %3|}2%select{|: %4}4",
(unsigned, DeclName, bool, StringRef, StringRef))
#define REPLACEMENT_DECL_KIND_SELECT "select{| instance method| property}"
ERROR(availability_decl_unavailable_rename, none,
"%select{getter for |setter for |}0%1 has been "
"%select{renamed to|replaced by}2%" REPLACEMENT_DECL_KIND_SELECT "3 "
"'%4'%select{|: %5}5",
(unsigned, DeclName, bool, unsigned, StringRef, StringRef))
NOTE(availability_marked_unavailable, none,
"%select{getter for |setter for |}0%1 has been explicitly marked "
"unavailable here", (unsigned, DeclName))
NOTE(availability_introduced_in_version, none,
"%select{getter for |setter for |}0%1 was introduced in %2 %3",
(unsigned, DeclName, StringRef, llvm::VersionTuple))
NOTE(availability_obsoleted, none,
"%select{getter for |setter for |}0%1 was obsoleted in %2 %3",
(unsigned, DeclName, StringRef, llvm::VersionTuple))
WARNING(availability_deprecated, none,
"%select{getter for |setter for |}0%1 %select{is|%select{is|was}4}2 "
"deprecated%select{| in %3%select{| %5}4}2%select{|: %6}6",
(unsigned, DeclName, bool, StringRef, bool, llvm::VersionTuple,
StringRef))
WARNING(availability_deprecated_rename, none,
"%select{getter for |setter for |}0%1 %select{is|%select{is|was}4}2 "
"deprecated%select{| in %3%select{| %5}4}2: "
"%select{renamed to|replaced by}6%" REPLACEMENT_DECL_KIND_SELECT "7 "
"'%8'",
(unsigned, DeclName, bool, StringRef, bool, llvm::VersionTuple, bool,
unsigned, StringRef))
#undef REPLACEMENT_DECL_KIND_SELECT
NOTE(note_deprecated_rename, none,
"use '%0' instead", (StringRef))
ERROR(availability_decl_more_than_enclosing, none,
"declaration cannot be more available than enclosing scope", ())
NOTE(availability_decl_more_than_enclosing_enclosing_here, none,
"enclosing scope here", ())
ERROR(availability_decl_only_version_newer, none,
"%0 is only available in %1 %2 or newer",
(DeclName, StringRef, llvm::VersionTuple))
ERROR(availability_opaque_types_only_version_newer, none,
"'some' return types are only available in %0 %1 or newer",
(StringRef, llvm::VersionTuple))
NOTE(availability_guard_with_version_check, none,
"add 'if #available' version check", ())
NOTE(availability_add_attribute, none,
"add @available attribute to enclosing %0", (DescriptiveDeclKind))
FIXIT(insert_available_attr,
"@available(%0 %1, *)\n%2",
(StringRef, StringRef, StringRef))
ERROR(availability_accessor_only_version_newer, none,
"%select{getter|setter}0 for %1 is only available in %2 %3"
" or newer",
(/*AccessorKind*/unsigned, DeclName, StringRef, llvm::VersionTuple))
ERROR(availability_inout_accessor_only_version_newer, none,
"cannot pass as inout because %select{getter|setter}0 for %1 is only "
"available in %2 %3 or newer",
(/*AccessorKind*/unsigned, DeclName, StringRef, llvm::VersionTuple))
ERROR(availability_query_required_for_platform, none,
"condition required for target platform '%0'", (StringRef))
WARNING(availability_query_useless_enclosing_scope, none,
"unnecessary check for '%0'; enclosing scope ensures guard "
"will always be true", (StringRef))
NOTE(availability_query_useless_enclosing_scope_here, none,
"enclosing scope here", ())
ERROR(availability_global_script_no_potential,
none, "global variable cannot be marked potentially "
"unavailable with '@available' in script mode", ())
ERROR(availability_stored_property_no_potential,
none, "stored properties cannot be marked potentially unavailable with "
"'@available'", ())
ERROR(availability_protocol_requires_version,
none, "protocol %0 requires %1 to be available in %2 %3 and newer",
(DeclName, DeclName, StringRef, llvm::VersionTuple))
NOTE(availability_protocol_requirement_here, none,
"protocol requirement here", ())
WARNING(public_decl_needs_availability, none,
"public declarations should have an availability attribute when building "
"with -require-explicit-availability", ())
// This doesn't display as an availability diagnostic, but it's
// implemented there and fires when these subscripts are marked
// unavailable, so it seems appropriate to put it here.
ERROR(availabilty_string_subscript_migration, none,
"subscripts returning String were obsoleted in Swift 4; explicitly "
"construct a String from subscripted result", ())
//------------------------------------------------------------------------------
// MARK: @discardableResult
//------------------------------------------------------------------------------
WARNING(discardable_result_on_void_never_function, none,
"@discardableResult declared on a function returning %select{Never|Void}0 "
"is unnecessary", (bool))
//------------------------------------------------------------------------------
// MARK: Resilience diagnostics
//------------------------------------------------------------------------------
ERROR(fixed_layout_attr_on_internal_type,
none, "'@_fixed_layout' attribute can only be applied to '@usableFromInline' "
"or public declarations, but %0 is "
"%select{private|fileprivate|internal|%error|%error}1",
(DeclName, AccessLevel))
WARNING(fixed_layout_struct,
none, "'@frozen' attribute is now used for fixed-layout structs", ())
ERROR(frozen_attr_on_internal_type,
none, "'@frozen' attribute can only be applied to '@usableFromInline' "
"or public declarations, but %0 is "
"%select{private|fileprivate|internal|%error|%error}1",
(DeclName, AccessLevel))
ERROR(usable_from_inline_attr_with_explicit_access,
none, "'@usableFromInline' attribute can only be applied to internal "
"declarations, but %0 is %select{private|fileprivate|%error|public|open}1",
(DeclName, AccessLevel))
WARNING(inlinable_implies_usable_from_inline,none,
"'@inlinable' declaration is already '@usableFromInline'",())
ERROR(usable_from_inline_attr_in_protocol,none,
"'@usableFromInline' attribute cannot be used in protocols", ())
#define FRAGILE_FUNC_KIND \
"%select{a '@_transparent' function|" \
"an '@inlinable' function|" \
"an '@_alwaysEmitIntoClient' function|" \
"a default argument value|" \
"a property initializer in a '@frozen' type}"
#define DECL_OR_ACCESSOR "%select{%0|%0 for}"
ERROR(local_type_in_inlinable_function,
none, "type %0 cannot be nested inside " FRAGILE_FUNC_KIND "1",
(DeclName, unsigned))
ERROR(resilience_decl_unavailable,
none, DECL_OR_ACCESSOR "4 %1 is %select{private|fileprivate|internal|'@_spi'|'@_spi'}2 and "
"cannot be referenced from " FRAGILE_FUNC_KIND "3",
(DescriptiveDeclKind, DeclName, AccessLevel, unsigned, bool))
WARNING(resilience_decl_unavailable_warn,
none, DECL_OR_ACCESSOR "4 %1 is %select{private|fileprivate|internal|'@_spi'|'@_spi'}2 and "
"should not be referenced from " FRAGILE_FUNC_KIND "3",
(DescriptiveDeclKind, DeclName, AccessLevel, unsigned, bool))
ERROR(inlinable_decl_ref_from_hidden_module,
none, "%0 %1 cannot be used in " FRAGILE_FUNC_KIND "2 "
"because %select{%3 was imported implementation-only|"
"it is an SPI imported from %3}4",
(DescriptiveDeclKind, DeclName, unsigned, Identifier, unsigned))
#undef FRAGILE_FUNC_KIND
NOTE(resilience_decl_declared_here_public,
none, DECL_OR_ACCESSOR "2 %1 is not public",
(DescriptiveDeclKind, DeclName, bool))
NOTE(resilience_decl_declared_here,
none, DECL_OR_ACCESSOR "2 %1 is not '@usableFromInline' or public",
(DescriptiveDeclKind, DeclName, bool))
#undef DECL_OR_ACCESSOR
ERROR(class_designated_init_inlinable_resilient,none,
"initializer for class %0 is "
"'%select{@_transparent|@inlinable|@_alwaysEmitIntoClient|%error}1' and must "
"delegate to another initializer", (Type, unsigned))
ERROR(attribute_invalid_on_stored_property,
none, "'%0' attribute cannot be applied to stored properties", (DeclAttribute))
ERROR(inlinable_dynamic_not_supported,
none, "'@inlinable' attribute cannot be applied to 'dynamic' declarations", ())
ERROR(inlinable_decl_not_public,
none, "'@inlinable' attribute can only be applied to public declarations, "
"but %0 is %select{private|fileprivate|internal|%error|%error}1",
(DeclBaseName, AccessLevel))
ERROR(inlinable_resilient_deinit,
none, "deinitializer can only be '@inlinable' if the class is '@_fixed_layout'", ())
//------------------------------------------------------------------------------
// MARK: @_specialize diagnostics
//------------------------------------------------------------------------------
ERROR(specialize_attr_nongeneric_trailing_where,none,
"trailing 'where' clause in '_specialize' attribute of non-generic function %0", (DeclName))
ERROR(specialize_missing_where_clause,none,
"missing 'where' clause in '_specialize' attribute", ())
ERROR(specialize_empty_where_clause,none,
"empty 'where' clause in '_specialize' attribute", ())
ERROR(specialize_attr_non_concrete_same_type_req,none,
"Only concrete type same-type requirements are supported by '_specialize' attribute", ())
ERROR(specialize_attr_only_generic_param_req,none,
"Only requirements on generic parameters are supported by '_specialize' attribute", ())
ERROR(specialize_attr_only_one_concrete_same_type_req,none,
"Only one concrete type should be used in the same-type requirement in '_specialize' attribute", ())
ERROR(specialize_attr_non_protocol_type_constraint_req,none,
"Only conformances to protocol types are supported by '_specialize' attribute", ())
ERROR(specialize_attr_type_parameter_count_mismatch,none,
"%select{too many|too few}2 type parameters are specified "
"in '_specialize' attribute (got %1, but expected %0)",
(unsigned, unsigned, bool))
ERROR(specialize_attr_missing_constraint,none,
"Missing constraint for %0 in '_specialize' attribute", (DeclName))
ERROR(specialize_attr_unsupported_kind_of_req,none,
"Only same-type and layout requirements are supported by '_specialize' attribute", ())
//------------------------------------------------------------------------------
// MARK: Variable usage diagnostics
//------------------------------------------------------------------------------
WARNING(pbd_never_used_stmtcond, none,
"value %0 was defined but never used; consider replacing "
"with boolean test",
(Identifier))
WARNING(unused_setter_parameter, none,
"setter argument %0 was never used, but the property was accessed",
(Identifier))
NOTE(fixit_for_unused_setter_parameter, none,
"did you mean to use %0 instead of accessing the property's current value?", (Identifier))
WARNING(pbd_never_used, none,
"initialization of %select{variable|immutable value}1 %0 was never used"
"; consider replacing with assignment to '_' or removing it",
(Identifier, unsigned))
WARNING(capture_never_used, none,
"capture %0 was never used",
(Identifier))
WARNING(variable_never_used, none,
"%select{variable|immutable value}1 %0 was never used; "
"consider replacing with '_' or removing it",
(Identifier, unsigned))
WARNING(immutable_value_never_used_but_assigned, none,
"immutable value %0 was never used; consider removing it",
(Identifier))
WARNING(variable_never_mutated, none,
"variable %0 was never mutated; "
"consider %select{removing 'var' to make it|changing to 'let'}1 constant",
(Identifier, bool))
WARNING(variable_never_read, none,
"variable %0 was written to, but never read",
(Identifier))
WARNING(observe_keypath_property_not_objc_dynamic, none,
"passing reference to non-'@objc dynamic' property %0 to KVO method %1 "
"may lead to unexpected behavior or runtime trap", (DeclName, DeclName))
WARNING(default_magic_identifier_mismatch, none,
"parameter %0 with default argument '%1' passed to parameter %2, whose "
"default argument is '%3'",
(Identifier, StringRef, Identifier, StringRef))
NOTE(change_caller_default_to_match_callee, none,
"did you mean for parameter %0 to default to '%1'?",
(Identifier, StringRef))
NOTE(silence_default_magic_identifier_mismatch, none,
"add parentheses to silence this warning", ())
//------------------------------------------------------------------------------
// MARK: Debug diagnostics
//------------------------------------------------------------------------------
WARNING(debug_long_function_body, none,
"%0 %1 took %2ms to type-check (limit: %3ms)",
(DescriptiveDeclKind, DeclName, unsigned, unsigned))
WARNING(debug_long_closure_body, none,
"closure took %0ms to type-check (limit: %1ms)",
(unsigned, unsigned))
WARNING(debug_long_expression, none,
"expression took %0ms to type-check (limit: %1ms)",
(unsigned, unsigned))
//------------------------------------------------------------------------------
// MARK: Pattern match diagnostics
//------------------------------------------------------------------------------
ERROR(empty_switch_stmt,none,
"'switch' statement body must have at least one 'case' or 'default' "
"block; do you want to add a default case?",())
ERROR(non_exhaustive_switch,none, "switch must be exhaustive", ())
ERROR(possibly_non_exhaustive_switch,none,
"the compiler is unable to check that this switch is exhaustive in reasonable time",
())
NOTE(missing_several_cases,none,
"do you want to add "
"%select{missing cases|a default clause}0"
"?", (bool))
NOTE(missing_unknown_case,none,
"handle unknown values using \"@unknown default\"", ())
NOTE(non_exhaustive_switch_drop_unknown,none,
"remove '@unknown' to handle remaining values", ())
NOTE(missing_particular_case,none,
"add missing case: '%0'", (StringRef))
WARNING(redundant_particular_case,none,
"case is already handled by previous patterns; consider removing it",())
WARNING(redundant_particular_literal_case,none,
"literal value is already handled by previous pattern; "
"consider removing it",())
NOTE(redundant_particular_literal_case_here,none,
"first occurrence of identical literal pattern is here", ())
WARNING(non_exhaustive_switch_warn,none, "switch must be exhaustive", ())
WARNING(non_exhaustive_switch_unknown_only,none,
"switch covers known cases, but %0 may have additional unknown values"
"%select{|, possibly added in future versions}1", (Type, bool))
ERROR(override_nsobject_hashvalue_error,none,
"'NSObject.hashValue' is not overridable; "
"did you mean to override 'NSObject.hash'?", ())
WARNING(hashvalue_implementation,none,
"'Hashable.hashValue' is deprecated as a protocol requirement; "
"conform type %0 to 'Hashable' by implementing 'hash(into:)' instead",
(Type))
//------------------------------------------------------------------------------
// MARK: property wrapper diagnostics
//------------------------------------------------------------------------------
ERROR(property_wrapper_no_value_property, none,
"property wrapper type %0 does not contain a non-static property "
"named %1", (Type, Identifier))
ERROR(property_wrapper_ambiguous_value_property, none,
"property wrapper type %0 has multiple non-static properties "
"named %1", (Type, Identifier))
ERROR(property_wrapper_wrong_initial_value_init, none,
"%0 parameter type (%1) must be the same as its "
"'wrappedValue' property type (%2) or an @autoclosure thereof",
(DeclName, Type, Type))
ERROR(property_wrapper_failable_init, none,
"property wrapper initializer %0 cannot be failable", (DeclName))
ERROR(property_wrapper_type_requirement_not_accessible,none,
"%select{private|fileprivate|internal|public|open}0 %1 %2 cannot have "
"more restrictive access than its enclosing property wrapper type %3 "
"(which is %select{private|fileprivate|internal|public|open}4)",
(AccessLevel, DescriptiveDeclKind, DeclName, Type, AccessLevel))
ERROR(property_wrapper_ambiguous_enclosing_self_subscript, none,
"property wrapper type %0 has multiple enclosing-self subscripts %1",
(Type, DeclName))
ERROR(property_wrapper_attribute_not_on_property, none,
"property wrapper attribute %0 can only be applied to a property",
(DeclName))
NOTE(property_wrapper_declared_here,none,
"property wrapper type %0 declared here", (DeclName))
ERROR(property_wrapper_mutating_get_composed_to_get_only,none,
"property wrapper %0 with a mutating getter cannot be composed inside "
"get-only property wrapper %1", (TypeLoc, TypeLoc))
ERROR(property_wrapper_local,none,
"property wrappers are not yet supported on local properties", ())
ERROR(property_wrapper_top_level,none,
"property wrappers are not yet supported in top-level code", ())
ERROR(property_wrapper_let, none,
"property wrapper can only be applied to a 'var'",
())
ERROR(property_wrapper_computed, none,
"property wrapper cannot be applied to a computed property",
())
ERROR(property_with_wrapper_conflict_attribute,none,
"property %0 with a wrapper cannot also be "
"%select{lazy|@NSCopying|@NSManaged|weak|unowned|unmanaged}1",
(DeclName, int))
ERROR(property_wrapper_not_single_var, none,
"property wrapper can only apply to a single variable", ())
ERROR(property_with_wrapper_in_bad_context,none,
"%select{|non-static |non-static }1property %0 declared inside "
"%select{a protocol|an extension|an enum}1 cannot have a wrapper",
(DeclName, int))
ERROR(property_with_wrapper_overrides,none,
"property %0 with attached wrapper cannot override another property",
(DeclName))
NOTE(property_wrapper_direct_init,none,
"initialize the property wrapper type directly with "
"'(...') on the attribute", ())
ERROR(property_wrapper_incompatible_property, none,
"property type %0 does not match that of the 'wrappedValue' property of "
"its wrapper type %1", (Type, Type))
ERROR(property_wrapper_type_access,none,
"%select{%select{variable|constant}0|property}1 "
"%select{must be declared %select{"
"%select{private|fileprivate|internal|%error|%error}3|private or fileprivate}4"
"|cannot be declared "
"%select{in this context|fileprivate|internal|public|open}3}2 "
"because its property wrapper type uses "
"%select{a private|a fileprivate|an internal|%error|%error}5 type",
(bool, bool, bool, AccessLevel, bool, AccessLevel))
ERROR(property_wrapper_type_not_usable_from_inline,none,
"property wrapper type referenced from a '@usableFromInline' "
"%select{%select{variable|constant}0|property}1 "
"must be '@usableFromInline' or public",
(bool, bool))
WARNING(property_wrapper_wrapperValue,none,
"property wrapper's 'wrapperValue' property should be renamed to "
"'projectedValue'; use of 'wrapperValue' is deprecated", ())
WARNING(property_wrapper_init_initialValue,none,
"property wrapper's 'init(initialValue:)' should be renamed "
"to 'init(wrappedValue:)'; use of 'init(initialValue:)' is deprecated",
())
ERROR(property_wrapper_projection_value_missing,none,
"could not find projection value property %0", (DeclNameRef))
ERROR(property_wrapper_missing_arg_init, none, "missing argument for parameter "
"%0 in property wrapper initializer; add 'wrappedValue' and %0 "
"arguments in '@%1(...)'", (Identifier, StringRef))
//------------------------------------------------------------------------------
// MARK: function builder diagnostics
//------------------------------------------------------------------------------
ERROR(function_builder_decl, none,
"closure containing a declaration cannot be used with function "
"builder %0", (DeclName))
NOTE(note_function_builder_decl, none,
"closure containing a declaration cannot be used with function "
"builder %0", (DeclName))
ERROR(function_builder_control_flow, none,
"closure containing control flow statement cannot be used with function "
"builder %0", (DeclName))
NOTE(note_function_builder_control_flow, none,
"closure containing control flow statement cannot be used with function "
"builder %0", (DeclName))
ERROR(function_builder_attribute_not_allowed_here, none,
"function builder attribute %0 can only be applied to a parameter, "
"function, or computed property", (DeclName))
ERROR(function_builder_attribute_on_storage_without_getter, none,
"function builder attribute %0 can only be applied to a "
"%select{subscript|property|constant|variable}1 if it defines a getter",
(DeclName, unsigned))
ERROR(function_builder_parameter_not_of_function_type, none,
"function builder attribute %0 can only be applied to a parameter of "
"function type",
(DeclName))
ERROR(function_builder_parameter_autoclosure, none,
"function builder attribute %0 cannot be applied to an autoclosure "
"parameter",
(DeclName))
ERROR(function_builder_multiple, none,
"only one function builder attribute can be attached to a "
"%select{declaration|parameter}0", (bool))
NOTE(previous_function_builder_here, none,
"previous function builder specified here", ())
ERROR(function_builder_arguments, none,
"function builder attributes cannot have arguments", ())
WARNING(function_builder_disabled_by_return, none,
"application of function builder %0 disabled by explicit 'return' "
"statement", (Type))
NOTE(function_builder_remove_attr, none,
"remove the attribute to explicitly disable the function builder", ())
NOTE(function_builder_remove_returns, none,
"remove 'return' statements to apply the function builder", ())
//------------------------------------------------------------------------------
// MARK: Tuple Shuffle Diagnostics
//------------------------------------------------------------------------------
WARNING(warn_reordering_tuple_shuffle_deprecated,none,
"expression shuffles the elements of this tuple; "
"this behavior is deprecated", ())
//------------------------------------------------------------------------------
// MARK: differentiable programming diagnostics
//------------------------------------------------------------------------------
ERROR(differentiable_programming_attr_used_without_required_module, none,
"'@%0' attribute used without importing module %1",
(StringRef, Identifier))
ERROR(oslog_arg_must_be_bool_literal, none,
"argument must be a bool literal", ())
ERROR(oslog_arg_must_be_integer_literal, none,
"argument must be an integer literal", ())
ERROR(oslog_arg_must_be_string_literal, none,
"argument must be a string literal", ())
ERROR(oslog_arg_must_be_float_literal, none,
"argument must be a floating-point literal", ())
ERROR(oslog_arg_must_be_metatype_literal, none,
"argument must be a <Type>.self", ())
ERROR(oslog_arg_must_be_closure, none, "argument must be a closure", ())
ERROR(argument_must_be_constant, none,
"argument must be an expression with only literals", ())
ERROR(oslog_message_must_be_string_interpolation, none,
"argument must be a string interpolation", ())
ERROR(oslog_arg_must_be_enum_case, none,
"argument must be a case of enum %0", (Identifier))
ERROR(oslog_arg_must_be_type_member_access, none,
"argument must be a static method or property of %0", (Identifier))
ERROR(atomics_ordering_must_be_constant, none,
"ordering argument must be a static method or property of %0",
(Identifier))
#ifndef DIAG_NO_UNDEF
# if defined(DIAG)
# undef DIAG
# endif
# undef NOTE
# undef WARNING
# undef ERROR
# undef FIXIT
#endif