@@ -73,7 +73,7 @@ void BridgedDeclAttributes_add(BridgedDeclAttributes *cAttrs,
7373 *cAttrs = attrs;
7474}
7575
76- static AccessLevel unbridged (BridgedAccessLevel level) {
76+ static std::optional< AccessLevel> unbridge (BridgedAccessLevel level) {
7777 switch (level) {
7878 case BridgedAccessLevelPrivate:
7979 return AccessLevel::Private;
@@ -87,6 +87,8 @@ static AccessLevel unbridged(BridgedAccessLevel level) {
8787 return AccessLevel::Public;
8888 case BridgedAccessLevelOpen:
8989 return AccessLevel::Open;
90+ case BridgedAccessLevelNone:
91+ return std::nullopt ;
9092 }
9193 llvm_unreachable (" unhandled BridgedAccessLevel" );
9294}
@@ -96,7 +98,7 @@ BridgedAccessControlAttr_createParsed(BridgedASTContext cContext,
9698 BridgedSourceRange cRange,
9799 BridgedAccessLevel cAccessLevel) {
98100 return new (cContext.unbridged ()) AccessControlAttr (
99- /* atLoc=*/ {}, cRange.unbridged (), unbridged (cAccessLevel));
101+ /* atLoc=*/ {}, cRange.unbridged (), unbridge (cAccessLevel). value ( ));
100102}
101103
102104BridgedAlignmentAttr
@@ -150,6 +152,15 @@ BridgedDynamicReplacementAttr BridgedDynamicReplacementAttr_createParsed(
150152 cRParenLoc.unbridged ());
151153}
152154
155+ BridgedDocumentationAttr BridgedDocumentationAttr_createParsed (
156+ BridgedASTContext cContext, BridgedSourceLoc cAtLoc,
157+ BridgedSourceRange cRange, BridgedStringRef cMetadata,
158+ BridgedAccessLevel cAccessLevel) {
159+ return new (cContext.unbridged ()) DocumentationAttr (
160+ cAtLoc.unbridged (), cRange.unbridged (), cMetadata.unbridged (),
161+ unbridge (cAccessLevel), /* implicit=*/ false );
162+ }
163+
153164static EffectsKind unbridged (BridgedEffectsKind kind) {
154165 switch (kind) {
155166 case BridgedEffectsKindReadNone:
@@ -315,6 +326,25 @@ BridgedMacroRoleAttr BridgedMacroRoleAttr_createParsed(
315326 conformances, cRParenLoc.unbridged (), /* implicit=*/ false );
316327}
317328
329+ BridgedStorageRestrictionsAttr BridgedStorageRestrictionsAttr_createParsed (
330+ BridgedASTContext cContext, BridgedSourceLoc cAtLoc,
331+ BridgedSourceRange cRange, BridgedArrayRef cInitializes,
332+ BridgedArrayRef cAccesses) {
333+ ASTContext &context = cContext.unbridged ();
334+
335+ ArrayRef<Identifier> initializes =
336+ cContext.unbridged ().AllocateTransform <Identifier>(
337+ cInitializes.unbridged <BridgedIdentifier>(),
338+ [](auto &e) { return e.unbridged (); });
339+ ArrayRef<Identifier> accesses =
340+ cContext.unbridged ().AllocateTransform <Identifier>(
341+ cAccesses.unbridged <BridgedIdentifier>(),
342+ [](auto &e) { return e.unbridged (); });
343+
344+ return StorageRestrictionsAttr::create (
345+ context, cAtLoc.unbridged (), cRange.unbridged (), initializes, accesses);
346+ }
347+
318348BridgedSwiftNativeObjCRuntimeBaseAttr
319349BridgedSwiftNativeObjCRuntimeBaseAttr_createParsed (BridgedASTContext cContext,
320350 BridgedSourceLoc cAtLoc,
@@ -342,6 +372,14 @@ BridgedNonSendableAttr BridgedNonSendableAttr_createParsed(
342372 NonSendableAttr (cAtLoc.unbridged (), cRange.unbridged (), unbridged (cKind));
343373}
344374
375+ BridgedNonisolatedAttr
376+ BridgedNonisolatedAttr_createParsed (BridgedASTContext cContext,
377+ BridgedSourceLoc cAtLoc,
378+ BridgedSourceRange cRange, bool isUnsafe) {
379+ return new (cContext.unbridged ()) NonisolatedAttr (
380+ cAtLoc.unbridged (), cRange.unbridged (), isUnsafe, /* implicit=*/ false );
381+ }
382+
345383BridgedObjCAttr
346384BridgedObjCAttr_createParsedUnnamed (BridgedASTContext cContext,
347385 BridgedSourceLoc cAtLoc,
@@ -375,7 +413,7 @@ BridgedObjCAttr BridgedObjCAttr_createParsedSelector(
375413
376414 return ObjCAttr::createSelector (
377415 cContext.unbridged (), cAtLoc.unbridged (), cAttrNameLoc.unbridged (),
378- cLParenLoc.unbridged (), nameLocs, names, cLParenLoc .unbridged ());
416+ cLParenLoc.unbridged (), nameLocs, names, cRParenLoc .unbridged ());
379417}
380418
381419BridgedObjCImplementationAttr BridgedObjCImplementationAttr_createParsed (
@@ -480,7 +518,37 @@ BridgedSetterAccessAttr_createParsed(BridgedASTContext cContext,
480518 BridgedSourceRange cRange,
481519 BridgedAccessLevel cAccessLevel) {
482520 return new (cContext.unbridged ()) SetterAccessAttr (
483- /* atLoc=*/ {}, cRange.unbridged (), unbridged (cAccessLevel));
521+ /* atLoc=*/ {}, cRange.unbridged (), unbridge (cAccessLevel).value ());
522+ }
523+
524+ static SpecializeAttr::SpecializationKind
525+ unbridge (BridgedSpecializationKind kind) {
526+ switch (kind) {
527+ case BridgedSpecializationKindFull:
528+ return SpecializeAttr::SpecializationKind::Full;
529+ case BridgedSpecializationKindPartial:
530+ return SpecializeAttr::SpecializationKind::Partial;
531+ }
532+ llvm_unreachable (" unhandled kind" );
533+ }
534+
535+ BridgedSpecializeAttr BridgedSpecializeAttr_createParsed (
536+ BridgedASTContext cContext, BridgedSourceLoc cAtLoc,
537+ BridgedSourceRange cRange, BridgedNullableTrailingWhereClause cWhereClause,
538+ bool exported, BridgedSpecializationKind cKind,
539+ BridgedDeclNameRef cTargetFunction, BridgedArrayRef cSPIGroups,
540+ BridgedArrayRef cAvailableAttrs) {
541+ SmallVector<Identifier, 2 > spiGroups;
542+ for (auto bridging : cSPIGroups.unbridged <BridgedIdentifier>())
543+ spiGroups.push_back (bridging.unbridged ());
544+ SmallVector<AvailableAttr *, 2 > availableAttrs;
545+ for (auto bridging : cAvailableAttrs.unbridged <BridgedAvailableAttr>())
546+ availableAttrs.push_back (bridging.unbridged ());
547+
548+ return SpecializeAttr::create (
549+ cContext.unbridged (), cAtLoc.unbridged (), cRange.unbridged (),
550+ cWhereClause.unbridged (), exported, unbridge (cKind),
551+ cTargetFunction.unbridged (), spiGroups, availableAttrs);
484552}
485553
486554BridgedSPIAccessControlAttr BridgedSPIAccessControlAttr_createParsed (
@@ -500,3 +568,10 @@ BridgedSILGenNameAttr BridgedSILGenNameAttr_createParsed(
500568 cRange.unbridged (), /* Implicit=*/ false );
501569}
502570
571+ BridgedUnavailableFromAsyncAttr BridgedUnavailableFromAsyncAttr_createParsed (
572+ BridgedASTContext cContext, BridgedSourceLoc cAtLoc,
573+ BridgedSourceRange cRange, BridgedStringRef cMessage) {
574+ return new (cContext.unbridged ())
575+ UnavailableFromAsyncAttr (cMessage.unbridged (), cAtLoc.unbridged (),
576+ cRange.unbridged (), /* implicit=*/ false );
577+ }
0 commit comments