From 341431b15c4d271395a1f100f0c496e1e77a7533 Mon Sep 17 00:00:00 2001 From: Vallahor Date: Fri, 10 Jun 2022 15:56:17 -0300 Subject: [PATCH] autodoc: handling more values sections --- lib/docs/main.js | 34 ++++++++++++++++++++++++---------- src/Autodoc.zig | 7 ++++--- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/lib/docs/main.js b/lib/docs/main.js index 7f3d626386..f31e562af8 100644 --- a/lib/docs/main.js +++ b/lib/docs/main.js @@ -819,6 +819,10 @@ var zigAnalysis; case "&": { return "&" + exprName(zigAnalysis.exprs[expr["&"]]); } + case "compileError": { + let compileError = expr.compileError; + return compileError; + } case "enumLiteral": { let literal = expr.enumLiteral; return literal; @@ -916,7 +920,6 @@ var zigAnalysis; return exprName(switchIndex, opts); } case "refPath" : { - // const fieldRef = zigAnalysis.decls[expr.fieldRef.index]; const declRef = expr.refPath[0].declRef; let name = zigAnalysis.decls[declRef].name; for (let i = 1; i < expr.refPath.length; i++) { @@ -925,10 +928,9 @@ var zigAnalysis; 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; + const field = zigAnalysis.astNodes[enumObj.ast].fields[expr.fieldRef.index]; + const name = zigAnalysis.astNodes[field].name; return name } case "enumToInt" : { @@ -1424,11 +1426,11 @@ var zigAnalysis; return payloadHtml; } case "as": { - // const typeRefArg = zigAnalysis.exprs[expr.as.typeRefArg]; + const typeRefArg = zigAnalysis.exprs[expr.as.typeRefArg]; const exprArg = zigAnalysis.exprs[expr.as.exprArg]; - // return "@as(" + exprName(typeRefArg, opts) + - // ", " + exprName(exprArg, opts) + ")"; - return exprName(exprArg, opts); + return "@as(" + exprName(typeRefArg, opts) + + ", " + exprName(exprArg, opts) + ")"; + // return exprName(exprArg, opts); } case "declRef": { return zigAnalysis.decls[expr.declRef].name; @@ -1467,10 +1469,14 @@ var zigAnalysis; if (typeof typeObj === 'number') typeObj = zigAnalysis.types[typeObj]; switch (typeObj.kind) { default: throw "TODO"; + case typeKinds.Struct: + { + let structObj = (typeObj); + return structObj; + } case typeKinds.Enum: { let enumObj = (typeObj); - console.log(enumObj) return enumObj; } case typeKinds.Opaque: @@ -2033,7 +2039,15 @@ var zigAnalysis; domFnProtoCode.innerHTML = 'const ' + escapeHtml(decl.name) + ': ' + type.name + " = " + exprName(decl.value.expr, {wantHtml: true, wantLink:true}) + ";"; - } else { + } else if (resolvedValue.expr.string !== undefined || resolvedValue.expr.call !== undefined || resolvedValue.expr.comptimeExpr !== undefined) { + domFnProtoCode.innerHTML = 'const ' + + escapeHtml(decl.name) + ': ' + exprName(resolvedValue.expr, {wantHtml: true, wantLink:true}) + + " = " + exprName(decl.value.expr, {wantHtml: true, wantLink:true}) + ";"; + } else if (resolvedValue.expr.compileError) { + domFnProtoCode.innerHTML = 'const ' + + escapeHtml(decl.name) + " = " + exprName(decl.value.expr, {wantHtml: true, wantLink:true}) + ";"; + } + else { domFnProtoCode.innerHTML = 'const ' + escapeHtml(decl.name) + ': ' + exprName(resolvedValue.typeRef, {wantHtml: true, wantLink:true}) + " = " + exprName(decl.value.expr, {wantHtml: true, wantLink:true}) + ";"; diff --git a/src/Autodoc.zig b/src/Autodoc.zig index f0ec9d7909..bb1aeba35c 100644 --- a/src/Autodoc.zig +++ b/src/Autodoc.zig @@ -3360,9 +3360,10 @@ fn analyzeFunction( // ret const ret_type_ref = blk: { - const last_instr_index = fn_info.ret_ty_body[fn_info.ret_ty_body.len - 1]; - const break_operand = data[last_instr_index].@"break".operand; - const wr = try self.walkRef(file, scope, break_operand, false); + // const last_instr_index = fn_info.ret_ty_body[fn_info.ret_ty_body.len - 1]; + // const break_operand = data[last_instr_index].@"break".operand; + // const wr = try self.walkRef(file, scope, break_operand, false); + const wr = try self.walkRef(file, scope, fn_info.ret_ty_ref, false); break :blk wr; };