Commit 27d2848e00

Krzysztof Wolicki Der Teufel <der.teufel.mail@gmail.com>
2023-03-07 00:22:48
autodoc: Add struct to tryResolveRefPath
fix rendering of fieldRef in exprName
1 parent 6218e40
Changed files (2)
lib
docs
src
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;
       }
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;
+            },
         }
     }