//===-- 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
