@@ -367,31 +367,17 @@ one that does not require special top-level handling (see [`JuliaInterpreter.spl
367
367
function prepare_thunk (mod:: Module , thunk:: Expr , recursive= false )
368
368
if isexpr (thunk, :thunk )
369
369
framecode = JuliaFrameCode (mod, thunk. args[1 ])
370
- elseif isexpr (thunk, :error )
370
+ elseif isexpr (thunk, :error ) || isexpr (thunk, :incomplete )
371
371
error (" lowering returned an error, " , thunk)
372
372
elseif recursive
373
- error (" expected thunk expression, got " , thunk. head)
373
+ thunk = Meta. lower (mod, Expr (:block , nothing , thunk))
374
+ framecode = JuliaFrameCode (mod, thunk. args[1 ])
374
375
else
375
376
return prepare_thunk (mod, Meta. lower (mod, thunk), true )
376
377
end
377
378
return prepare_locals (framecode, [])
378
379
end
379
-
380
- function prepare_thunk ((mod, ex):: Tuple{Module,Expr} )
381
- lwr = Meta. lower (mod, ex)
382
- if isexpr (lwr, :thunk )
383
- return prepare_thunk (mod, lwr)
384
- # elseif isexpr(lwr, :toplevel)
385
- # return split_expressions!(frames, docexprs, lex, mod, lwr; extract_docexprs=extract_docexprs, filename=filename)
386
- # elseif isa(lwr, Expr) && (lwr.head == :export || lwr.head == :using || lwr.head == :import)
387
- # @show lwr
388
- # push!(modexs, (mod, ex, lwr))
389
- # elseif isa(lwr, Symbol) || isa(lwr, Nothing)
390
- else
391
- @show mod ex lwr
392
- error (" lowering did not produce a :thunk Expr" )
393
- end
394
- end
380
+ prepare_thunk ((mod, ex):: Tuple{Module,Expr} ) = prepare_thunk (mod, ex)
395
381
396
382
"""
397
383
modexs, docexprs = split_expressions(mod::Module, expr::Expr; extract_docexprs=false)
0 commit comments