@@ -486,25 +486,6 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
486486 = A->getOption ().matches (OPT_enable_deserialization_recovery);
487487 }
488488
489- // Whether '/.../' regex literals are enabled. This implies experimental
490- // string processing.
491- if (Args.hasArg (OPT_enable_bare_slash_regex)) {
492- Opts.EnableBareSlashRegexLiterals = true ;
493- Opts.EnableExperimentalStringProcessing = true ;
494- }
495-
496- // Experimental string processing.
497- if (auto A = Args.getLastArg (OPT_enable_experimental_string_processing,
498- OPT_disable_experimental_string_processing)) {
499- Opts.EnableExperimentalStringProcessing =
500- A->getOption ().matches (OPT_enable_experimental_string_processing);
501-
502- // When experimental string processing is explicitly disabled, also disable
503- // forward slash regex `/.../`.
504- if (!Opts.EnableExperimentalStringProcessing )
505- Opts.EnableBareSlashRegexLiterals = false ;
506- }
507-
508489 Opts.EnableExperimentalBoundGenericExtensions |=
509490 Args.hasArg (OPT_enable_experimental_bound_generic_extensions);
510491
@@ -632,6 +613,12 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
632613 Opts.addCustomConditionalCompilationFlag (A->getValue ());
633614 }
634615
616+ // Determine whether string processing is enabled
617+ Opts.EnableExperimentalStringProcessing =
618+ Args.hasFlag (OPT_enable_experimental_string_processing,
619+ OPT_disable_experimental_string_processing,
620+ Args.hasArg (OPT_enable_bare_slash_regex));
621+
635622 // Add a future feature if it is not already implied by the language version.
636623 auto addFutureFeatureIfNotImplied = [&](Feature feature) {
637624 // Check if this feature was introduced already in this language version.
@@ -646,6 +633,8 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
646633 // Map historical flags over to future features.
647634 if (Args.hasArg (OPT_enable_experimental_concise_pound_file))
648635 addFutureFeatureIfNotImplied (Feature::ConciseMagicFile);
636+ if (Args.hasArg (OPT_enable_bare_slash_regex))
637+ addFutureFeatureIfNotImplied (Feature::BareSlashRegexLiterals);
649638
650639 for (const Arg *A : Args.filtered (OPT_enable_experimental_feature)) {
651640 // If this is a known experimental feature, allow it in +Asserts
0 commit comments