Skip to content

cargo fix fails on non_shorthand_field_patterns #66434

Closed

Description

@moxian

Code:

#![allow(unused_variables)]
#![allow(dead_code)]
#![allow(unused_mut)]
// #![allow(non_shorthand_field_patterns)]  // uncommenting this removes the bug

struct Some {
    inner: Vec<i32>
}

fn stuff(x: Some){
    let Some {
        inner: inner,
    } =  x;
}


fn main() {
}

cargo fix output:

PS D:\work\trash\repros\some-palette> cargo fix --allow-dirty
    Checking some-palette v0.1.0 (D:\work\trash\repros\some-palette)
warning: failed to automatically apply fixes suggested by rustc to crate `some_palette`

after fixes were automatically applied the compiler reported errors within these files:

  * src\main.rs

This likely indicates a bug in either rustc or cargo itself,
and we would appreciate a bug report! You're likely to see
a number of compiler warnings after this message which cargo
attempted to fix but failed. If you could open an issue at
https://github.com/rust-lang/rust/issues
quoting the full output of this command we'd be very appreciative!
Note that you may be able to make some more progress in the near-term
fixing code with the `--broken-code` flag

The following errors were reported:
error: expected `,`
  --> src\main.rs:12:9
   |
12 |         inner inner,
   |         ^^^^^

error: aborting due to previous error

Original diagnostics will follow.

warning: the `inner:` in this pattern is redundant
  --> src\main.rs:12:9
   |
12 |         inner: inner,
   |         ------^^^^^^
   |         |
   |         help: remove this
   |
   = note: `#[warn(non_shorthand_field_patterns)]` on by default

warning: the `inner:` in this pattern is redundant
  --> src\main.rs:12:9
   |
12 |         inner: inner,
   |         ------^^^^^^
   |         |
   |         help: remove this
   |
   = note: `#[warn(non_shorthand_field_patterns)]` on by default

    Finished dev [unoptimized + debuginfo] target(s) in 0.43s

Note that inner inner in the attempted fix is incorrect syntax (it ate a colon).

Github helpfully suggests that #65924 might be related. Edit: it probably actually isn't.

Version info:

> cargo --version
cargo 1.40.0-beta (5da4b4d47 2019-10-28)
> rustc --version
rustc 1.40.0-beta.1 (76b40532a 2019-11-05)

Activity

  1. csmoe commented on Nov 15, 2019

    @csmoe
  2. moxian commented on Nov 15, 2019

    @moxian
    Author
  3. ehuss commented on Nov 15, 2019

    @ehuss
    Contributor

    This is the correct place to file the issue, it is a bug in rustc.

    The issue is that the non_shorthand_field_patterns lint is providing a bad suggestion. Either the span needs to encompass the entire binding, or the suggested text needs to be the empty string.

  4. reopened this on Nov 15, 2019
  5. added
    A-lintsArea: Lints (warnings about flaws in source code) such as unused_mut.
    A-suggestion-diagnosticsArea: Suggestions generated by the compiler applied by `cargo fix`
    C-bugCategory: This is a bug.
    D-invalid-suggestionDiagnostics: A structured suggestion resulting in incorrect code.
    T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.
    on Nov 15, 2019
  6. added
    E-easyCall for participation: Easy difficulty. Experience needed to fix: Not much. Good first issue.
    on Nov 19, 2019
  7. added 2 commits that reference this issue on Dec 22, 2019
    f358d92
    c355463
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-lintsArea: Lints (warnings about flaws in source code) such as unused_mut.A-suggestion-diagnosticsArea: Suggestions generated by the compiler applied by `cargo fix`C-bugCategory: This is a bug.D-invalid-suggestionDiagnostics: A structured suggestion resulting in incorrect code.E-easyCall for participation: Easy difficulty. Experience needed to fix: Not much. Good first issue.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions