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