Label shadowing by himself warning



I got a strange warning I can’t understand why.

src/ 210:22 warning: label name `'ecto_loop` shadows a label name that is already in scope
src/                     'ecto_loop: loop {
src/ 210:22 note: shadowed label `'ecto_loop` declared here
src/                     'ecto_loop: loop {

But I’m pretty sure there is only one 'ecto_loop label. And how It’s possible to shadow itself? Can someone please explain what does compiler mean?

gist of this code


Could you post the whole function that contains this code?


new gist


This looks like a bug in rustc.


By the way, even renaming does not affect anything but the error message (which then prints the new label name).


Smaller reproduction:

fn main() {
    let _ = || {
        'foo: loop {}

Looks to be a problem with closures, which has already been filed as #25343.