mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
This is a tiny improvement to the diagnostic messages emitted by Swift. Conventionally we wrap identifiers, such as module names, in single quotes in the diagnostic messages. rdar://138812125
393 lines
19 KiB
C++
393 lines
19 KiB
C++
//===--- DiagnosticsClangImporter.def - Diagnostics Text --------*- C++ -*-===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2017 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 for the Clang importer.
|
|
// 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.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#define DEFINE_DIAGNOSTIC_MACROS
|
|
#include "DefineDiagnosticMacros.h"
|
|
|
|
WARNING(warning_from_clang,none,
|
|
"%0", (StringRef))
|
|
ERROR(error_from_clang,none,
|
|
"%0", (StringRef))
|
|
NOTE(note_from_clang,none,
|
|
"%0", (StringRef))
|
|
REMARK(remark_from_clang,none,
|
|
"%0", (StringRef))
|
|
|
|
ERROR(clang_cannot_build_module,Fatal,
|
|
"could not build %select{C|Objective-C}0 module '%1'", (bool, StringRef))
|
|
|
|
ERROR(bridging_header_missing,Fatal,
|
|
"bridging header '%0' does not exist", (StringRef))
|
|
ERROR(bridging_header_error,Fatal,
|
|
"failed to import bridging header '%0'", (StringRef))
|
|
WARNING(could_not_rewrite_bridging_header,none,
|
|
"failed to serialize bridging header; "
|
|
"target may not be debuggable outside of its original project", ())
|
|
ERROR(bridging_header_pch_error,Fatal,
|
|
"failed to emit precompiled header '%0' for bridging header '%1'",
|
|
(StringRef, StringRef))
|
|
ERROR(err_rewrite_bridging_header,none,
|
|
"failed to serialize bridging header: '%0'", (StringRef))
|
|
|
|
ERROR(emit_pcm_error,Fatal,
|
|
"failed to emit precompiled module '%0' for module map '%1'",
|
|
(StringRef, StringRef))
|
|
ERROR(dump_pcm_error,Fatal,
|
|
"failed to dump precompiled module '%0'", (StringRef))
|
|
|
|
GROUPED_WARNING(invalid_swift_name_method, ClangDeclarationImport, none,
|
|
"too %select{few|many}0 parameters in swift_name attribute (expected %1; "
|
|
"got %2)", (bool, unsigned, unsigned))
|
|
GROUPED_WARNING(invalid_swift_name_for_decl, ClangDeclarationImport, none,
|
|
"custom Swift name '%0' ignored because it is not valid for %kindonly1; "
|
|
"imported as %1 instead",
|
|
(StringRef, ValueDecl *))
|
|
|
|
NOTE(note_while_importing, none, "while importing '%0'", (StringRef))
|
|
ERROR(swift_name_protocol_static, none, "swift_name cannot be used to define "
|
|
"%select{static member|init}0 on "
|
|
"protocol",
|
|
(bool))
|
|
ERROR(swift_name_no_prototype, none,
|
|
"swift_name cannot be used on a non-prototyped function declaration", ())
|
|
|
|
GROUPED_WARNING(inconsistent_swift_name, ClangDeclarationImport, none,
|
|
"inconsistent Swift name for Objective-C %select{method|property}0 "
|
|
"'%1' in '%2' (%3 in '%4' vs. %5 in '%6')",
|
|
(bool, StringRef, StringRef, DeclName, StringRef, DeclName,
|
|
StringRef))
|
|
|
|
WARNING(swift_name_attr_ignored, none,
|
|
"ignoring swift_name attribute %0; swift_name attributes have no "
|
|
"effect on method overrides",
|
|
(StringRef))
|
|
|
|
GROUPED_WARNING(swift_name_circular_context_import, ClangDeclarationImport, none,
|
|
"cycle detected while resolving '%0' in swift_name attribute for '%1'",
|
|
(StringRef, StringRef))
|
|
NOTE(swift_name_circular_context_import_other,none,
|
|
"while resolving '%0' in swift_name attribute for '%1'",
|
|
(StringRef, StringRef))
|
|
|
|
GROUPED_WARNING(unresolvable_clang_decl, ClangDeclarationImport, none,
|
|
"imported declaration '%0' could not be mapped to '%1'",
|
|
(StringRef, StringRef))
|
|
|
|
NOTE(unresolvable_clang_decl_is_a_framework_bug,none,
|
|
"please report this issue to the owners of '%0'",
|
|
(StringRef))
|
|
|
|
GROUPED_WARNING(clang_swift_attr_unhandled, ClangDeclarationImport, none,
|
|
"ignoring unknown Swift attribute or modifier '%0'", (StringRef))
|
|
|
|
GROUPED_WARNING(clang_error_code_must_be_sendable, ClangDeclarationImport, none,
|
|
"cannot make error code type '%0' non-Sendable because Swift errors "
|
|
"are always sendable", (StringRef))
|
|
|
|
GROUPED_WARNING(clang_ignored_sendable_attr, ClangDeclarationImport, none,
|
|
"cannot make type %0 sendable because '@Sendable' and '& Sendable' "
|
|
"cannot be added to it",
|
|
(Type))
|
|
|
|
GROUPED_WARNING(warn_clang_ignored_bounds_on_self, ClangDeclarationImport, none,
|
|
"bounds attribute '%0' ignored on parameter mapped to 'self'",
|
|
(StringRef))
|
|
NOTE(note_swift_name_instance_method, none,
|
|
"swift_name maps free function to instance method here", ())
|
|
|
|
WARNING(implicit_bridging_header_imported_from_module,none,
|
|
"implicit import of bridging header '%0' via module %1 "
|
|
"is deprecated and will be removed in a later version of Swift",
|
|
(StringRef, Identifier))
|
|
|
|
GROUPED_WARNING(import_multiple_mainactor_attr, ClangDeclarationImport, none,
|
|
"this attribute for global actor '%0' is invalid; the declaration already has attribute for global actor '%1'",
|
|
(StringRef, StringRef))
|
|
|
|
GROUPED_WARNING(contradicting_mutation_attrs, ClangDeclarationImport, none,
|
|
"attribute '%0' is ignored when combined with attribute '%1'",
|
|
(StringRef, StringRef))
|
|
|
|
GROUPED_WARNING(nonmutating_without_const, ClangDeclarationImport, none,
|
|
"attribute 'nonmutating' has no effect on non-const method", ())
|
|
|
|
GROUPED_WARNING(nonmutating_without_mutable_fields, ClangDeclarationImport, none,
|
|
"attribute 'nonmutating' has no effect without any mutable fields", ())
|
|
|
|
ERROR(module_map_not_found, none, "module map file '%0' not found", (StringRef))
|
|
WARNING(module_map_ignored, none, "module map file '%0' will be ignored", (StringRef))
|
|
|
|
WARNING(libc_not_found, none,
|
|
"libc not found for '%0'; C stdlib may be unavailable",
|
|
(StringRef))
|
|
WARNING(libstdcxx_not_found, none,
|
|
"libstdc++ not found for '%0'; C++ stdlib may be unavailable",
|
|
(StringRef))
|
|
WARNING(libstdcxx_modulemap_not_found, none,
|
|
"module map for libstdc++ not found for '%0'; C++ stdlib may be unavailable",
|
|
(StringRef))
|
|
|
|
GROUPED_WARNING(api_pattern_attr_ignored, ClangDeclarationImport, none,
|
|
"'%0' Swift attribute ignored on type '%1': type is not copyable or destructible",
|
|
(StringRef, StringRef))
|
|
|
|
ERROR(objc_implementation_two_impls, none,
|
|
"duplicate implementation of imported %kind0",
|
|
(Decl *))
|
|
NOTE(previous_objc_implementation, none,
|
|
"previously implemented here", ())
|
|
|
|
NOTE(macro_not_imported_unsupported_operator, none, "operator not supported in macro arithmetic", ())
|
|
NOTE(macro_not_imported_unsupported_named_operator, none, "operator '%0' not supported in macro arithmetic", (StringRef))
|
|
NOTE(macro_not_imported_invalid_string_literal, none, "invalid string literal", ())
|
|
NOTE(macro_not_imported_invalid_numeric_literal, none, "invalid numeric literal", ())
|
|
NOTE(macro_not_imported_unsupported_literal, none, "only numeric and string macro literals supported", ())
|
|
|
|
NOTE(macro_not_imported_function_like, none, "macro '%0' unavailable: function like macros not supported", (StringRef))
|
|
NOTE(macro_not_imported_unsupported_structure, none, "macro '%0' unavailable: structure not supported", (StringRef))
|
|
NOTE(macro_not_imported, none, "macro '%0' unavailable (cannot import)", (StringRef))
|
|
|
|
NOTE(return_type_not_imported, none, "return type unavailable (cannot import)", ())
|
|
NOTE(parameter_type_not_imported, none, "parameter %0 unavailable (cannot import)", (const clang::NamedDecl*))
|
|
NOTE(rvalue_ref_params_not_imported, none, "C++ functions with rvalue reference parameters are unavailable in Swift", ())
|
|
NOTE(incomplete_interface, none, "interface %0 is incomplete", (const clang::NamedDecl*))
|
|
NOTE(incomplete_protocol, none, "protocol %0 is incomplete", (const clang::NamedDecl*))
|
|
NOTE(incomplete_record, none, "record '%0' is not defined (incomplete)", (StringRef))
|
|
NOTE(record_over_aligned, none, "record '%0' is over aligned", (StringRef))
|
|
NOTE(record_non_trivial_copy_destroy, none, "record '%0' is not trivial to copy or destroy", (StringRef))
|
|
NOTE(record_is_dependent, none, "record '%0' is dependent", (StringRef))
|
|
NOTE(record_parent_unimportable, none, "record %0's parent is not importable", (StringRef))
|
|
NOTE(reference_passed_by_value, none, "function uses foreign reference type "
|
|
"'%0' as a value in %1 types which breaks "
|
|
"'swift_shared_reference' contract",
|
|
(StringRef, StringRef))
|
|
NOTE(record_not_automatically_importable, none, "record '%0' is not "
|
|
"automatically available: %1; "
|
|
"does this type have reference "
|
|
"semantics?",
|
|
(StringRef, StringRef))
|
|
NOTE(record_unsupported_default_args, none,
|
|
"copy constructors and move constructors with more than one parameter are "
|
|
"unavailable in Swift",
|
|
())
|
|
|
|
NOTE(projection_value_not_imported, none, "C++ method '%0' that returns a value "
|
|
"of type '%1' is unavailable",
|
|
(StringRef, StringRef))
|
|
NOTE(projection_ptr_not_imported, none, "C++ method '%0' that returns a pointer "
|
|
"of type '%1' is unavailable",
|
|
(StringRef, StringRef))
|
|
NOTE(projection_reference_not_imported, none, "C++ method '%0' that returns a reference "
|
|
"of type '%1' is unavailable",
|
|
(StringRef, StringRef))
|
|
NOTE(projection_may_return_interior_ptr, none, "C++ method '%0' may return an "
|
|
"interior pointer",
|
|
(StringRef))
|
|
NOTE(mark_self_contained, none, "annotate type '%0' with 'SWIFT_SELF_CONTAINED' in C++ to "
|
|
"make methods that return it available in Swift",
|
|
(StringRef))
|
|
NOTE(mark_safe_to_import, none, "annotate method '%0' with 'SWIFT_RETURNS_INDEPENDENT_VALUE' in C++ to "
|
|
"make it available in Swift",
|
|
(StringRef))
|
|
|
|
NOTE(at_to_subscript, none, "do you want to replace it with a call "
|
|
"to the subscript operator?",
|
|
())
|
|
NOTE(use_collection_apis, none, "do you want to use a for-in loop instead?",
|
|
())
|
|
NOTE(replace_with_nil, none, "do you want to compare against 'nil' instead?",
|
|
())
|
|
NOTE(get_first_element, none, "do you want to get the first element instead?",
|
|
())
|
|
NOTE(get_last_element, none, "do you want to get the last element instead?",
|
|
())
|
|
|
|
NOTE(iterator_method_unavailable, none, "C++ method '%0' that returns an "
|
|
"iterator is unavailable",
|
|
(StringRef))
|
|
NOTE(iterator_potentially_unsafe, none, "C++ methods that return iterators "
|
|
"are potentially unsafe; try using Swift collection APIs instead", ())
|
|
|
|
ERROR(private_fileid_attr_repeated, none,
|
|
"multiple SWIFT_PRIVATE_FILEID annotations were found on '%0'",
|
|
(StringRef))
|
|
|
|
ERROR(private_fileid_attr_on_incomplete_type, none,
|
|
"SWIFT_PRIVATE_FILEID cannot be applied to incomplete type, '%0'",
|
|
(StringRef))
|
|
NOTE(private_fileid_attr_here, none,
|
|
"SWIFT_PRIVATE_FILEID annotation found here", ())
|
|
|
|
GROUPED_WARNING(private_fileid_attr_format_invalid, ClangDeclarationImport, none,
|
|
"SWIFT_PRIVATE_FILEID annotation on '%0' does not have a valid file ID",
|
|
(StringRef))
|
|
REMARK(private_fileid_attr_format_specification, none,
|
|
"file IDs have the following format: 'ModuleName/FileName.swift'", ())
|
|
NOTE(private_fileid_attr_format_suggestion, none,
|
|
"did you mean '%0'?", (StringRef))
|
|
|
|
ERROR(reference_type_must_have_retain_release_attr, none,
|
|
"reference type '%1' must have %select{'retain:'|'release:'}0 Swift "
|
|
"attribute",
|
|
(bool, StringRef))
|
|
ERROR(too_many_reference_type_retain_release_attr, none,
|
|
"reference type '%1' must have only one %select{'retain:'|'release:'}0 "
|
|
"Swift "
|
|
"attribute",
|
|
(bool, StringRef))
|
|
ERROR(foreign_reference_types_cannot_find_retain_release, none,
|
|
"cannot find %select{retain|release}0 function '%1' for reference type "
|
|
"'%2'",
|
|
(bool, StringRef, StringRef))
|
|
ERROR(too_many_reference_type_retain_release_operations, none,
|
|
"multiple functions '%1' found; there must be exactly one "
|
|
"%select{retain|release}0 function for reference type '%2'",
|
|
(bool, StringRef, StringRef))
|
|
ERROR(foreign_reference_types_invalid_retain_release, none,
|
|
"specified %select{retain|release}0 function '%1' is invalid; "
|
|
"%select{retain|release}0 function must have exactly one argument of "
|
|
"type '%2'",
|
|
(bool, StringRef, StringRef))
|
|
|
|
ERROR(foreign_reference_types_retain_non_void_or_self_return_type, none,
|
|
"specified retain function '%0' is invalid; "
|
|
"retain function must either return have 'void', the reference count as an integer, or the parameter type",
|
|
(StringRef))
|
|
ERROR(foreign_reference_types_release_non_void_return_type, none,
|
|
"specified release function '%0' is invalid; "
|
|
"release function must either return 'void' or the reference count as an integer",
|
|
(StringRef))
|
|
ERROR(foreign_reference_types_retain_release_not_a_function_decl, none,
|
|
"specified %select{retain|release}0 function '%1' is not a function",
|
|
(bool, StringRef))
|
|
ERROR(foreign_reference_types_retain_release_not_an_instance_function, none,
|
|
"specified %select{retain|release}0 function '%1' is a static function; expected an instance function",
|
|
(bool, StringRef))
|
|
ERROR(conforms_to_missing_dot, none,
|
|
"expected module name and protocol name separated by '.' in protocol "
|
|
"conformance; '%0' is invalid",
|
|
(StringRef))
|
|
ERROR(cannot_find_conforms_to_module,none,
|
|
"module '%1' in specified protocol conformance '%0' is not found; did you mean to import it first?", (StringRef, StringRef))
|
|
|
|
ERROR(cannot_find_conforms_to,none,
|
|
"protocol '%0' in specified protocol conformance is not found in module '%1'", (StringRef, StringRef))
|
|
|
|
ERROR(conforms_to_ambiguous,none,
|
|
"ambiguous reference to protocol '%0' in specified protocol conformance; module '%1' contains multiple protocols named '%0'", (StringRef, StringRef))
|
|
|
|
ERROR(conforms_to_not_protocol,none,
|
|
"%kind0 referenced in protocol conformance '%1' is not a protocol",
|
|
(const ValueDecl *, StringRef))
|
|
|
|
ERROR(failed_base_method_call_synthesis,none,
|
|
"failed to synthesize call to the base method %0 of type %0",
|
|
(ValueDecl *, ValueDecl *))
|
|
|
|
ERROR(both_returns_retained_returns_unretained, none,
|
|
"%0 cannot be annotated with both SWIFT_RETURNS_RETAINED and "
|
|
"SWIFT_RETURNS_UNRETAINED",
|
|
(const clang::NamedDecl *))
|
|
|
|
ERROR(redundant_conformance_protocol,none,
|
|
"redundant conformance of %0 to protocol '%1'", (Type, StringRef))
|
|
|
|
WARNING(returns_retained_or_returns_unretained_for_non_cxx_frt_values, none,
|
|
"%0 should not be annotated with SWIFT_RETURNS_RETAINED or "
|
|
"SWIFT_RETURNS_UNRETAINED because it is not returning "
|
|
"a SWIFT_SHARED_REFERENCE type",
|
|
(const clang::NamedDecl *))
|
|
|
|
GROUPED_WARNING(returns_retained_returns_unretained_on_overloaded_operator, ClangDeclarationImport, none,
|
|
"SWIFT_RETURNS_RETAINED and SWIFT_RETURNS_UNRETAINED is not supported "
|
|
"yet for overloaded C++ %0. Overloaded C++ operators always "
|
|
"return "
|
|
"SWIFT_SHARED_REFERENCE types as owned ",
|
|
(const clang::NamedDecl *))
|
|
|
|
// TODO: In the next C++ interop version, convert this warning into an error and
|
|
// stop importing C++ types that inherit from SWIFT_SHARED_REFERENCE if the
|
|
// Swift compiler cannot find unique retain/release functions.
|
|
// rdar://145194375
|
|
GROUPED_WARNING(cant_infer_frt_in_cxx_inheritance, ClangDeclarationImport, none,
|
|
"unable to infer SWIFT_SHARED_REFERENCE for %0, although one of its "
|
|
"transitive base types is marked as SWIFT_SHARED_REFERENCE",
|
|
(const clang::NamedDecl *))
|
|
|
|
NOTE(unsupported_builtin_type, none, "built-in type '%0' not supported", (StringRef))
|
|
NOTE(record_field_not_imported, none, "field %0 unavailable (cannot import)", (const clang::NamedDecl*))
|
|
NOTE(invoked_func_not_imported, none, "function %0 unavailable (cannot import)", (const clang::NamedDecl*))
|
|
NOTE(record_method_not_imported, none, "method %0 unavailable (cannot import)", (const clang::NamedDecl*))
|
|
NOTE(objc_property_not_imported, none, "property %0 unavailable (cannot import)", (const clang::NamedDecl*))
|
|
|
|
NOTE(placeholder_for_forward_declared_interface_member_access_failure, none,
|
|
"class '%0' will be imported as an opaque placeholder class and may be "
|
|
"missing members; import the definition to access the complete "
|
|
"interface", (StringRef))
|
|
NOTE(placeholder_for_forward_declared_protocol_member_access_failure, none,
|
|
"protocol '%0' will be imported as an opaque placeholder protocol "
|
|
"and may be missing members; import the definition to access the "
|
|
"complete protocol", (StringRef))
|
|
NOTE(forward_declared_interface_label, none,
|
|
"interface %0 forward declared here", (const clang::NamedDecl*))
|
|
NOTE(forward_declared_protocol_label, none,
|
|
"protocol %0 forward declared here", (const clang::NamedDecl*))
|
|
|
|
NOTE(forward_declared_interface_clashes_with_imported_objc_Swift_interface, none,
|
|
"interface %0 is incomplete and cannot be imported as a stub; "
|
|
"its name conflicts with a %1 in module '%2'",
|
|
(const clang::NamedDecl*, StringRef, StringRef))
|
|
NOTE(forward_declared_protocol_clashes_with_imported_objc_Swift_protocol, none,
|
|
"protocol %0 is incomplete and cannot be imported as a stub; "
|
|
"its name conflicts with a %1 in module '%2'",
|
|
(const clang::NamedDecl*, StringRef, StringRef))
|
|
|
|
GROUPED_WARNING(return_escapable_with_lifetimebound, ClangDeclarationImport, none,
|
|
"the returned type '%0' is annotated as escapable; it cannot have lifetime dependencies",
|
|
(StringRef))
|
|
GROUPED_WARNING(return_nonescapable_without_lifetimebound, ClangDeclarationImport, none,
|
|
"the returned type '%0' is annotated as non-escapable; its lifetime dependencies must be annotated",
|
|
(StringRef))
|
|
|
|
ERROR(unknown_template_parameter,none,
|
|
"template parameter '%0' does not exist", (StringRef))
|
|
ERROR(type_template_parameter_expected,none,
|
|
"template parameter '%0' expected to be a type parameter", (StringRef))
|
|
|
|
NOTE(bridged_type_not_found_in_module,none,
|
|
"could not find type '%0' for bridging; module '%1' may be broken",
|
|
(StringRef, StringRef))
|
|
|
|
NOTE(bridged_pointer_type_not_found,none,
|
|
"could not find type '%select{UnsafeMutableRawPointer|UnsafeRawPointer|"
|
|
"UnsafeMutablePointer|UnsafePointer|AutoreleasingUnsafeMutablePointer}0' "
|
|
"for bridging; module 'Swift' may be broken",
|
|
(unsigned))
|
|
|
|
NOTE(ptr_to_nonescapable,none,
|
|
"pointer to non-escapable type %0 cannot be imported",
|
|
(const clang::Type*))
|
|
|
|
NOTE(nonescapable_field_of_escapable, none,
|
|
"escapable record %0 cannot have non-escapable field '%1'",
|
|
(const clang::NamedDecl *, StringRef))
|
|
|
|
#define UNDEFINE_DIAGNOSTIC_MACROS
|
|
#include "DefineDiagnosticMacros.h"
|