File tree Expand file tree Collapse file tree 2 files changed +16
-1
lines changed Expand file tree Collapse file tree 2 files changed +16
-1
lines changed Original file line number Diff line number Diff line change @@ -415,14 +415,17 @@ function check_isdefined(frame, @nospecialize(node))
415
415
data = frame. framedata
416
416
if isa (node, SlotNumber)
417
417
return data. locals[node. id] != = nothing
418
+ elseif isa (node, Core. Compiler. Argument) # just to be safe, since base handles this
419
+ return data. locals[node. n] != = nothing
418
420
elseif isexpr (node, :static_parameter )
419
421
return isassigned (data. sparams, node. args[1 ]:: Int )
420
422
elseif isa (node, GlobalRef)
421
423
return isdefined (node. mod, node. name)
422
424
elseif isa (node, Symbol)
423
425
return isdefined (moduleof (frame), node)
426
+ else # QuoteNode or other implicitly quoted object
427
+ return true
424
428
end
425
- error (" unrecognized isdefined node " , node)
426
429
end
427
430
428
431
# For "profiling" where JuliaInterpreter spends its time. See the commented-out block
Original file line number Diff line number Diff line change 746
746
@testset " #466 parametric_type_to_expr" begin
747
747
@test JuliaInterpreter. parametric_type_to_expr (Array) == :(Core. Array{T, N})
748
748
end
749
+
750
+ @testset " #476 isdefined QuoteNode" begin
751
+ f () = ! true
752
+
753
+ @generated function g ()
754
+ ci = @code_lowered f ()
755
+ ci. code[1 ] = Expr (:isdefined , QuoteNode (Float64))
756
+ return ci
757
+ end
758
+
759
+ @test @interpret (g ()) === true
760
+ end
You can’t perform that action at this time.
0 commit comments