ITADN

Build fails with Swift 6.2 + swift-collections 1.4.0: MemberImportVisibility error in RequestBody.swift

#791Closednotcome 创建于 2026-03-07
N
notcomecommented
## Description `HummingbirdCore` fails to build with Swift 6.2 when `swift-collections` 1.4.0 is resolved, due to `MemberImportVisibility` ([SE-0444](https://github.com/swiftlang/swift-evolution/blob/main/proposals/0444-member-import-visibility.md)) enforcement. ## Error ``` Sources/HummingbirdCore/Request/RequestBody.swift:164:52: error: instance method 'popFirst()' is not available due to missing import of defining module 'DequeModule' [#MemberImportVisibility] Sources/HummingbirdCore/Request/RequestBody.swift:187:52: error: instance method 'popFirst()' is not available due to missing import of defining module 'DequeModule' [#MemberImportVisibility] Sources/HummingbirdCore/Request/RequestBody.swift:210:91: error: initializer 'init()' is not available due to missing import of defining module 'DequeModule' [#MemberImportVisibility] ``` ## Cause `RequestBody.swift` does `import Collections` and uses `Deque` (type) and `Deque.popFirst()` (extension method defined in `DequeModule`). In `swift-collections` < 1.4.0, the `Collections` umbrella module used `@_exported import DequeModule`, so importing `Collections` brought all of `DequeModule`'s extension methods into scope. In `swift-collections` 1.4.0, `@_exported import` was [replaced with typealiases](https://github.com/apple/swift-collections/commit/eac10aba). The type name `Deque` is still visible through the typealias, but extension methods like `popFirst()` and `init()` are defined in `DequeModule` and are no longer transitively visible. Swift 6.2 enforces [SE-0444 MemberImportVisibility](https://github.com/swiftlang/swift-evolution/blob/main/proposals/0444-member-import-visibility.md) by default, so these members are now errors rather than warnings. ## Suggested Fix Add `import DequeModule` to `Sources/HummingbirdCore/Request/RequestBody.swift` (or replace `import Collections` with `import DequeModule` since `Deque` is the only collections type used in that file). ## Environment - Swift 6.2 (swift-6.2-RELEASE) - swift-collections 1.4.0 - hummingbird 2.20.1
关闭于 2026-03-07 1 条评论