Skip to content

Commit b718663

Browse files
committed
RequirementMachine: Tri-state enable flag, and move queries to GenericSignatureQueries.cpp
The -enable-requirement-machine and -disable-requirement-machine flags are now replaced by a new flag -requirement-machine={on,off,verify}.
1 parent 08edd56 commit b718663

18 files changed

+912
-789
lines changed

include/swift/Basic/LangOptions.h

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,18 @@ namespace swift {
7878
ErrorOnFailureRemarkOnSuccess
7979
};
8080

81+
/// Value for LangOptions::EnableRequirementMachine.
82+
enum class RequirementMachineMode {
83+
/// Use the GenericSignatureBuilder for all queries.
84+
Disabled = 0,
85+
86+
/// Use the RequirementMachine for all queries.
87+
Enabled = 1,
88+
89+
/// Use both and assert if the results do not match.
90+
Verify = 2
91+
};
92+
8193
/// A collection of options that affect the language dialect and
8294
/// provide compiler debugging facilities.
8395
class LangOptions final {
@@ -446,7 +458,8 @@ namespace swift {
446458
ASTVerifierOverrideKind::NoOverride;
447459

448460
/// Whether the new experimental generics implementation is enabled.
449-
bool EnableRequirementMachine = false;
461+
RequirementMachineMode EnableRequirementMachine =
462+
RequirementMachineMode::Disabled;
450463

451464
/// Enables debugging output from the requirement machine.
452465
bool DebugRequirementMachine = false;

include/swift/Option/FrontendOptions.td

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -277,11 +277,8 @@ def debug_constraints_on_line_EQ : Joined<["-"], "debug-constraints-on-line=">,
277277
def disable_named_lazy_member_loading : Flag<["-"], "disable-named-lazy-member-loading">,
278278
HelpText<"Disable per-name lazy member loading">;
279279

280-
def enable_requirement_machine : Flag<["-"], "enable-requirement-machine">,
281-
HelpText<"Enable experimental generics implementation">;
282-
283-
def disable_requirement_machine : Flag<["-"], "disable-requirement-machine">,
284-
HelpText<"Disable experimental generics implementation">;
280+
def requirement_machine_EQ : Joined<["-"], "requirement-machine=">,
281+
HelpText<"Control usage of experimental generics implementation: 'on', 'off', or 'verify'">;
285282

286283
def debug_requirement_machine : Flag<["-"], "debug-requirement-machine">,
287284
HelpText<"Enables debugging output from the generics implementation">;

lib/AST/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ add_swift_host_library(swiftAST STATIC
7474
RawComment.cpp
7575
RequirementEnvironment.cpp
7676
RequirementMachine/EquivalenceClassMap.cpp
77+
RequirementMachine/GenericSignatureQueries.cpp
7778
RequirementMachine/ProtocolGraph.cpp
7879
RequirementMachine/RequirementMachine.cpp
7980
RequirementMachine/RewriteContext.cpp

0 commit comments

Comments
 (0)