// declare classes to test with class A {} class B { static readonly c: B = changetype<B>(8); // static root, readonly static d: A = changetype<A>(16); // static root, writable } // make sure static properties are compiled B.c; B.d; // declare roots var no_ref: usize = 64; // NOT a root, basic value var a_ref: A | null = changetype<A>(24); // global root, nullable var b_ref: B = changetype<B>(32); // global root, non-nullable var i: i32 = 0; iterateRoots((ref: usize): void => { assert(<u32>ref == ++i << 3); }); assert(i == 4);