diff --git a/src/MacroTranslator.zig b/src/MacroTranslator.zig index 82d0ae4..6280166 100644 --- a/src/MacroTranslator.zig +++ b/src/MacroTranslator.zig @@ -350,12 +350,15 @@ fn parseCNumLit(mt: *MacroTranslator) ParseError!ZigNode { if (is_float) { const type_node = try ZigTag.type.create(arena, switch (suffix) { .F16 => "f16", - .F => "f32", - .None => "f64", + .F, .F32 => "f32", + .None, .F32x, .F64 => "f64", .L => "c_longdouble", - .W => "f80", + .W, .F64x => "f80", .Q, .F128 => "f128", - else => unreachable, + else => { + try mt.fail("TODO: float literal suffix: '{s}'", .{suffix_str}); + return error.ParseError; + }, }); const rhs = try ZigTag.float_literal.create(arena, bytes.items); return ZigTag.as.create(arena, .{ .lhs = type_node, .rhs = rhs }); diff --git a/test/cases/translate/f64_suffix_after_float_literal.c b/test/cases/translate/f64_suffix_after_float_literal.c new file mode 100644 index 0000000..3fb7a1e --- /dev/null +++ b/test/cases/translate/f64_suffix_after_float_literal.c @@ -0,0 +1,5 @@ +#define PI_F64 3.141592653589793F64 + +// translate +// +// pub const PI_F64 = @as(f64, 3.141592653589793);