Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,14 @@ 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: [
decl_ref(module_path: "v1.compiler.emit_rust", decl_name: "emit_rust_tco_match"),
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"),
],
}
14 changes: 12 additions & 2 deletions src/v2/compiler/target_serialize.dag
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -586,7 +591,12 @@ fn grammar_tokens_fold_list_targets_into(remaining: Int, node: Node, acc: List<N
}
}
}
_ => 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))
}
}
}
Expand Down
10 changes: 6 additions & 4 deletions src/v2/std/compilers/target_model.dag
Original file line number Diff line number Diff line change
Expand Up @@ -4227,10 +4227,12 @@ fn concrete_syntax_token_node_targets_into(node: Node, acc: List<Node>) -> 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))
}
}

Expand Down
Loading