diff --git a/dag/gunbc/recurring_failure_mode/tail_call_match_lowering_skips_rc_arm_grouping.dag b/dag/gunbc/recurring_failure_mode/tail_call_match_lowering_skips_rc_arm_grouping.dag index e64372a4f57..d7a43e91a47 100644 --- a/dag/gunbc/recurring_failure_mode/tail_call_match_lowering_skips_rc_arm_grouping.dag +++ b/dag/gunbc/recurring_failure_mode/tail_call_match_lowering_skips_rc_arm_grouping.dag @@ -18,6 +18,7 @@ data tail_call_match_lowering_skips_rc_arm_grouping: RecurringFailureMode = Recu "RUNG FOUND AT: 1 at best (the target compiler refuses; gunbc accepts). CEILING: 3 -- the emitter can decide exhaustiveness on the same facts for both renderers. NEXT-RUNG TRIGGER: the tail-call match renderer consumes rc_grouped_arm_plan (one grouping authority for both match lowerings), proven by an enumerated nested arm set in a tail-recursive fixture that emits and builds.", "CLIMB (gunbc#12742): the trigger's lowering is built -- the grouping fold is one function, v1.compiler.emit_rust rc_grouped_match_arm_strs, parameterized by the arm-body emitter, and emit_rust_tco_match and the ordinary match renderer both call it. Its discriminating control is the stage0 integration target tco_rc_grouped_match_emitted_rust (E0004 on the prior seed, compiles and runs after), which required CI does not execute (gunbc.rung_drop rust_unit_tests_off_the_merge_path), so the rung stays 1 by rule-1 honesty until that control executes on the merge path or an enumerated nested arm set in a required emit-build closure (the grammar_tokens_fold_list_targets_into enumeration) builds.", + "RUNG 2 (gunbc#12764, executed): the trigger's second arm has run on the merge path. Two enumerated nested arm sets inside tail-recursive walks -- v2.compiler.target_serialize grammar_tokens_fold_list_targets_into and v2.std.compilers.target_model concrete_syntax_token_node_targets_into, both previously reverted to their wildcards on E0004 -- emit and build in the required emit-build lane (run 36696087113, job 109824277149, head e065e2039bd). A regression of the shared grouping now reds a required lane on those sites: mechanically preventable, rung 2. CEILING stays 3 (the emitter deciding exhaustiveness on the same facts for both renderers, with the stage0 control tco_rc_grouped_match_emitted_rust executing on the merge path).", ], evidence: [ @@ -25,5 +26,6 @@ data tail_call_match_lowering_skips_rc_arm_grouping: RecurringFailureMode = Recu decl_ref(module_path: "v1.compiler.emit_rust", decl_name: "rc_grouped_arm_plan"), decl_ref(module_path: "v1.compiler.emit_rust", decl_name: "rc_grouped_match_arm_strs"), decl_ref(module_path: "v2.compiler.target_serialize", decl_name: "grammar_tokens_fold_list_targets_into"), + decl_ref(module_path: "v2.std.compilers.target_model", decl_name: "concrete_syntax_token_node_targets_into"), ], } diff --git a/src/v2/compiler/target_serialize.dag b/src/v2/compiler/target_serialize.dag index 53e29b3ed19..ac839f7d895 100644 --- a/src/v2/compiler/target_serialize.dag +++ b/src/v2/compiler/target_serialize.dag @@ -59,7 +59,12 @@ import v2.std.node { Positional, Symbol, TypeNode, - node_subtree_count + node_subtree_count, + Disj, + Arrow, + Cardinality, + Instantiation, + ComputationNode } import v2.std.type_binder { type_param_names @@ -586,7 +591,12 @@ fn grammar_tokens_fold_list_targets_into(remaining: Int, node: Node, acc: List outcome_rejected(translate_grammar_inverse_not_realized_diagnostic(emitted: node)) + TypeNode { connective: Atom { identity: _ } } => outcome_rejected(translate_grammar_inverse_not_realized_diagnostic(emitted: node)) + TypeNode { connective: Disj } => outcome_rejected(translate_grammar_inverse_not_realized_diagnostic(emitted: node)) + TypeNode { connective: Arrow } => outcome_rejected(translate_grammar_inverse_not_realized_diagnostic(emitted: node)) + TypeNode { connective: Cardinality } => outcome_rejected(translate_grammar_inverse_not_realized_diagnostic(emitted: node)) + TypeNode { connective: Instantiation } => outcome_rejected(translate_grammar_inverse_not_realized_diagnostic(emitted: node)) + ComputationNode { behavior: _ } => outcome_rejected(translate_grammar_inverse_not_realized_diagnostic(emitted: node)) } } } diff --git a/src/v2/std/compilers/target_model.dag b/src/v2/std/compilers/target_model.dag index 25edc844794..35a62d8fa71 100644 --- a/src/v2/std/compilers/target_model.dag +++ b/src/v2/std/compilers/target_model.dag @@ -4227,10 +4227,12 @@ fn concrete_syntax_token_node_targets_into(node: Node, acc: List) -> Outco } } } - _ => - outcome_rejected( - target_bodied_arrow_scaffold_bundle_malformed_diagnostic(bundle: node) - ) + TypeNode { connective: Atom { identity: _ } } => outcome_rejected(target_bodied_arrow_scaffold_bundle_malformed_diagnostic(bundle: node)) + TypeNode { connective: Disj } => outcome_rejected(target_bodied_arrow_scaffold_bundle_malformed_diagnostic(bundle: node)) + TypeNode { connective: Arrow } => outcome_rejected(target_bodied_arrow_scaffold_bundle_malformed_diagnostic(bundle: node)) + TypeNode { connective: Cardinality } => outcome_rejected(target_bodied_arrow_scaffold_bundle_malformed_diagnostic(bundle: node)) + TypeNode { connective: Instantiation } => outcome_rejected(target_bodied_arrow_scaffold_bundle_malformed_diagnostic(bundle: node)) + ComputationNode { behavior: _ } => outcome_rejected(target_bodied_arrow_scaffold_bundle_malformed_diagnostic(bundle: node)) } }