@@ -220,13 +220,13 @@ void *ParamDecl_create(void *ctx, void *loc, void *_Nullable argLoc,
220220 return paramDecl;
221221}
222222
223- void * FuncDecl_create ( void *ctx, void *staticLoc, bool isStatic, void *funcLoc,
224- BridgedIdentifier name , void *nameLoc , bool isAsync ,
225- void *_Nullable asyncLoc , bool throws ,
226- void *_Nullable throwsLoc, void *paramLLoc ,
227- BridgedArrayRef params , void *paramRLoc ,
228- void *_Nullable body , void *_Nullable returnType ,
229- void *declContext) {
223+ struct FuncDeclBridged
224+ FuncDecl_create ( void *ctx , void *staticLoc , bool isStatic, void *funcLoc ,
225+ BridgedIdentifier name, void *nameLoc , bool isAsync ,
226+ void *_Nullable asyncLoc, bool throws ,
227+ void *_Nullable throwsLoc , void *paramLLoc ,
228+ BridgedArrayRef params , void *paramRLoc ,
229+ void *_Nullable returnType, void *declContext) {
230230 auto *paramList = ParameterList::create (
231231 *static_cast <ASTContext *>(ctx), getSourceLocFromPointer (paramLLoc),
232232 getArrayRef<ParamDecl *>(params), getSourceLocFromPointer (paramRLoc));
@@ -240,9 +240,13 @@ void *FuncDecl_create(void *ctx, void *staticLoc, bool isStatic, void *funcLoc,
240240 getSourceLocFromPointer (asyncLoc), throws,
241241 getSourceLocFromPointer (throwsLoc), nullptr , paramList,
242242 (TypeRepr *)returnType, (DeclContext *)declContext);
243- out->setBody ((BraceStmt *)body, FuncDecl::BodyKind::Parsed);
244243
245- return static_cast <Decl *>(out);
244+ return {static_cast <DeclContext *>(out), static_cast <FuncDecl *>(out),
245+ static_cast <Decl *>(out)};
246+ }
247+
248+ void FuncDecl_setBody (void *fn, void *body) {
249+ ((FuncDecl *)fn)->setBody ((BraceStmt *)body, FuncDecl::BodyKind::Parsed);
246250}
247251
248252void *SimpleIdentTypeRepr_create (void *ctx, void *loc, BridgedIdentifier id) {
@@ -283,10 +287,13 @@ void *ClosureExpr_create(void *ctx, void *body, void *dc) {
283287 SourceLoc inLoc;
284288
285289 ASTContext &Context = *static_cast <ASTContext *>(ctx);
290+ auto params = ParameterList::create (Context, inLoc, {}, inLoc);
291+
286292 auto *out = new (Context)
287293 ClosureExpr (attributes, bracketRange, nullptr , nullptr , asyncLoc,
288294 throwsLoc, arrowLoc, inLoc, nullptr , 0 , (DeclContext *)dc);
289295 out->setBody ((BraceStmt *)body, true );
296+ out->setParameterList (params);
290297 return (Expr *)out;
291298}
292299
@@ -505,3 +512,4 @@ void TopLevelCodeDecl_dump(void *decl) {
505512void Expr_dump (void *expr) { ((Expr *)expr)->dump (llvm::errs ()); }
506513void Decl_dump (void *expr) { ((Decl *)expr)->dump (llvm::errs ()); }
507514void Stmt_dump (void *expr) { ((Stmt *)expr)->dump (llvm::errs ()); }
515+ void Type_dump (void *expr) { ((TypeRepr *)expr)->dump (); }
0 commit comments