@@ -120,6 +120,14 @@ void BridgedDecl_attachParsedAttrs(BridgedDecl decl,
120
120
decl.unbridged ()->attachParsedAttrs (attrs.unbridged ());
121
121
}
122
122
123
+ void BridgedDecl_forEachDeclToHoist (BridgedDecl cDecl,
124
+ BridgedSwiftClosure closure) {
125
+ cDecl.unbridged ()->forEachDeclToHoist ([&](Decl *D) {
126
+ BridgedDecl bridged (D);
127
+ closure (&bridged);
128
+ });
129
+ }
130
+
123
131
BridgedAccessorDecl BridgedAccessorDecl_createParsed (
124
132
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
125
133
BridgedAccessorKind cKind, BridgedAbstractStorageDecl cStorage,
@@ -150,6 +158,7 @@ BridgedPatternBindingDecl BridgedPatternBindingDecl_createParsed(
150
158
VD->attachParsedAttrs (cAttrs.unbridged ());
151
159
VD->setStatic (isStatic);
152
160
VD->setIntroducer (introducer);
161
+ VD->setTopLevelGlobal (isa<TopLevelCodeDecl>(declContext));
153
162
});
154
163
155
164
entries.emplace_back (pattern, entry.equalLoc .unbridged (),
@@ -345,32 +354,15 @@ static void setParsedMembers(IterableDeclContext *IDC, BridgedArrayRef cMembers,
345
354
346
355
Fingerprint fp = cFingerprint.unbridged ();
347
356
348
- SmallVector<Decl *> members;
349
- for (auto *decl : cMembers.unbridged <Decl *>()) {
350
- members.push_back (decl);
351
-
352
- // Add any variables bound to the list of decls.
353
- if (auto *PBD = dyn_cast<PatternBindingDecl>(decl)) {
354
- for (auto idx : range (PBD->getNumPatternEntries ())) {
355
- PBD->getPattern (idx)->forEachVariable (
356
- [&](VarDecl *VD) { members.push_back (VD); });
357
- }
358
- }
359
- // Each enum case element is also part of the members list according to the
360
- // legacy parser.
361
- if (auto *ECD = dyn_cast<EnumCaseDecl>(decl)) {
362
- for (auto *EED : ECD->getElements ()) {
363
- members.push_back (EED);
364
- }
365
- }
366
- }
357
+ ArrayRef<Decl *> members =
358
+ ctx.AllocateTransform <Decl *>(cMembers.unbridged <BridgedDecl>(),
359
+ [](auto decl) { return decl.unbridged (); });
367
360
368
361
IDC->setMaybeHasOperatorDeclarations ();
369
362
IDC->setMaybeHasNestedClassDeclarations ();
370
363
// FIXME: Split requests. e.g. DeclMembersFingerprintRequest.
371
- ctx.evaluator .cacheOutput (
372
- ParseMembersRequest{IDC},
373
- FingerprintAndMembers{fp, ctx.AllocateCopy (members)});
364
+ ctx.evaluator .cacheOutput (ParseMembersRequest{IDC},
365
+ FingerprintAndMembers{fp, members});
374
366
}
375
367
376
368
void BridgedNominalTypeDecl_setParsedMembers (BridgedNominalTypeDecl cDecl,
@@ -660,32 +652,15 @@ BridgedSubscriptDecl BridgedSubscriptDecl_createParsed(
660
652
cGenericParamList.unbridged ());
661
653
}
662
654
663
- BridgedTopLevelCodeDecl BridgedTopLevelCodeDecl_createStmt (
664
- BridgedASTContext cContext, BridgedDeclContext cDeclContext,
665
- BridgedSourceLoc cStartLoc, BridgedStmt statement,
666
- BridgedSourceLoc cEndLoc) {
667
- ASTContext &context = cContext.unbridged ();
668
- DeclContext *declContext = cDeclContext.unbridged ();
669
-
670
- auto *S = statement.unbridged ();
671
- auto Brace = BraceStmt::create (context, cStartLoc.unbridged (), {S},
672
- cEndLoc.unbridged (),
673
- /* Implicit=*/ true );
674
- return new (context) TopLevelCodeDecl (declContext, Brace);
655
+ BridgedTopLevelCodeDecl
656
+ BridgedTopLevelCodeDecl_create (BridgedASTContext cContext,
657
+ BridgedDeclContext cDeclContext) {
658
+ return new (cContext.unbridged ()) TopLevelCodeDecl (cDeclContext.unbridged ());
675
659
}
676
660
677
- BridgedTopLevelCodeDecl BridgedTopLevelCodeDecl_createExpr (
678
- BridgedASTContext cContext, BridgedDeclContext cDeclContext,
679
- BridgedSourceLoc cStartLoc, BridgedExpr expression,
680
- BridgedSourceLoc cEndLoc) {
681
- ASTContext &context = cContext.unbridged ();
682
- DeclContext *declContext = cDeclContext.unbridged ();
683
-
684
- auto *E = expression.unbridged ();
685
- auto Brace = BraceStmt::create (context, cStartLoc.unbridged (), {E},
686
- cEndLoc.unbridged (),
687
- /* Implicit=*/ true );
688
- return new (context) TopLevelCodeDecl (declContext, Brace);
661
+ void BridgedTopLevelCodeDecl_setBody (BridgedTopLevelCodeDecl cDecl,
662
+ BridgedBraceStmt cBody) {
663
+ cDecl.unbridged ()->setBody (cBody.unbridged ());
689
664
}
690
665
691
666
BridgedVarDecl BridgedVarDec_createImplicitStringInterpolationVar (
0 commit comments