Skip to content

collect doc alias as tips during resolution #127721

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

bvanjoi
Copy link
Contributor

@bvanjoi bvanjoi commented Jul 14, 2024

Close #124273

Collect the symbol in the doc alias attributes and provide a tip when a match is found.

r? @estebank

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Jul 14, 2024
@petrochenkov petrochenkov self-assigned this Jul 14, 2024
@petrochenkov
Copy link
Contributor

In general I'd prefer to maybe not do this at all for the local crate.
It will simplify things and avoid doing work on a good path.
The crate authors are the same people who write the doc alias attributes, so these hints are unlikely to be useful for them.

@petrochenkov petrochenkov added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jul 16, 2024
@bvanjoi
Copy link
Contributor Author

bvanjoi commented Jul 16, 2024

I'd prefer to maybe not do this at all for the local crate.

Agree and accept this suggestion.

@rustbot ready

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Jul 16, 2024
@petrochenkov petrochenkov removed their assignment Jul 16, 2024
@bors

This comment was marked as resolved.

@lolbinarycat lolbinarycat added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Aug 30, 2024
@lolbinarycat
Copy link
Contributor

@bvanjoi triage here, any interest in rebasing this?

@alex-semenyuk
Copy link
Member

@bvanjoi
Form wg-triage. Could you please rebase that it will be ready for review?

@bvanjoi
Copy link
Contributor Author

bvanjoi commented Oct 11, 2024

Rebased. @rustbot ready

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Oct 11, 2024
@bors

This comment was marked as resolved.

@bvanjoi
Copy link
Contributor Author

bvanjoi commented Oct 13, 2024

Update: Fixes the incorrect submodule...

@bors

This comment was marked as resolved.

@wesleywiser
Copy link
Member

Hi @estebank could you take a look at this when you get a chance? Thanks 🙂

@jieyouxu
Copy link
Member

jieyouxu commented May 8, 2025

Maybe r? @petrochenkov (or reroll)?

@@ -1285,3 +1285,29 @@ pub fn parse_confusables(attr: &Attribute) -> Option<Vec<Symbol>> {

Some(candidates)
}

pub fn collect_doc_alias_symbol_from_attrs<'tcx>(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both calls to this function immediately use contains(sym) on the result, so it's probably better to pass sym to here and avoid the collection.

format!(
"`{}` has a name defined in the doc alias attribute as `{}`",
self.r.tcx.item_name(did),
path.last().unwrap().ident.as_str()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
path.last().unwrap().ident.as_str()
path.last().unwrap().ident

@@ -783,6 +796,50 @@ impl<'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'_, 'ast, 'ra, 'tcx> {
(false, candidates)
}

fn lookup_doc_alias_name(&mut self, path: &[Segment], ns: Namespace) -> Option<DefId> {
let item_str = path.last().unwrap().ident;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
let item_str = path.last().unwrap().ident;
let item_name = path.last().unwrap().ident.name;

} else {
let mod_path = &path[..path.len() - 1];
if let PathResult::Module(ModuleOrUniformRoot::Module(module)) =
self.resolve_path(mod_path, Some(TypeNS), None)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think the logic is right, we are reporting an error for one specific unresolved segment in a path (and it's not necessarily the last one), not for all segments, and all segments before the one unresolved segment should be already resolved and recorded into partial_res_map.

So

  • no need to search candidates for all segments, only for the currently unresolved one
  • no need to use resolve_path for the previous segments, partial_res_map should already be filled.

@petrochenkov petrochenkov added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels May 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support rustc_confusables on items other than methods
9 participants