Phase47-B/C: extend P3 normalized shapes and quiet dev warnings

This commit is contained in:
nyash-codex
2025-12-12 07:13:34 +09:00
parent 7200309cc3
commit 386cbc1915
11 changed files with 503 additions and 73 deletions

View File

@ -17,6 +17,8 @@ use nyash_rust::mir::join_ir::normalized::fixtures::{
build_jsonparser_skip_ws_structured_for_normalized_dev,
build_pattern2_break_fixture_structured, build_pattern2_minimal_structured,
build_pattern3_if_sum_min_structured_for_normalized_dev,
build_pattern3_if_sum_multi_min_structured_for_normalized_dev,
build_pattern3_json_if_sum_min_structured_for_normalized_dev,
build_pattern4_continue_min_structured_for_normalized_dev,
};
use nyash_rust::mir::join_ir_runner::run_joinir_function;
@ -530,6 +532,42 @@ fn normalized_pattern3_if_sum_minimal_runner_dev_switch_matches_structured() {
);
}
#[test]
fn normalized_pattern3_if_sum_multi_vm_bridge_direct_matches_structured() {
let _ctx = normalized_dev_test_ctx();
let structured = build_pattern3_if_sum_multi_min_structured_for_normalized_dev();
let entry = structured.entry.expect("structured entry required");
let input = [JoinValue::Int(0)];
let base = run_joinir_vm_bridge(&structured, entry, &input, false);
let dev = run_joinir_vm_bridge(&structured, entry, &input, true);
assert_eq!(base, dev, "vm bridge mismatch for P3 if-sum multi");
assert_eq!(
dev,
JoinValue::Int(2),
"unexpected result for P3 if-sum multi (expected sum=2)"
);
}
#[test]
fn normalized_pattern3_json_if_sum_min_vm_bridge_direct_matches_structured() {
let _ctx = normalized_dev_test_ctx();
let structured = build_pattern3_json_if_sum_min_structured_for_normalized_dev();
let entry = structured.entry.expect("structured entry required");
let input = [JoinValue::Int(0)];
let base = run_joinir_vm_bridge(&structured, entry, &input, false);
let dev = run_joinir_vm_bridge(&structured, entry, &input, true);
assert_eq!(base, dev, "vm bridge mismatch for P3 json if-sum");
assert_eq!(
dev,
JoinValue::Int(10),
"unexpected result for P3 json if-sum (expected sum=10)"
);
}
#[cfg(feature = "normalized_dev")]
#[test]
fn test_phase46_canonical_set_includes_p2_mid() {
@ -542,6 +580,15 @@ fn test_phase46_canonical_set_includes_p2_mid() {
assert!(is_canonical_shape(
&NormalizedDevShape::JsonparserParseNumberReal
));
assert!(is_canonical_shape(
&NormalizedDevShape::Pattern3IfSumMinimal
));
assert!(is_canonical_shape(
&NormalizedDevShape::Pattern3IfSumMulti
));
assert!(is_canonical_shape(
&NormalizedDevShape::Pattern3IfSumJson
));
// Verify P2-Core patterns still canonical
assert!(is_canonical_shape(&NormalizedDevShape::Pattern2Mini));