Skip to content

2018 idioms: duplicate suggestion for anonymous lifetime #55768

Closed
@alexcrichton

Description

@alexcrichton

First reported here this code:

#![warn(rust_2018_idioms)]

macro_rules! foo {
    ($name:ident) => {
        pub struct $name;
        impl ::std::fmt::Debug for $name {
            fn fmt(&self, _fmt: &mut ::std::fmt::Formatter) -> Result<(), ::std::fmt::Error> {
                Ok(())
            }
        }
    }
}

foo!(One);
foo!(Two);

fn main() {}

when compiled yields two warnings to insert anonymous lifetimes. While we as humans can figure this out pretty well, Cargo as a merciless program can't figure this out and cargo fix attempts to apply the fix twice, creating invalid <'_><'_> syntax.

It's not clear whether it's best to fix this in cargo fix or fix this in the compiler itself. I figure it's easiest to track all idiom-lint related issues in this repository though, so I've opted to move it over here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-edition-2018Area: The 2018 editionA-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.L-elided_lifetimes_in_pathsLint: elided_lifetimes_in_pathsT-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