Skip to content

[resolve] use rename suggestion is not well-formatted #45799

@behnam

Description

@behnam
Contributor

if let Ok(snippet) = cm.span_to_snippet(binding.span) {
err.span_suggestion(binding.span,
rename_msg,
format!("{} as Other{}", snippet, name));

Trying to re-import std or any other crate, I get a suggestion like this:

14 | extern crate std;
   | ^^^^^^^^^^^^^^^^^ `std` reimported here
   |
   = note: `std` must be defined only once in the type namespace of this module
help: You can use `as` to change the binding name of the import
   |
14 | extern crate std; as Otherstd
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The problem is in the formatting of the suggestion, where SEMICOLON (;) is placed before the as keyword, like this extern crate std; as Otherstd instead of extern crate std as Otherstd;.

The suggestion doesn't exist in stable or beta, so this affects only nightly at the moment.

Original commit: ff83240
Original PR: #45660

/cc @Cldfire

Activity

behnam

behnam commented on Nov 6, 2017

@behnam
ContributorAuthor

Looks like the feature works fine for use statements, but has this bug for extern crate ones. Maybe worth adding a test case for extern crate, too.

added
A-diagnosticsArea: Messages for errors, warnings, and lints
A-resolveArea: Name/path resolution done by `rustc_resolve` specifically
on Nov 6, 2017
Cldfire

Cldfire commented on Nov 6, 2017

@Cldfire
Contributor

Whoops! Thanks for noticing that.

I should be able to look into fixing this tonight (~12 hours from now) or tomorrow. @estebank, may I ask if you have any comments or input as to how this should be fixed before I do so?

estebank

estebank commented on Nov 6, 2017

@estebank
Contributor

@Cldfire what I would do is change the binding.span for extern crate statements to not include the semicolon. To do so, it is probably enough to modify parse_item_extern_crate in libsyntax/parse/parser.rs to take the self.prev_span before parsing the semicolon. That change would probably affect other ui tests as it would change underlines involving extern crate statements, and you should check if there're any regressions doing that change.

Cldfire

Cldfire commented on Nov 6, 2017

@Cldfire
Contributor

Gotcha, thanks for the advice.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-diagnosticsArea: Messages for errors, warnings, and lintsA-resolveArea: Name/path resolution done by `rustc_resolve` specificallyC-bugCategory: This is a bug.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      Participants

      @behnam@TimNN@estebank@petrochenkov@Cldfire

      Issue actions

        [resolve] use rename suggestion is not well-formatted · Issue #45799 · rust-lang/rust