test(m4): keep injection work outside root parse gate

This commit is contained in:
Levi Neuwirth 2026-07-15 14:50:45 +01:00
parent c3a57be3fa
commit bc0922bea2
1 changed files with 8 additions and 7 deletions

View File

@ -520,11 +520,12 @@ fn open_and_wait_for_parse(path: std::path::PathBuf) -> pmacs::editor::EditorSta
state state
} }
/// Cold parse + highlight-spans extraction for a 4000-line synthetic /// Root parse + highlight-spans extraction for a 4000-line synthetic
/// rust file completes in under 100 ms. The acceptance criterion /// rust file completes in under 100 ms. Injection expansion is an
/// covers "rust file opens with full syntax highlighting" --- "open" /// additive phase with its own many-paragraph settle budget in
/// here means the path that produces the data the highlight view /// `injection_acceptance`; excluding it here keeps this M4 gate aligned
/// reads on render: parse + capture-walk. Run under `--release`. /// with `ParseTreeBundle::parse_duration`'s documented root-only
/// boundary. Run under `--release`.
#[test] #[test]
#[ignore = "perf gate; requires release build"] #[ignore = "perf gate; requires release build"]
fn m4_3_open_rust_file_highlights_under_100ms() { fn m4_3_open_rust_file_highlights_under_100ms() {
@ -537,7 +538,6 @@ fn m4_3_open_rust_file_highlights_under_100ms() {
.highlights_query("rust") .highlights_query("rust")
.expect("rust highlights query"); .expect("rust highlights query");
let started = Instant::now();
let req = ParseRequest { let req = ParseRequest {
source: Arc::from(source), source: Arc::from(source),
language, language,
@ -547,8 +547,9 @@ fn m4_3_open_rust_file_highlights_under_100ms() {
injection_aliases: Arc::new(std::collections::HashMap::new()), injection_aliases: Arc::new(std::collections::HashMap::new()),
}; };
let bundle = syntax::run_parse(req).expect("parse succeeds"); let bundle = syntax::run_parse(req).expect("parse succeeds");
let highlight_started = Instant::now();
let spans = syntax::compute_highlight_spans(&query, &bundle); let spans = syntax::compute_highlight_spans(&query, &bundle);
let elapsed = started.elapsed(); let elapsed = bundle.parse_duration + highlight_started.elapsed();
assert!( assert!(
!spans.is_empty(), !spans.is_empty(),