@@ -5,6 +5,8 @@ const Ast = std.zig.Ast;
55const Walk = @import ("Walk" );
66const markdown = @import ("markdown.zig" );
77const Decl = Walk .Decl ;
8+ const ArrayList = std .ArrayList ;
9+ const Writer = std .Io .Writer ;
810
911const fileSourceHtml = @import ("html_render.zig" ).fileSourceHtml ;
1012const appendEscaped = @import ("html_render.zig" ).appendEscaped ;
@@ -66,8 +68,8 @@ export fn unpack(tar_ptr: [*]u8, tar_len: usize) void {
6668 };
6769}
6870
69- var query_string : std . ArrayListUnmanaged (u8 ) = .empty ;
70- var query_results : std . ArrayListUnmanaged (Decl .Index ) = .empty ;
71+ var query_string : ArrayList (u8 ) = .empty ;
72+ var query_results : ArrayList (Decl .Index ) = .empty ;
7173
7274/// Resizes the query string to be the correct length; returns the pointer to
7375/// the query string.
@@ -99,11 +101,11 @@ fn query_exec_fallible(query: []const u8, ignore_case: bool) !void {
99101 segments : u16 ,
100102 };
101103 const g = struct {
102- var full_path_search_text : std . ArrayListUnmanaged (u8 ) = .empty ;
103- var full_path_search_text_lower : std . ArrayListUnmanaged (u8 ) = .empty ;
104- var doc_search_text : std . ArrayListUnmanaged (u8 ) = .empty ;
104+ var full_path_search_text : ArrayList (u8 ) = .empty ;
105+ var full_path_search_text_lower : ArrayList (u8 ) = .empty ;
106+ var doc_search_text : ArrayList (u8 ) = .empty ;
105107 /// Each element matches a corresponding query_results element.
106- var scores : std . ArrayListUnmanaged (Score ) = .empty ;
108+ var scores : ArrayList (Score ) = .empty ;
107109 };
108110
109111 // First element stores the size of the list.
@@ -234,7 +236,7 @@ const ErrorIdentifier = packed struct(u64) {
234236 return ast .tokenTag (token_index - 1 ) == .doc_comment ;
235237 }
236238
237- fn html (ei : ErrorIdentifier , base_decl : Decl.Index , out : * std . ArrayListUnmanaged (u8 )) Oom ! void {
239+ fn html (ei : ErrorIdentifier , base_decl : Decl.Index , out : * ArrayList (u8 )) Oom ! void {
238240 const decl_index = ei .decl_index ;
239241 const ast = decl_index .get ().file .get_ast ();
240242 const name = ast .tokenSlice (ei .token_index );
@@ -257,7 +259,7 @@ const ErrorIdentifier = packed struct(u64) {
257259 }
258260};
259261
260- var string_result : std . ArrayListUnmanaged (u8 ) = .empty ;
262+ var string_result : ArrayList (u8 ) = .empty ;
261263var error_set_result : std .StringArrayHashMapUnmanaged (ErrorIdentifier ) = .empty ;
262264
263265export fn decl_error_set (decl_index : Decl.Index ) Slice (ErrorIdentifier ) {
@@ -408,7 +410,7 @@ fn decl_fields_fallible(decl_index: Decl.Index) ![]Ast.Node.Index {
408410
409411fn ast_decl_fields_fallible (ast : * Ast , ast_index : Ast.Node.Index ) ! []Ast.Node.Index {
410412 const g = struct {
411- var result : std . ArrayListUnmanaged (Ast .Node .Index ) = .empty ;
413+ var result : ArrayList (Ast .Node .Index ) = .empty ;
412414 };
413415 g .result .clearRetainingCapacity ();
414416 var buf : [2 ]Ast.Node.Index = undefined ;
@@ -426,7 +428,7 @@ fn ast_decl_fields_fallible(ast: *Ast, ast_index: Ast.Node.Index) ![]Ast.Node.In
426428
427429fn decl_params_fallible (decl_index : Decl.Index ) ! []Ast.Node.Index {
428430 const g = struct {
429- var result : std . ArrayListUnmanaged (Ast .Node .Index ) = .empty ;
431+ var result : ArrayList (Ast .Node .Index ) = .empty ;
430432 };
431433 g .result .clearRetainingCapacity ();
432434 const decl = decl_index .get ();
@@ -457,7 +459,7 @@ export fn decl_param_html(decl_index: Decl.Index, param_node: Ast.Node.Index) St
457459}
458460
459461fn decl_field_html_fallible (
460- out : * std . ArrayListUnmanaged (u8 ),
462+ out : * ArrayList (u8 ),
461463 decl_index : Decl.Index ,
462464 field_node : Ast.Node.Index ,
463465) ! void {
@@ -474,7 +476,7 @@ fn decl_field_html_fallible(
474476}
475477
476478fn decl_param_html_fallible (
477- out : * std . ArrayListUnmanaged (u8 ),
479+ out : * ArrayList (u8 ),
478480 decl_index : Decl.Index ,
479481 param_node : Ast.Node.Index ,
480482) ! void {
@@ -642,7 +644,7 @@ export fn decl_docs_html(decl_index: Decl.Index, short: bool) String {
642644}
643645
644646fn collect_docs (
645- list : * std . ArrayListUnmanaged (u8 ),
647+ list : * ArrayList (u8 ),
646648 ast : * const Ast ,
647649 first_doc_comment : Ast.TokenIndex ,
648650) Oom ! void {
@@ -660,7 +662,7 @@ fn collect_docs(
660662}
661663
662664fn render_docs (
663- out : * std . ArrayListUnmanaged (u8 ),
665+ out : * ArrayList (u8 ),
664666 decl_index : Decl.Index ,
665667 first_doc_comment : Ast.TokenIndex ,
666668 short : bool ,
@@ -683,17 +685,16 @@ fn render_docs(
683685 var parsed_doc = try parser .endInput ();
684686 defer parsed_doc .deinit (gpa );
685687
686- const Writer = std .ArrayListUnmanaged (u8 ).Writer ;
687- const Renderer = markdown .Renderer (Writer , Decl .Index );
688+ const Renderer = markdown .Renderer (Decl .Index );
688689 const renderer : Renderer = .{
689690 .context = decl_index ,
690691 .renderFn = struct {
691692 fn render (
692693 r : Renderer ,
693694 doc : markdown.Document ,
694695 node : markdown.Document.Node.Index ,
695- writer : Writer ,
696- ) ! void {
696+ writer : * Writer ,
697+ ) Writer.Error ! void {
697698 const data = doc .nodes .items (.data )[@intFromEnum (node )];
698699 switch (doc .nodes .items (.tag )[@intFromEnum (node )]) {
699700 .code_span = > {
@@ -708,7 +709,12 @@ fn render_docs(
708709 }
709710 }.render ,
710711 };
711- try renderer .render (parsed_doc , out .writer (gpa ));
712+
713+ var allocating = Writer .Allocating .fromArrayList (gpa , out );
714+ defer out .* = allocating .toArrayList ();
715+ renderer .render (parsed_doc , & allocating .writer ) catch | err | switch (err ) {
716+ error .WriteFailed = > return error .OutOfMemory ,
717+ };
712718}
713719
714720fn resolve_decl_path (decl_index : Decl.Index , path : []const u8 ) ? Decl.Index {
@@ -806,7 +812,7 @@ export fn find_module_root(pkg: Walk.ModuleIndex) Decl.Index {
806812}
807813
808814/// Set by `set_input_string`.
809- var input_string : std . ArrayListUnmanaged (u8 ) = .empty ;
815+ var input_string : ArrayList (u8 ) = .empty ;
810816
811817export fn set_input_string (len : usize ) [* ]u8 {
812818 input_string .resize (gpa , len ) catch @panic ("OOM" );
@@ -828,7 +834,7 @@ export fn find_decl() Decl.Index {
828834 if (result != .none ) return result ;
829835
830836 const g = struct {
831- var match_fqn : std . ArrayListUnmanaged (u8 ) = .empty ;
837+ var match_fqn : ArrayList (u8 ) = .empty ;
832838 };
833839 for (Walk .decls .items , 0.. ) | * decl , decl_index | {
834840 g .match_fqn .clearRetainingCapacity ();
@@ -884,7 +890,7 @@ export fn type_fn_members(parent: Decl.Index, include_private: bool) Slice(Decl.
884890
885891export fn namespace_members (parent : Decl.Index , include_private : bool ) Slice (Decl .Index ) {
886892 const g = struct {
887- var members : std . ArrayListUnmanaged (Decl .Index ) = .empty ;
893+ var members : ArrayList (Decl .Index ) = .empty ;
888894 };
889895
890896 g .members .clearRetainingCapacity ();
0 commit comments