mirror of
https://github.com/ziglang/zig.git
synced 2026-02-13 04:48:20 +00:00
Merge pull request #8502 from xackus/std-docs
std docs: @This() in generic types
This commit is contained in:
commit
c4c7cb252a
@ -269,7 +269,9 @@
|
||||
domFnNoExamples.classList.remove("hidden");
|
||||
} else if (calls != null) {
|
||||
if (fnObj.combined === undefined) fnObj.combined = allCompTimeFnCallsResult(calls);
|
||||
if (fnObj.combined != null) renderContainer(fnObj.combined);
|
||||
if (fnObj.combined != null) {
|
||||
renderContainer(fnObj.combined, calls.map(function (call) { return zigAnalysis.calls[call].result.value }));
|
||||
}
|
||||
|
||||
var domListFnExamplesFragment = createDomListFragment(calls.length, '<li></li>');
|
||||
|
||||
@ -484,25 +486,28 @@
|
||||
return domTemplate.content;
|
||||
}
|
||||
|
||||
function typeIndexName(typeIndex, wantHtml, wantLink, fnDecl, linkFnNameDecl) {
|
||||
function typeIndexName(typeIndex, wantHtml, wantLink, fnDecl, linkFnNameDecl, thisTypes) {
|
||||
if(thisTypes && thisTypes.includes(typeIndex)){
|
||||
return token('@This', tokenKinds.Builtin, wantHtml) + '()';
|
||||
}
|
||||
var typeObj = zigAnalysis.types[typeIndex];
|
||||
var declNameOk = declCanRepresentTypeKind(typeObj.kind);
|
||||
if (wantLink) {
|
||||
var declIndex = getCanonTypeDecl(typeIndex);
|
||||
var declPath = getCanonDeclPath(declIndex);
|
||||
if (declPath == null) {
|
||||
return typeName(typeObj, wantHtml, wantLink, fnDecl, linkFnNameDecl);
|
||||
return typeName(typeObj, wantHtml, wantLink, fnDecl, linkFnNameDecl, thisTypes);
|
||||
}
|
||||
var name = (wantLink && declCanRepresentTypeKind(typeObj.kind)) ?
|
||||
declPath.declNames[declPath.declNames.length - 1] :
|
||||
typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl);
|
||||
typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl, thisTypes);
|
||||
if (wantLink && wantHtml) {
|
||||
return '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">' + name + '</a>';
|
||||
} else {
|
||||
return name;
|
||||
}
|
||||
} else {
|
||||
return typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl);
|
||||
return typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl, thisTypes);
|
||||
}
|
||||
}
|
||||
|
||||
@ -574,23 +579,23 @@
|
||||
}
|
||||
}
|
||||
|
||||
function typeName(typeObj, wantHtml, wantSubLink, fnDecl, linkFnNameDecl) {
|
||||
function typeName(typeObj, wantHtml, wantSubLink, fnDecl, linkFnNameDecl, thisTypes) {
|
||||
switch (typeObj.kind) {
|
||||
case typeKinds.Array:
|
||||
var name = "[";
|
||||
name += token(typeObj.len, tokenKinds.Number, wantHtml);
|
||||
name += "]";
|
||||
name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);
|
||||
name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null, null, thisTypes);
|
||||
return name;
|
||||
case typeKinds.Vector:
|
||||
var name = "Vector(";
|
||||
name += token(typeObj.len, tokenKinds.Number, wantHtml);
|
||||
name += ", ";
|
||||
name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);
|
||||
name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null, null, thisTypes);
|
||||
name += ")";
|
||||
return name;
|
||||
case typeKinds.Optional:
|
||||
return "?" + typeIndexName(typeObj.child, wantHtml, wantSubLink, fnDecl, linkFnNameDecl);
|
||||
return "?" + typeIndexName(typeObj.child, wantHtml, wantSubLink, fnDecl, linkFnNameDecl, thisTypes);
|
||||
case typeKinds.Pointer:
|
||||
var name = "";
|
||||
switch (typeObj.len) {
|
||||
@ -626,7 +631,7 @@
|
||||
}
|
||||
name += ") ";
|
||||
}
|
||||
name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);
|
||||
name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null, null, thisTypes);
|
||||
return name;
|
||||
case typeKinds.Float:
|
||||
return token('f' + typeObj.bits, tokenKinds.Type, wantHtml);
|
||||
@ -660,12 +665,12 @@
|
||||
}
|
||||
case typeKinds.ErrorUnion:
|
||||
var errSetTypeObj = zigAnalysis.types[typeObj.err];
|
||||
var payloadHtml = typeIndexName(typeObj.payload, wantHtml, wantSubLink, null);
|
||||
var payloadHtml = typeIndexName(typeObj.payload, wantHtml, wantSubLink, null, null, thisTypes);
|
||||
if (fnDecl != null && errSetTypeObj.fn === fnDecl.value) {
|
||||
// function index parameter supplied and this is the inferred error set of it
|
||||
return "!" + payloadHtml;
|
||||
} else {
|
||||
return typeIndexName(typeObj.err, wantHtml, wantSubLink, null) + "!" + payloadHtml;
|
||||
return typeIndexName(typeObj.err, wantHtml, wantSubLink, null, null, thisTypes) + "!" + payloadHtml;
|
||||
}
|
||||
case typeKinds.Fn:
|
||||
var payloadHtml = "";
|
||||
@ -730,18 +735,18 @@
|
||||
if (isVarArgs && i === typeObj.args.length - 1) {
|
||||
payloadHtml += '...';
|
||||
} else if (argTypeIndex != null) {
|
||||
payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink);
|
||||
payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink, null, null, thisTypes);
|
||||
} else {
|
||||
payloadHtml += token('var', tokenKinds.Keyword, wantHtml);
|
||||
payloadHtml += token('anytype', tokenKinds.Keyword, wantHtml);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
payloadHtml += ') ';
|
||||
if (typeObj.ret != null) {
|
||||
payloadHtml += typeIndexName(typeObj.ret, wantHtml, wantSubLink, fnDecl);
|
||||
payloadHtml += typeIndexName(typeObj.ret, wantHtml, wantSubLink, fnDecl, null, thisTypes);
|
||||
} else {
|
||||
payloadHtml += token('var', tokenKinds.Keyword, wantHtml);
|
||||
payloadHtml += token('anytype', tokenKinds.Keyword, wantHtml);
|
||||
}
|
||||
return payloadHtml;
|
||||
case typeKinds.Frame:
|
||||
@ -751,7 +756,7 @@
|
||||
var name = token('anyframe', tokenKinds.Keyword, wantHtml);
|
||||
if (typeObj.result) {
|
||||
name += "->";
|
||||
name += typeIndexName(typeObj.result, wantHtml, wantSubLink, null);
|
||||
name += typeIndexName(typeObj.result, wantHtml, wantSubLink, null, null, thisTypes);
|
||||
}
|
||||
return name;
|
||||
default:
|
||||
@ -936,7 +941,7 @@
|
||||
domFnProto.classList.remove("hidden");
|
||||
}
|
||||
|
||||
function renderContainer(container) {
|
||||
function renderContainer(container, thisTypes) {
|
||||
var typesList = [];
|
||||
var namespacesList = [];
|
||||
var errSetsList = [];
|
||||
@ -1038,7 +1043,7 @@
|
||||
var tdFnCode = trDom.children[0];
|
||||
var tdDesc = trDom.children[1];
|
||||
|
||||
tdFnCode.innerHTML = typeIndexName(decl.type, true, true, decl, navLinkDecl(decl.name));
|
||||
tdFnCode.innerHTML = typeIndexName(decl.type, true, true, decl, navLinkDecl(decl.name), thisTypes);
|
||||
|
||||
var docs = zigAnalysis.astNodes[decl.src].docs;
|
||||
if (docs != null) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user