makepad/libs/relax/compiler/tests/raw_idents.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

18 lines
916 B
Rust

//! Raw identifiers name fields without `r#` (rustc: `r#in` is the identifier `in`): struct definitions,
//! literals, field access, patterns and derived Debug (makepad-motion KeyHandles / asset data UnitSounds).
#[derive(Debug, Default, Clone, PartialEq)]
pub struct KeyHandles { pub r#in: Option<f32>, pub out: Option<f32> }
#[derive(Debug, Default)]
pub struct Sounds { pub r#move: u32, pub r#loop: bool, pub r#type: u8 }
fn get(k: &KeyHandles) -> Option<f32> { k.r#in }
#[test]
fn raw_fields() {
let mut k = KeyHandles { r#in: Some(1.5), out: None };
k.r#in = Some(2.0);
let KeyHandles { r#in, .. } = k.clone();
assert_eq!((get(&k), r#in), (Some(2.0), Some(2.0)));
let s = Sounds { r#move: 3, r#loop: true, r#type: 7 };
assert_eq!((s.r#move, s.r#loop, s.r#type), (3, true, 7));
assert_eq!(format!("{:?}", k), "KeyHandles { in: Some(2.0), out: None }");
assert!(k == k.clone());
}