authorgravatar for vallahor91@gmail.comVallahor <vallahor91@gmail.com> 2022-06-10 10:40:53-03:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-07-19 19:10:12-07:00
log81147dd1010644da0e61991561988d0e39de729c
tree7e399c41574721356cffa1bcdedb7b62e758d49d
parentdd4bd55ef6891109f3a462369a3430d11d5db4ee

autodoc: initial work in opaque_decl


2 files changed, 40 insertions(+), 1 deletions(-)

lib/docs/main.js+6
...@@ -1457,6 +1457,12 @@ var zigAnalysis;...@@ -1457,6 +1457,12 @@ var zigAnalysis;
1457 if (typeof typeObj === 'number') typeObj = zigAnalysis.types[typeObj];1457 if (typeof typeObj === 'number') typeObj = zigAnalysis.types[typeObj];
1458 switch (typeObj.kind) {1458 switch (typeObj.kind) {
1459 default: throw "TODO";1459 default: throw "TODO";
1460 case typeKinds.Opaque:
1461 {
1462 let opaqueObj = (typeObj);
1463
1464 return opaqueObj.name;
1465 }
1460 case typeKinds.ComptimeExpr:1466 case typeKinds.ComptimeExpr:
1461 {1467 {
1462 return "anyopaque";1468 return "anyopaque";
src/Autodoc.zig+34-1
...@@ -2249,7 +2249,40 @@ fn walkInstruction(...@@ -2249,7 +2249,40 @@ fn walkInstruction(
22492249
2250 return result;2250 return result;
2251 },2251 },
2252 .opaque_decl => return self.cteTodo("opaque {...}"),2252 .opaque_decl => {
2253 const small = @bitCast(Zir.Inst.OpaqueDecl.Small, extended.small);
2254 var extra_index: usize = extended.operand;
2255 const src_node: ?i32 = if (small.has_src_node) blk: {
2256 const src_node = @bitCast(i32, file.zir.extra[extra_index]);
2257 extra_index += 1;
2258 break :blk src_node;
2259 } else null;
2260 _ = src_node;
2261
2262 const decls_len = if (small.has_decls_len) blk: {
2263 const decls_len = file.zir.extra[extra_index];
2264 extra_index += 1;
2265 break :blk decls_len;
2266 } else 0;
2267 _ = decls_len;
2268
2269 const decls_bits = file.zir.extra[extra_index];
2270 _ = decls_bits;
2271
2272 // const sep = "=" ** 200;
2273 // std.debug.print("{s}\n", .{sep});
2274 // std.debug.print("small = {any}\n", .{small});
2275 // std.debug.print("src_node = {}\n", .{src_node});
2276 // std.debug.print("decls_len = {}\n", .{decls_len});
2277 // std.debug.print("decls_bit = {}\n", .{decls_bits});
2278 // std.debug.print("{s}\n", .{sep});
2279 const type_slot_index = self.types.items.len - 1;
2280 try self.types.append(self.arena, .{ .Opaque = .{ .name = "TODO" } });
2281 return DocData.WalkResult{
2282 .typeRef = .{ .type = @enumToInt(Ref.anyopaque_type) },
2283 .expr = .{ .type = type_slot_index },
2284 };
2285 },
2253 .variable => {2286 .variable => {
2254 const small = @bitCast(Zir.Inst.ExtendedVar.Small, extended.small);2287 const small = @bitCast(Zir.Inst.ExtendedVar.Small, extended.small);
2255 var extra_index: usize = extended.operand;2288 var extra_index: usize = extended.operand;