Skip to content

Work around @_exported-public import bug#477

Merged
stephencelis merged 8 commits into
mainfrom
export-fixes
Jun 10, 2026
Merged

Work around @_exported-public import bug#477
stephencelis merged 8 commits into
mainfrom
export-fixes

Conversation

@stephencelis

@stephencelis stephencelis commented Jun 9, 2026

Copy link
Copy Markdown
Member

We've relied on fine-grained GRDB exports via, e.g.:

@_exported import class GRDB.Database

But it turns out this breaks as soon as you have an explicit public import in the same module:

public import class GRDB.Database

To work around this bug, we can use #if blocks to make each mutually exclusive.

We've relied on fine-grained GRDB exports via, e.g.:

```swift
@_exported import class GRDB.Database
```

This underscored feature unfortunately doesn't always seem to play
nicely with Swift's upcoming features around member visibility and
internal imports. While I can't always reproduce the issue, I have been
able to do so in the Reminders app, which had some explicit imports to
work around the issue.

This commit updates things to use `public typealias` for aliasing
instead, which does not appear to cause ambiguity when an `import GRDB`
is done in the same file. This is also how some of Apple's packages
handle the same problem.
@stephencelis stephencelis marked this pull request as draft June 9, 2026 20:43
Comment thread Examples/Reminders/RemindersDetail.swift
@stephencelis stephencelis marked this pull request as ready for review June 10, 2026 19:17
This reverts commit e0bc4c6.
@stephencelis stephencelis changed the title Re-export symbols using type aliases, instead Work around @_exported-public import bug Jun 10, 2026
@stephencelis stephencelis merged commit f8f2311 into main Jun 10, 2026
5 checks passed
@stephencelis stephencelis deleted the export-fixes branch June 10, 2026 20:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants