Commit e7476fd81c
Changed files (2)
lib
docs
src
lib/docs/main.js
@@ -892,8 +892,8 @@ var zigAnalysis;
let outer_decl_index = expr.switchOp.outer_decl;
let outer_decl = zigAnalysis.types[outer_decl_index];
let line = 0;
- console.log(expr.switchOp)
- console.log(outer_decl)
+ // console.log(expr.switchOp)
+ // console.log(outer_decl)
while (outer_decl_index !== 0 && outer_decl.line_number > 0) {
line += outer_decl.line_number;
outer_decl_index = outer_decl.outer_decl;
@@ -912,14 +912,24 @@ var zigAnalysis;
const switchIndex = zigAnalysis.exprs[expr.switchIndex];
return exprName(switchIndex, opts);
}
- case "fieldRef" : {
+ case "refPath" : {
// const fieldRef = zigAnalysis.decls[expr.fieldRef.index];
- // const struct_name = zigAnalysis.decls[expr.struct[0].val.typeRef.refPath[0].declRef].name;
- console.log(expr)
- // console.log(fieldRef)
- // return "@enumToInt(" + exprName(enumToInt, opts) + ")";
- // return exprName(fieldRef,opts);
- return "WIP"
+ const declRef = expr.refPath[0].declRef;
+ let name = zigAnalysis.decls[declRef].name;
+ console.log("refPath")
+ console.log(expr.refPath)
+ console.log(declRef)
+ for (let i = 1; i < expr.refPath.length; i++) {
+ name += "." + exprName(expr.refPath[i]);
+ }
+ return name;
+ }
+ case "fieldRef" : {
+ const fieldRef = zigAnalysis.decls[expr.fieldRef.index];
+ const enumObj = exprName({"type":expr.fieldRef.type} ,opts);
+ // const name = zigAnalysis.astNodes[enumObj.ast + expr.fieldRef.index].name;
+ const name = zigAnalysis.astNodes[enumObj.ast + expr.fieldRef.index + 1].name;
+ return name
}
case "enumToInt" : {
const enumToInt = zigAnalysis.exprs[expr.enumToInt];
@@ -1457,6 +1467,12 @@ var zigAnalysis;
if (typeof typeObj === 'number') typeObj = zigAnalysis.types[typeObj];
switch (typeObj.kind) {
default: throw "TODO";
+ case typeKinds.Enum:
+ {
+ let enumObj = (typeObj);
+
+ return enumObj;
+ }
case typeKinds.Opaque:
{
let opaqueObj = (typeObj);
@@ -2011,9 +2027,15 @@ var zigAnalysis;
function renderValue(decl) {
let resolvedValue = resolveValue(decl.value)
+ if (resolvedValue.expr.fieldRef) {
domFnProtoCode.innerHTML = '<span class="tok-kw">const</span> ' +
- escapeHtml(decl.name) + ': ' + exprName(resolvedValue.typeRef, {wantHtml: true, wantLink:true}) +
- " = " + exprName(decl.value.expr, {wantHtml: true, wantLink:true}) + ";";
+ escapeHtml(decl.name) + ': ' + exprName(resolvedValue.expr.fieldRef, {wantHtml: true, wantLink:true}) +
+ " = " + exprName(decl.value.expr, {wantHtml: true, wantLink:true}) + ";";
+ } else {
+ domFnProtoCode.innerHTML = '<span class="tok-kw">const</span> ' +
+ escapeHtml(decl.name) + ': ' + exprName(resolvedValue.typeRef, {wantHtml: true, wantLink:true}) +
+ " = " + exprName(decl.value.expr, {wantHtml: true, wantLink:true}) + ";";
+ }
let docs = zigAnalysis.astNodes[decl.src].docs;
if (docs != null) {
src/Autodoc.zig
@@ -1760,15 +1760,15 @@ fn walkInstruction(
const ast_index = self.ast_nodes.items.len;
const type_index = self.types.items.len - 1;
- const ast_line = self.ast_nodes.items[ast_index - 1];
+ // const ast_line = self.ast_nodes.items[ast_index - 1];
- const sep = "=" ** 200;
- std.debug.print("{s}\n", .{sep});
- std.debug.print("SWITCH BLOCK\n", .{});
- std.debug.print("extra = {any}\n", .{extra});
- std.debug.print("outer_decl = {any}\n", .{self.types.items[type_index]});
- std.debug.print("ast_lines = {}\n", .{ast_line});
- std.debug.print("{s}\n", .{sep});
+ // const sep = "=" ** 200;
+ // std.debug.print("{s}\n", .{sep});
+ // std.debug.print("SWITCH BLOCK\n", .{});
+ // std.debug.print("extra = {any}\n", .{extra});
+ // std.debug.print("outer_decl = {any}\n", .{self.types.items[type_index]});
+ // std.debug.print("ast_lines = {}\n", .{ast_line});
+ // std.debug.print("{s}\n", .{sep});
const switch_index = self.exprs.items.len;
try self.exprs.append(self.arena, .{ .switchOp = .{ .cond_index = cond_index, .file_name = file.sub_file_path, .ast = ast_index, .outer_decl = type_index } });
@@ -1789,13 +1789,13 @@ fn walkInstruction(
const operand_index = self.exprs.items.len;
try self.exprs.append(self.arena, operand.expr);
- const ast_index = self.ast_nodes.items.len;
- const sep = "=" ** 200;
- std.debug.print("{s}\n", .{sep});
- std.debug.print("SWITCH COND\n", .{});
- std.debug.print("ast index = {}\n", .{ast_index});
- std.debug.print("ast previous = {}\n", .{self.ast_nodes.items[ast_index - 1]});
- std.debug.print("{s}\n", .{sep});
+ // const ast_index = self.ast_nodes.items.len;
+ // const sep = "=" ** 200;
+ // std.debug.print("{s}\n", .{sep});
+ // std.debug.print("SWITCH COND\n", .{});
+ // std.debug.print("ast index = {}\n", .{ast_index});
+ // std.debug.print("ast previous = {}\n", .{self.ast_nodes.items[ast_index - 1]});
+ // std.debug.print("{s}\n", .{sep});
return DocData.WalkResult{
.typeRef = operand.typeRef,
@@ -1917,7 +1917,9 @@ fn walkInstruction(
// While it would make sense to grab the original decl's typeRef info,
// that decl might not have been analyzed yet! The frontend will have
// to navigate through all declRefs to find the underlying type.
- return DocData.WalkResult{ .expr = .{ .declRef = decls_slot_index } };
+ return DocData.WalkResult{
+ .expr = .{ .declRef = decls_slot_index },
+ };
},
.field_val, .field_call_bind, .field_ptr, .field_type => {
// TODO: field type uses Zir.Inst.FieldType, it just happens to have the