// signed_data_emit_test — module-level signed i8..i64 scalar + 1D-array DATA // emit, self-asserting the sign survives exactly. Migrated from // test/wcc/923_signed_data_emit_run.c. Pre-fix wwstage silently zeroed negative // array entries; cstage emitted nothing (link failed). cstage build+run was T1; // cs==ww .s byte-id rides T2 (test-lang-byteid). // // drew: assert SIGN survives exactly — every row compares against the signed // typed literal, so a sign-extension or zero-fill drift fails. i64_tilde pins // the N_UN(TK_TILDE) fold (~0u64 == -1i64). The arrays mirror the utf8 DFA shape. package signed_data_emit_test; let X_I8N: i8 = -1i8; let X_I8P: i8 = 42i8; let X_I16N: i16 = -2i16; let X_I16P: i16 = 1000i16; let X_I32N: i32 = -100i32; let X_I32P: i32 = 100000i32; let X_I64N: i64 = -1000i64; let X_I64P: i64 = 1000000i64; let X_TILDE: i64 = (~0u64): i64; let DFA: [8]i8 = [0i8, -1i8, 1i8, 2i8, 0i8, 0i8, -1i8, -1i8]; let A16: [4]i16 = [1i16, -2i16, 3i16, -4i16]; let A32: [4]i32 = [10i32, -20i32, 30i32, -40i32]; let A64: [4]i64 = [100i64, -200i64, 300i64, -400i64]; @test fn i8_neg_scalar() void = { assert(X_I8N == -1i8); }; @test fn i8_pos_scalar() void = { assert(X_I8P == 42i8); }; @test fn i16_neg_scalar() void = { assert(X_I16N == -2i16); }; @test fn i16_pos_scalar() void = { assert(X_I16P == 1000i16); }; @test fn i32_neg_scalar() void = { assert(X_I32N == -100i32); }; @test fn i32_pos_scalar() void = { assert(X_I32P == 100000i32); }; @test fn i64_neg_scalar() void = { assert(X_I64N == -1000i64); }; @test fn i64_pos_scalar() void = { assert(X_I64P == 1000000i64); }; @test fn i64_tilde_scalar() void = { assert(X_TILDE == -1i64); }; @test fn i8_arr_dfa() void = { assert(DFA[0] == 0i8); assert(DFA[1] == -1i8); assert(DFA[2] == 1i8); assert(DFA[3] == 2i8); assert(DFA[6] == -1i8); assert(DFA[7] == -1i8); }; @test fn i16_arr_mixed() void = { assert(A16[0] == 1i16); assert(A16[1] == -2i16); assert(A16[2] == 3i16); assert(A16[3] == -4i16); }; @test fn i32_arr_mixed() void = { assert(A32[0] == 10i32); assert(A32[1] == -20i32); assert(A32[2] == 30i32); assert(A32[3] == -40i32); }; @test fn i64_arr_mixed() void = { assert(A64[0] == 100i64); assert(A64[1] == -200i64); assert(A64[2] == 300i64); assert(A64[3] == -400i64); };