| ... | @@ -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 | } |
| 273 | | 275 | |
| 274 | var domListFnExamplesFragment = createDomListFragment(calls.length, '<li></li>'); | 276 | var domListFnExamplesFragment = createDomListFragment(calls.length, '<li></li>'); |
| 275 | | 277 | |
| ... | @@ -484,25 +486,28 @@ | ... | @@ -484,25 +486,28 @@ |
| 484 | return domTemplate.content; | 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 | 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 | } |
| 508 | | 513 | |
| ... | @@ -574,23 +579,23 @@ | ... | @@ -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 | 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 it | 670 | // 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,18 +735,18 @@ | ... | @@ -730,18 +735,18 @@ |
| 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('var', tokenKinds.Keyword, wantHtml); | 740 | payloadHtml += token('anytype', tokenKinds.Keyword, wantHtml); |
| 736 | } | 741 | } |
| 737 | } | 742 | } |
| 738 | } | 743 | } |
| 739 | | 744 | |
| 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('var', tokenKinds.Keyword, wantHtml); | 749 | payloadHtml += token('anytype', tokenKinds.Keyword, wantHtml); |
| 745 | } | 750 | } |
| 746 | return payloadHtml; | 751 | return payloadHtml; |
| 747 | case typeKinds.Frame: | 752 | case typeKinds.Frame: |
| ... | @@ -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 | } |
| 938 | | 943 | |
| 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]; |
| 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 | var docs = zigAnalysis.astNodes[decl.src].docs; | 1048 | var docs = zigAnalysis.astNodes[decl.src].docs; |
| 1044 | if (docs != null) { | 1049 | if (docs != null) { |