-
Notifications
You must be signed in to change notification settings - Fork 10.5k
[5.0][Stdlib][Overlays] Rename various classes to avoid conflicting ObjC names. #21433
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[5.0][Stdlib][Overlays] Rename various classes to avoid conflicting ObjC names. #21433
Conversation
@swift-ci please test |
Build failed |
50b9a3e
to
60dd607
Compare
@swift-ci please test |
Build failed |
Build failed |
@apple/swift5-branch-managers Not required for convergence. This is ABI breaking. Most of the changes are not, as Note that the corresponding lldb PR needs to be merged at the same time as this one: |
Let's get the change reviewed and merged to master before we do this one. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please update this to match the changes on master and wait a day or two before merging this in case there is unexpected fallout on master.
60dd607
to
732decc
Compare
@swift-ci please test |
This is now up to date with the changes that were merged to master. When merging this one, be sure to merge apple/swift-lldb#1162 at the same time. |
Build failed |
Build failed |
…ames. Old Swift and new Swift runtimes and overlays need to coexist in the same process. This means there must not be any classes which have the same ObjC runtime name in old and new, because the ObjC runtime doesn't like name collisions. When possible without breaking source compatibility, classes were renamed in Swift, which results in a different ObjC name. Public classes were renamed only on the ObjC side using the @_objcRuntimeName attribute. This is similar to the work done in pull request swiftlang#19295. That only renamed @objc classes. This renames all of the others, since even pure Swift classes still get an ObjC name. rdar://problem/46646438
rdar://problem/46646438
…mes. This avoids name conflicts between generic classes in the Swift modules of the old and new stdlibs when loaded into the same process.
732decc
to
d1b9293
Compare
@swift-ci please test |
Build failed |
Build failed |
Master seems to be holding up. Merging this one. |
Cherry-pick #21331 for
swift-5.0-branch
.Old Swift and new Swift runtimes and overlays need to coexist in the same process. This means there must not be any classes which have the same ObjC runtime name in old and new, because the ObjC runtime doesn't like name collisions.
When possible without breaking source compatibility, classes were renamed in Swift, which results in a different ObjC name.
Public classes were renamed only on the ObjC side using the @_objcRuntimeName attribute.
This is similar to the work done in pull request #19295. That only renamed @objc classes. This renames all of the others, since even pure Swift classes still get an ObjC name.
rdar://problem/46646438