JuliaLang/julia

Improve documentation for `esc`

Open

#37,122 opened on Aug 19, 2020

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

Repository metrics

Stars
 (48,709 stars)
PR merge metrics
 (Avg merge 20d 6h) (157 merged PRs in 30d)

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