| ... | @@ -123,7 +123,7 @@ pub fn parseNumberLiteral(bytes: []const u8) Result { | ... | @@ -123,7 +123,7 @@ pub fn parseNumberLiteral(bytes: []const u8) Result { |
| 123 | '.' => { | 123 | '.' => { |
| 124 | if (exponent) return .{ .failure = .{ .period_after_exponent = i } }; | 124 | if (exponent) return .{ .failure = .{ .period_after_exponent = i } }; |
| 125 | float = true; | 125 | float = true; |
| 126 | if (base != 10 and base != 16) return .{ .failure = .{ .invalid_float_base = 2 } }; | 126 | if (base != 10 and base != 16) return .{ .failure = .{ .invalid_float_base = 1 } }; |
| 127 | if (period) return .{ .failure = .duplicate_period }; | 127 | if (period) return .{ .failure = .duplicate_period }; |
| 128 | period = true; | 128 | period = true; |
| 129 | if (underscore) return .{ .failure = .{ .special_after_underscore = i } }; | 129 | if (underscore) return .{ .failure = .{ .special_after_underscore = i } }; |
| ... | @@ -177,6 +177,7 @@ test parseNumberLiteral { | ... | @@ -177,6 +177,7 @@ test parseNumberLiteral { |
| 177 | try std.testing.expectEqual(Result{ .failure = .{ .period_after_exponent = 3 } }, parseNumberLiteral("3E2.5")); | 177 | try std.testing.expectEqual(Result{ .failure = .{ .period_after_exponent = 3 } }, parseNumberLiteral("3E2.5")); |
| 178 | try std.testing.expectEqual(Result{ .failure = .{ .period_after_exponent = 2 } }, parseNumberLiteral("3E.5")); | 178 | try std.testing.expectEqual(Result{ .failure = .{ .period_after_exponent = 2 } }, parseNumberLiteral("3E.5")); |
| 179 | try std.testing.expectEqual(Result{ .failure = .{ .period_after_exponent = 3 } }, parseNumberLiteral("3E1.")); | 179 | try std.testing.expectEqual(Result{ .failure = .{ .period_after_exponent = 3 } }, parseNumberLiteral("3E1.")); |
| | 180 | try std.testing.expectEqual(Result{ .failure = .{ .invalid_float_base = 1 } }, parseNumberLiteral("0o3.1")); |
| 180 | try std.testing.expectEqual(Result{ .failure = .{ .invalid_digit = .{ .i = 3, .base = .octal } } }, parseNumberLiteral("0o3e1")); | 181 | try std.testing.expectEqual(Result{ .failure = .{ .invalid_digit = .{ .i = 3, .base = .octal } } }, parseNumberLiteral("0o3e1")); |
| 181 | } | 182 | } |
| 182 | | 183 | |