From 90a83d1161c228b214b509c0cb6c537ea0866e5c Mon Sep 17 00:00:00 2001 From: Tim Holy Date: Thu, 18 Jul 2024 04:31:39 -0500 Subject: [PATCH] propagate the `nothing` case --- src/interpret.jl | 34 ++++++++++++++++++---------------- src/utils.jl | 3 ++- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/interpret.jl b/src/interpret.jl index 26afb80c..f34788f5 100644 --- a/src/interpret.jl +++ b/src/interpret.jl @@ -457,23 +457,25 @@ function coverage_visit_line!(frame::Frame) code.report_coverage || return src = code.src @static if VERSION ≥ v"1.12.0-DEV.173" - lineinfo = linetable(src, pc) - file, line = lineinfo.file, lineinfo.line - if line != frame.last_codeloc - file isa Symbol || (file = Symbol(file)::Symbol) - @ccall jl_coverage_visit_line(file::Cstring, sizeof(file)::Csize_t, line::Cint)::Cvoid - frame.last_codeloc = line - end + lineinfo = linetable(src, pc) + if lineinfo !== nothing + file, line = lineinfo.file, lineinfo.line + if line != frame.last_codeloc + file isa Symbol || (file = Symbol(file)::Symbol) + @ccall jl_coverage_visit_line(file::Cstring, sizeof(file)::Csize_t, line::Cint)::Cvoid + frame.last_codeloc = line + end + end else # VERSION < v"1.12.0-DEV.173" - codeloc = src.codelocs[pc] - if codeloc != frame.last_codeloc && codeloc != 0 - linetable = src.linetable::Vector{Any} - lineinfo = linetable[codeloc]::Core.LineInfoNode - file, line = lineinfo.file, lineinfo.line - file isa Symbol || (file = Symbol(file)::Symbol) - @ccall jl_coverage_visit_line(file::Cstring, sizeof(file)::Csize_t, line::Cint)::Cvoid - frame.last_codeloc = codeloc - end + codeloc = src.codelocs[pc] + if codeloc != frame.last_codeloc && codeloc != 0 + linetable = src.linetable::Vector{Any} + lineinfo = linetable[codeloc]::Core.LineInfoNode + file, line = lineinfo.file, lineinfo.line + file isa Symbol || (file = Symbol(file)::Symbol) + @ccall jl_coverage_visit_line(file::Cstring, sizeof(file)::Csize_t, line::Cint)::Cvoid + frame.last_codeloc = codeloc + end end # @static if end diff --git a/src/utils.jl b/src/utils.jl index 745ce8fa..1008c25a 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -353,9 +353,10 @@ function lineoffset(framecode::FrameCode) return offset end -function getline(ln::Union{LineTypes,Expr}) +function getline(ln::Union{LineTypes,Expr,Nothing}) _getline(ln::LineTypes) = Int(ln.line) _getline(ln::Expr) = ln.args[1]::Int # assuming ln.head === :line + _getline(::Nothing) = nothing return _getline(ln) end function getfile(ln::Union{LineTypes,Expr})