| 1172 | |
| 1173 | /** @internal */ |
| 1174 | export const gen = < |
| 1175 | Self, |
| 1176 | Eff extends Effect.Effect<any, any, any>, |
| 1177 | AEff |
| 1178 | >( |
| 1179 | ...args: |
| 1180 | | [options: { readonly self: Self }, body: (this: Self) => Generator<Eff, AEff, never>] |
| 1181 | | [body: () => Generator<Eff, AEff, never>] |
| 1182 | ): Effect.Effect< |
| 1183 | AEff, |
| 1184 | [Eff] extends [never] ? never |
| 1185 | : [Eff] extends [Effect.Effect<infer _A, infer E, infer _R>] ? E |
| 1186 | : never, |
| 1187 | [Eff] extends [never] ? never |
| 1188 | : [Eff] extends [Effect.Effect<infer _A, infer _E, infer R>] ? R |
| 1189 | : never |
| 1190 | > => |
| 1191 | suspend(() => |
| 1192 | fromIteratorUnsafe( |
| 1193 | args.length === 1 ? args[0]() : (args[1].call(args[0].self) as any) |
| 1194 | ) |
| 1195 | ) |
| 1196 | |
| 1197 | /** @internal */ |
| 1198 | export const fnUntraced: Effect.fn.Untraced = ( |