I’m looking for a hypothetical @istoplevel, presumably a macro, which could work like this:
module Foo
@istoplevel() # true
end
julia> @istoplevel() # true
function foo()
    @istoplevel() # false
end
Does anything like this exist or can it be constructed?
             
            
              
              
              2 Likes
            
                
            
           
          
            
            
              Yes, you can set a gensym variable and test if it is indeed set on __module__.
             
            
              
              
              2 Likes
            
                
            
           
          
            
            
              Ha! That works, thanks.
macro istoplevel()
    canary = gensym("canary")
    quote
        $(esc(canary)) = true
        Base.isdefined($__module__, $(QuoteNode(canary)))
    end
end
I think that might be OK for me, but would still be interested in if there’s a more direct solution.
             
            
              
              
              3 Likes