Something is fishy. I tried your example in the repl, using `:power`, and things look ok:

```
scala> val bFoo = typeOf[B].member(newTermName("foo"))
bFoo: $r.intp.global.Symbol = value foo

scala> val aFoo = typeOf[A].member(newTermName("foo"))
aFoo: $r.intp.global.Symbol = method foo

scala> bFoo.overriddenSymbol(aFoo.owner)
res8: $r.intp.global.Symbol = method foo

scala> bFoo.overriddenSymbol(aFoo.owner) == aFoo
res9: Boolean = true
```