It seems using nameof makes symbol resolved using type name resolution rules first.
let f (obj: obj) =
nameof obj
In this example obj inside the function is resolved to type, which is unexpected, making local obj value unused:

Without nameof it works as expected:

When there's no matching type to resolve to is found, it also works as expected:
