Commit b823f01141

Vallahor <vallahor91@gmail.com>
2022-05-29 00:47:12
add: extra information in extendedFn
1 parent 927f087
Changed files (2)
lib
docs
src
lib/docs/main.js
@@ -1374,7 +1374,10 @@ var zigAnalysis;
                       let payloadHtml = "";
                       if (opts.wantHtml) {
                           if (fnObj.is_extern) {
-                            payloadHtml += "pub \"extern\" ";
+                            payloadHtml += "pub extern ";
+                          }
+                          if (fnObj.has_lib_name) {
+                            payloadHtml += "\"" + fnObj.lib_name +"\" ";
                           }
                           payloadHtml += '<span class="tok-kw">fn</span>';
                           if (opts.fnDecl) {
@@ -1523,9 +1526,16 @@ var zigAnalysis;
                           }
 
                       payloadHtml += ') ';
+
+                    if (fnObj.has_align) {
+                      let align = zigAnalysis.exprs[fnObj.align]
+                      payloadHtml += "align(" + exprName(align, opts) + ") ";
+                    }
                     if (fnObj.has_cc) {
                       let cc = zigAnalysis.exprs[fnObj.cc]
-                      payloadHtml += "callconv(." + cc.enumLiteral + ") ";
+                      if (cc) {
+                        payloadHtml += "callconv(." + cc.enumLiteral + ") ";
+                      }
                     }
 
                       if (fnObj.is_inferred_error) {
src/Autodoc.zig
@@ -467,11 +467,13 @@ const DocData = struct {
             src: ?usize = null, // index into astNodes
             ret: Expr,
             params: ?[]Expr = null, // (use src->fields to find names)
+            lib_name: []const u8 = "",
             is_var_args: bool = false,
             is_inferred_error: bool = false,
             has_lib_name: bool = false,
             has_cc: bool = false,
             cc: ?usize = null,
+            @"align": ?usize = null,
             has_align: bool = false,
             is_test: bool = false,
             is_extern: bool = false,
@@ -2771,27 +2773,35 @@ fn analyzeFunctionExtended(
     };
 
     self.ast_nodes.items[self_ast_node_index].fields = param_ast_indexes.items;
-    const inst_data = data[inst_index].pl_node;
 
+    const inst_data = data[inst_index].pl_node;
     const extra = file.zir.extraData(Zir.Inst.ExtendedFunc, inst_data.payload_index);
+
+    var extra_index: usize = extra.end;
+
+    var lib_name: []const u8 = "";
+    if (extra.data.bits.has_lib_name) {
+        lib_name = file.zir.nullTerminatedString(file.zir.extra[extra_index]);
+        extra_index += 1;
+    }
+
     var cc_index: ?usize = null;
+    var align_index: ?usize = null;
     if (extra.data.bits.has_cc) {
-        const cc_ref = @intToEnum(Zir.Inst.Ref, file.zir.extra[extra.end]);
+        const cc_ref = @intToEnum(Zir.Inst.Ref, file.zir.extra[extra_index]);
         cc_index = self.exprs.items.len;
         _ = try self.walkRef(file, scope, cc_ref, false);
+        extra_index += 1;
+    }
+
+    if (extra.data.bits.has_align) {
+        const align_ref = @intToEnum(Zir.Inst.Ref, file.zir.extra[extra_index]);
+        align_index = self.exprs.items.len;
+        _ = try self.walkRef(file, scope, align_ref, false);
     }
 
     self.types.items[type_slot_index] = .{
-        .Fn = .{
-            .name = "todo_name func",
-            .src = self_ast_node_index,
-            .params = param_type_refs.items,
-            .ret = ret_type_ref.expr,
-            .is_extern = extra.data.bits.is_extern,
-            .has_cc = extra.data.bits.has_cc,
-            .is_inferred_error = extra.data.bits.is_inferred_error,
-            .cc = cc_index,
-        },
+        .Fn = .{ .name = "todo_name func", .src = self_ast_node_index, .params = param_type_refs.items, .ret = ret_type_ref.expr, .is_extern = extra.data.bits.is_extern, .has_cc = extra.data.bits.has_cc, .has_align = extra.data.bits.has_align, .has_lib_name = extra.data.bits.has_lib_name, .lib_name = lib_name, .is_inferred_error = extra.data.bits.is_inferred_error, .cc = cc_index, .@"align" = align_index },
     };
 
     return DocData.WalkResult{