-
Notifications
You must be signed in to change notification settings - Fork 10.5k
ClangImporter: Look up availability domains in Clang modules #80035
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
Merged
tshortli
merged 3 commits into
swiftlang:main
from
tshortli:import-clang-availability-domains
Mar 16, 2025
Merged
ClangImporter: Look up availability domains in Clang modules #80035
tshortli
merged 3 commits into
swiftlang:main
from
tshortli:import-clang-availability-domains
Mar 16, 2025
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@swift-ci please test |
This is very brittle in this first iteration. For now we require the declaration representing the availability domain be deserialized before it can be looked up by name since Clang does not have a lookup table for availabilty domains in its module representation. As a result, it only works for bridging headers that are not precompiled. Part of rdar://138441266.
In addition to tracking availability domains in SwiftLookupTable, also serialize and deserialize the mapping from domain name to `clang::VarDecl`. Ideally this serialization and lookup infrastructure would be entirely handled by Clang, since it also needs to look up availability domains in serialized modules, but the implementation for that is not ready yet. Part of rdar://138441266.
Import `__attribute__((availability(domain:MyDomain, ...)))` as `@available(SomeDomain, ...)`. Resolves rdar://138441266.
7e1ba87
to
e96b44b
Compare
@swift-ci please smoke test |
@swift-ci please smoke test Linux |
tshortli
added a commit
to tshortli/swift
that referenced
this pull request
Apr 7, 2025
Partially revert swiftlang#80035 now that Clang has its own APIs for querying serialized modules for the decl representing the availability domain with a given name.
tshortli
added a commit
to tshortli/swift
that referenced
this pull request
Apr 8, 2025
Partially revert swiftlang#80035 now that Clang has its own APIs for querying serialized modules for the decl representing the availability domain with a given name.
tshortli
added a commit
to tshortli/swift
that referenced
this pull request
Apr 8, 2025
Partially revert swiftlang#80035 now that Clang has its own APIs for querying serialized modules for the decl representing the availability domain with a given name.
tshortli
added a commit
to tshortli/swift
that referenced
this pull request
Apr 8, 2025
Partially revert swiftlang#80035 now that Clang has its own APIs for querying serialized modules for the decl representing the availability domain with a given name.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Clang modules may now define availability domains for use in Swift programs. A domain can be specified by declaring an
__AvailabilityDomain
value:To facilitate this, ClangImporter constructs a lookup table that maps availability domain names to these
VarDecl
s and stores it as an on-disk hash table in the extended storage of the Clang module serialization format. In the future, I expect the responsibility of looking up domainVarDecls
in a serialized module to move to Clang and for this custom lookup logic to be removed from the Swift compiler.Resolves rdar://138441266.