// Closed, effect-free root admission for the exact #630 production slices.
// Recipe-specific plans remain private to the runtime package.
///|
#warnings("-unused_constructor-unused_field")
priv enum ActivationDispatchManagedRoot {
ActivationDispatchLeafRoot
ActivationDispatchControlRoot(ControlLifecyclePreflight)
ActivationDispatchConstructorRoot(ConstructorRecursionPreflight)
ActivationDispatchDirectReturnRoot(DirectReturnRecursionPreflight)
ActivationDispatchNumericMapExpressionRoot(NumericMapExpressionPreflight)
ActivationDispatchNumericMapCompositionRoot(NumericMapCompositionPreflight)
ActivationDispatchArrayMapRoot(ArrayMapRecursionPreflight)
ActivationDispatchNumericRoot(NumericRecursionPreflight)
ActivationDispatchGetterRoot(GetterRecursionPreflight)
ActivationDispatchProxyRoot(ProxyGetRecursionPreflight)
ActivationDispatchReceiverRoot(ReceiverRecursionPreflight)
ActivationDispatchMutualReceiverRoot(MutualReceiverRecursionPreflight)
}
///|
priv enum ActivationDispatchRootAdmission {
ActivationDispatchManagedRoot(ActivationDispatchManagedRoot)
ActivationDispatchLegacyRoot
}
///|
fn Interpreter::classify_activation_dispatch_root_program(
self : Interpreter,
stmts : Array[@ast.Stmt],
) -> ActivationDispatchRootAdmission {
if activation_dispatch_leaf_program_is_admissible(stmts) {
return ActivationDispatchManagedRoot(ActivationDispatchLeafRoot)
}
match preflight_control_lifecycle_program(stmts) {
Some(preflight) =>
return ActivationDispatchManagedRoot(
ActivationDispatchControlRoot(preflight),
)
None => ()
}
match self.preflight_dispatchable_constructor_recursion_program(stmts) {
Some(preflight) =>
return ActivationDispatchManagedRoot(
ActivationDispatchConstructorRoot(preflight),
)
None => ()
}
match self.preflight_dispatchable_direct_return_recursion_program(stmts) {
Some(preflight) =>
return ActivationDispatchManagedRoot(
ActivationDispatchDirectReturnRoot(preflight),
)
None => ()
}
match self.preflight_dispatchable_numeric_map_expression_program(stmts) {
Some(preflight) =>
return ActivationDispatchManagedRoot(
ActivationDispatchNumericMapExpressionRoot(preflight),
)
None => ()
}
match self.preflight_dispatchable_numeric_map_composition_program(stmts) {
Some(preflight) =>
return ActivationDispatchManagedRoot(
ActivationDispatchNumericMapCompositionRoot(preflight),
)
None => ()
}
match self.preflight_dispatchable_array_map_recursion_program(stmts) {
Some(preflight) =>
return ActivationDispatchManagedRoot(
ActivationDispatchArrayMapRoot(preflight),
)
None => ()
}
match self.preflight_dispatchable_numeric_recursion_program(stmts) {
Some(preflight) =>
return ActivationDispatchManagedRoot(
ActivationDispatchNumericRoot(preflight),
)
None => ()
}
match self.preflight_dispatchable_getter_recursion_program(stmts) {
Some(preflight) =>
return ActivationDispatchManagedRoot(
ActivationDispatchGetterRoot(preflight),
)
None => ()
}
match self.preflight_dispatchable_proxy_get_recursion_program(stmts) {
Some(preflight) =>
return ActivationDispatchManagedRoot(
ActivationDispatchProxyRoot(preflight),
)
None => ()
}
match self.preflight_dispatchable_mutual_receiver_recursion_program(stmts) {
Some(preflight) =>
return ActivationDispatchManagedRoot(
ActivationDispatchMutualReceiverRoot(preflight),
)
None => ()
}
match self.preflight_dispatchable_receiver_recursion_program(stmts) {
Some(preflight) =>
return ActivationDispatchManagedRoot(
ActivationDispatchReceiverRoot(preflight),
)
None => ()
}
ActivationDispatchLegacyRoot
}