Skip to content

Commit dbfe428

Browse files
committed
parser: Fix expression escaping
1 parent 530805e commit dbfe428

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

src/thunk.jl

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ generated thunks.
306306
macro par(exs...)
307307
opts = exs[1:end-1]
308308
ex = exs[end]
309-
_par(ex; lazy=true, opts=opts)
309+
return esc(_par(ex; lazy=true, opts=opts))
310310
end
311311

312312
"""
@@ -348,7 +348,7 @@ also passes along any options in an `Options` struct. For example,
348348
macro spawn(exs...)
349349
opts = exs[1:end-1]
350350
ex = exs[end]
351-
_par(ex; lazy=false, opts=opts)
351+
return esc(_par(ex; lazy=false, opts=opts))
352352
end
353353

354354
struct ExpandedBroadcast{F} end
@@ -372,17 +372,16 @@ function _par(ex::Expr; lazy=true, recur=true, opts=())
372372
args = ex.args[2:end]
373373
kwargs = Expr(:parameters)
374374
end
375-
opts = esc.(opts)
376375
args_ex = _par.(args; lazy=lazy, recur=false)
377376
kwargs_ex = _par.(kwargs.args; lazy=lazy, recur=false)
378377
if lazy
379-
return :(Dagger.delayed($(esc(f)), $Options(;$(opts...)))($(args_ex...); $(kwargs_ex...)))
378+
return :(Dagger.delayed($f, $Options(;$(opts...)))($(args_ex...); $(kwargs_ex...)))
380379
else
381-
sync_var = esc(Base.sync_varname)
380+
sync_var = Base.sync_varname
382381
@gensym result
383382
return quote
384383
let args = ($(args_ex...),)
385-
$result = $spawn($(esc(f)), $Options(;$(opts...)), args...; $(kwargs_ex...))
384+
$result = $spawn($f, $Options(;$(opts...)), args...; $(kwargs_ex...))
386385
if $(Expr(:islocal, sync_var))
387386
put!($sync_var, schedule(Task(()->wait($result))))
388387
end
@@ -394,7 +393,6 @@ function _par(ex::Expr; lazy=true, recur=true, opts=())
394393
return Expr(ex.head, _par.(ex.args, lazy=lazy, recur=recur, opts=opts)...)
395394
end
396395
end
397-
_par(ex::Symbol; kwargs...) = esc(ex)
398396
_par(ex; kwargs...) = ex
399397

400398
"""

test/thunk.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@ end
7979
@test fetch(@spawn A .+ B) A .+ B
8080
@test fetch(@spawn A .* B) A .* B
8181
end
82+
@testset "inner macro" begin
83+
A = rand(4)
84+
@test fetch(@spawn sum(@view A[2:3])) sum(@view A[2:3])
85+
end
8286
@testset "waiting" begin
8387
a = @spawn sleep(1)
8488
@test !isready(a)

0 commit comments

Comments
 (0)