通过方法类型参数分配给类型成员的值打破类型等效

为什么以下类型对等成立

trait Foo { type T }
val fa = new Foo { type T = Int }

implicitly[fa.T =:= Int] // OK

but when type member T is assigned via method parameter A then type equivalence does not hold

def makeFoo[A]: Foo = new Foo { type T = A }
val fb = makeFoo[Int]

implicitly[fb.T =:= Int] // ERROR

Intuitively I would expect if T = A and A = Int then T = Int?