mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-15 08:00:19 +00:00
Add row and column numbers to formatted parse errors (#9321)
## Summary We now render parse errors in the formatter identically to those in the linter, e.g.: ``` ❯ cargo run -p ruff_cli -- format foo.py error: Failed to parse foo.py:1:17: Unexpected token '=' ``` Closes https://github.com/astral-sh/ruff/issues/8338. Closes https://github.com/astral-sh/ruff/issues/9311.
This commit is contained in:
parent
e80260a3c5
commit
48e04cc2c8
9 changed files with 88 additions and 59 deletions
|
@ -4,8 +4,8 @@
|
|||
|
||||
use std::{borrow::Cow, collections::VecDeque};
|
||||
|
||||
use ruff_python_parser::ParseError;
|
||||
use {once_cell::sync::Lazy, regex::Regex};
|
||||
|
||||
use {
|
||||
ruff_formatter::{write, FormatOptions, IndentStyle, LineWidth, Printed},
|
||||
ruff_python_trivia::{is_python_whitespace, PythonWhitespace},
|
||||
|
@ -499,11 +499,7 @@ impl<'ast, 'buf, 'fmt, 'src> DocstringLinePrinter<'ast, 'buf, 'fmt, 'src> {
|
|||
let printed = match docstring_format_source(options, self.quote_char, &codeblob) {
|
||||
Ok(printed) => printed,
|
||||
Err(FormatModuleError::FormatError(err)) => return Err(err),
|
||||
Err(
|
||||
FormatModuleError::LexError(_)
|
||||
| FormatModuleError::ParseError(_)
|
||||
| FormatModuleError::PrintError(_),
|
||||
) => {
|
||||
Err(FormatModuleError::ParseError(_) | FormatModuleError::PrintError(_)) => {
|
||||
return Ok(None);
|
||||
}
|
||||
};
|
||||
|
@ -1518,7 +1514,8 @@ fn docstring_format_source(
|
|||
use ruff_python_parser::AsMode;
|
||||
|
||||
let source_type = options.source_type();
|
||||
let (tokens, comment_ranges) = ruff_python_index::tokens_and_ranges(source, source_type)?;
|
||||
let (tokens, comment_ranges) =
|
||||
ruff_python_index::tokens_and_ranges(source, source_type).map_err(ParseError::from)?;
|
||||
let module = ruff_python_parser::parse_ok_tokens(tokens, source, source_type.as_mode())?;
|
||||
let source_code = ruff_formatter::SourceCode::new(source);
|
||||
let comments = crate::Comments::from_ast(&module, source_code, &comment_ranges);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue