diff --git a/doc/docgen.zig b/doc/docgen.zig
index 90e3e32201..4f06b63c2c 100644
--- a/doc/docgen.zig
+++ b/doc/docgen.zig
@@ -781,106 +781,119 @@ fn tokenizeAndPrintRaw(docgen_tokenizer: *Tokenizer, out: anytype, source_token:
next_tok_is_fn = false;
const token = tokenizer.next();
- try writeEscaped(out, src[index..token.loc.start]);
- switch (token.id) {
- .Eof => break,
+ if (mem.indexOf(u8, src[index..token.loc.start], "//")) |comment_start_off| {
+ // render one comment
+ const comment_start = index + comment_start_off;
+ const comment_end_off = mem.indexOf(u8, src[comment_start .. token.loc.start], "\n");
+ const comment_end = if (comment_end_off) |o| comment_start + o else token.loc.start;
- .Keyword_align,
- .Keyword_and,
- .Keyword_asm,
- .Keyword_async,
- .Keyword_await,
- .Keyword_break,
- .Keyword_catch,
- .Keyword_comptime,
- .Keyword_const,
- .Keyword_continue,
- .Keyword_defer,
- .Keyword_else,
- .Keyword_enum,
- .Keyword_errdefer,
- .Keyword_error,
- .Keyword_export,
- .Keyword_extern,
- .Keyword_for,
- .Keyword_if,
- .Keyword_inline,
- .Keyword_noalias,
- .Keyword_noinline,
- .Keyword_nosuspend,
- .Keyword_opaque,
- .Keyword_or,
- .Keyword_orelse,
- .Keyword_packed,
- .Keyword_anyframe,
- .Keyword_pub,
- .Keyword_resume,
- .Keyword_return,
- .Keyword_linksection,
- .Keyword_callconv,
- .Keyword_struct,
- .Keyword_suspend,
- .Keyword_switch,
- .Keyword_test,
- .Keyword_threadlocal,
- .Keyword_try,
- .Keyword_union,
- .Keyword_unreachable,
- .Keyword_usingnamespace,
- .Keyword_var,
- .Keyword_volatile,
- .Keyword_allowzero,
- .Keyword_while,
- .Keyword_anytype,
+ try writeEscaped(out, src[index..comment_start]);
+ try out.writeAll("");
+ index = comment_end;
+ tokenizer.index = index;
+ continue;
+ }
+
+ try writeEscaped(out, src[index..token.loc.start]);
+ switch (token.tag) {
+ .eof => break,
+
+ .keyword_align,
+ .keyword_and,
+ .keyword_asm,
+ .keyword_async,
+ .keyword_await,
+ .keyword_break,
+ .keyword_catch,
+ .keyword_comptime,
+ .keyword_const,
+ .keyword_continue,
+ .keyword_defer,
+ .keyword_else,
+ .keyword_enum,
+ .keyword_errdefer,
+ .keyword_error,
+ .keyword_export,
+ .keyword_extern,
+ .keyword_for,
+ .keyword_if,
+ .keyword_inline,
+ .keyword_noalias,
+ .keyword_noinline,
+ .keyword_nosuspend,
+ .keyword_opaque,
+ .keyword_or,
+ .keyword_orelse,
+ .keyword_packed,
+ .keyword_anyframe,
+ .keyword_pub,
+ .keyword_resume,
+ .keyword_return,
+ .keyword_linksection,
+ .keyword_callconv,
+ .keyword_struct,
+ .keyword_suspend,
+ .keyword_switch,
+ .keyword_test,
+ .keyword_threadlocal,
+ .keyword_try,
+ .keyword_union,
+ .keyword_unreachable,
+ .keyword_usingnamespace,
+ .keyword_var,
+ .keyword_volatile,
+ .keyword_allowzero,
+ .keyword_while,
+ .keyword_anytype,
=> {
try out.writeAll("");
try writeEscaped(out, src[token.loc.start..token.loc.end]);
try out.writeAll("");
},
- .Keyword_fn => {
+ .keyword_fn => {
try out.writeAll("");
try writeEscaped(out, src[token.loc.start..token.loc.end]);
try out.writeAll("");
next_tok_is_fn = true;
},
- .Keyword_undefined,
- .Keyword_null,
- .Keyword_true,
- .Keyword_false,
+ .keyword_undefined,
+ .keyword_null,
+ .keyword_true,
+ .keyword_false,
=> {
try out.writeAll("");
try writeEscaped(out, src[token.loc.start..token.loc.end]);
try out.writeAll("");
},
- .StringLiteral,
- .MultilineStringLiteralLine,
- .CharLiteral,
+ .string_literal,
+ .multiline_string_literal_line,
+ .char_literal,
=> {
try out.writeAll("");
try writeEscaped(out, src[token.loc.start..token.loc.end]);
try out.writeAll("");
},
- .Builtin => {
+ .builtin => {
try out.writeAll("");
try writeEscaped(out, src[token.loc.start..token.loc.end]);
try out.writeAll("");
},
- .LineComment,
- .DocComment,
- .ContainerDocComment,
- .ShebangLine,
+ .doc_comment,
+ .container_doc_comment,
=> {
try out.writeAll("");
},
- .Identifier => {
+ .identifier => {
if (prev_tok_was_fn) {
try out.writeAll("");
try writeEscaped(out, src[token.loc.start..token.loc.end]);
@@ -908,71 +921,71 @@ fn tokenizeAndPrintRaw(docgen_tokenizer: *Tokenizer, out: anytype, source_token:
}
},
- .IntegerLiteral,
- .FloatLiteral,
+ .integer_literal,
+ .float_literal,
=> {
try out.writeAll("");
try writeEscaped(out, src[token.loc.start..token.loc.end]);
try out.writeAll("");
},
- .Bang,
- .Pipe,
- .PipePipe,
- .PipeEqual,
- .Equal,
- .EqualEqual,
- .EqualAngleBracketRight,
- .BangEqual,
- .LParen,
- .RParen,
- .Semicolon,
- .Percent,
- .PercentEqual,
- .LBrace,
- .RBrace,
- .LBracket,
- .RBracket,
- .Period,
- .PeriodAsterisk,
- .Ellipsis2,
- .Ellipsis3,
- .Caret,
- .CaretEqual,
- .Plus,
- .PlusPlus,
- .PlusEqual,
- .PlusPercent,
- .PlusPercentEqual,
- .Minus,
- .MinusEqual,
- .MinusPercent,
- .MinusPercentEqual,
- .Asterisk,
- .AsteriskEqual,
- .AsteriskAsterisk,
- .AsteriskPercent,
- .AsteriskPercentEqual,
- .Arrow,
- .Colon,
- .Slash,
- .SlashEqual,
- .Comma,
- .Ampersand,
- .AmpersandEqual,
- .QuestionMark,
- .AngleBracketLeft,
- .AngleBracketLeftEqual,
- .AngleBracketAngleBracketLeft,
- .AngleBracketAngleBracketLeftEqual,
- .AngleBracketRight,
- .AngleBracketRightEqual,
- .AngleBracketAngleBracketRight,
- .AngleBracketAngleBracketRightEqual,
- .Tilde,
+ .bang,
+ .pipe,
+ .pipe_pipe,
+ .pipe_equal,
+ .equal,
+ .equal_equal,
+ .equal_angle_bracket_right,
+ .bang_equal,
+ .l_paren,
+ .r_paren,
+ .semicolon,
+ .percent,
+ .percent_equal,
+ .l_brace,
+ .r_brace,
+ .l_bracket,
+ .r_bracket,
+ .period,
+ .period_asterisk,
+ .ellipsis2,
+ .ellipsis3,
+ .caret,
+ .caret_equal,
+ .plus,
+ .plus_plus,
+ .plus_equal,
+ .plus_percent,
+ .plus_percent_equal,
+ .minus,
+ .minus_equal,
+ .minus_percent,
+ .minus_percent_equal,
+ .asterisk,
+ .asterisk_equal,
+ .asterisk_asterisk,
+ .asterisk_percent,
+ .asterisk_percent_equal,
+ .arrow,
+ .colon,
+ .slash,
+ .slash_equal,
+ .comma,
+ .ampersand,
+ .ampersand_equal,
+ .question_mark,
+ .angle_bracket_left,
+ .angle_bracket_left_equal,
+ .angle_bracket_angle_bracket_left,
+ .angle_bracket_angle_bracket_left_equal,
+ .angle_bracket_right,
+ .angle_bracket_right_equal,
+ .angle_bracket_angle_bracket_right,
+ .angle_bracket_angle_bracket_right_equal,
+ .tilde,
=> try writeEscaped(out, src[token.loc.start..token.loc.end]),
- .Invalid, .Invalid_ampersands, .Invalid_periodasterisks => return parseError(
+ .invalid, .invalid_ampersands, .invalid_periodasterisks => return parseError(
docgen_tokenizer,
source_token,
"syntax error",