authorgravatar for marc@tiehu.isMarc Tiehuis <marc@tiehu.is> 2022-05-02 23:39:38+12:00
committergravatar for marc@tiehu.isMarc Tiehuis <marc@tiehu.is> 2022-05-03 16:46:40+12:00
logbbfe2234c87ee67012e0117248ba2c4f3781a1c5
tree30314b98c10091073409700b1ddd1a5f9abf23ca
parent2085a4af5654a74f2a5d8ac1fa7934a3663bf3a0

update AstGen float literal parsing


1 files changed, 1 insertions(+), 7 deletions(-)

src/AstGen.zig+1-7
...@@ -6715,13 +6715,7 @@ fn floatLiteral(gz: *GenZir, rl: ResultLoc, node: Ast.Node.Index, sign: Sign) In...@@ -6715,13 +6715,7 @@ fn floatLiteral(gz: *GenZir, rl: ResultLoc, node: Ast.Node.Index, sign: Sign) In
67156715
6716 const main_token = main_tokens[node];6716 const main_token = main_tokens[node];
6717 const bytes = tree.tokenSlice(main_token);6717 const bytes = tree.tokenSlice(main_token);
6718 const unsigned_float_number: f128 = if (bytes.len > 2 and bytes[1] == 'x') hex: {6718 const unsigned_float_number = std.fmt.parseFloat(f128, bytes) catch |err| switch (err) {
6719 assert(bytes[0] == '0'); // validated by tokenizer
6720 break :hex std.fmt.parseHexFloat(f128, bytes) catch |err| switch (err) {
6721 error.InvalidCharacter => unreachable, // validated by tokenizer
6722 error.Overflow => return astgen.failNode(node, "number literal cannot be represented in a 128-bit floating point", .{}),
6723 };
6724 } else std.fmt.parseFloat(f128, bytes) catch |err| switch (err) {
6725 error.InvalidCharacter => unreachable, // validated by tokenizer6719 error.InvalidCharacter => unreachable, // validated by tokenizer
6726 };6720 };
6727 const float_number = switch (sign) {6721 const float_number = switch (sign) {