mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
fix -typecheck -verify and experimental features
When using `-enable-experimental-feature` on a non-asserts build, we only emit an error diagnostic that has no source-line information and continue to enable the feature. That doesn't actually prevent use of the experimental feature when you are passing `-typecheck -verify`, since in diagnostics verification mode, a diagnostic with an unknown error location is ignored. Thus, the experimental feature is enabled and run for type-checking, but the compiler would exit with a zero error code. This patch takes a hammer to that escape-hatch, forcing an early non-zero exit the moment an experimental feature is requested. The error message is output to stderr so that CI and other tools should see what happened.
This commit is contained in:
@@ -812,9 +812,9 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
|
||||
if (auto feature = getExperimentalFeature(value)) {
|
||||
#ifdef NDEBUG
|
||||
if (!isFeatureAvailableInProduction(*feature)) {
|
||||
Diags.diagnose(SourceLoc(),
|
||||
diag::error_experimental_feature_not_available,
|
||||
A->getValue());
|
||||
llvm::errs() << "error: experimental feature '" << A->getValue()
|
||||
<< "' cannot be enabled in a production compiler\n";
|
||||
exit(1);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user