Skip to content

Commit bfc688e

Browse files
committed
Collapse bare ExpectedExpression parse failures to 'invalid syntax'
Mirrors rustpython-vm's vm_new.rs message bucketing for callers (like Pyre) that depend on rustpython-compiler directly without the vm crate. Fixes the '<>' outside Barry mode case (CPython says 'invalid syntax'; rustpython-compiler previously surfaced the raw ruff parser message 'Expected an expression').
1 parent d0baa1c commit bfc688e

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

crates/compiler/src/lib.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,19 @@ fn cpython_parse_diagnostic_override(
362362
));
363363
}
364364

365+
// CPython's PEG parser collapses a bare "expected an expression" failure
366+
// into the generic "invalid syntax" message (e.g. `2 <> 3` outside Barry
367+
// mode). rustpython-vm's `vm_new.rs` does this same collapse for its own
368+
// callers; rustpython-compiler has no vm dependency, so mirror it here.
369+
if matches!(&error.error, parser::ParseErrorType::ExpectedExpression) {
370+
let (loc, end_loc) = adjusted_error_locations(source_file, error.location);
371+
return Some(NormalizedParseDiagnostic::new(
372+
parser::ParseErrorType::OtherError("invalid syntax".into()),
373+
loc,
374+
end_loc,
375+
));
376+
}
377+
365378
None
366379
}
367380

0 commit comments

Comments
 (0)