authorgravatar for 14938807+xackus@users.noreply.github.comxackus <14938807+xackus@users.noreply.github.com> 2021-04-12 09:31:45+02:00
committergravatar for 14938807+xackus@users.noreply.github.comxackus <14938807+xackus@users.noreply.github.com> 2021-04-12 09:31:45+02:00
logab991cab84ad1186579c023493382e90daf0b4cf
treefa94db5eb2d8a113ba3962ca75613ecc75d61c17
parent7857ad78dbdfd1014ba5fe8126e09f656297ee3e

std docs: @This() in generic types


1 files changed, 22 insertions(+), 17 deletions(-)

lib/std/special/docs/main.js+22-17
......@@ -269,7 +269,9 @@
269269 domFnNoExamples.classList.remove("hidden");
270270 } else if (calls != null) {
271271 if (fnObj.combined === undefined) fnObj.combined = allCompTimeFnCallsResult(calls);
272 if (fnObj.combined != null) renderContainer(fnObj.combined);
272 if (fnObj.combined != null) {
273 renderContainer(fnObj.combined, calls.map(function (call) { return zigAnalysis.calls[call].result.value }));
274 }
273275
274276 var domListFnExamplesFragment = createDomListFragment(calls.length, '<li></li>');
275277
......@@ -484,25 +486,28 @@
484486 return domTemplate.content;
485487 }
486488
487 function typeIndexName(typeIndex, wantHtml, wantLink, fnDecl, linkFnNameDecl) {
489 function typeIndexName(typeIndex, wantHtml, wantLink, fnDecl, linkFnNameDecl, thisTypes) {
490 if(thisTypes && thisTypes.includes(typeIndex)){
491 return token('@This', tokenKinds.Builtin, wantHtml) + '()';
492 }
488493 var typeObj = zigAnalysis.types[typeIndex];
489494 var declNameOk = declCanRepresentTypeKind(typeObj.kind);
490495 if (wantLink) {
491496 var declIndex = getCanonTypeDecl(typeIndex);
492497 var declPath = getCanonDeclPath(declIndex);
493498 if (declPath == null) {
494 return typeName(typeObj, wantHtml, wantLink, fnDecl, linkFnNameDecl);
499 return typeName(typeObj, wantHtml, wantLink, fnDecl, linkFnNameDecl, thisTypes);
495500 }
496501 var name = (wantLink && declCanRepresentTypeKind(typeObj.kind)) ?
497502 declPath.declNames[declPath.declNames.length - 1] :
498 typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl);
503 typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl, thisTypes);
499504 if (wantLink && wantHtml) {
500505 return '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">' + name + '</a>';
501506 } else {
502507 return name;
503508 }
504509 } else {
505 return typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl);
510 return typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl, thisTypes);
506511 }
507512 }
508513
......@@ -574,23 +579,23 @@
574579 }
575580 }
576581
577 function typeName(typeObj, wantHtml, wantSubLink, fnDecl, linkFnNameDecl) {
582 function typeName(typeObj, wantHtml, wantSubLink, fnDecl, linkFnNameDecl, thisTypes) {
578583 switch (typeObj.kind) {
579584 case typeKinds.Array:
580585 var name = "[";
581586 name += token(typeObj.len, tokenKinds.Number, wantHtml);
582587 name += "]";
583 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);
588 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null, null, thisTypes);
584589 return name;
585590 case typeKinds.Vector:
586591 var name = "Vector(";
587592 name += token(typeObj.len, tokenKinds.Number, wantHtml);
588593 name += ", ";
589 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);
594 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null, null, thisTypes);
590595 name += ")";
591596 return name;
592597 case typeKinds.Optional:
593 return "?" + typeIndexName(typeObj.child, wantHtml, wantSubLink, fnDecl, linkFnNameDecl);
598 return "?" + typeIndexName(typeObj.child, wantHtml, wantSubLink, fnDecl, linkFnNameDecl, thisTypes);
594599 case typeKinds.Pointer:
595600 var name = "";
596601 switch (typeObj.len) {
......@@ -626,7 +631,7 @@
626631 }
627632 name += ") ";
628633 }
629 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);
634 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null, null, thisTypes);
630635 return name;
631636 case typeKinds.Float:
632637 return token('f' + typeObj.bits, tokenKinds.Type, wantHtml);
......@@ -660,12 +665,12 @@
660665 }
661666 case typeKinds.ErrorUnion:
662667 var errSetTypeObj = zigAnalysis.types[typeObj.err];
663 var payloadHtml = typeIndexName(typeObj.payload, wantHtml, wantSubLink, null);
668 var payloadHtml = typeIndexName(typeObj.payload, wantHtml, wantSubLink, null, null, thisTypes);
664669 if (fnDecl != null && errSetTypeObj.fn === fnDecl.value) {
665670 // function index parameter supplied and this is the inferred error set of it
666671 return "!" + payloadHtml;
667672 } else {
668 return typeIndexName(typeObj.err, wantHtml, wantSubLink, null) + "!" + payloadHtml;
673 return typeIndexName(typeObj.err, wantHtml, wantSubLink, null, null, thisTypes) + "!" + payloadHtml;
669674 }
670675 case typeKinds.Fn:
671676 var payloadHtml = "";
......@@ -730,7 +735,7 @@
730735 if (isVarArgs && i === typeObj.args.length - 1) {
731736 payloadHtml += '...';
732737 } else if (argTypeIndex != null) {
733 payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink);
738 payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink, null, null, thisTypes);
734739 } else {
735740 payloadHtml += token('anytype', tokenKinds.Keyword, wantHtml);
736741 }
......@@ -739,7 +744,7 @@
739744
740745 payloadHtml += ') ';
741746 if (typeObj.ret != null) {
742 payloadHtml += typeIndexName(typeObj.ret, wantHtml, wantSubLink, fnDecl);
747 payloadHtml += typeIndexName(typeObj.ret, wantHtml, wantSubLink, fnDecl, null, thisTypes);
743748 } else {
744749 payloadHtml += token('anytype', tokenKinds.Keyword, wantHtml);
745750 }
......@@ -751,7 +756,7 @@
751756 var name = token('anyframe', tokenKinds.Keyword, wantHtml);
752757 if (typeObj.result) {
753758 name += "->";
754 name += typeIndexName(typeObj.result, wantHtml, wantSubLink, null);
759 name += typeIndexName(typeObj.result, wantHtml, wantSubLink, null, null, thisTypes);
755760 }
756761 return name;
757762 default:
......@@ -936,7 +941,7 @@
936941 domFnProto.classList.remove("hidden");
937942 }
938943
939 function renderContainer(container) {
944 function renderContainer(container, thisTypes) {
940945 var typesList = [];
941946 var namespacesList = [];
942947 var errSetsList = [];
......@@ -1038,7 +1043,7 @@
10381043 var tdFnCode = trDom.children[0];
10391044 var tdDesc = trDom.children[1];
10401045
1041 tdFnCode.innerHTML = typeIndexName(decl.type, true, true, decl, navLinkDecl(decl.name));
1046 tdFnCode.innerHTML = typeIndexName(decl.type, true, true, decl, navLinkDecl(decl.name), thisTypes);
10421047
10431048 var docs = zigAnalysis.astNodes[decl.src].docs;
10441049 if (docs != null) {