Skip to content

make the source hyperlinks work in the fuzzing web interface (currently they construct autodoc URLs) #20982

@andrewrk

Description

@andrewrk

Extracted from #20958.

[nix-shell:~/dev/zig/build-release]$ stage3/bin/zig build test-std  -Dtest-filter="tokenizer" -Dskip-release -Dskip-non-native -Dskip-libc -Dskip-single-threaded --fuzz --debug-rt --port 41099

image

Text from screenshot reproduced below:

fn testTokenize(source: [:0]const u8, expected_token_tags: []const Token.Tag) !void {
    var tokenizer = Tokenizer.init(source);
    for (expected_token_tags) |expected_token_tag| {
        const token = tokenizer.next();
        try std.testing.expectEqual(expected_token_tag, token.tag);
    }
    // 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
    // recovered by opinionated means outside the scope of this implementation.
    const last_token = tokenizer.next();
    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.end);
}

For example in the above snippet, the expectEqual link points to http://127.0.0.1:41099/#.home.andy.dev.zig.lib.std.std.testing.expectEqual.

Instead, it should point to one of these:

  • #std.testing.expectEqual
  • #f123d456 where 123 and 456 are the file and decl indexes respectively.
  • #/home/andy/dev/zig/lib/std/zig/tokenizer.zig:123:456 where 123 and 456 are line and column respectively.

And then the onHashChange logic needs to respond by loading the appropriate file and scrolling the location into view.

Metadata

Metadata

Assignees

No one assigned

    Labels

    contributor friendlyThis issue is limited in scope and/or knowledge of Zig internals.enhancementSolving this issue will likely involve adding new logic or components to the codebase.fuzzing

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions