@@ -237,6 +237,7 @@ methods_by_execution!(methodinfo, docexprs, mod::Module, ex::Expr; kwargs...) =
237237
238238function methods_by_execution! (@nospecialize (recurse), methodinfo, docexprs, frame:: Frame , isrequired:: AbstractVector{Bool} ; mode:: Symbol = :eval , skip_include:: Bool = true )
239239 isok (lnn:: LineTypes ) = ! iszero (lnn. line) || lnn. file != = :none # might fail either one, but accept anything
240+ lnnstd (lnn:: LineTypes ) = LineNumberNode (lnn. line, lnn. file)
240241
241242 mod = moduleof (frame)
242243 # Hoist this lookup for performance. Don't throw even when `mod` is a baremodule:
@@ -289,9 +290,9 @@ function methods_by_execution!(@nospecialize(recurse), methodinfo, docexprs, fra
289290 lnn = nothing
290291 if line_is_decl
291292 sigcode = @lookup (frame, stmt3. args[2 ]):: Core.SimpleVector
292- lnn = sigcode[end ]
293- if ! isa (lnn , LineNumberNode)
294- lnn = nothing
293+ lnntmp = sigcode[end ]
294+ if isa (lnntmp , LineNumberNode)
295+ lnn = lnntmp
295296 end
296297 end
297298 if lnn === nothing
@@ -300,9 +301,10 @@ function methods_by_execution!(@nospecialize(recurse), methodinfo, docexprs, fra
300301 bodycode = @lookup (frame, bodycode)
301302 end
302303 if isa (bodycode, CodeInfo)
303- lnn = linetable (bodycode, 1 )
304- if ! isok (lnn)
305- lnn = nothing
304+ lnn_ = linetable (bodycode, 1 )
305+ if isok (lnn_)
306+ lnn = lnnstd (lnn_)
307+ else
306308 if length (bodycode. code) > 1
307309 # This may be a kwarg method. Mimic LoweredCodeUtils.bodymethod,
308310 # except without having a method
@@ -335,7 +337,7 @@ function methods_by_execution!(@nospecialize(recurse), methodinfo, docexprs, fra
335337 for lnntmp in linetable (bodycode)
336338 lnntmp = lnntmp:: LineTypes
337339 if isok (lnntmp)
338- lnn = lnntmp
340+ lnn = lnnstd ( lnntmp)
339341 break
340342 end
341343 end
@@ -345,7 +347,7 @@ function methods_by_execution!(@nospecialize(recurse), methodinfo, docexprs, fra
345347 bodycode = bodycode:: Expr
346348 lnntmp = bodycode. args[end ][1 ]:: LineTypes
347349 if isok (lnntmp)
348- lnn = lnntmp
350+ lnn = lnnstd ( lnntmp)
349351 end
350352 end
351353 end
@@ -354,7 +356,7 @@ function methods_by_execution!(@nospecialize(recurse), methodinfo, docexprs, fra
354356 while i > 0
355357 lnntmp = linetable (frame, i)
356358 if isok (lnntmp)
357- lnn = lnntmp
359+ lnn = lnnstd ( lnntmp)
358360 break
359361 end
360362 i -= 1
@@ -391,7 +393,7 @@ function methods_by_execution!(@nospecialize(recurse), methodinfo, docexprs, fra
391393 elseif skip_include && (f === modinclude || f === Base. include || f === Core. include)
392394 # include calls need to be managed carefully from several standpoints, including
393395 # path management and parsing new expressions
394- add_includes! (methodinfo, mod, @lookup (frame, stmt. args[2 ]))
396+ add_includes! (methodinfo, mod, @lookup (frame, stmt. args[2 ]):: String )
395397 assign_this! (frame, nothing ) # FIXME : the file might return something different from `nothing`
396398 pc = next_or_nothing! (frame)
397399 elseif f === Base. Docs. doc! # && mode !== :eval
0 commit comments