[SE-0497] Implement @export attribute syntax

Implement the @export(implementation) and @export(interface) attributes
to replace @_alwaysEmitIntoClient and @_neverEmitIntoClient. Provide a
warning + Fix-It to start staging out the very-new
@_neverEmitIntoClient. We'll hold off on pushing folks toward
@_alwaysEmitIntoClient for a little longer.
This commit is contained in:
Doug Gregor
2025-11-07 16:20:43 -08:00
parent ed85a12b59
commit 020b69d4b6
40 changed files with 403 additions and 139 deletions

View File

@@ -58,7 +58,7 @@ const uint16_t SWIFTMODULE_VERSION_MAJOR = 0;
/// describe what change you made. The content of this comment isn't important;
/// it just ensures a conflict if two people change the module format.
/// Don't worry about adhering to the 80-column limit for this line.
const uint16_t SWIFTMODULE_VERSION_MINOR = 972; // SIL asmname string table
const uint16_t SWIFTMODULE_VERSION_MINOR = 973; // @export attribute
/// A standard hash seed used for all string hashes in a serialized module.
///
@@ -2412,6 +2412,11 @@ namespace decls_block {
BCFixed<2> // inline value
>;
using ExportDeclAttrLayout = BCRecordLayout<
Export_DECL_ATTR,
BCFixed<1> // export kind value
>;
using NonSendableDeclAttrLayout = BCRecordLayout<
NonSendable_DECL_ATTR,
BCFixed<1> // non-sendable kind