Skip to content

Commit 012d665

Browse files
committed
wip
1 parent 8877b22 commit 012d665

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

src/sci/impl/async_macro.cljc

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -398,12 +398,17 @@
398398
else-is-promise? (promise-form? transformed-else)
399399
;; If either branch is a promise-form, ensure BOTH branches return promises
400400
;; so we can safely call .then on the if result
401+
;; Also handle missing else when then is promise (implicit nil else)
401402
final-then (if (and else-is-promise? (not then-is-promise?))
402403
(wrap-promise transformed-then)
403404
transformed-then)
404-
final-else (if (and then-is-promise? (not else-is-promise?) transformed-else)
405-
(wrap-promise transformed-else)
406-
transformed-else)
405+
final-else (cond
406+
;; else is promise but then isn't - wrap then (handled above), keep else
407+
else-is-promise? transformed-else
408+
;; then is promise but else isn't (including nil) - wrap else
409+
then-is-promise? (wrap-promise transformed-else)
410+
;; neither is promise - keep as-is
411+
:else transformed-else)
407412
branches-have-promise? (or then-is-promise? else-is-promise?)]
408413
(if (promise-form? transformed-test)
409414
(let [test-binding (gensym "test__")]

test/sci/async_await_test.cljs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,10 @@
406406
:no-else-await-in-then
407407
(if true (await (js/Promise.resolve :result)))
408408
409+
;; REGRESSION: no else, await in then, but test is false (implicit nil)
410+
:no-else-await-in-then-falsy
411+
(if false (await (js/Promise.resolve :never)))
412+
409413
;; REGRESSION: loop with if having mixed branches
410414
:nested-loop-mixed
411415
(loop [sum 0 items [{:x 10} 5 {:x 20}]]
@@ -432,6 +436,7 @@
432436
:await-both-falsy :else
433437
:no-else-await-in-test :result
434438
:no-else-await-in-then :result
439+
:no-else-await-in-then-falsy nil
435440
:nested-loop-mixed 35
436441
:expr-position-mixed 142}
437442
result))))

0 commit comments

Comments
 (0)