diff --git a/build.zig b/build.zig index 9727be0843ad1bcbefecdf4714761a69003ebcdb..3d54067186a9ef84171623fbfbc28d0d70586738 100644 --- a/build.zig +++ b/build.zig @@ -33,6 +33,8 @@ pub fn build(b: &Builder) { docs_step.dependOn(&docgen_cmd.step); docs_step.dependOn(&docgen_home_cmd.step); + const test_step = b.step("test", "Run all the tests"); + if (findLLVM(b)) |llvm| { // find the stage0 build artifacts because we're going to re-use config.h and zig_cpp library const build_info = b.exec([][]const u8{b.zig_exe, "BUILD_INFO"}); @@ -72,15 +74,16 @@ pub fn build(b: &Builder) { b.default_step.dependOn(&exe.step); b.default_step.dependOn(docs_step); + test_step.dependOn(&exe.step); b.installArtifact(exe); installStdLib(b); + } const test_filter = b.option([]const u8, "test-filter", "Skip tests that do not match filter"); const with_lldb = b.option(bool, "with-lldb", "Run tests in LLDB to get a backtrace if one fails") ?? false; - const test_step = b.step("test", "Run all the tests"); test_step.dependOn(docs_step); diff --git a/src-self-hosted/main.zig b/src-self-hosted/main.zig index ff8fb37b42e4024dababeb01aeb1ea08baaf20ce..a737cd950365d88b8810b6643db78c9cf6abf90c 100644 --- a/src-self-hosted/main.zig +++ b/src-self-hosted/main.zig @@ -626,3 +626,8 @@ fn findZigLibDir(allocator: &mem.Allocator) -> %[]u8 { return error.FileNotFound; } + +test "import tests" { + _ = @import("tokenizer.zig"); + _ = @import("parser.zig"); +} diff --git a/src-self-hosted/tokenizer.zig b/src-self-hosted/tokenizer.zig index de2fbdc1ee8b2a1484f773f3407194ea70be02e9..92312a063a98a4f21203a30017ae98f56ed38f07 100644 --- a/src-self-hosted/tokenizer.zig +++ b/src-self-hosted/tokenizer.zig @@ -204,6 +204,7 @@ pub const Tokenizer = struct { LineComment, Zero, IntegerLiteral, + IntegerLiteralWithRadix, NumberDot, FloatFraction, FloatExponentUnsigned, @@ -454,7 +455,7 @@ pub const Tokenizer = struct { }, State.Zero => switch (c) { 'b', 'o', 'x' => { - state = State.IntegerLiteral; + state = State.IntegerLiteralWithRadix; }, else => { // reinterpret as a normal number @@ -469,6 +470,16 @@ pub const Tokenizer = struct { 'p', 'P', 'e', 'E' => { state = State.FloatExponentUnsigned; }, + '0'...'9' => {}, + else => break, + }, + State.IntegerLiteralWithRadix => switch (c) { + '.' => { + state = State.NumberDot; + }, + 'p', 'P' => { + state = State.FloatExponentUnsigned; + }, '0'...'9', 'a'...'f', 'A'...'F' => {}, else => break, }, @@ -485,7 +496,7 @@ pub const Tokenizer = struct { }, }, State.FloatFraction => switch (c) { - 'p', 'P', 'e', 'E' => { + 'p', 'P' => { state = State.FloatExponentUnsigned; }, '0'...'9', 'a'...'f', 'A'...'F' => {},