I asked about this on Zulip and cleaned it up and posted to Stack Overflow but I figure it might be helpful to cross pollinate here as well. I know I’ve wondered how to do this a few times, so probably other people have too.
Here’s the question:
Is there any way to run name resolution on an arbitrary expression without running it? e.g. I would like to take an expression such as
quote x = 1 y = 2*x + 1 z = x^2 - 1 f(x) = 2*x + 1 end
and be told that the names defined in the scope of this block are
x, y, z, f and the names
*, +, ^, - are pulled in from outside the scope of this block. Bonus points if it can tell me that there’s a sub-scope defined in the body of
f which creates it’s own name
x and pulls in
+ from an enclosing scope.
This question appeared in the Julia Zulip community