Skip to content

Commit

Permalink
Rollup merge of rust-lang#123162 - GuillaumeGomez:fix-123158, r=notri…
Browse files Browse the repository at this point in the history
…ddle

Correctly get complete intra-doc link data

Fixes rust-lang#123158.

The problem was that we didn't take into account cases where there would be content other than backticks into the intra doc link definition.

r? `@notriddle`
  • Loading branch information
matthiaskrgr authored Mar 28, 2024
2 parents 1ec73f0 f1cfbdb commit cba164c
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
13 changes: 12 additions & 1 deletion src/librustdoc/passes/lint/redundant_explicit_links.rs
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 90,7 @@ fn check_redundant_explicit_link<'md>(
) -> Option<()> {
let mut broken_line_callback = |link: BrokenLink<'md>| Some((link.reference, "".into()));
let mut offset_iter = Parser::new_with_broken_link_callback(
&doc,
doc,
main_body_opts(),
Some(&mut broken_line_callback),
)
Expand Down Expand Up @@ -264,6 264,7 @@ fn collect_link_data(offset_iter: &mut OffsetIter<'_, '_>) -> LinkData {
let mut resolvable_link = None;
let mut resolvable_link_range = None;
let mut display_link = String::new();
let mut is_resolvable = true;

while let Some((event, range)) = offset_iter.next() {
match event {
Expand All @@ -281,13 282,23 @@ fn collect_link_data(offset_iter: &mut OffsetIter<'_, '_>) -> LinkData {
resolvable_link = Some(code);
resolvable_link_range = Some(range);
}
Event::Start(_) => {
// If there is anything besides backticks, it's not considered as an intra-doc link
// so we ignore it.
is_resolvable = false;
}
Event::End(_) => {
break;
}
_ => {}
}
}

if !is_resolvable {
resolvable_link_range = None;
resolvable_link = None;
}

LinkData { resolvable_link, resolvable_link_range, display_link }
}

Expand Down
8 changes: 8 additions & 0 deletions tests/rustdoc-ui/invalid-redundant-explicit-link.rs
Original file line number Diff line number Diff line change
@@ -0,0 1,8 @@
//@ check-pass

// Regression test for <https://github.com/rust-lang/rust/issues/123158>. It
// should not emit any warning.

//! [**`SomeTrait`**](SomeTrait):

pub trait SomeTrait {}

0 comments on commit cba164c

Please sign in to comment.