zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit a45db7e853c2aa04ff7a91dbda975f181aa467bd (tree)
parent 5b156031e92c66c1bea71d5eb6c337b23185d65d
Author: Andrew Kelley <superjoe30@gmail.com>
Date:   Wed,  3 Jan 2018 18:25:17 -0500

add building the self hosted compiler to the main test suite

Diffstat:
Mbuild.zig | 5++++-
Msrc-self-hosted/main.zig | 5+++++
Msrc-self-hosted/tokenizer.zig | 15+++++++++++++--
3 files changed, 22 insertions(+), 3 deletions(-)

diff --git 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 @@ -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 @@ -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' => {},