//===--- DiagnosticGroups.def - Diagnostic Groups ---------------*- C++ -*-===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2024 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 diagnostic groups and links between them.
//
//  The GROUP(Name, Filename) macro is used to define each diagnostic group.
//  These groups are used to associate documentation with particular set of
//  diagnostics and also to provide more control over whether the warnings
//  in the group are escalated to errors (via the -Wwarning and -Werror flags.)
//  A given warning or error can be associated with a diagnostic group by using
//  GROUPED_WARNING or GROUPED_ERROR, respectively. New warnings and errors
//  should be introduced along with groups to improve documentation.
//
//    - Name: the name of the group that will be shown in diagnostic messages
//      (e.g., StrictMemorySafety) and used in command-line options like
//      -Wwarning and -Werror. Once assigned, the group name for a particular
//      diagnostic should not be changed, because it will affect existing users
//      of the command-line flags.
//    - Filename: the name of the file that provides documentation for this
//      diagnostic group. There should be a corresponding Markdown file in
//      userdocs/diagnostics providing short-form documentation that helps
//      explain the diagnostic and how to resolve the problem.
//
//===----------------------------------------------------------------------===//

#define DEFINE_DIAGNOSTIC_GROUPS_MACROS
#include "swift/AST/DefineDiagnosticGroupsMacros.h"

// GROUP(Name, DocsFile)
// GROUP_LINK(Parent, Child)

GROUP(no_group, "")

GROUP(ActorIsolatedCall, "actor-isolated-call")
GROUP(AvailabilityUnrecognizedName, "availability-unrecognized-name")
GROUP(ClangDeclarationImport, "clang-declaration-import")
GROUP(ConformanceIsolation, "conformance-isolation")
GROUP(DeprecatedDeclaration, "deprecated-declaration")
GROUP(DynamicCallable, "dynamic-callable-requirements")
GROUP(ErrorInFutureSwiftVersion, "error-in-future-swift-version")
GROUP(ExistentialAny, "existential-any")
GROUP(ExistentialMemberAccess, "existential-member-access-limitations")
GROUP(ImplementationOnlyDeprecated, "implementation-only-deprecated")
GROUP(IsolatedConformances, "isolated-conformances")
GROUP(MemberImportVisibility, "member-import-visibility")
GROUP(MissingModuleOnKnownPaths, "missing-module-on-known-paths")
GROUP(MultipleInheritance, "multiple-inheritance")
GROUP(MutableGlobalVariable, "mutable-global-variable")
GROUP(NominalTypes, "nominal-types")
GROUP(NonisolatedNonsendingByDefault, "nonisolated-nonsending-by-default")
GROUP(OpaqueTypeInference, "opaque-type-inference")
GROUP(PreconcurrencyImport, "preconcurrency-import")
GROUP(PropertyWrappers, "property-wrapper-requirements")
GROUP(ProtocolTypeNonConformance, "protocol-type-non-conformance")
GROUP(ResultBuilderMethods, "result-builder-methods")
GROUP(SendableClosureCaptures, "sendable-closure-captures")
GROUP(SendableMetatypes, "sendable-metatypes")
GROUP(SendingRisksDataRace, "sending-risks-data-race")
GROUP(StrictLanguageFeatures, "strict-language-features")
GROUP(StrictMemorySafety, "strict-memory-safety")
GROUP(StringInterpolationConformance, "string-interpolation-conformance")
GROUP(TemporaryPointers, "temporary-pointers")
GROUP(TrailingClosureMatching, "trailing-closure-matching")
GROUP(UnknownWarningGroup, "unknown-warning-group")
GROUP(WeakMutability, "weak-mutability")

#define UNDEFINE_DIAGNOSTIC_GROUPS_MACROS
#include "swift/AST/DefineDiagnosticGroupsMacros.h"
