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 @@...@@ -269,7 +269,9 @@
269 domFnNoExamples.classList.remove("hidden");269 domFnNoExamples.classList.remove("hidden");
270 } else if (calls != null) {270 } else if (calls != null) {
271 if (fnObj.combined === undefined) fnObj.combined = allCompTimeFnCallsResult(calls);271 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
274 var domListFnExamplesFragment = createDomListFragment(calls.length, '<li></li>');276 var domListFnExamplesFragment = createDomListFragment(calls.length, '<li></li>');
275277
...@@ -484,25 +486,28 @@...@@ -484,25 +486,28 @@
484 return domTemplate.content;486 return domTemplate.content;
485 }487 }
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 }
488 var typeObj = zigAnalysis.types[typeIndex];493 var typeObj = zigAnalysis.types[typeIndex];
489 var declNameOk = declCanRepresentTypeKind(typeObj.kind);494 var declNameOk = declCanRepresentTypeKind(typeObj.kind);
490 if (wantLink) {495 if (wantLink) {
491 var declIndex = getCanonTypeDecl(typeIndex);496 var declIndex = getCanonTypeDecl(typeIndex);
492 var declPath = getCanonDeclPath(declIndex);497 var declPath = getCanonDeclPath(declIndex);
493 if (declPath == null) {498 if (declPath == null) {
494 return typeName(typeObj, wantHtml, wantLink, fnDecl, linkFnNameDecl);499 return typeName(typeObj, wantHtml, wantLink, fnDecl, linkFnNameDecl, thisTypes);
495 }500 }
496 var name = (wantLink && declCanRepresentTypeKind(typeObj.kind)) ?501 var name = (wantLink && declCanRepresentTypeKind(typeObj.kind)) ?
497 declPath.declNames[declPath.declNames.length - 1] :502 declPath.declNames[declPath.declNames.length - 1] :
498 typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl);503 typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl, thisTypes);
499 if (wantLink && wantHtml) {504 if (wantLink && wantHtml) {
500 return '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">' + name + '</a>';505 return '<a href="' + navLink(declPath.pkgNames, declPath.declNames) + '">' + name + '</a>';
501 } else {506 } else {
502 return name;507 return name;
503 }508 }
504 } else {509 } else {
505 return typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl);510 return typeName(typeObj, wantHtml, false, fnDecl, linkFnNameDecl, thisTypes);
506 }511 }
507 }512 }
508513
...@@ -574,23 +579,23 @@...@@ -574,23 +579,23 @@
574 }579 }
575 }580 }
576581
577 function typeName(typeObj, wantHtml, wantSubLink, fnDecl, linkFnNameDecl) {582 function typeName(typeObj, wantHtml, wantSubLink, fnDecl, linkFnNameDecl, thisTypes) {
578 switch (typeObj.kind) {583 switch (typeObj.kind) {
579 case typeKinds.Array:584 case typeKinds.Array:
580 var name = "[";585 var name = "[";
581 name += token(typeObj.len, tokenKinds.Number, wantHtml);586 name += token(typeObj.len, tokenKinds.Number, wantHtml);
582 name += "]";587 name += "]";
583 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);588 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null, null, thisTypes);
584 return name;589 return name;
585 case typeKinds.Vector:590 case typeKinds.Vector:
586 var name = "Vector(";591 var name = "Vector(";
587 name += token(typeObj.len, tokenKinds.Number, wantHtml);592 name += token(typeObj.len, tokenKinds.Number, wantHtml);
588 name += ", ";593 name += ", ";
589 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);594 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null, null, thisTypes);
590 name += ")";595 name += ")";
591 return name;596 return name;
592 case typeKinds.Optional:597 case typeKinds.Optional:
593 return "?" + typeIndexName(typeObj.child, wantHtml, wantSubLink, fnDecl, linkFnNameDecl);598 return "?" + typeIndexName(typeObj.child, wantHtml, wantSubLink, fnDecl, linkFnNameDecl, thisTypes);
594 case typeKinds.Pointer:599 case typeKinds.Pointer:
595 var name = "";600 var name = "";
596 switch (typeObj.len) {601 switch (typeObj.len) {
...@@ -626,7 +631,7 @@...@@ -626,7 +631,7 @@
626 }631 }
627 name += ") ";632 name += ") ";
628 }633 }
629 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null);634 name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null, null, thisTypes);
630 return name;635 return name;
631 case typeKinds.Float:636 case typeKinds.Float:
632 return token('f' + typeObj.bits, tokenKinds.Type, wantHtml);637 return token('f' + typeObj.bits, tokenKinds.Type, wantHtml);
...@@ -660,12 +665,12 @@...@@ -660,12 +665,12 @@
660 }665 }
661 case typeKinds.ErrorUnion:666 case typeKinds.ErrorUnion:
662 var errSetTypeObj = zigAnalysis.types[typeObj.err];667 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);
664 if (fnDecl != null && errSetTypeObj.fn === fnDecl.value) {669 if (fnDecl != null && errSetTypeObj.fn === fnDecl.value) {
665 // function index parameter supplied and this is the inferred error set of it670 // function index parameter supplied and this is the inferred error set of it
666 return "!" + payloadHtml;671 return "!" + payloadHtml;
667 } else {672 } else {
668 return typeIndexName(typeObj.err, wantHtml, wantSubLink, null) + "!" + payloadHtml;673 return typeIndexName(typeObj.err, wantHtml, wantSubLink, null, null, thisTypes) + "!" + payloadHtml;
669 }674 }
670 case typeKinds.Fn:675 case typeKinds.Fn:
671 var payloadHtml = "";676 var payloadHtml = "";
...@@ -730,7 +735,7 @@...@@ -730,7 +735,7 @@
730 if (isVarArgs && i === typeObj.args.length - 1) {735 if (isVarArgs && i === typeObj.args.length - 1) {
731 payloadHtml += '...';736 payloadHtml += '...';
732 } else if (argTypeIndex != null) {737 } else if (argTypeIndex != null) {
733 payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink);738 payloadHtml += typeIndexName(argTypeIndex, wantHtml, wantSubLink, null, null, thisTypes);
734 } else {739 } else {
735 payloadHtml += token('anytype', tokenKinds.Keyword, wantHtml);740 payloadHtml += token('anytype', tokenKinds.Keyword, wantHtml);
736 }741 }
...@@ -739,7 +744,7 @@...@@ -739,7 +744,7 @@
739744
740 payloadHtml += ') ';745 payloadHtml += ') ';
741 if (typeObj.ret != null) {746 if (typeObj.ret != null) {
742 payloadHtml += typeIndexName(typeObj.ret, wantHtml, wantSubLink, fnDecl);747 payloadHtml += typeIndexName(typeObj.ret, wantHtml, wantSubLink, fnDecl, null, thisTypes);
743 } else {748 } else {
744 payloadHtml += token('anytype', tokenKinds.Keyword, wantHtml);749 payloadHtml += token('anytype', tokenKinds.Keyword, wantHtml);
745 }750 }
...@@ -751,7 +756,7 @@...@@ -751,7 +756,7 @@
751 var name = token('anyframe', tokenKinds.Keyword, wantHtml);756 var name = token('anyframe', tokenKinds.Keyword, wantHtml);
752 if (typeObj.result) {757 if (typeObj.result) {
753 name += "->";758 name += "->";
754 name += typeIndexName(typeObj.result, wantHtml, wantSubLink, null);759 name += typeIndexName(typeObj.result, wantHtml, wantSubLink, null, null, thisTypes);
755 }760 }
756 return name;761 return name;
757 default:762 default:
...@@ -936,7 +941,7 @@...@@ -936,7 +941,7 @@
936 domFnProto.classList.remove("hidden");941 domFnProto.classList.remove("hidden");
937 }942 }
938943
939 function renderContainer(container) {944 function renderContainer(container, thisTypes) {
940 var typesList = [];945 var typesList = [];
941 var namespacesList = [];946 var namespacesList = [];
942 var errSetsList = [];947 var errSetsList = [];
...@@ -1038,7 +1043,7 @@...@@ -1038,7 +1043,7 @@
1038 var tdFnCode = trDom.children[0];1043 var tdFnCode = trDom.children[0];
1039 var tdDesc = trDom.children[1];1044 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
1043 var docs = zigAnalysis.astNodes[decl.src].docs;1048 var docs = zigAnalysis.astNodes[decl.src].docs;
1044 if (docs != null) {1049 if (docs != null) {