Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitffa5268

Browse files
authored
Merge pull request#334 from Muscraft/fix-annotating-leading-whitespace
fix: Properly handle annotating leading whitespace
2 parentsc3102bc +7d7322a commitffa5268

File tree

3 files changed

+58
-6
lines changed

3 files changed

+58
-6
lines changed

‎src/renderer/margin.rs‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,12 @@ impl Margin {
7171

7272
ifself.computed_right -self.computed_left >self.term_width{
7373
// Trimming only whitespace isn't enough, let's get craftier.
74-
ifself.label_right -self.whitespace_left <=self.term_width{
74+
ifself.label_right.saturating_sub(self.whitespace_left) <=self.term_width
75+
// Trimming whitespace when the right-most label is somewhrere
76+
// within it would result in the label pointing to the wrong
77+
// place
78+
&&self.label_right >=self.whitespace_left
79+
{
7580
// Attempt to fit the code window only trimming whitespace.
7681
self.computed_left =self.whitespace_left;
7782
self.computed_right =self.computed_left +self.term_width;

‎src/renderer/render.rs‎

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -622,11 +622,6 @@ fn render_snippet_annotations(
622622
// Get the left-side margin to remove it
623623
letmut whitespace_margin = usize::MAX;
624624
for line_infoin annotated_lines{
625-
// Whitespace can only be removed (aka considered leading)
626-
// if the lexer considers it whitespace.
627-
// non-rustc_lexer::is_whitespace() chars are reported as an
628-
// error (ex. no-break-spaces \u{a0}), and thus can't be considered
629-
// for removal during error reporting.
630625
let leading_whitespace = line_info
631626
.line
632627
.chars()

‎tests/rustc_tests.rs‎

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5646,3 +5646,55 @@ LL │ static ROOK_ATTACKS_TABLE: () = {
56465646
let renderer = renderer.decor_style(DecorStyle::Unicode);
56475647
assert_data_eq!(renderer.render(input), expected_unicode);
56485648
}
5649+
5650+
#[test]
5651+
fnemitter_overflow_bad_whitespace(){
5652+
// tests/ui/errors/emitter-overflow-bad-whitespace.rs
5653+
let source =r#"                                        fn main() { return; }
5654+
"#;
5655+
let title_0 ="Unicode character ' ' (No-Break Space) looks like ' ' (Space), but it is not";
5656+
5657+
let report =&[
5658+
Group::with_title(Level::ERROR.primary_title("unknown start of token:\u{a0}")).element(
5659+
Snippet::source(source)
5660+
.path("$DIR/emitter-overflow-bad-whitespace.rs")
5661+
.line_start(10)
5662+
.annotation(AnnotationKind::Primary.span(0..2)),
5663+
),
5664+
Group::with_title(Level::HELP.secondary_title(title_0)).element(
5665+
Snippet::source(source)
5666+
.path("$DIR/emitter-overflow-bad-whitespace.rs")
5667+
.line_start(10)
5668+
.patch(Patch::new(0..2," ")),
5669+
),
5670+
];
5671+
let expected_ascii = str![[r#"
5672+
error: unknown start of token:  
5673+
--> $DIR/emitter-overflow-bad-whitespace.rs:10:1
5674+
|
5675+
10 |     ...
5676+
| ^
5677+
|
5678+
help: Unicode character ' ' (No-Break Space) looks like ' ' (Space), but it is not
5679+
|
5680+
10 |                                       fn main() { return; }
5681+
| +
5682+
"#]];
5683+
let renderer_ascii =Renderer::plain().term_width(1);
5684+
assert_data_eq!(renderer_ascii.render(report), expected_ascii);
5685+
5686+
let expected_unicode = str![[r#"
5687+
error: unknown start of token:  
5688+
╭▸ $DIR/emitter-overflow-bad-whitespace.rs:10:1
5689+
5690+
10 │       …
5691+
│ ━
5692+
╰╴
5693+
help: Unicode character ' ' (No-Break Space) looks like ' ' (Space), but it is not
5694+
╭╴
5695+
10 │                                       fn main() { return; }
5696+
╰╴+
5697+
"#]];
5698+
let renderer_unicode = renderer_ascii.decor_style(DecorStyle::Unicode);
5699+
assert_data_eq!(renderer_unicode.render(report), expected_unicode);
5700+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp