// Phase 285A0.1: WeakRef basic test // SSOT: docs/reference/language/lifecycle.md:179 - weak(x)/weak_to_strong() // // Test: weak(x) creates WeakRef, weak_to_strong() returns Box when alive // Note: Full drop semantics test deferred (needs GC/scope analysis) // VM: PASS expected // LLVM: SKIP (Phase 285A1) box SomeBox { x } static box Main { main() { local x = new SomeBox() x.x = 42 local w = weak(x) // Test 1: weak_to_strong should succeed while x is alive local y = w.weak_to_strong() if y == null { print("ng: weak_to_strong returned null while x alive") return 1 } // Test 2: verify weak_to_strong returns same box if y.x != 42 { print("ng: weak_to_strong value differs from original") return 1 } print("ok: weak and weak_to_strong work correctly") return 0 } }