Skip to content

Commit 75ade66

Browse files
authored
Merge pull request #40459 from slavapestov/rqm-disabled-merged-types
RequirementMachine: Add flags to enable and disable merged associated types
2 parents d9fd6cb + c133924 commit 75ade66

File tree

4 files changed

+19
-1
lines changed

4 files changed

+19
-1
lines changed

include/swift/Basic/LangOptions.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,9 @@ namespace swift {
468468
RequirementMachineMode EnableRequirementMachine =
469469
RequirementMachineMode::Enabled;
470470

471+
/// Enables merged associated type support, which might go away.
472+
bool RequirementMachineMergedAssociatedTypes = true;
473+
471474
/// Enables dumping rewrite systems from the requirement machine.
472475
bool DumpRequirementMachine = false;
473476

include/swift/Option/FrontendOptions.td

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,14 @@ def requirement_machine_depth_limit : Separate<["-"], "requirement-machine-depth
325325
Flags<[FrontendOption, HelpHidden, DoesNotAffectIncrementalBuild]>,
326326
HelpText<"Set the maximum depth before we give up on confluent completion">;
327327

328+
def disable_requirement_machine_merged_associated_types : Flag<["-"], "disable-requirement-machine-merged-associated-types">,
329+
Flags<[FrontendOption, HelpHidden, DoesNotAffectIncrementalBuild]>,
330+
HelpText<"Disable merged associated types">;
331+
332+
def enable_requirement_machine_merged_associated_types : Flag<["-"], "enable-requirement-machine-merged-associated-types">,
333+
Flags<[FrontendOption, HelpHidden, DoesNotAffectIncrementalBuild]>,
334+
HelpText<"Enable merged associated types">;
335+
328336
def debug_generic_signatures : Flag<["-"], "debug-generic-signatures">,
329337
HelpText<"Debug generic signatures">;
330338

lib/AST/RequirementMachine/KnuthBendix.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,8 @@ void RewriteSystem::processMergedAssociatedTypes() {
294294
/// types in RewriteSystem::processMergedAssociatedTypes().
295295
void RewriteSystem::checkMergedAssociatedType(Term lhs, Term rhs) {
296296
// FIXME: Figure out 3-cell representation for merged associated types
297-
if (RecordLoops)
297+
if (RecordLoops ||
298+
!Context.getASTContext().LangOpts.RequirementMachineMergedAssociatedTypes)
298299
return;
299300

300301
if (lhs.size() == rhs.size() &&

lib/Frontend/CompilerInvocation.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -891,6 +891,12 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
891891
A->getAsString(Args), A->getValue());
892892
}
893893

894+
if (auto A = Args.getLastArg(OPT_enable_requirement_machine_merged_associated_types,
895+
OPT_disable_requirement_machine_merged_associated_types)) {
896+
Opts.RequirementMachineMergedAssociatedTypes
897+
= A->getOption().matches(OPT_enable_requirement_machine_merged_associated_types);
898+
}
899+
894900
Opts.DumpRequirementMachine = Args.hasArg(
895901
OPT_dump_requirement_machine);
896902
Opts.AnalyzeRequirementMachine = Args.hasArg(

0 commit comments

Comments
 (0)