Skip to content

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

Closed

Description

@behnam

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

  1. 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.

  2. added
    A-diagnosticsArea: Messages for errors, warnings, and lints
    A-resolveArea: Name/path resolution done by `rustc_resolve` specifically
    on Nov 6, 2017
  3. 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?

  4. 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.

  5. 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

      No branches or pull requests

      Issue actions