Skip to content

Commit 985cec8

Browse files
authored
Remove dependency on chic and upgrade annotate-snippets (#1293)
* Vendor `chic` At yoshuawuyts/chic@0761036 * Remove unused `Error::help` method * Upgrade to `annotate_snippets` 0.9.x Applying yoshuawuyts/chic@27c99b5 * Upgrade to `annotate_snippets` 0.10.x See https://salsa.debian.org/rust-team/debcargo-conf/-/blob/master/src/chic/debian/patches/annotate-snippets-0.10 * Upgrade to `annotate_snippets` 0.11.x As in https://salsa.debian.org/rust-team/debcargo-conf/-/blob/master/src/chic/debian/patches/annotate-snippets-0.11 * Drop `chic` compatibility layer
1 parent c825afb commit 985cec8

3 files changed

Lines changed: 40 additions & 34 deletions

File tree

native/Cargo.lock

Lines changed: 15 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

native/libcst/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ paste = "1.0.15"
3939
pyo3 = { version = "0.22", optional = true }
4040
thiserror = "1.0.63"
4141
peg = "0.8.4"
42-
chic = "1.2.2"
42+
annotate-snippets = "0.11.5"
4343
regex = "1.10.6"
4444
memchr = "2.7.4"
4545
libcst_derive = { path = "../libcst_derive", version = "1.6.0" }

native/libcst/src/lib.rs

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -91,32 +91,37 @@ fn bol_offset(source: &str, n: i32) -> usize {
9191
pub fn prettify_error(err: ParserError, label: &str) -> std::string::String {
9292
match err {
9393
ParserError::ParserError(e, module_text) => {
94+
use annotate_snippets::{Level, Renderer, Snippet};
95+
9496
let loc = e.location;
9597
let context = 1;
98+
let line_start = max(
99+
1,
100+
loc.start_pos
101+
.line
102+
.checked_sub(context as usize)
103+
.unwrap_or(1),
104+
);
96105
let start_offset = bol_offset(module_text, loc.start_pos.line as i32 - context);
97106
let end_offset = bol_offset(module_text, loc.end_pos.line as i32 + context + 1);
98107
let source = &module_text[start_offset..end_offset];
99108
let start = loc.start_pos.offset - start_offset;
100109
let end = loc.end_pos.offset - start_offset;
101-
chic::Error::new(label)
102-
.error(
103-
max(
104-
1,
105-
loc.start_pos
106-
.line
107-
.checked_sub(context as usize)
108-
.unwrap_or(1),
109-
),
110-
start,
111-
if start == end {
112-
min(end + 1, end_offset - start_offset + 1)
113-
} else {
114-
end
115-
},
116-
source,
117-
format!(
118-
"expected {} {} -> {}",
119-
e.expected, loc.start_pos, loc.end_pos
110+
let end = if start == end {
111+
min(end + 1, end_offset - start_offset + 1)
112+
} else {
113+
end
114+
};
115+
Renderer::styled()
116+
.render(
117+
Level::Error.title(label).snippet(
118+
Snippet::source(source)
119+
.line_start(line_start)
120+
.fold(false)
121+
.annotations(vec![Level::Error.span(start..end).label(&format!(
122+
"expected {} {} -> {}",
123+
e.expected, loc.start_pos, loc.end_pos
124+
))]),
120125
),
121126
)
122127
.to_string()

0 commit comments

Comments
 (0)