@@ -351,9 +351,9 @@ module CancellableTaskBase =
351351 [<InlineIfLambda>] getAwaiter : CancellationToken -> 'Awaiter ,
352352 continuation :
353353 ( 'TResult1 -> CancellableTaskBaseCode < 'TOverall , 'TResult2 , 'Builder >)
354- ) =
354+ ) : CancellableTaskBaseCode < 'TOverall , 'TResult2 , 'Builder > =
355355
356- CancellableTaskBaseCode< 'TOverall, _, _ >(fun sm ->
356+ CancellableTaskBaseCode< 'TOverall, 'TResult2 , 'Builder >( fun sm ->
357357 if __ useResumableCode then
358358 //-- RESUMABLE CODE START
359359 sm.Data.ThrowIfCancellationRequested()
@@ -679,17 +679,46 @@ module CancellableTaskBase =
679679 ///
680680 /// <remarks>This turns a Task<'T> into a CancellationToken -> 'Awaiter.</remarks>
681681 ///
682- /// <returns>CancellationToken -> 'Awaiter</returns>
682+ /// <returns>'Awaiter</returns>
683+ member inline _.Source ( task : TaskAwaiter < 'T >) : Awaiter < TaskAwaiter < 'T >, 'T > = task
684+
685+ /// <summary>Allows the computation expression to turn other types into CancellationToken -> 'Awaiter</summary>
686+ ///
687+ /// <remarks>This turns a Task<'T> into a CancellationToken -> 'Awaiter.</remarks>
688+ ///
689+ /// <returns>'Awaiter</returns>
683690 member inline _.Source ( task : Task < 'T >) : Awaiter < TaskAwaiter < 'T >, 'T > =
684- task.GetAwaiter ()
691+ Awaitable.GetTaskAwaiter task
685692
686693 /// <summary>Allows the computation expression to turn other types into CancellationToken -> 'Awaiter</summary>
687694 ///
688695 /// <remarks>This turns a ColdTask<'T> into a CancellationToken -> 'Awaiter.</remarks>
689696 ///
690697 /// <returns>CancellationToken -> 'Awaiter</returns>
691- member inline _.Source ( [<InlineIfLambda>] task : unit -> Task < 'TResult1 >) =
692- ( fun ( ct : CancellationToken ) -> ( task ()) .GetAwaiter())
698+ member inline _.Source
699+ ( [<InlineIfLambda>] task : unit -> TaskAwaiter < 'T >)
700+ : CancellationToken -> Awaiter < TaskAwaiter < 'T >, 'T > =
701+ ( fun ( ct : CancellationToken ) -> ( task ()))
702+
703+ /// <summary>Allows the computation expression to turn other types into CancellationToken -> 'Awaiter</summary>
704+ ///
705+ /// <remarks>This turns a ColdTask<'T> into a CancellationToken -> 'Awaiter.</remarks>
706+ ///
707+ /// <returns>CancellationToken -> 'Awaiter</returns>
708+ member inline _.Source
709+ ( [<InlineIfLambda>] task : unit -> Task < 'T >)
710+ : CancellationToken -> Awaiter < TaskAwaiter < 'T >, 'T > =
711+ ( fun ( ct : CancellationToken ) -> Awaitable.GetTaskAwaiter( task ()))
712+
713+ /// <summary>Allows the computation expression to turn other types into CancellationToken -> 'Awaiter</summary>
714+ ///
715+ /// <remarks>This turns a CancellableTask<'T> into a CancellationToken -> 'Awaiter.</remarks>
716+ ///
717+ /// <returns>CancellationToken -> 'Awaiter</returns>
718+ member inline _.Source
719+ ( [<InlineIfLambda>] task : CancellationToken -> TaskAwaiter < 'T >)
720+ : CancellationToken -> Awaiter < TaskAwaiter < 'T >, 'T > =
721+ ( fun ct -> ( task ct))
693722
694723 /// <summary>Allows the computation expression to turn other types into CancellationToken -> 'Awaiter</summary>
695724 ///
@@ -699,12 +728,14 @@ module CancellableTaskBase =
699728 member inline _.Source
700729 ( [<InlineIfLambda>] task : CancellationToken -> Task < 'T >)
701730 : CancellationToken -> Awaiter < TaskAwaiter < 'T >, 'T > =
702- ( fun ct -> ( task ct) .GetAwaiter ( ))
731+ ( fun ct -> Awaitable.GetTaskAwaiter ( task ct))
703732
704733 /// <summary>Allows the computation expression to turn other types into CancellationToken -> 'Awaiter</summary>
705734 ///
706735 /// <remarks>This turns a Async<'T> into a CancellationToken -> 'Awaiter.</remarks>
707736 ///
708737 /// <returns>CancellationToken -> 'Awaiter</returns>
709- member inline this.Source ( computation : Async < 'TResult1 >) =
738+ member inline this.Source
739+ ( computation : Async < 'T >)
740+ : CancellationToken -> Awaiter < TaskAwaiter < 'T >, 'T > =
710741 this.Source( Async.AsCancellableTask( computation))
0 commit comments