Merge pull request #8502 from xackus/std-docs

std docs: @This() in generic types
This commit is contained in:
Andrew Kelley 2021-04-12 11:37:00 -07:00 committed by GitHub
commit c4c7cb252a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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) {