Skip to content

yha/FindDefinition.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FindDefinition

Locate methods defined through macros

Methods defined through macros unhelpfully report their file and line numbers as those inside the macro definition. For example, this

# contents of foo.jl:
module Foo
  macro foo()
      :(bar() = x)  # line 3
  end

  @foo() # line 6
end

# somewhere else:
bar()

gives an UndefVarError with the stack trace pointing to line 3, rather than 6.

This module provides functions finddef(method) and finddefs(f::Function) returning LineNumberNodes for the macro call sites:

julia> using FindDefinition

julia> finddef(first(methods(Foo.bar)))
:(#= [...]/foo.jl:6 =#)

julia> finddefs(Foo.bar)
1-element Array{LineNumberNode,1}:
 :(#= [...]/foo.jl:6 =#)

Warning: The current implementation uses eval inside loaded modules to match method signatures. This is probably harmless, but does produce new gensymed symbols inside your loaded modules.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages