zig/test/cases/bitcast.zig
Jimmi Holst Christensen 8139c5a516
New Zig formal grammar (#1685)
Reverted #1628 and changed the grammar+parser of the language to not allow certain expr where types are expected
2018-11-13 05:08:37 -08:00

38 lines
786 B
Zig

const std = @import("std");
const assert = std.debug.assert;
const maxInt = std.math.maxInt;
test "@bitCast i32 -> u32" {
testBitCast_i32_u32();
comptime testBitCast_i32_u32();
}
fn testBitCast_i32_u32() void {
assert(conv(-1) == maxInt(u32));
assert(conv2(maxInt(u32)) == -1);
}
fn conv(x: i32) u32 {
return @bitCast(u32, x);
}
fn conv2(x: u32) i32 {
return @bitCast(i32, x);
}
test "@bitCast extern enum to its integer type" {
const SOCK = extern enum {
A,
B,
fn testBitCastExternEnum() void {
var SOCK_DGRAM = @This().B;
var sock_dgram = @bitCast(c_int, SOCK_DGRAM);
assert(sock_dgram == 1);
}
};
SOCK.testBitCastExternEnum();
comptime SOCK.testBitCastExternEnum();
}