Commit 59cc7072e2
Changed files (3)
lib/std/zig/ast.zig
@@ -584,7 +584,7 @@ pub const Node = struct {
}
pub const Root = struct {
- base: Node = Node {.id = .Root},
+ base: Node = Node{ .id = .Root },
decls: DeclList,
eof_token: TokenIndex,
@@ -607,7 +607,7 @@ pub const Node = struct {
};
pub const VarDecl = struct {
- base: Node = Node {.id = .VarDecl},
+ base: Node = Node{ .id = .VarDecl },
doc_comments: ?*DocComment,
visib_token: ?TokenIndex,
thread_local_token: ?TokenIndex,
@@ -664,7 +664,7 @@ pub const Node = struct {
};
pub const Use = struct {
- base: Node = Node {.id = .Use},
+ base: Node = Node{ .id = .Use },
doc_comments: ?*DocComment,
visib_token: ?TokenIndex,
use_token: TokenIndex,
@@ -691,7 +691,7 @@ pub const Node = struct {
};
pub const ErrorSetDecl = struct {
- base: Node = Node {.id = .ErrorSetDecl},
+ base: Node = Node{ .id = .ErrorSetDecl },
error_token: TokenIndex,
decls: DeclList,
rbrace_token: TokenIndex,
@@ -717,7 +717,7 @@ pub const Node = struct {
};
pub const ContainerDecl = struct {
- base: Node = Node {.id = .ContainerDecl},
+ base: Node = Node{ .id = .ContainerDecl },
layout_token: ?TokenIndex,
kind_token: TokenIndex,
init_arg_expr: InitArg,
@@ -804,7 +804,7 @@ pub const Node = struct {
};
pub const ErrorTag = struct {
- base: Node = Node {.id = .ErrorTag},
+ base: Node = Node{ .id = .ErrorTag },
doc_comments: ?*DocComment,
name_token: TokenIndex,
@@ -829,7 +829,7 @@ pub const Node = struct {
};
pub const Identifier = struct {
- base: Node = Node {.id = .Identifier},
+ base: Node = Node{ .id = .Identifier },
token: TokenIndex,
pub fn iterate(self: *Identifier, index: usize) ?*Node {
@@ -846,7 +846,7 @@ pub const Node = struct {
};
pub const FnProto = struct {
- base: Node = Node {.id = .FnProto},
+ base: Node = Node{ .id = .FnProto },
doc_comments: ?*DocComment,
visib_token: ?TokenIndex,
fn_token: TokenIndex,
@@ -928,7 +928,7 @@ pub const Node = struct {
};
pub const AnyFrameType = struct {
- base: Node = Node {.id = .AnyFrameType},
+ base: Node = Node{ .id = .AnyFrameType },
anyframe_token: TokenIndex,
result: ?Result,
@@ -959,7 +959,7 @@ pub const Node = struct {
};
pub const ParamDecl = struct {
- base: Node = Node {.id = .ParamDecl},
+ base: Node = Node{ .id = .ParamDecl },
doc_comments: ?*DocComment,
comptime_token: ?TokenIndex,
noalias_token: ?TokenIndex,
@@ -992,7 +992,7 @@ pub const Node = struct {
};
pub const Block = struct {
- base: Node = Node {.id = .Block},
+ base: Node = Node{ .id = .Block },
label: ?TokenIndex,
lbrace: TokenIndex,
statements: StatementList,
@@ -1023,7 +1023,7 @@ pub const Node = struct {
};
pub const Defer = struct {
- base: Node = Node {.id = .Defer},
+ base: Node = Node{ .id = .Defer },
defer_token: TokenIndex,
expr: *Node,
@@ -1046,7 +1046,7 @@ pub const Node = struct {
};
pub const Comptime = struct {
- base: Node = Node {.id = .Comptime},
+ base: Node = Node{ .id = .Comptime },
doc_comments: ?*DocComment,
comptime_token: TokenIndex,
expr: *Node,
@@ -1070,7 +1070,7 @@ pub const Node = struct {
};
pub const Payload = struct {
- base: Node = Node {.id = .Payload},
+ base: Node = Node{ .id = .Payload },
lpipe: TokenIndex,
error_symbol: *Node,
rpipe: TokenIndex,
@@ -1094,7 +1094,7 @@ pub const Node = struct {
};
pub const PointerPayload = struct {
- base: Node = Node {.id = .PointerPayload},
+ base: Node = Node{ .id = .PointerPayload },
lpipe: TokenIndex,
ptr_token: ?TokenIndex,
value_symbol: *Node,
@@ -1119,7 +1119,7 @@ pub const Node = struct {
};
pub const PointerIndexPayload = struct {
- base: Node = Node {.id = .PointerIndexPayload},
+ base: Node = Node{ .id = .PointerIndexPayload },
lpipe: TokenIndex,
ptr_token: ?TokenIndex,
value_symbol: *Node,
@@ -1150,7 +1150,7 @@ pub const Node = struct {
};
pub const Else = struct {
- base: Node = Node {.id = .Else},
+ base: Node = Node{ .id = .Else },
else_token: TokenIndex,
payload: ?*Node,
body: *Node,
@@ -1179,7 +1179,7 @@ pub const Node = struct {
};
pub const Switch = struct {
- base: Node = Node {.id = .Switch},
+ base: Node = Node{ .id = .Switch },
switch_token: TokenIndex,
expr: *Node,
@@ -1211,7 +1211,7 @@ pub const Node = struct {
};
pub const SwitchCase = struct {
- base: Node = Node {.id = .SwitchCase},
+ base: Node = Node{ .id = .SwitchCase },
items: ItemList,
arrow_token: TokenIndex,
payload: ?*Node,
@@ -1246,7 +1246,7 @@ pub const Node = struct {
};
pub const SwitchElse = struct {
- base: Node = Node {.id = .SwitchElse},
+ base: Node = Node{ .id = .SwitchElse },
token: TokenIndex,
pub fn iterate(self: *SwitchElse, index: usize) ?*Node {
@@ -1263,7 +1263,7 @@ pub const Node = struct {
};
pub const While = struct {
- base: Node = Node {.id = .While},
+ base: Node = Node{ .id = .While },
label: ?TokenIndex,
inline_token: ?TokenIndex,
while_token: TokenIndex,
@@ -1322,7 +1322,7 @@ pub const Node = struct {
};
pub const For = struct {
- base: Node = Node {.id = .For},
+ base: Node = Node{ .id = .For },
label: ?TokenIndex,
inline_token: ?TokenIndex,
for_token: TokenIndex,
@@ -1373,7 +1373,7 @@ pub const Node = struct {
};
pub const If = struct {
- base: Node = Node {.id = .If},
+ base: Node = Node{ .id = .If },
if_token: TokenIndex,
condition: *Node,
payload: ?*Node,
@@ -1416,7 +1416,7 @@ pub const Node = struct {
};
pub const InfixOp = struct {
- base: Node = Node {.id = .InfixOp},
+ base: Node = Node{ .id = .InfixOp },
op_token: TokenIndex,
lhs: *Node,
op: Op,
@@ -1649,7 +1649,7 @@ pub const Node = struct {
};
pub const FieldInitializer = struct {
- base: Node = Node {.id = .FieldInitializer},
+ base: Node = Node{ .id = .FieldInitializer },
period_token: TokenIndex,
name_token: TokenIndex,
expr: *Node,
@@ -1673,7 +1673,7 @@ pub const Node = struct {
};
pub const SuffixOp = struct {
- base: Node = Node {.id = .SuffixOp},
+ base: Node = Node{ .id = .SuffixOp },
lhs: Lhs,
op: Op,
rtoken: TokenIndex,
@@ -1774,7 +1774,7 @@ pub const Node = struct {
};
pub const GroupedExpression = struct {
- base: Node = Node {.id = .GroupedExpression},
+ base: Node = Node{ .id = .GroupedExpression },
lparen: TokenIndex,
expr: *Node,
rparen: TokenIndex,
@@ -1798,7 +1798,7 @@ pub const Node = struct {
};
pub const ControlFlowExpression = struct {
- base: Node = Node {.id = .ControlFlowExpression},
+ base: Node = Node{ .id = .ControlFlowExpression },
ltoken: TokenIndex,
kind: Kind,
rhs: ?*Node,
@@ -1864,7 +1864,7 @@ pub const Node = struct {
};
pub const Suspend = struct {
- base: Node = Node {.id = .Suspend},
+ base: Node = Node{ .id = .Suspend },
suspend_token: TokenIndex,
body: ?*Node,
@@ -1893,7 +1893,7 @@ pub const Node = struct {
};
pub const IntegerLiteral = struct {
- base: Node = Node {.id = .IntegerLiteral},
+ base: Node = Node{ .id = .IntegerLiteral },
token: TokenIndex,
pub fn iterate(self: *IntegerLiteral, index: usize) ?*Node {
@@ -1910,7 +1910,7 @@ pub const Node = struct {
};
pub const EnumLiteral = struct {
- base: Node = Node {.id = .EnumLiteral},
+ base: Node = Node{ .id = .EnumLiteral },
dot: TokenIndex,
name: TokenIndex,
@@ -1928,7 +1928,7 @@ pub const Node = struct {
};
pub const FloatLiteral = struct {
- base: Node = Node {.id = .FloatLiteral},
+ base: Node = Node{ .id = .FloatLiteral },
token: TokenIndex,
pub fn iterate(self: *FloatLiteral, index: usize) ?*Node {
@@ -1945,7 +1945,7 @@ pub const Node = struct {
};
pub const BuiltinCall = struct {
- base: Node = Node {.id = .BuiltinCall},
+ base: Node = Node{ .id = .BuiltinCall },
builtin_token: TokenIndex,
params: ParamList,
rparen_token: TokenIndex,
@@ -1971,7 +1971,7 @@ pub const Node = struct {
};
pub const StringLiteral = struct {
- base: Node = Node {.id = .StringLiteral},
+ base: Node = Node{ .id = .StringLiteral },
token: TokenIndex,
pub fn iterate(self: *StringLiteral, index: usize) ?*Node {
@@ -1988,7 +1988,7 @@ pub const Node = struct {
};
pub const MultilineStringLiteral = struct {
- base: Node = Node {.id = .MultilineStringLiteral},
+ base: Node = Node{ .id = .MultilineStringLiteral },
lines: LineList,
pub const LineList = SegmentedList(TokenIndex, 4);
@@ -2007,7 +2007,7 @@ pub const Node = struct {
};
pub const CharLiteral = struct {
- base: Node = Node {.id = .CharLiteral},
+ base: Node = Node{ .id = .CharLiteral },
token: TokenIndex,
pub fn iterate(self: *CharLiteral, index: usize) ?*Node {
@@ -2024,7 +2024,7 @@ pub const Node = struct {
};
pub const BoolLiteral = struct {
- base: Node = Node {.id = .BoolLiteral},
+ base: Node = Node{ .id = .BoolLiteral },
token: TokenIndex,
pub fn iterate(self: *BoolLiteral, index: usize) ?*Node {
@@ -2041,7 +2041,7 @@ pub const Node = struct {
};
pub const NullLiteral = struct {
- base: Node = Node {.id = .NullLiteral},
+ base: Node = Node{ .id = .NullLiteral },
token: TokenIndex,
pub fn iterate(self: *NullLiteral, index: usize) ?*Node {
@@ -2058,7 +2058,7 @@ pub const Node = struct {
};
pub const UndefinedLiteral = struct {
- base: Node = Node {.id = .UndefinedLiteral},
+ base: Node = Node{ .id = .UndefinedLiteral },
token: TokenIndex,
pub fn iterate(self: *UndefinedLiteral, index: usize) ?*Node {
@@ -2075,7 +2075,7 @@ pub const Node = struct {
};
pub const AsmOutput = struct {
- base: Node = Node {.id = .AsmOutput},
+ base: Node = Node{ .id = .AsmOutput },
lbracket: TokenIndex,
symbolic_name: *Node,
constraint: *Node,
@@ -2120,7 +2120,7 @@ pub const Node = struct {
};
pub const AsmInput = struct {
- base: Node = Node {.id = .AsmInput},
+ base: Node = Node{ .id = .AsmInput },
lbracket: TokenIndex,
symbolic_name: *Node,
constraint: *Node,
@@ -2152,7 +2152,7 @@ pub const Node = struct {
};
pub const Asm = struct {
- base: Node = Node {.id = .Asm},
+ base: Node = Node{ .id = .Asm },
asm_token: TokenIndex,
volatile_token: ?TokenIndex,
template: *Node,
@@ -2187,7 +2187,7 @@ pub const Node = struct {
};
pub const Unreachable = struct {
- base: Node = Node {.id = .Unreachable},
+ base: Node = Node{ .id = .Unreachable },
token: TokenIndex,
pub fn iterate(self: *Unreachable, index: usize) ?*Node {
@@ -2204,7 +2204,7 @@ pub const Node = struct {
};
pub const ErrorType = struct {
- base: Node = Node {.id = .ErrorType},
+ base: Node = Node{ .id = .ErrorType },
token: TokenIndex,
pub fn iterate(self: *ErrorType, index: usize) ?*Node {
@@ -2238,7 +2238,7 @@ pub const Node = struct {
};
pub const DocComment = struct {
- base: Node = Node {.id = .DocComment},
+ base: Node = Node{ .id = .DocComment },
lines: LineList,
pub const LineList = SegmentedList(TokenIndex, 4);
@@ -2257,7 +2257,7 @@ pub const Node = struct {
};
pub const TestDecl = struct {
- base: Node = Node {.id = .TestDecl},
+ base: Node = Node{ .id = .TestDecl },
doc_comments: ?*DocComment,
test_token: TokenIndex,
name: *Node,
src-self-hosted/translate_c.zig
@@ -1194,7 +1194,7 @@ fn transImplicitCastExpr(
const dest_type = getExprQualType(c, @ptrCast(*const ZigClangExpr, expr));
const src_type = getExprQualType(c, sub_expr);
switch (ZigClangImplicitCastExpr_getCastKind(expr)) {
- .BitCast, .FloatingCast, .FloatingToIntegral, .IntegralToFloating, .IntegralCast => {
+ .BitCast, .FloatingCast, .FloatingToIntegral, .IntegralToFloating, .IntegralCast, .PointerToIntegral, .IntegralToPointer => {
return transCCast(rp, scope, ZigClangImplicitCastExpr_getBeginLoc(expr), dest_type, src_type, sub_expr_node);
},
.LValueToRValue, .NoOp, .FunctionToPointerDecay, .ArrayToPointerDecay => {
@@ -1221,29 +1221,6 @@ fn transImplicitCastExpr(
const rhs_node = try transCreateNodeInt(rp.c, 0);
return transCreateNodeInfixOp(rp, scope, node, .BangEqual, op_token, rhs_node, result_used, false);
},
- .PointerToIntegral => {
- // @intCast(dest_type, @ptrToInt(val))
- const cast_node = try transCreateNodeBuiltinFnCall(rp.c, "@intCast");
- try cast_node.params.push(try transQualType(rp, dest_type, ZigClangImplicitCastExpr_getBeginLoc(expr)));
- _ = try appendToken(rp.c, .Comma, ",");
-
- const ptr_to_int = try transCreateNodeBuiltinFnCall(rp.c, "@ptrToInt");
- try ptr_to_int.params.push(try transExpr(rp, scope, sub_expr, .used, .r_value));
- ptr_to_int.rparen_token = try appendToken(rp.c, .RParen, ")");
- try cast_node.params.push(&ptr_to_int.base);
- cast_node.rparen_token = try appendToken(rp.c, .RParen, ")");
- return maybeSuppressResult(rp, scope, result_used, &cast_node.base);
- },
- .IntegralToPointer => {
- // @intToPtr(dest_type, val)
- const int_to_ptr = try transCreateNodeBuiltinFnCall(rp.c, "@intToPtr");
- try int_to_ptr.params.push(try transQualType(rp, dest_type, ZigClangImplicitCastExpr_getBeginLoc(expr)));
- _ = try appendToken(rp.c, .Comma, ",");
-
- try int_to_ptr.params.push(try transExpr(rp, scope, sub_expr, .used, .r_value));
- int_to_ptr.rparen_token = try appendToken(rp.c, .RParen, ")");
- return maybeSuppressResult(rp, scope, result_used, &int_to_ptr.base);
- },
else => |kind| return revertAndWarn(
rp,
error.UnsupportedTranslation,
@@ -1509,8 +1486,18 @@ fn transCCast(
if (ZigClangQualType_eq(dst_type, src_type)) return expr;
if (qualTypeIsPtr(dst_type) and qualTypeIsPtr(src_type))
return transCPtrCast(rp, loc, dst_type, src_type, expr);
- if (cIsUnsignedInteger(dst_type) and qualTypeIsPtr(src_type)) {
- const cast_node = try transCreateNodeBuiltinFnCall(rp.c, "@as");
+ if (cIsInteger(dst_type) and cIsInteger(src_type)) {
+ // @intCast(dest_type, val)
+ const cast_node = try transCreateNodeBuiltinFnCall(rp.c, "@intCast");
+ try cast_node.params.push(try transQualType(rp, dst_type, loc));
+ _ = try appendToken(rp.c, .Comma, ",");
+ try cast_node.params.push(expr);
+ cast_node.rparen_token = try appendToken(rp.c, .RParen, ")");
+ return &cast_node.base;
+ }
+ if (cIsInteger(dst_type) and qualTypeIsPtr(src_type)) {
+ // @intCast(dest_type, @ptrToInt(val))
+ const cast_node = try transCreateNodeBuiltinFnCall(rp.c, "@intCast");
try cast_node.params.push(try transQualType(rp, dst_type, loc));
_ = try appendToken(rp.c, .Comma, ",");
const builtin_node = try transCreateNodeBuiltinFnCall(rp.c, "@ptrToInt");
@@ -1520,7 +1507,8 @@ fn transCCast(
cast_node.rparen_token = try appendToken(rp.c, .RParen, ")");
return &cast_node.base;
}
- if (cIsUnsignedInteger(src_type) and qualTypeIsPtr(dst_type)) {
+ if (cIsInteger(src_type) and qualTypeIsPtr(dst_type)) {
+ // @intToPtr(dest_type, val)
const builtin_node = try transCreateNodeBuiltinFnCall(rp.c, "@intToPtr");
try builtin_node.params.push(try transQualType(rp, dst_type, loc));
_ = try appendToken(rp.c, .Comma, ",");
@@ -2870,6 +2858,10 @@ fn typeIsOpaque(c: *Context, ty: *const ZigClangType, loc: ZigClangSourceLocatio
}
}
+fn cIsInteger(qt: ZigClangQualType) bool {
+ return cIsSignedInteger(qt) or cIsUnsignedInteger(qt);
+}
+
fn cIsUnsignedInteger(qt: ZigClangQualType) bool {
const c_type = qualTypeCanon(qt);
if (ZigClangType_getTypeClass(c_type) != .Builtin) return false;
test/translate_c.zig
@@ -21,9 +21,9 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
, &[_][]const u8{
\\pub export fn foo() void {
\\ var a: c_int = undefined;
- \\ var b: u8 = @as(u8, 123);
+ \\ var b: u8 = @intCast(u8, 123);
\\ const c: c_int = undefined;
- \\ const d: c_uint = @as(c_uint, 440);
+ \\ const d: c_uint = @intCast(c_uint, 440);
\\}
});
@@ -110,7 +110,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\pub extern fn foo() void;
\\pub export fn bar() void {
\\ var func_ptr: ?*c_void = @ptrCast(?*c_void, foo);
- \\ var typed_func_ptr: ?extern fn () void = @intToPtr(?extern fn () void, @as(c_ulong, @ptrToInt(func_ptr)));
+ \\ var typed_func_ptr: ?extern fn () void = @intToPtr(?extern fn () void, @intCast(c_ulong, @ptrToInt(func_ptr)));
\\}
});
@@ -855,7 +855,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
, &[_][]const u8{
\\pub fn foo() void {
\\ var arr: [10]u8 = .{
- \\ @as(u8, 1),
+ \\ @intCast(u8, 1),
\\ } ++ .{0} ** 9;
\\ var arr1: [10][*c]u8 = .{
\\ null,
@@ -1082,18 +1082,18 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\ unsigned d = 440;
\\}
, &[_][]const u8{
- \\pub var a: c_long = @as(c_long, 2);
- \\pub var b: c_long = @as(c_long, 2);
+ \\pub var a: c_long = @intCast(c_long, 2);
+ \\pub var b: c_long = @intCast(c_long, 2);
\\pub var c: c_int = 4;
\\pub export fn foo(_arg_c_1: u8) void {
\\ var c_1 = _arg_c_1;
\\ var a_2: c_int = undefined;
- \\ var b_3: u8 = @as(u8, 123);
- \\ b_3 = @as(u8, a_2);
+ \\ var b_3: u8 = @intCast(u8, 123);
+ \\ b_3 = @intCast(u8, a_2);
\\ {
\\ var d: c_int = 5;
\\ }
- \\ var d: c_uint = @as(c_uint, 440);
+ \\ var d: c_uint = @intCast(c_uint, 440);
\\}
});
@@ -1216,14 +1216,14 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\ _ = 7;
\\ }
\\ }
- \\ var i: u8 = @as(u8, 2);
+ \\ var i: u8 = @intCast(u8, 2);
\\}
});
cases.add("shadowing primitive types",
\\unsigned anyerror = 2;
, &[_][]const u8{
- \\pub export var _anyerror: c_uint = @as(c_uint, 2);
+ \\pub export var _anyerror: c_uint = @intCast(c_uint, 2);
});
cases.add("floats",
@@ -1397,17 +1397,17 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\
, &[_][]const u8{
\\pub export fn escapes() [*c]const u8 {
- \\ var a: u8 = @as(u8, '\'');
- \\ var b: u8 = @as(u8, '\\');
- \\ var c: u8 = @as(u8, '\x07');
- \\ var d: u8 = @as(u8, '\x08');
- \\ var e: u8 = @as(u8, '\x0c');
- \\ var f: u8 = @as(u8, '\n');
- \\ var g: u8 = @as(u8, '\r');
- \\ var h: u8 = @as(u8, '\t');
- \\ var i: u8 = @as(u8, '\x0b');
- \\ var j: u8 = @as(u8, '\x00');
- \\ var k: u8 = @as(u8, '\"');
+ \\ var a: u8 = @intCast(u8, '\'');
+ \\ var b: u8 = @intCast(u8, '\\');
+ \\ var c: u8 = @intCast(u8, '\x07');
+ \\ var d: u8 = @intCast(u8, '\x08');
+ \\ var e: u8 = @intCast(u8, '\x0c');
+ \\ var f: u8 = @intCast(u8, '\n');
+ \\ var g: u8 = @intCast(u8, '\r');
+ \\ var h: u8 = @intCast(u8, '\t');
+ \\ var i: u8 = @intCast(u8, '\x0b');
+ \\ var j: u8 = @intCast(u8, '\x00');
+ \\ var k: u8 = @intCast(u8, '\"');
\\ return "\'\\\x07\x08\x0c\n\r\t\x0b\x00\"";
\\}
});
@@ -1818,7 +1818,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
, &[_][]const u8{
\\pub export fn foo() void {
\\ var i: c_int = 0;
- \\ var u: c_uint = @as(c_uint, 0);
+ \\ var u: c_uint = @intCast(c_uint, 0);
\\ i += 1;
\\ i -= 1;
\\ u +%= 1;
@@ -1858,7 +1858,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\pub export fn log2(_arg_a: c_uint) c_int {
\\ var a = _arg_a;
\\ var i: c_int = 0;
- \\ while (a > @as(c_uint, 0)) {
+ \\ while (a > @intCast(c_uint, 0)) {
\\ a >>= @as(@import("std").math.Log2Int(c_int), 1);
\\ }
\\ return i;
@@ -1878,7 +1878,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\pub export fn log2(_arg_a: u32) c_int {
\\ var a = _arg_a;
\\ var i: c_int = 0;
- \\ while (a > @as(c_uint, 0)) {
+ \\ while (a > @intCast(c_uint, 0)) {
\\ a >>= @as(@import("std").math.Log2Int(c_int), 1);
\\ }
\\ return i;
@@ -1957,35 +1957,35 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\}
, &[_][]const u8{
\\pub export fn foo() void {
- \\ var a: c_uint = @as(c_uint, 0);
+ \\ var a: c_uint = @intCast(c_uint, 0);
\\ a +%= (blk: {
\\ const _ref_1 = &a;
- \\ _ref_1.* = _ref_1.* +% @as(c_uint, 1);
+ \\ _ref_1.* = _ref_1.* +% @intCast(c_uint, 1);
\\ break :blk _ref_1.*;
\\ });
\\ a -%= (blk: {
\\ const _ref_2 = &a;
- \\ _ref_2.* = _ref_2.* -% @as(c_uint, 1);
+ \\ _ref_2.* = _ref_2.* -% @intCast(c_uint, 1);
\\ break :blk _ref_2.*;
\\ });
\\ a *%= (blk: {
\\ const _ref_3 = &a;
- \\ _ref_3.* = _ref_3.* *% @as(c_uint, 1);
+ \\ _ref_3.* = _ref_3.* *% @intCast(c_uint, 1);
\\ break :blk _ref_3.*;
\\ });
\\ a &= (blk: {
\\ const _ref_4 = &a;
- \\ _ref_4.* = _ref_4.* & @as(c_uint, 1);
+ \\ _ref_4.* = _ref_4.* & @intCast(c_uint, 1);
\\ break :blk _ref_4.*;
\\ });
\\ a |= (blk: {
\\ const _ref_5 = &a;
- \\ _ref_5.* = _ref_5.* | @as(c_uint, 1);
+ \\ _ref_5.* = _ref_5.* | @intCast(c_uint, 1);
\\ break :blk _ref_5.*;
\\ });
\\ a ^= (blk: {
\\ const _ref_6 = &a;
- \\ _ref_6.* = _ref_6.* ^ @as(c_uint, 1);
+ \\ _ref_6.* = _ref_6.* ^ @intCast(c_uint, 1);
\\ break :blk _ref_6.*;
\\ });
\\ a >>= @as(@import("std").math.Log2Int(c_uint), (blk: {
@@ -2017,7 +2017,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
, &[_][]const u8{
\\pub export fn foo() void {
\\ var i: c_int = 0;
- \\ var u: c_uint = @as(c_uint, 0);
+ \\ var u: c_uint = @intCast(c_uint, 0);
\\ i += 1;
\\ i -= 1;
\\ u +%= 1;
@@ -2092,9 +2092,9 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
\\ fn_int(1094861636);
\\ fn_f32(@intToFloat(f32, 3));
\\ fn_f64(@intToFloat(f64, 3));
- \\ fn_char(@as(u8, '3'));
- \\ fn_char(@as(u8, '\x01'));
- \\ fn_char(@as(u8, 0));
+ \\ fn_char(@intCast(u8, '3'));
+ \\ fn_char(@intCast(u8, '\x01'));
+ \\ fn_char(@intCast(u8, 0));
\\ fn_f32(3);
\\ fn_f64(3);
\\ fn_bool(123 != 0);