Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
0bfcafd
std::thread::available_parallelism merging linux/android/freebsd version
devnexen Feb 2, 2024
22d582a
For a rigid projection, recursively look at the self type's item bounds
compiler-errors Feb 1, 2024
548929d
Don't unnecessarily lower associated type bounds to impl trait
compiler-errors Feb 2, 2024
7a63d3f
Add tests for untested capabilities
compiler-errors Feb 2, 2024
7057188
make it recursive
compiler-errors Feb 7, 2024
f0d002b
Correctly generate path for non-local items in source code pages
GuillaumeGomez Feb 2, 2024
f3c2483
Add regression test for non local items link generation
GuillaumeGomez Feb 3, 2024
14e0dab
Unify item relative path computation in one function
GuillaumeGomez Feb 3, 2024
83f3bc4
Update jobserver-rs to 0.1.28
petrochenkov Feb 9, 2024
8b6b9c5
ast_lowering: Fix regression in `use ::{}` imports.
petrochenkov Feb 9, 2024
e59d9b1
Avoid a collection and iteration on empty passes
blyxyas Feb 9, 2024
4ef1790
tidy
blyxyas Feb 9, 2024
69a5264
Move some tests
c410-f3r Feb 9, 2024
ba5161f
Rollup merge of #120584 - compiler-errors:u, r=lcnr
matthiaskrgr Feb 9, 2024
a4c5094
Rollup merge of #120589 - devnexen:cpuaff_fbsd_upd, r=m-ou-se
matthiaskrgr Feb 9, 2024
d7251bb
Rollup merge of #120596 - GuillaumeGomez:jump-to-def-non-local-link, …
matthiaskrgr Feb 9, 2024
4cfee4b
Rollup merge of #120629 - c410-f3r:testsssssss, r=petrochenkov
matthiaskrgr Feb 9, 2024
dadff64
Rollup merge of #120846 - petrochenkov:jobs, r=oli-obk
matthiaskrgr Feb 9, 2024
9e5639e
Rollup merge of #120850 - petrochenkov:empimpres, r=cjgillot
matthiaskrgr Feb 9, 2024
0b6980b
Rollup merge of #120853 - blyxyas:no-collect, r=cjgillot
matthiaskrgr Feb 9, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Unify item relative path computation in one function
  • Loading branch information
GuillaumeGomez committed Feb 9, 2024
commit 14e0dab96bb4038fe85930faf7c31227fbf95d61
19 changes: 16 additions & 3 deletions src/librustdoc/clean/inline.rs
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,20 @@ pub(crate) fn load_attrs<'hir>(cx: &DocContext<'hir>, did: DefId) -> &'hir [ast:
cx.tcx.get_attrs_unchecked(did)
}

pub(crate) fn item_relative_path(tcx: TyCtxt<'_>, def_id: DefId) -> Vec<Symbol> {
tcx.def_path(def_id)
.data
.into_iter()
.filter_map(|elem| {
// extern blocks (and a few others things) have an empty name.
match elem.data.get_opt_name() {
Some(s) if !s.is_empty() => Some(s),
_ => None,
}
})
.collect()
}

/// Record an external fully qualified name in the external_paths cache.
///
/// These names are used later on by HTML rendering to generate things like
Expand All @@ -206,8 +220,7 @@ pub(crate) fn record_extern_fqn(cx: &mut DocContext<'_>, did: DefId, kind: ItemT

let crate_name = cx.tcx.crate_name(did.krate);

let relative =
cx.tcx.def_path(did).data.into_iter().filter_map(|elem| elem.data.get_opt_name());
let relative = item_relative_path(cx.tcx, did);
let fqn = if let ItemType::Macro = kind {
// Check to see if it is a macro 2.0 or built-in macro
if matches!(
Expand All @@ -218,7 +231,7 @@ pub(crate) fn record_extern_fqn(cx: &mut DocContext<'_>, did: DefId, kind: ItemT
) {
once(crate_name).chain(relative).collect()
} else {
vec![crate_name, relative.last().expect("relative was empty")]
vec![crate_name, *relative.last().expect("relative was empty")]
}
} else {
once(crate_name).chain(relative).collect()
Expand Down
26 changes: 2 additions & 24 deletions src/librustdoc/html/format.rs
Original file line number Diff line number Diff line change
Expand Up @@ -586,18 +586,7 @@ fn generate_macro_def_id_path(
let crate_name = tcx.crate_name(def_id.krate);
let cache = cx.cache();

let fqp: Vec<Symbol> = tcx
.def_path(def_id)
.data
.into_iter()
.filter_map(|elem| {
// extern blocks (and a few others things) have an empty name.
match elem.data.get_opt_name() {
Some(s) if !s.is_empty() => Some(s),
_ => None,
}
})
.collect();
let fqp = clean::inline::item_relative_path(tcx, def_id);
let mut relative = fqp.iter().copied();
let cstore = CStore::from_tcx(tcx);
// We need this to prevent a `panic` when this function is used from intra doc links...
Expand Down Expand Up @@ -680,18 +669,7 @@ fn generate_item_def_id_path(
.unwrap_or(def_id);
}

let relative: Vec<Symbol> = tcx
.def_path(def_id)
.data
.into_iter()
.filter_map(|elem| {
// extern blocks (and a few others things) have an empty name.
match elem.data.get_opt_name() {
Some(s) if !s.is_empty() => Some(s),
_ => None,
}
})
.collect();
let relative = clean::inline::item_relative_path(tcx, def_id);
let fqp: Vec<Symbol> = once(crate_name).chain(relative).collect();

let def_kind = tcx.def_kind(def_id);
Expand Down
41 changes: 37 additions & 4 deletions tests/rustdoc/jump-to-non-local-method.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,47 @@

#![crate_name = "foo"]

// @has 'src/foo/jump-to-non-local-method.rs.html'

// @has - '//a[@href="{{channel}}/core/sync/atomic/struct.AtomicIsize.html"]' 'std::sync::atomic::AtomicIsize'
use std::sync::atomic::AtomicIsize;
// @has - '//a[@href="{{channel}}/std/io/trait.Read.html"]' 'std::io::Read'
use std::io::Read;
// @has - '//a[@href="{{channel}}/std/io/index.html"]' 'std::io'
use std::io;
// @has - '//a[@href="{{channel}}/std/process/fn.exit.html"]' 'std::process::exit'
use std::process::exit;
use std::cmp::Ordering;
use std::marker::PhantomData;

// @has 'src/foo/jump-to-non-local-method.rs.html'
// @has - '//a[@href="https://doc.rust-lang.org/nightly/core/sync/atomic/struct.AtomicIsize.html#method.new"]' 'AtomicIsize::new'
pub fn bar2<T: Read>(readable: T) {
// @has - '//a[@href="{{channel}}/std/io/trait.Read.html#tymethod.read"]' 'read'
let _ = readable.read(&mut []);
}

pub fn bar() {
// @has - '//a[@href="{{channel}}/core/sync/atomic/struct.AtomicIsize.html#method.new"]' 'AtomicIsize::new'
let _ = AtomicIsize::new(0);
b();
// @has - '//a[@href="#48"]' 'local_private'
local_private();
}

pub fn extern_call() {
// @has - '//a[@href="{{channel}}/std/process/fn.exit.html"]' 'exit'
exit(0);
}

pub fn macro_call() -> Result<(), ()> {
// @has - '//a[@href="{{channel}}/core/macro.try.html"]' 'try!'
try!(Err(()));
Ok(())
}

pub fn variant() {
// @has - '//a[@href="{{channel}}/core/cmp/enum.Ordering.html#variant.Less"]' 'Ordering::Less'
let _ = Ordering::Less;
// @has - '//a[@href="{{channel}}/core/marker/struct.PhantomData.html"]' 'PhantomData'
let _: PhantomData::<usize> = PhantomData;
}

fn b() {}
fn local_private() {}