From 27d2848e0096d31cb42cb258a89ed276ec26434e Mon Sep 17 00:00:00 2001 From: Krzysztof Wolicki Der Teufel Date: Tue, 7 Mar 2023 00:22:48 +0100 Subject: [PATCH] autodoc: Add struct to tryResolveRefPath fix rendering of fieldRef in exprName --- lib/docs/main.js | 6 +++--- src/Autodoc.zig | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/lib/docs/main.js b/lib/docs/main.js index fc99b2f861..4b946eb963 100644 --- a/lib/docs/main.js +++ b/lib/docs/main.js @@ -1139,9 +1139,9 @@ const NAV_MODES = { return exprName(switchIndex, opts); } case "fieldRef": { - const enumObj = exprName({ type: expr.fieldRef.type }, opts); - const field = - getAstNode(enumObj.src).fields[expr.fieldRef.index]; + const field_idx = expr.fieldRef.index; + const type = getType(expr.fieldRef.type); + const field = getAstNode(type.src).fields[field_idx]; const name = getAstNode(field).name; return name; } diff --git a/src/Autodoc.zig b/src/Autodoc.zig index 15d90b104b..47b0c8d3c2 100644 --- a/src/Autodoc.zig +++ b/src/Autodoc.zig @@ -3616,6 +3616,25 @@ fn tryResolveRefPath( continue :outer; }, }, + .@"struct" => |st| { + for (st) |field| { + if (std.mem.eql(u8, field.name, child_string)) { + path[i + 1] = field.val.expr; + continue :outer; + } + } + + // if we got here, our search failed + printWithContext( + file, + inst_index, + "failed to match `{s}` in struct", + .{child_string}, + ); + + path[i + 1] = (try self.cteTodo("match failure")).expr; + continue :outer; + }, } }