My guess is that the compiler simply can't always do it right. It has a reason that there exists . as well as -> and depending on what you want, the compiler might decide to do it differently than what you expect.
Maybe it doesn't work in structs - for my. / my-> it works as intended.