From d0efefbc5094aeffbba479f6397858c980cababe Mon Sep 17 00:00:00 2001 From: Tim Holy Date: Sat, 30 Nov 2019 06:10:52 -0600 Subject: [PATCH] Record correct assignment line (fixes #399) (#401) --- src/backedges.jl | 2 +- test/backedges.jl | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/backedges.jl b/src/backedges.jl index e96e034d..7ec9c97a 100644 --- a/src/backedges.jl +++ b/src/backedges.jl @@ -18,7 +18,7 @@ mutable struct SlotDep end function SlotDep(i::Int, stmt, slotdeps) deps = add_deps!(Int[], stmt, slotdeps) - SlotDep(isssa(stmt) ? 0 : i, deps) + SlotDep(i, deps) end function add_deps!(linedeps, stmt, slotdeps) if isssa(stmt) diff --git a/test/backedges.jl b/test/backedges.jl index bcede772..16419b67 100644 --- a/test/backedges.jl +++ b/test/backedges.jl @@ -30,4 +30,32 @@ end @test !isdefined(BackEdgesTest, :planetdiameters) @test length(Revise.moduledeps[BackEdgesTest]) == 1 @test Revise.moduledeps[BackEdgesTest][:flag] == Set([(BackEdgesTest, first(Iterators.drop(mexs[BackEdgesTest], 1))[1])]) + + # issue #399 + src = """ + for jy in ("j","y"), nu in (0,1) + jynu = Expr(:quote, Symbol(jy,nu)) + jynuf = Expr(:quote, Symbol(jy,nu,"f")) + bjynu = Symbol("bessel",jy,nu) + if jy == "y" + @eval begin + \$bjynu(x::Float64) = nan_dom_err(ccall((\$jynu,libm), Float64, (Float64,), x), x) + \$bjynu(x::Float32) = nan_dom_err(ccall((\$jynuf,libm), Float32, (Float32,), x), x) + \$bjynu(x::Float16) = Float16(\$bjynu(Float32(x))) + end + else + @eval begin + \$bjynu(x::Float64) = ccall((\$jynu,libm), Float64, (Float64,), x) + \$bjynu(x::Float32) = ccall((\$jynuf,libm), Float32, (Float32,), x) + \$bjynu(x::Float16) = Float16(\$bjynu(Float32(x))) + end + end + @eval begin + \$bjynu(x::Real) = \$bjynu(float(x)) + \$bjynu(x::Complex) = \$(Symbol("bessel",jy))(\$nu,x) + end + end + """ + ex = Meta.parse(src) + @test Revise.methods_by_execution(BackEdgesTest, ex) isa Tuple end