Skip to content

Commit 968f69c

Browse files
committed
Add -enable-experimental-lifetime-dependence-inference option
Until stdlib can be built with noncopyable generics, stdlib types can appear as ~Escapable and ~Copyable, leading to invalid inference. Use a flag to test implicit lifetime dependence
1 parent 350cdd3 commit 968f69c

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed

include/swift/Basic/LangOptions.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -556,6 +556,9 @@ namespace swift {
556556
/// Enable experimental associated type inference improvements.
557557
bool EnableExperimentalAssociatedTypeInference = false;
558558

559+
/// Enable implicit lifetime dependence for ~Escapable return types.
560+
bool EnableExperimentalLifetimeDependenceInference = false;
561+
559562
/// Enables dumping type witness systems from associated type inference.
560563
bool DumpTypeWitnessSystems = false;
561564

include/swift/Option/FrontendOptions.td

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -660,6 +660,14 @@ def disable_experimental_associated_type_inference :
660660
Flag<["-"], "disable-experimental-associated-type-inference">,
661661
HelpText<"Disable experimental associated type inference improvements">;
662662

663+
def enable_experimental_lifetime_dependence_inference :
664+
Flag<["-"], "enable-experimental-lifetime-dependence-inference">,
665+
HelpText<"Enable experimental lifetime dependence inference">;
666+
667+
def disable_experimental_lifetime_dependence_inference :
668+
Flag<["-"], "disable-experimental-lifetime-dependence-inference">,
669+
HelpText<"Disable experimental lifetime dependence inference">;
670+
663671
def disable_availability_checking : Flag<["-"],
664672
"disable-availability-checking">,
665673
HelpText<"Disable checking for potentially unavailable APIs">;

lib/Frontend/CompilerInvocation.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1346,6 +1346,11 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
13461346
if (Args.hasArg(OPT_disable_experimental_associated_type_inference))
13471347
Opts.EnableExperimentalAssociatedTypeInference = false;
13481348

1349+
if (Args.hasArg(OPT_enable_experimental_lifetime_dependence_inference))
1350+
Opts.EnableExperimentalLifetimeDependenceInference = true;
1351+
if (Args.hasArg(OPT_disable_experimental_lifetime_dependence_inference))
1352+
Opts.EnableExperimentalLifetimeDependenceInference = false;
1353+
13491354
Opts.DumpTypeWitnessSystems = Args.hasArg(OPT_dump_type_witness_systems);
13501355

13511356
for (auto &block: FrontendOpts.BlocklistConfigFilePaths)

0 commit comments

Comments
 (0)