Commit 341431b15c

Vallahor <vallahor91@gmail.com>
2022-06-10 20:56:17
autodoc: handling more values sections
1 parent 24a7942
Changed files (2)
lib
docs
src
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 = '<span class="tok-kw">const</span> ' +
           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 = '<span class="tok-kw">const</span> ' +
+          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 = '<span class="tok-kw">const</span> ' +
+          escapeHtml(decl.name) + " = " + 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}) + ";";
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;
     };