Huh, I always assumed override to be an official part of the language. Its lack of an underscore prefix and its adoption by standard library types reminds be of @rethrows.
Agreed, “shadowing” is not a good term for subsuming a requirement in a refining protocol.
Yes, perhaps, but I think that having a keyword attached makes things easier. Of course, this can’t be done for every single feature. However, features that belong in the not-so-advanced category, where users would be expected to be experts, but are not too ubiquitous either, where the feature would be explored in introductory Swift tutorials, should have good searchability. An anecdotal example of this happening was with closures in UIKit: I saw the more lightweight closure syntax after autocompleting, but didn’t know why that was happening. In UIKit, trailing closures don’t appear that much (compared to Collection operators, SwiftUI, etc.), so they weren’t covered in many tutorials (or at least those I watched). So for a long time I thought trailing closures was a UIKit-only thing. Now, yes, UIKit is just a framework, but my point is that trailing closures weren’t that common, but when they showed up, I didn’t have a keyword or an attribute to search for. Otherwise, users may see primary associated types show up more and more, but they may have to depend on randomly stumbling across a tutorial.
OK, I thought maybe you implied a change in the swift-interface-file generation by the compiler.
I understand this concern but new features and constantly being added, while Swift manages to remain mostly source-compatible (e.g. not changing the behavior of #file yet, albeit not being clearly defined). If we examine how each library author that wants to support older tooling will add new features, I think we are missing the point. The way I see it, larger libraries that need to work with many contributors have such concerns, but, consequently, they also have the engineers to commit to that, in this case, committing to double the effort of adding primary associated types.