It is actually not the case that type structure items can be shadowed :

# module A = struct type t = int;; type t = int end;;
Error: Multiple definition of the type name t.
       Names must be unique in a given structure or signature.