You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A few special forms have a kind of "deferred top level evaluation"
semantics for some of their children:
* `@cfunction` - the function name and types
* `ccall` / `foreigncall` - the type arguments
* `@generated` - the expression defining the generated function stub
For example, in `@ccall f()::Int`, the `Int` means "the symbol `Int` as
looked up in global scope in the module", and should fail if `Int`
refers to a local variable. Currently all three of these cases are
handled through different mechanisms with varying levels of hygiene
inconsistency and ability to warn about access to local variables.
To fix this problem, introduce the new `K"deferred_toplevel_eval"` form
which wraps an expression and preserves it as a piece of AST in the
output (rather than producing IR), but still resolves scope and hygiene.
0 commit comments