Skip to content

Commit a523473

Browse files
committed
Make static assertions an experimental feature
1 parent 6d82448 commit a523473

File tree

7 files changed

+9
-11
lines changed

7 files changed

+9
-11
lines changed

include/swift/Basic/Features.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@
5454
langOpts.hasFeature(#FeatureName))
5555
#endif
5656

57-
LANGUAGE_FEATURE(StaticAssert, 0, "#assert", langOpts.EnableExperimentalStaticAssert)
5857
LANGUAGE_FEATURE(AsyncAwait, 296, "async/await", true)
5958
LANGUAGE_FEATURE(EffectfulProp, 310, "Effectful properties", true)
6059
LANGUAGE_FEATURE(MarkerProtocol, 0, "@_marker protocol", true)
@@ -84,6 +83,7 @@ SUPPRESSIBLE_LANGUAGE_FEATURE(PrimaryAssociatedTypes2, 346, "Primary associated
8483
SUPPRESSIBLE_LANGUAGE_FEATURE(UnavailableFromAsync, 0, "@_unavailableFromAsync", true)
8584
SUPPRESSIBLE_LANGUAGE_FEATURE(NoAsyncAvailability, 340, "@available(*, noasync)", true)
8685

86+
EXPERIMENTAL_FEATURE(StaticAssert)
8787
EXPERIMENTAL_FEATURE(VariadicGenerics)
8888

8989
#undef EXPERIMENTAL_FEATURE

include/swift/Basic/LangOptions.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -314,9 +314,6 @@ namespace swift {
314314
/// Specifies how strict concurrency checking will be.
315315
StrictConcurrency StrictConcurrencyLevel = StrictConcurrency::Targeted;
316316

317-
/// Enable experimental #assert feature.
318-
bool EnableExperimentalStaticAssert = false;
319-
320317
/// Enable experimental concurrency model.
321318
bool EnableExperimentalConcurrency = false;
322319

lib/Frontend/CompilerInvocation.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -447,9 +447,6 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
447447
Opts.DiagnosticsEditorMode |= Args.hasArg(OPT_diagnostics_editor_mode,
448448
OPT_serialize_diagnostics_path);
449449

450-
Opts.EnableExperimentalStaticAssert |=
451-
Args.hasArg(OPT_enable_experimental_static_assert);
452-
453450
Opts.EnableExperimentalConcurrency |=
454451
Args.hasArg(OPT_enable_experimental_concurrency);
455452

@@ -664,6 +661,8 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
664661
// compilers because that's how existing experimental feature flags work.
665662
if (Args.hasArg(OPT_enable_experimental_variadic_generics))
666663
Opts.Features.insert(Feature::VariadicGenerics);
664+
if (Args.hasArg(OPT_enable_experimental_static_assert))
665+
Opts.Features.insert(Feature::StaticAssert);
667666

668667
Opts.EnableAppExtensionRestrictions |= Args.hasArg(OPT_enable_app_extension);
669668

lib/Parse/ParseStmt.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2719,7 +2719,7 @@ ParserResult<Stmt> Parser::parseStmtPoundAssert() {
27192719

27202720
// We check this after consuming everything, so that the SyntaxContext
27212721
// understands this statement even when the feature is disabled.
2722-
if (!Context.LangOpts.EnableExperimentalStaticAssert) {
2722+
if (!Context.LangOpts.hasFeature(Feature::StaticAssert)) {
27232723
diagnose(startLoc, diag::pound_assert_disabled);
27242724
return makeParserError();
27252725
}

lib/SILOptimizer/Mandatory/DataflowDiagnostics.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ class EmitDFDiagnostics : public SILFunctionTransform {
271271
}
272272
}
273273

274-
if (M.getASTContext().LangOpts.EnableExperimentalStaticAssert) {
274+
if (M.getASTContext().LangOpts.hasFeature(Feature::StaticAssert)) {
275275
SymbolicValueBumpAllocator allocator;
276276
ConstExprEvaluator constantEvaluator(allocator,
277277
getOptions().AssertConfig);

test/Parse/features.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// RUN: not %target-swift-frontend -typecheck %s 2>&1 | %FileCheck --check-prefix=CHECK-WITHOUT %s
22
// RUN: %target-typecheck-verify-swift -enable-experimental-static-assert
3+
// RUN: %target-typecheck-verify-swift -enable-experimental-feature StaticAssert
4+
// REQUIRES: asserts
35

46
#if compiler(>=5.3) && $StaticAssert
57
#assert(true)

tools/sil-opt/SILOpt.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -574,8 +574,8 @@ int main(int argc, char **argv) {
574574
Invocation.getLangOptions().OptimizationRemarkMissedPattern =
575575
createOptRemarkRegex(PassRemarksMissed);
576576

577-
Invocation.getLangOptions().EnableExperimentalStaticAssert =
578-
EnableExperimentalStaticAssert;
577+
if (EnableExperimentalStaticAssert)
578+
Invocation.getLangOptions().Features.insert(Feature::StaticAssert);
579579

580580
Invocation.getLangOptions().EnableExperimentalDifferentiableProgramming =
581581
EnableExperimentalDifferentiableProgramming;

0 commit comments

Comments
 (0)