See the test file. It seems necessary to be able to distinguish these 3 cases, does it not?

fn who() {} // who 1

trait Bar {
  fn who(); // who 2
}

struct w;
impl Bar for w {
  fn who() {} // who 3
}