mirror of
https://github.com/ziglang/zig.git
synced 2026-02-13 04:48:20 +00:00
autodoc: fix bodyless fn type analysis and rendering
This commit is contained in:
parent
c6ea551c7d
commit
1878bdfbb1
@ -640,6 +640,7 @@
|
||||
<div id="sectNav" class="hidden"><ul id="listNav"></ul></div>
|
||||
<div id="fnProto" class="hidden">
|
||||
<div class="mobile-scroll-container"><pre id="fnProtoCode" class="scroll-item"></pre></div>
|
||||
<div id="fnSourceLink" style="display:flex;flex-direction:row;justify-content:flex-end;"></div>
|
||||
</div>
|
||||
<h1 id="hdrName" class="hidden"></h1>
|
||||
<div id="fnNoExamples" class="hidden">
|
||||
|
||||
@ -29,6 +29,7 @@ var zigAnalysis;
|
||||
const domListValues = document.getElementById("listValues");
|
||||
const domFnProto = document.getElementById("fnProto");
|
||||
const domFnProtoCode = document.getElementById("fnProtoCode");
|
||||
const domFnSourceLink = document.getElementById("fnSourceLink");
|
||||
const domSectParams = document.getElementById("sectParams");
|
||||
const domListParams = document.getElementById("listParams");
|
||||
const domTldDocs = document.getElementById("tldDocs");
|
||||
@ -548,6 +549,8 @@ var zigAnalysis;
|
||||
wantLink: true,
|
||||
fnDecl,
|
||||
});
|
||||
|
||||
domFnSourceLink.innerHTML = "[<a target=\"_blank\" href=\"" + sourceFileLink(fnDecl) + "\">src</a>]";
|
||||
|
||||
let docsSource = null;
|
||||
let srcNode = getAstNode(fnDecl.src);
|
||||
@ -1839,7 +1842,14 @@ var zigAnalysis;
|
||||
}
|
||||
case typeKinds.Fn: {
|
||||
let fnObj = typeObj;
|
||||
let fnDecl = opts.fnDecl;
|
||||
let linkFnNameDecl = opts.linkFnNameDecl;
|
||||
opts.fnDecl = null;
|
||||
opts.linkFnNameDecl = null;
|
||||
let payloadHtml = "";
|
||||
if (opts.addParensIfFnSignature && fnObj.src == 0){
|
||||
payloadHtml += "(";
|
||||
}
|
||||
if (opts.wantHtml) {
|
||||
if (fnObj.is_extern) {
|
||||
payloadHtml += "pub extern ";
|
||||
@ -1847,21 +1857,16 @@ var zigAnalysis;
|
||||
if (fnObj.has_lib_name) {
|
||||
payloadHtml += '"' + fnObj.lib_name + '" ';
|
||||
}
|
||||
payloadHtml += '<span class="tok-kw">fn</span>';
|
||||
if (opts.fnDecl) {
|
||||
payloadHtml += ' <span class="tok-fn">';
|
||||
if (opts.linkFnNameDecl) {
|
||||
payloadHtml += '<span class="tok-kw">fn </span>';
|
||||
if (fnDecl) {
|
||||
payloadHtml += '<span class="tok-fn">';
|
||||
if (linkFnNameDecl) {
|
||||
payloadHtml +=
|
||||
'<a href="' +
|
||||
opts.linkFnNameDecl +
|
||||
'">' +
|
||||
escapeHtml(opts.fnDecl.name) +
|
||||
'<a href="' + linkFnNameDecl + '">' +
|
||||
escapeHtml(fnDecl.name) +
|
||||
"</a>";
|
||||
} else {
|
||||
payloadHtml += escapeHtml(opts.fnDecl.name);
|
||||
payloadHtml = "<a target=\"_blank\" href=\"" +
|
||||
sourceFileLink(opts.fnDecl) + "\">" +
|
||||
escapeHtml(opts.fnDecl.name) + "</a>";
|
||||
payloadHtml += escapeHtml(fnDecl.name);
|
||||
}
|
||||
payloadHtml += "</span>";
|
||||
}
|
||||
@ -1872,10 +1877,12 @@ var zigAnalysis;
|
||||
if (fnObj.params) {
|
||||
let fields = null;
|
||||
let isVarArgs = false;
|
||||
let fnNode = getAstNode(fnObj.src);
|
||||
fields = fnNode.fields;
|
||||
isVarArgs = fnNode.varArgs;
|
||||
|
||||
if (fnObj.src != 0) {
|
||||
let fnNode = getAstNode(fnObj.src);
|
||||
fields = fnNode.fields;
|
||||
isVarArgs = fnNode.varArgs;
|
||||
}
|
||||
|
||||
for (let i = 0; i < fnObj.params.length; i += 1) {
|
||||
if (i != 0) {
|
||||
payloadHtml += ", ";
|
||||
@ -1989,10 +1996,9 @@ var zigAnalysis;
|
||||
}
|
||||
} else if ("type" in value) {
|
||||
let name = exprName(value, {
|
||||
...opts,
|
||||
wantHtml: false,
|
||||
wantLink: false,
|
||||
fnDecl: opts.fnDecl,
|
||||
linkFnNameDecl: opts.linkFnNameDecl,
|
||||
});
|
||||
payloadHtml += '<span class="tok-kw">' + name + "</span>";
|
||||
} else if ("binOpIndex" in value) {
|
||||
@ -2032,12 +2038,19 @@ var zigAnalysis;
|
||||
payloadHtml += "!";
|
||||
}
|
||||
if (fnObj.ret != null) {
|
||||
payloadHtml += exprName(fnObj.ret, opts);
|
||||
payloadHtml += exprName(fnObj.ret, {
|
||||
...opts,
|
||||
addParensIfFnSignature: true,
|
||||
});
|
||||
} else if (opts.wantHtml) {
|
||||
payloadHtml += '<span class="tok-kw">anytype</span>';
|
||||
} else {
|
||||
payloadHtml += "anytype";
|
||||
}
|
||||
|
||||
if (opts.addParensIfFnSignature && fnObj.src == 0){
|
||||
payloadHtml += ")";
|
||||
}
|
||||
return payloadHtml;
|
||||
}
|
||||
// if (wantHtml) {
|
||||
|
||||
@ -3807,10 +3807,15 @@ fn analyzeFancyFunction(
|
||||
else => null,
|
||||
};
|
||||
|
||||
// if we're analyzing a funcion signature (ie without body), we
|
||||
// actually don't have an ast_node reserved for us, but since
|
||||
// we don't have a name, we don't need it.
|
||||
const src = if (fn_info.body.len == 0) 0 else self_ast_node_index;
|
||||
|
||||
self.types.items[type_slot_index] = .{
|
||||
.Fn = .{
|
||||
.name = "todo_name func",
|
||||
.src = self_ast_node_index,
|
||||
.src = src,
|
||||
.params = param_type_refs.items,
|
||||
.ret = ret_type_ref,
|
||||
.generic_ret = generic_ret,
|
||||
@ -3955,11 +3960,16 @@ fn analyzeFunction(
|
||||
} else break :blk ret_type_ref;
|
||||
};
|
||||
|
||||
// if we're analyzing a funcion signature (ie without body), we
|
||||
// actually don't have an ast_node reserved for us, but since
|
||||
// we don't have a name, we don't need it.
|
||||
const src = if (fn_info.body.len == 0) 0 else self_ast_node_index;
|
||||
|
||||
self.ast_nodes.items[self_ast_node_index].fields = param_ast_indexes.items;
|
||||
self.types.items[type_slot_index] = .{
|
||||
.Fn = .{
|
||||
.name = "todo_name func",
|
||||
.src = self_ast_node_index,
|
||||
.src = src,
|
||||
.params = param_type_refs.items,
|
||||
.ret = ret_type,
|
||||
.generic_ret = generic_ret,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user