mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Merge pull request #61105 from xymus/default-require-explicit-avail
[Sema] Require explicit availability on public modules and customizable diagnostics level
This commit is contained in:
@@ -588,13 +588,6 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
|
||||
if (Args.getLastArg(OPT_debug_cycles))
|
||||
Opts.DebugDumpCycles = true;
|
||||
|
||||
if (Args.getLastArg(OPT_require_explicit_availability, OPT_require_explicit_availability_target)) {
|
||||
Opts.RequireExplicitAvailability = true;
|
||||
if (const Arg *A = Args.getLastArg(OPT_require_explicit_availability_target)) {
|
||||
Opts.RequireExplicitAvailabilityTarget = A->getValue();
|
||||
}
|
||||
}
|
||||
|
||||
Opts.RequireExplicitSendable |= Args.hasArg(OPT_require_explicit_sendable);
|
||||
for (const Arg *A : Args.filtered(OPT_define_availability)) {
|
||||
Opts.AvailabilityMacros.push_back(A->getValue());
|
||||
@@ -722,6 +715,29 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
|
||||
}
|
||||
}
|
||||
|
||||
if (const Arg *A = Args.getLastArg(OPT_require_explicit_availability_EQ)) {
|
||||
StringRef diagLevel = A->getValue();
|
||||
if (diagLevel == "warn") {
|
||||
Opts.RequireExplicitAvailability = DiagnosticBehavior::Warning;
|
||||
} else if (diagLevel == "error") {
|
||||
Opts.RequireExplicitAvailability = DiagnosticBehavior::Error;
|
||||
} else if (diagLevel == "ignore") {
|
||||
Opts.RequireExplicitAvailability = None;
|
||||
} else {
|
||||
Diags.diagnose(SourceLoc(),
|
||||
diag::error_unknown_require_explicit_availability,
|
||||
diagLevel);
|
||||
}
|
||||
} else if (Args.getLastArg(OPT_require_explicit_availability,
|
||||
OPT_require_explicit_availability_target) ||
|
||||
Opts.LibraryLevel == LibraryLevel::API) {
|
||||
Opts.RequireExplicitAvailability = DiagnosticBehavior::Warning;
|
||||
}
|
||||
|
||||
if (const Arg *A = Args.getLastArg(OPT_require_explicit_availability_target)) {
|
||||
Opts.RequireExplicitAvailabilityTarget = A->getValue();
|
||||
}
|
||||
|
||||
Opts.EnableSPIOnlyImports = Args.hasArg(OPT_experimental_spi_only_imports);
|
||||
|
||||
if (Opts.EnableSwift3ObjCInference) {
|
||||
|
||||
Reference in New Issue
Block a user