JuliaLang/julia

Improve documentation for `esc`

Open

#37,122 opened on Aug 19, 2020

View on GitHub
 (4 comments) (0 reactions) (0 assignees)Julia (48,709 stars) (5,773 forks)batch import
docsgood first issue

Description

esc(e)

  Only valid in the context of an Expr returned from a macro. Prevents the macro hygiene pass from turning embedded variables into gensym variables. See the Macros section of the Metaprogramming chapter of the manual for more details and examples.

I'm not sure what "valid" really means here, since

julia> esc(:(x, ))
:($(Expr(:escape, :((x,)))))

It could mean "you can't eval the resulting expression":

julia> eval(esc(:(x, )))
ERROR: syntax: invalid syntax (escape (call (core tuple) (outerref x)))

Contributor guide