mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
A protocol conformance can be ill-formed due to isolation mismatches between witnesses and requirements, or with associated conformances. Previously, such failures would be emitted as a number of separate errors (downgraded to warnings in Swift 5), one for each witness and potentially an extra for associated conformances. The rest was a potential flood of diagnostics that was hard to sort through. Collect all of the isolation-related problems for a given conformance together and produce a single error (downgraded to a warning when appropriate) that describes the overall issue. That error will have up to three notes suggesting specific courses of action: * Isolating the conformance (when the experimental feature is enabled) * Marking the witnesses as 'nonisolated' where needed * The diagnostic also has notes to point out the witnesses/associated conformances that have isolation problems. There is a new educational note that also describes these options. We give the same treatment to missing 'distributed' on witnesses to a distributed protocol.
116 lines
4.9 KiB
C++
116 lines
4.9 KiB
C++
//===-- EducationalNotes.def - Diagnostic Documentation Content -*- C++ -*-===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2019 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 associates diagnostics with relevant educational notes which
|
|
// explain important concepts.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef EDUCATIONAL_NOTES
|
|
# error Must define EDUCATIONAL_NOTES
|
|
#endif
|
|
|
|
// EDUCATIONAL_NOTES(DIAG_ID, EDUCATIONAL_NOTE_FILENAMES...)
|
|
|
|
EDUCATIONAL_NOTES(could_not_use_member_on_existential,
|
|
"existential-member-access-limitations.md")
|
|
|
|
EDUCATIONAL_NOTES(cannot_pass_type_to_non_ephemeral, "temporary-pointers.md")
|
|
EDUCATIONAL_NOTES(cannot_use_inout_non_ephemeral,
|
|
"temporary-pointers.md")
|
|
EDUCATIONAL_NOTES(cannot_construct_dangling_pointer, "temporary-pointers.md")
|
|
|
|
EDUCATIONAL_NOTES(non_nominal_extension, "nominal-types.md")
|
|
EDUCATIONAL_NOTES(associated_type_witness_conform_impossible,
|
|
"nominal-types.md")
|
|
|
|
EDUCATIONAL_NOTES(invalid_dynamic_callable_type,
|
|
"dynamic-callable-requirements.md")
|
|
EDUCATIONAL_NOTES(missing_dynamic_callable_kwargs_method,
|
|
"dynamic-callable-requirements.md")
|
|
|
|
EDUCATIONAL_NOTES(property_wrapper_no_value_property,
|
|
"property-wrapper-requirements.md")
|
|
EDUCATIONAL_NOTES(property_wrapper_wrong_initial_value_init,
|
|
"property-wrapper-requirements.md")
|
|
EDUCATIONAL_NOTES(property_wrapper_failable_init,
|
|
"property-wrapper-requirements.md")
|
|
EDUCATIONAL_NOTES(property_wrapper_type_requirement_not_accessible,
|
|
"property-wrapper-requirements.md")
|
|
|
|
EDUCATIONAL_NOTES(opaque_type_var_no_init, "opaque-type-inference.md")
|
|
EDUCATIONAL_NOTES(opaque_type_no_underlying_type_candidates,
|
|
"opaque-type-inference.md")
|
|
EDUCATIONAL_NOTES(opaque_type_mismatched_underlying_type_candidates,
|
|
"opaque-type-inference.md")
|
|
EDUCATIONAL_NOTES(opaque_type_self_referential_underlying_type,
|
|
"opaque-type-inference.md")
|
|
EDUCATIONAL_NOTES(opaque_type_var_no_underlying_type,
|
|
"opaque-type-inference.md")
|
|
|
|
|
|
EDUCATIONAL_NOTES(missing_append_interpolation,
|
|
"string-interpolation-conformance.md")
|
|
EDUCATIONAL_NOTES(append_interpolation_static,
|
|
"string-interpolation-conformance.md")
|
|
EDUCATIONAL_NOTES(append_interpolation_void_or_discardable,
|
|
"string-interpolation-conformance.md")
|
|
EDUCATIONAL_NOTES(type_cannot_conform, "protocol-type-non-conformance.md")
|
|
|
|
EDUCATIONAL_NOTES(unlabeled_trailing_closure_deprecated,
|
|
"trailing-closure-matching.md")
|
|
|
|
EDUCATIONAL_NOTES(result_builder_static_buildblock_or_buildpartialblock,
|
|
"result-builder-methods.md")
|
|
EDUCATIONAL_NOTES(result_builder_missing_limited_availability,
|
|
"result-builder-methods.md")
|
|
EDUCATIONAL_NOTES(result_builder_missing_build_optional,
|
|
"result-builder-methods.md")
|
|
EDUCATIONAL_NOTES(result_builder_missing_build_either,
|
|
"result-builder-methods.md")
|
|
EDUCATIONAL_NOTES(result_builder_missing_build_array,
|
|
"result-builder-methods.md")
|
|
|
|
EDUCATIONAL_NOTES(multiple_inheritance,
|
|
"multiple-inheritance.md")
|
|
|
|
EDUCATIONAL_NOTES(regionbasedisolation_named_send_yields_race,
|
|
"sending-risks-data-race.md")
|
|
EDUCATIONAL_NOTES(regionbasedisolation_type_send_yields_race,
|
|
"sending-risks-data-race.md")
|
|
EDUCATIONAL_NOTES(regionbasedisolation_typed_tns_passed_sending_closure,
|
|
"sending-closure-risks-data-race.md")
|
|
EDUCATIONAL_NOTES(shared_mutable_state_decl,
|
|
"mutable-global-variable.md")
|
|
EDUCATIONAL_NOTES(shared_immutable_state_decl,
|
|
"mutable-global-variable.md")
|
|
EDUCATIONAL_NOTES(non_sendable_capture,
|
|
"sendable-closure-captures.md")
|
|
EDUCATIONAL_NOTES(concurrent_access_of_local_capture,
|
|
"sendable-closure-captures.md")
|
|
EDUCATIONAL_NOTES(concurrent_access_of_inout_param,
|
|
"sendable-closure-captures.md")
|
|
EDUCATIONAL_NOTES(actor_isolated_call,
|
|
"actor-isolated-call.md")
|
|
EDUCATIONAL_NOTES(actor_isolated_call_decl,
|
|
"actor-isolated-call.md")
|
|
|
|
EDUCATIONAL_NOTES(error_in_swift_lang_mode,
|
|
"error-in-future-swift-version.md")
|
|
|
|
EDUCATIONAL_NOTES(conformance_mismatched_isolation,
|
|
"conformance-isolation.md")
|
|
EDUCATIONAL_NOTES(conformance_mismatched_isolation_common,
|
|
"conformance-isolation.md")
|
|
|
|
#undef EDUCATIONAL_NOTES
|