mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[Swift version] Note all supported versions when -swift-version is misused.
This commit is contained in:
@@ -761,6 +761,26 @@ static bool ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
|
||||
return false;
|
||||
}
|
||||
|
||||
static void diagnoseSwiftVersion(Optional<version::Version> &vers, Arg *verArg,
|
||||
ArgList &Args, DiagnosticEngine &diags) {
|
||||
// General invalid version error
|
||||
diags.diagnose(SourceLoc(), diag::error_invalid_arg_value,
|
||||
verArg->getAsString(Args), verArg->getValue());
|
||||
|
||||
// Check for an unneeded minor version, otherwise just list valid verions
|
||||
if (vers.hasValue() && !vers.getValue().empty() &&
|
||||
vers.getValue().asMajorVersion().isValidEffectiveLanguageVersion()) {
|
||||
diags.diagnose(SourceLoc(), diag::note_swift_version_major,
|
||||
vers.getValue()[0]);
|
||||
} else {
|
||||
// Note valid versions instead
|
||||
auto validVers = version::Version::getValidEffectiveVersions();
|
||||
auto versStr =
|
||||
"'" + llvm::join(validVers.begin(), validVers.end(), "', '") + "'";
|
||||
diags.diagnose(SourceLoc(), diag::note_valid_swift_versions, versStr);
|
||||
}
|
||||
}
|
||||
|
||||
static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
|
||||
DiagnosticEngine &Diags,
|
||||
const FrontendOptions &FrontendOpts) {
|
||||
@@ -773,16 +793,7 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
|
||||
vers.getValue().isValidEffectiveLanguageVersion()) {
|
||||
Opts.EffectiveLanguageVersion = vers.getValue();
|
||||
} else {
|
||||
// General invalid version error
|
||||
Diags.diagnose(SourceLoc(), diag::error_invalid_arg_value,
|
||||
A->getAsString(Args), A->getValue());
|
||||
|
||||
// Check for an unneeded minor version
|
||||
if (vers.hasValue() && !vers.getValue().empty() &&
|
||||
vers.getValue().asMajorVersion().isValidEffectiveLanguageVersion()) {
|
||||
Diags.diagnose(SourceLoc(), diag::note_swift_version_major,
|
||||
vers.getValue()[0]);
|
||||
}
|
||||
diagnoseSwiftVersion(vers, A, Args, Diags);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user