@@ -1424,16 +1424,6 @@ Type swift::getAsyncTaskAndContextType(ASTContext &ctx) {
14241424 return TupleType::get (resultTupleElements, ctx);
14251425}
14261426
1427- Type swift::getAsyncLetAndTaskType (ASTContext &ctx) {
1428- TupleTypeElt resultTupleElements[2 ] = {
1429- ctx.TheRawPointerType , // AsyncLet *,
1430- ctx.TheRawPointerType , // AsyncLet *,
1431- // ctx.TheNativeObjectType // task
1432- };
1433-
1434- return TupleType::get (resultTupleElements, ctx);
1435- }
1436-
14371427static ValueDecl *getCreateAsyncTaskFuture (ASTContext &ctx, Identifier id) {
14381428 BuiltinFunctionBuilder builder (ctx);
14391429 auto genericParam = makeGenericParam ().build (builder);
@@ -1491,32 +1481,30 @@ static ValueDecl *getResumeContinuationThrowing(ASTContext &ctx,
14911481 _void);
14921482}
14931483
1494- static ValueDecl *getCreateAsyncLet (ASTContext &ctx, Identifier id) {
1484+ static ValueDecl *getStartAsyncLet (ASTContext &ctx, Identifier id) {
1485+ // return getBuiltinFunction(ctx, id, _thin,
1486+ // _generics(_unrestricted),
1487+ // _parameters(_rawPointer, <function>), TODO: seems we can't express function here?
1488+ // _rawPointer)
1489+
14951490 ModuleDecl *M = ctx.TheBuiltinModule ;
14961491 DeclContext *DC = &M->getMainFile (FileUnitKind::Builtin);
14971492 SynthesisContext SC (ctx, DC);
14981493
14991494 BuiltinFunctionBuilder builder (ctx);
15001495 auto genericParam = makeGenericParam ().build (builder); // <T>
15011496
1502- // flags
1503- builder.addParameter (
1504- makeConcrete (ctx.getIntDecl ()->getDeclaredInterfaceType ()));
1497+ // AsyncLet*
1498+ builder.addParameter (makeConcrete (OptionalType::get (ctx.TheRawPointerType )));
15051499
15061500 // operation async function pointer: () async throws -> T
15071501 auto extInfo = ASTExtInfoBuilder ().withAsync ().withThrows ().build ();
15081502 builder.addParameter (
15091503 makeConcrete (FunctionType::get ({ }, genericParam, extInfo)));
15101504
1511- // -> AsyncLet*
1512- // auto resultType = synthesizeType(SC, _rawPointer);
1513- // builder.setResult(makeConcrete(resultType));
1514- builder.setResult (makeConcrete (getAsyncLetAndTaskType (ctx))); // TODO: this can work I think
1505+ // -> Builtin.RawPointer
1506+ builder.setResult (makeConcrete (synthesizeType (SC, _rawPointer)));
15151507 return builder.build (id);
1516-
1517- // return getBuiltinFunction(ctx, id, _thin,
1518- // _parameters(_nativeObject),
1519- // _rawPointer);
15201508}
15211509
15221510static ValueDecl *getEndAsyncLet (ASTContext &ctx, Identifier id) {
@@ -2784,8 +2772,8 @@ ValueDecl *swift::getBuiltinValueDecl(ASTContext &Context, Identifier Id) {
27842772 case BuiltinValueKind::DestroyDefaultActor:
27852773 return getDefaultActorInitDestroy (Context, Id);
27862774
2787- case BuiltinValueKind::CreateAsyncLet :
2788- return getCreateAsyncLet (Context, Id);
2775+ case BuiltinValueKind::StartAsyncLet :
2776+ return getStartAsyncLet (Context, Id);
27892777
27902778 case BuiltinValueKind::EndAsyncLet:
27912779 return getEndAsyncLet (Context, Id);
0 commit comments