Skip to content

get the test runner and zig test working; enable behavior tests for stage2 #8818

Closed
@andrewrk

Description

@andrewrk
test "example" {}
[nix-shell:~/dev/zig/build-release]$ ./zig-out/bin/zig test test.zig
thread 743 panic: reached unreachable code
/home/andy/dev/zig/src/type.zig:1988:21: 0x3d650a in type.Type.elemType (zig)
            else => unreachable,
                    ^
/home/andy/dev/zig/src/Sema.zig:6222:43: 0x695bcc in Sema.namedFieldPtr (zig)
        .Pointer => object_ptr.ty.elemType(),
                                          ^
/home/andy/dev/zig/src/Sema.zig:3213:30: 0x5cd028 in Sema.zirFieldPtr (zig)
    return sema.namedFieldPtr(block, src, object_ptr, field_name, field_name_src);
                             ^
/home/andy/dev/zig/src/Sema.zig:215:66: 0x4f3f13 in Sema.analyzeBody (zig)
            .field_ptr                    => try sema.zirFieldPtr(block, inst),
                                                                 ^
/home/andy/dev/zig/src/Sema.zig:105:29: 0x4f02ca in Sema.analyzeFnBody (zig)
    _ = try sema.analyzeBody(block, body);
                            ^
/home/andy/dev/zig/src/Module.zig:3615:27: 0x42b9c4 in Module.analyzeFnBody (zig)
    try sema.analyzeFnBody(&inner_block, func.zir_body_inst);
                          ^
/home/andy/dev/zig/src/Compilation.zig:1921:56: 0x420534 in Compilation.performAllTheWork (zig)
                        .queued => module.analyzeFnBody(decl, func) catch |err| switch (err) {
                                                       ^
/home/andy/dev/zig/src/Compilation.zig:1618:31: 0x41caef in Compilation.update (zig)
    try self.performAllTheWork();
                              ^
/home/andy/dev/zig/src/main.zig:2233:20: 0x3b32a2 in updateModule (zig)
    try comp.update();
                   ^
/home/andy/dev/zig/src/main.zig:1965:17: 0x352651 in buildOutputType (zig)
    updateModule(gpa, comp, hook) catch |err| switch (err) {
                ^
/home/andy/dev/zig/src/main.zig:192:31: 0x33d417 in mainArgs (zig)
        return buildOutputType(gpa, arena, args, .zig_test);
                              ^
/home/andy/dev/zig/src/main.zig:141:20: 0x335860 in main (zig)
    return mainArgs(gpa, arena, args);
                   ^
/home/andy/dev/zig/lib/std/start.zig:458:37: 0x32e0fa in std.start.callMain (zig)
            const result = root.main() catch |err| {
                                    ^
/home/andy/dev/zig/lib/std/start.zig:400:12: 0x31225e in std.start.callMainWithArgs (zig)
    return @call(.{ .modifier = .always_inline }, callMain, .{});
           ^
/home/andy/dev/zig/lib/std/start.zig:318:17: 0x311245 in std.start.posixCallMainAndExit (zig)
    std.os.exit(@call(.{ .modifier = .always_inline }, callMainWithArgs, .{ argc, argv, envp }));
                ^
/home/andy/dev/zig/lib/std/start.zig:244:5: 0x310fa2 in std.start._start (zig)
    @call(.{ .modifier = .never_inline }, posixCallMainAndExit, .{});
    ^
Aborted (core dumped)

Instead it should run the tests. We already have simplified test runner logic when builtin.zig_is_stage2 is true, but there is also work that needs to be done in the stage2 frontend in order to make @import("builtin").test_functions work properly.

In order to close this issue, add test coverage for running the behavior tests with stage2 (but not all behavior tests have to be passing).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementSolving this issue will likely involve adding new logic or components to the codebase.frontendTokenization, parsing, AstGen, Sema, and Liveness.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions