@@ -73,7 +73,7 @@ void BridgedDeclAttributes_add(BridgedDeclAttributes *cAttrs,
73
73
*cAttrs = attrs;
74
74
}
75
75
76
- static AccessLevel unbridged (BridgedAccessLevel level) {
76
+ static std::optional< AccessLevel> unbridge (BridgedAccessLevel level) {
77
77
switch (level) {
78
78
case BridgedAccessLevelPrivate:
79
79
return AccessLevel::Private;
@@ -87,6 +87,8 @@ static AccessLevel unbridged(BridgedAccessLevel level) {
87
87
return AccessLevel::Public;
88
88
case BridgedAccessLevelOpen:
89
89
return AccessLevel::Open;
90
+ case BridgedAccessLevelNone:
91
+ return std::nullopt;
90
92
}
91
93
llvm_unreachable (" unhandled BridgedAccessLevel" );
92
94
}
@@ -96,7 +98,7 @@ BridgedAccessControlAttr_createParsed(BridgedASTContext cContext,
96
98
BridgedSourceRange cRange,
97
99
BridgedAccessLevel cAccessLevel) {
98
100
return new (cContext.unbridged ()) AccessControlAttr (
99
- /* atLoc=*/ {}, cRange.unbridged (), unbridged (cAccessLevel));
101
+ /* atLoc=*/ {}, cRange.unbridged (), unbridge (cAccessLevel). value ( ));
100
102
}
101
103
102
104
BridgedAlignmentAttr
@@ -150,6 +152,15 @@ BridgedDynamicReplacementAttr BridgedDynamicReplacementAttr_createParsed(
150
152
cRParenLoc.unbridged ());
151
153
}
152
154
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
+
153
164
static EffectsKind unbridged (BridgedEffectsKind kind) {
154
165
switch (kind) {
155
166
case BridgedEffectsKindReadNone:
@@ -315,6 +326,25 @@ BridgedMacroRoleAttr BridgedMacroRoleAttr_createParsed(
315
326
conformances, cRParenLoc.unbridged (), /* implicit=*/ false );
316
327
}
317
328
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
+
318
348
BridgedSwiftNativeObjCRuntimeBaseAttr
319
349
BridgedSwiftNativeObjCRuntimeBaseAttr_createParsed (BridgedASTContext cContext,
320
350
BridgedSourceLoc cAtLoc,
@@ -342,6 +372,14 @@ BridgedNonSendableAttr BridgedNonSendableAttr_createParsed(
342
372
NonSendableAttr (cAtLoc.unbridged (), cRange.unbridged (), unbridged (cKind));
343
373
}
344
374
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
+
345
383
BridgedObjCAttr
346
384
BridgedObjCAttr_createParsedUnnamed (BridgedASTContext cContext,
347
385
BridgedSourceLoc cAtLoc,
@@ -480,7 +518,37 @@ BridgedSetterAccessAttr_createParsed(BridgedASTContext cContext,
480
518
BridgedSourceRange cRange,
481
519
BridgedAccessLevel cAccessLevel) {
482
520
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);
484
552
}
485
553
486
554
BridgedSPIAccessControlAttr BridgedSPIAccessControlAttr_createParsed (
@@ -500,3 +568,10 @@ BridgedSILGenNameAttr BridgedSILGenNameAttr_createParsed(
500
568
cRange.unbridged (), /* Implicit=*/ false );
501
569
}
502
570
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