makepad/libs/relax/compiler/tests/par_parse.rs
Admin b22a714840 makepad run: the Rust JIT (libs/relax) and makepad-remote
The JIT that runs makepad apps from source: lexer, front end, type checker,
lazy borrow checker (Gandalf; `--check-first` opts in), codegen, session and
warm/cold caches keyed by compiler stamp, provided crates bound late,
startup images, live patching. User-facing name is `makepad run` (binary
`makepad`, MAKEPAD_RUN_* env, ~/.makepad-run); libs/relax stays the internal
library name. `makepad check` reports rustc-style diagnostics with rustc
error codes and checks a whole workspace (`--workspace`). Runs on macOS,
Linux, Windows and Android. makepad-remote: one tool schema for apps and the
WM (app/1): grabs, captures, traces, frame profiles and tweaks.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-13 12:26:21 +02:00

17 lines
823 B
Rust

// The files of a crate parse in parallel, each against the macro table as the crate starts plus
// its own definitions; the loader keeps a file's parse only when its macro lookups give what the
// sequential parse gives at that point of the load order. Here the prescan's latest `m!` is a's,
// but in load order b's definition comes later, so c sees b's (rustc: textual scope, the latest
// `#[macro_use]` definition): c must be parsed again by the loader.
#[macro_use]
#[path = "par_parse/a.rs"]
mod a;
#[macro_use]
#[path = "par_parse/b.rs"]
mod b;
#[path = "par_parse/c.rs"]
mod c;
#[test] fn latest_textual_definition() { assert_eq!(c::which(), 2); }
#[test] fn own_definitions() { assert_eq!(c::own(), 3); assert_eq!(a::which_a(), 1); }
#[test] fn module_path_of_files() { assert_eq!(c::path(), "test_crate::c"); }