import { runtime, __runtime_id } from "runtime"; import { RTTIFlags } from "common/rtti"; function test(flags: RTTIFlags): void { assert( runtime.flags(__runtime_id()) == flags ); } class Ref {} const VALUE_ALIGN_REF = sizeof() == 4 ? RTTIFlags.VALUE_ALIGN_2 : RTTIFlags.VALUE_ALIGN_3; const KEY_ALIGN_REF = sizeof() == 4 ? RTTIFlags.KEY_ALIGN_2 : RTTIFlags.KEY_ALIGN_3; test>(RTTIFlags.ARRAY | RTTIFlags.VALUE_ALIGN_0); test>(RTTIFlags.ARRAY | RTTIFlags.VALUE_ALIGN_1); test>(RTTIFlags.ARRAY | RTTIFlags.VALUE_ALIGN_2); test>(RTTIFlags.ARRAY | RTTIFlags.VALUE_ALIGN_3); test>(RTTIFlags.ARRAY | RTTIFlags.VALUE_ALIGN_4); test>(RTTIFlags.ARRAY | VALUE_ALIGN_REF | RTTIFlags.VALUE_MANAGED); test>(RTTIFlags.ARRAY | VALUE_ALIGN_REF | RTTIFlags.VALUE_NULLABLE | RTTIFlags.VALUE_MANAGED); test>(RTTIFlags.SET | RTTIFlags.VALUE_ALIGN_0); test>(RTTIFlags.SET | RTTIFlags.VALUE_ALIGN_1); test>(RTTIFlags.SET | RTTIFlags.VALUE_ALIGN_2); test>(RTTIFlags.SET | RTTIFlags.VALUE_ALIGN_3); test>(RTTIFlags.SET | RTTIFlags.VALUE_ALIGN_4); test>(RTTIFlags.SET | VALUE_ALIGN_REF | RTTIFlags.VALUE_MANAGED); test>(RTTIFlags.SET | VALUE_ALIGN_REF | RTTIFlags.VALUE_NULLABLE | RTTIFlags.VALUE_MANAGED); test>(RTTIFlags.MAP | RTTIFlags.KEY_ALIGN_4 | RTTIFlags.VALUE_ALIGN_0); test>(RTTIFlags.MAP | RTTIFlags.KEY_ALIGN_3 | RTTIFlags.VALUE_ALIGN_1); test>(RTTIFlags.MAP | RTTIFlags.KEY_ALIGN_2 | RTTIFlags.VALUE_ALIGN_2); test>(RTTIFlags.MAP | RTTIFlags.KEY_ALIGN_1 | RTTIFlags.VALUE_ALIGN_3); test>(RTTIFlags.MAP | RTTIFlags.KEY_ALIGN_0 | RTTIFlags.VALUE_ALIGN_4); test>(RTTIFlags.MAP | KEY_ALIGN_REF | RTTIFlags.KEY_MANAGED | RTTIFlags.VALUE_ALIGN_0); test>(RTTIFlags.MAP |KEY_ALIGN_REF | RTTIFlags.KEY_NULLABLE | RTTIFlags.KEY_MANAGED | RTTIFlags.VALUE_ALIGN_0); test>(RTTIFlags.MAP | RTTIFlags.KEY_ALIGN_0 | RTTIFlags.VALUE_MANAGED | VALUE_ALIGN_REF); test>(RTTIFlags.MAP | RTTIFlags.KEY_ALIGN_0 | RTTIFlags.VALUE_NULLABLE | RTTIFlags.VALUE_MANAGED | VALUE_ALIGN_REF); test>(RTTIFlags.MAP | RTTIFlags.KEY_NULLABLE | RTTIFlags.KEY_MANAGED | KEY_ALIGN_REF | RTTIFlags.VALUE_NULLABLE | RTTIFlags.VALUE_MANAGED | VALUE_ALIGN_REF);