-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
Remove implicit availability of Foundation
from future manifest versions
#5874
Conversation
@@ -11,7 +11,6 @@ | |||
//===----------------------------------------------------------------------===// | |||
|
|||
import Foundation | |||
import PackageModel |
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.
Since ContextModel
is part of PackageLoading
and PackageDescription
via a symlink, we need to import Foundation
implementation-only in both modules. This is incompatible with IdentityResolver
since it uses Foundation.URL
as part of its public interface. To resolve this, I moved IdentityResolver
into PackageModel
here.
@swift-ci please smoke test |
Interesting... |
Should a note about this be added to |
+1 |
8737493
to
c1d350a
Compare
@swift-ci please smoke test |
Not entirely sure why I am not seeing these locally 🤔 |
c1d350a
to
228fd6a
Compare
@swift-ci please smoke test |
228fd6a
to
202c4db
Compare
…sions This changes all imports of `Foundation` in the `PackageDescription` module to be implementation-only, making it so that it needs to be explicitly imported if being used. To avoid breaking existing packages, we inject an explicit import into manifests with tools-version 5.7 or earlier. In the next tools-version, `Foundation` will no longer be implicitly available. rdar://92879696
202c4db
to
c810bd7
Compare
@swift-ci please smoke test |
@swift-ci please test package compatibility |
Reverts 1998284 / swiftlang#3526 Related to SR-14718 (swiftlang#4416). Since swiftlang#3526 was merged, swiftlang#5874 tried to apply the original idea of using `@_implementationOnly Foundation` in PackageDescription/Plugin to avoid leaking `Foundation` into the manifests.
This changes all imports of
Foundation
in thePackageDescription
module to be implementation-only, making it so that it needs to be explicitly imported if being used. To avoid breaking existing packages, we inject an explicit import into manifests with tools-version 5.7 or earlier. In the next tools-version,Foundation
will no longer be implicitly available.rdar://92879696