mirror of
https://github.com/ziglang/zig.git
synced 2026-01-21 06:45:24 +00:00
translate-c float fixes
This commit is contained in:
parent
70a4794c57
commit
ae5ba369e1
@ -1079,6 +1079,9 @@ pub const Tokenizer = struct {
|
||||
'x', 'X' => {
|
||||
state = .IntegerLiteralHex;
|
||||
},
|
||||
'.' => {
|
||||
state = .FloatFraction;
|
||||
},
|
||||
else => {
|
||||
state = .IntegerSuffix;
|
||||
self.index -= 1;
|
||||
@ -1261,13 +1264,16 @@ pub const Tokenizer = struct {
|
||||
.UnicodeEscape,
|
||||
.MultiLineComment,
|
||||
.MultiLineCommentAsterisk,
|
||||
.FloatFraction,
|
||||
.FloatFractionHex,
|
||||
.FloatExponent,
|
||||
.FloatExponentDigits,
|
||||
.MacroString,
|
||||
=> result.id = .Invalid,
|
||||
|
||||
.FloatExponentDigits => result.id = if (counter == 0) .Invalid else .{ .FloatLiteral = .None },
|
||||
|
||||
.FloatFraction,
|
||||
.FloatFractionHex,
|
||||
=> result.id = .{ .FloatLiteral = .None },
|
||||
|
||||
.IntegerLiteralOct,
|
||||
.IntegerLiteralBinary,
|
||||
.IntegerLiteralHex,
|
||||
|
||||
@ -5122,6 +5122,8 @@ fn parseCNumLit(c: *Context, tok: *CToken, source: []const u8, source_loc: ZigCl
|
||||
cast_node.rparen_token = try appendToken(c, .RParen, ")");
|
||||
return &cast_node.base;
|
||||
} else if (tok.id == .FloatLiteral) {
|
||||
if (lit_bytes[0] == '.')
|
||||
lit_bytes = try std.fmt.allocPrint(c.a(), "0{}", .{lit_bytes});
|
||||
if (tok.id.FloatLiteral == .None) {
|
||||
return transCreateNodeFloat(c, lit_bytes);
|
||||
}
|
||||
@ -5493,7 +5495,7 @@ fn parseCSuffixOpExpr(c: *Context, it: *CTokenList.Iterator, source: []const u8,
|
||||
// hack to get zig fmt to render a comma in builtin calls
|
||||
_ = try appendToken(c, .Comma, ",");
|
||||
|
||||
const ptr_kind = blk:{
|
||||
const ptr_kind = blk: {
|
||||
// * token
|
||||
_ = it.prev();
|
||||
// last token of `node`
|
||||
|
||||
@ -621,9 +621,13 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
|
||||
cases.add("float suffixes",
|
||||
\\#define foo 3.14f
|
||||
\\#define bar 16.e-2l
|
||||
\\#define FOO 0.12345
|
||||
\\#define BAR .12345
|
||||
, &[_][]const u8{
|
||||
"pub const foo = @as(f32, 3.14);",
|
||||
"pub const bar = @as(c_longdouble, 16.e-2);",
|
||||
"pub const FOO = 0.12345;",
|
||||
"pub const BAR = 0.12345;",
|
||||
});
|
||||
|
||||
cases.add("comments",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user