@warn_unqualified_access is a useful tool for preventing global namespace pollution: without it, it is all too easy to import a module and break existing code.
For reasons that are unclear (due to the attribute predating Swift Evolution entirely),
@warn_unqualified_access cannot be applied to global variables or constants. That’s a shame, as they can suffer from a similar issue to methods. The danger isn’t quite as pronounced without the potential for overloading, but it is still important. Many programmers emulate the behavior by declaring a global caseless enumeration with the same name as the module, but I don’t see why that should remain necessary.