bump to zig 0.14

This commit is contained in:
2025-04-13 22:19:42 +03:00
parent 15abfb585f
commit d22667f79a
2 changed files with 24 additions and 20 deletions

View File

@@ -1 +1 @@
zig0 aspires to be an interpreter of zig 0.13.0-2578-gec60156f187a C backend. zig0 aspires to be an interpreter of zig 0.14.0 C backend.

View File

@@ -139,6 +139,7 @@ pub fn zigToken(token: c_uint) Token.Tag {
// Copy-pasted from lib/std/zig/tokenizer.zig // Copy-pasted from lib/std/zig/tokenizer.zig
fn testTokenize(source: [:0]const u8, expected_token_tags: []const Token.Tag) !void { fn testTokenize(source: [:0]const u8, expected_token_tags: []const Token.Tag) !void {
// Do the C thing // Do the C thing
{
var ctokenizer = c.tokenizerInit(source.ptr, @intCast(source.len)); var ctokenizer = c.tokenizerInit(source.ptr, @intCast(source.len));
for (expected_token_tags) |expected_token_tag| { for (expected_token_tags) |expected_token_tag| {
const token = c.tokenizerNext(&ctokenizer); const token = c.tokenizerNext(&ctokenizer);
@@ -146,21 +147,24 @@ fn testTokenize(source: [:0]const u8, expected_token_tags: []const Token.Tag) !v
} }
const last_token = c.tokenizerNext(&ctokenizer); const last_token = c.tokenizerNext(&ctokenizer);
try std.testing.expectEqual(Token.Tag.eof, zigToken(last_token.tag)); try std.testing.expectEqual(Token.Tag.eof, zigToken(last_token.tag));
}
{
// uncomment when Zig source and compiler get in sync (e.g. with 0.14) // uncomment when Zig source and compiler get in sync (e.g. with 0.14)
//var tokenizer = Tokenizer.init(source); var tokenizer = Tokenizer.init(source);
//for (expected_token_tags) |expected_token_tag| { for (expected_token_tags) |expected_token_tag| {
// const token = tokenizer.next(); const token = tokenizer.next();
// try std.testing.expectEqual(expected_token_tag, token.tag); try std.testing.expectEqual(expected_token_tag, token.tag);
//} }
//// Last token should always be eof, even when the last token was invalid, // Last token should always be eof, even when the last token was invalid,
//// in which case the tokenizer is in an invalid state, which can only be // in which case the tokenizer is in an invalid state, which can only be
//// recovered by opinionated means outside the scope of this implementation. // recovered by opinionated means outside the scope of this implementation.
//const last_token = tokenizer.next(); const last_token = tokenizer.next();
//try std.testing.expectEqual(Token.Tag.eof, last_token.tag); try std.testing.expectEqual(Token.Tag.eof, last_token.tag);
try std.testing.expectEqual(source.len, last_token.loc.start); try std.testing.expectEqual(source.len, last_token.loc.start);
try std.testing.expectEqual(source.len, last_token.loc.end); try std.testing.expectEqual(source.len, last_token.loc.end);
} }
}
test "my function" { test "my function" {
try testTokenize( try testTokenize(