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
This is preparatory work for experimental integration with
JuliaLowering, which
happened to be separable into its own PR.
We currently have three lowering entry points doing slightly different
things:
`jl-expand-to-thunk`, `jl-expand-to-thunk-warn` (for complaining about
ambiguous
soft scope assignments during non-interactive use), and
`jl-expand-to-thunk-stmt` (which wraps the expression in a block
returning
nothing before lowering it) and a bunch of C wrappers on top of those
(see red
nodes in the call graphs below).
In this PR:
- Make all lowering calls go through `jl_lower`, which just calls out to
lisp
for now, but will probably function like `jl_parse` does in a future PR.
- Handle `warn` with an extra parameter
- Delete most of the lowering wrappers, which were mainly a result of
the
three entry points
- While we're breaking things in ast.c, take the opportunity to rename
"expand"-prefixed functions to "lower"-prefixed ones (excluding macro
expansion functions, which are called as the first part of lowering).
Here's a call graph before this change, made by looking for callers
of each lowering entry point and tracing back one or more steps (expect
mistakes...). Macro expansion functions are mostly omitted for clarity.
Blue is scheme, red is ast.c, and green is toplevel.c.

After this change:

#### todo?
- ~~I'd like to see if we can eliminate the `stmt` boolean option from
`jl_lower`
and handle that another way; I'm just not sure it's worth the effort at
the
moment. We only use it in one place in `jl_eval_module_expr`. The
original
code path was added in #26304.~~
0 commit comments