Right now, if you get the absolute path of an item using the ty::item_path() function, and that item is an external crate x, you always get a path like x::foo::bar where foo::bar is the path to the item within the crate x. This is usually right but not always, because it is possible that the crate x is not linked into the root namespace.
For example, you might have:
mod local_mod {
use x;
...
}
in which case the right path would be local_mod::x::foo::bar.
To fix this, we ought to store some valid path to the crate along with the crate metadata (preferably a shortest path [there could be more than one shortest path]). We can then prepend this path. The function csearch.rs:get_item_path() would be the primary one to change.
Right now, if you get the absolute path of an item using the
ty::item_path()function, and that item is an external cratex, you always get a path likex::foo::barwherefoo::baris the path to the item within the cratex. This is usually right but not always, because it is possible that the cratexis not linked into the root namespace.For example, you might have:
in which case the right path would be
local_mod::x::foo::bar.To fix this, we ought to store some valid path to the crate along with the crate metadata (preferably a shortest path [there could be more than one shortest path]). We can then prepend this path. The function
csearch.rs:get_item_path()would be the primary one to change.