| ... | @@ -33,26 +33,27 @@ | ... | @@ -33,26 +33,27 @@ |
| 33 | */ | 33 | */ |
| 34 | | 34 | |
| 35 | /** | 35 | /** |
| 36 | * @typedef { | 36 | * @typedef {{ |
| 37 | | { void: {} } | 37 | void: {}, |
| 38 | | { unreachable: {} } | 38 | unreachable: {}, |
| 39 | | { anytype: {} } | 39 | anytype: {}, |
| 40 | | { type: number } | 40 | type: number, |
| 41 | | { comptimeExpr: number } | 41 | comptimeExpr: number, |
| 42 | | { call: number } | 42 | call: number, |
| 43 | | { int: { typeRef: WalkResult; value: number } } | 43 | int: { typeRef: WalkResult; value: number }, |
| 44 | | { float: { typeRef: WalkResult; value: number } } | 44 | float: { typeRef: WalkResult; value: number }, |
| 45 | | { bool: boolean } | 45 | bool: boolean, |
| 46 | | { undefined: WalkResult } | 46 | undefined: WalkResult, |
| 47 | | { null: WalkResult } | 47 | null: WalkResult, |
| 48 | | { typeOf: WalkResult } | 48 | typeOf: WalkResult, |
| 49 | | { compileError: string } | 49 | compileError: string, |
| 50 | | { string: string } | 50 | string: string, |
| 51 | | { struct: Struct } | 51 | struct: Struct, |
| 52 | | { refPath: WalkResult[] } | 52 | refPath: WalkResult[], |
| 53 | | { array: ZigArray } | 53 | declRef: number, |
| 54 | | { enumLiteral: string } | 54 | array: ZigArray, |
| 55 | } WalkResult | 55 | enumLiteral: string, |
| | 56 | }} WalkResult |
| 56 | */ | 57 | */ |
| 57 | | 58 | |
| 58 | /** | 59 | /** |
| ... | @@ -76,16 +77,70 @@ | ... | @@ -76,16 +77,70 @@ |
| 76 | }} Fn | 77 | }} Fn |
| 77 | */ | 78 | */ |
| 78 | | 79 | |
| | 80 | /** |
| | 81 | * @typedef {{ |
| | 82 | kind: number, |
| | 83 | name: string, |
| | 84 | fields: { name: string, docs: string }[] |
| | 85 | fn: number | undefined, |
| | 86 | }} ErrSetType |
| | 87 | */ |
| | 88 | |
| | 89 | /** |
| | 90 | * @typedef {{ |
| | 91 | kind: number, |
| | 92 | err: WalkResult, |
| | 93 | payload: WalkResult, |
| | 94 | }} ErrUnionType |
| | 95 | */ |
| | 96 | |
| | 97 | // Type, Void, Bool, NoReturn, Int, Float, ComptimeExpr, ComptimeFloat, ComptimeInt, Undefined, Null, ErrorUnion, BoundFn, Opaque, Frame, AnyFrame, Vector, EnumLiteral |
| | 98 | /** |
| | 99 | * @typedef {{ |
| | 100 | kind: number, |
| | 101 | name: string |
| | 102 | }} NumberType |
| | 103 | */ |
| | 104 | |
| | 105 | /** |
| | 106 | * @typedef {{ |
| | 107 | kind: number, |
| | 108 | size: number, |
| | 109 | child: WalkResult |
| | 110 | align: number, |
| | 111 | bitOffsetInHost: number, |
| | 112 | hostIntBytes: number, |
| | 113 | volatile: boolean, |
| | 114 | const: boolean, |
| | 115 | }} PointerType |
| | 116 | */ |
| | 117 | |
| | 118 | /** |
| | 119 | * @typedef {{ |
| | 120 | kind: number, |
| | 121 | len: WalkResult |
| | 122 | child: WalkResult |
| | 123 | }} ArrayType |
| | 124 | */ |
| | 125 | |
| | 126 | /** |
| | 127 | * @typedef {{ |
| | 128 | kind: number, |
| | 129 | name: string, |
| | 130 | child: WalkResult |
| | 131 | }} OptionalType |
| | 132 | */ |
| 79 | | 133 | |
| 80 | /** | 134 | /** |
| 81 | * @typedef { | 135 | * @typedef { |
| 82 | | { kind: number, name: string } // Type, Void, Bool, NoReturn, Int, Float, ComptimeExpr, ComptimeFloat, ComptimeInt, Undefined, Null, ErrorUnion, BoundFn, Opaque, Frame, AnyFrame, Vector, EnumLiteral | 136 | | OptionalType |
| 83 | | { kind: number, name: string; child: WalkResult } // Optional | 137 | | ArrayType |
| 84 | | { kind: number, len: WalkResult; child: WalkResult } // Array | 138 | | PointerType |
| 85 | | { kind: number, name: string; fields: { name: string; docs: string }[] } // ErrorSet | | |
| 86 | | { kind: number, size: "One" | "Many" | "Slice" | "C"; child: WalkResult } // Pointer | | |
| 87 | | ContainerType | 139 | | ContainerType |
| 88 | | Fn | 140 | | Fn |
| | 141 | | ErrSetType |
| | 142 | | ErrUnionType |
| | 143 | | NumberType |
| 89 | } Type | 144 | } Type |
| 90 | */ | 145 | */ |
| 91 | | 146 | |
| ... | @@ -107,6 +162,8 @@ | ... | @@ -107,6 +162,8 @@ |
| 107 | docs?: string, | 162 | docs?: string, |
| 108 | fields?: number[], | 163 | fields?: number[], |
| 109 | comptime: boolean, | 164 | comptime: boolean, |
| | 165 | noalias: boolean, |
| | 166 | varArgs: boolean, |
| 110 | }} AstNode | 167 | }} AstNode |
| 111 | */ | 168 | */ |
| 112 | | 169 | |
| ... | @@ -117,7 +174,7 @@ | ... | @@ -117,7 +174,7 @@ |
| 117 | src: number, | 174 | src: number, |
| 118 | value: WalkResult, | 175 | value: WalkResult, |
| 119 | decltest?: number, | 176 | decltest?: number, |
| 120 | isTest: bool, | 177 | isTest: boolean, |
| 121 | }} Decl | 178 | }} Decl |
| 122 | */ | 179 | */ |
| 123 | | 180 | |
| ... | @@ -223,7 +280,7 @@ var zigAnalysis; | ... | @@ -223,7 +280,7 @@ var zigAnalysis; |
| 223 | var domSectSearchNoResults = /** @type HTMLElement */(document.getElementById("sectSearchNoResults")); | 280 | var domSectSearchNoResults = /** @type HTMLElement */(document.getElementById("sectSearchNoResults")); |
| 224 | var domSectInfo = /** @type HTMLElement */(document.getElementById("sectInfo")); | 281 | var domSectInfo = /** @type HTMLElement */(document.getElementById("sectInfo")); |
| 225 | var domTdTarget = /** @type HTMLElement */(document.getElementById("tdTarget")); | 282 | var domTdTarget = /** @type HTMLElement */(document.getElementById("tdTarget")); |
| 226 | var domPrivDeclsBox = /** @type HTMLElement */(document.getElementById("privDeclsBox")); | 283 | var domPrivDeclsBox = /** @type HTMLCheckboxElement */(document.getElementById("privDeclsBox")); |
| 227 | var domTdZigVer = /** @type HTMLElement */(document.getElementById("tdZigVer")); | 284 | var domTdZigVer = /** @type HTMLElement */(document.getElementById("tdZigVer")); |
| 228 | var domHdrName = /** @type HTMLElement */(document.getElementById("hdrName")); | 285 | var domHdrName = /** @type HTMLElement */(document.getElementById("hdrName")); |
| 229 | var domHelpModal = /** @type HTMLElement */(document.getElementById("helpDialog")); | 286 | var domHelpModal = /** @type HTMLElement */(document.getElementById("helpDialog")); |
| ... | @@ -252,7 +309,7 @@ var zigAnalysis; | ... | @@ -252,7 +309,7 @@ var zigAnalysis; |
| 252 | var canonTypeDecls = null; // lazy; use getCanonTypeDecl | 309 | var canonTypeDecls = null; // lazy; use getCanonTypeDecl |
| 253 | | 310 | |
| 254 | /** @typedef {{ | 311 | /** @typedef {{ |
| 255 | * showPrivDecls: bool, | 312 | * showPrivDecls: boolean, |
| 256 | * pkgNames: string[], | 313 | * pkgNames: string[], |
| 257 | * pkgObjs: Package[], | 314 | * pkgObjs: Package[], |
| 258 | * declNames: string[], | 315 | * declNames: string[], |
| ... | @@ -598,6 +655,7 @@ var zigAnalysis; | ... | @@ -598,6 +655,7 @@ var zigAnalysis; |
| 598 | return typeObj.generic; | 655 | return typeObj.generic; |
| 599 | } | 656 | } |
| 600 | | 657 | |
| | 658 | /** @param {Decl} fnDecl */ |
| 601 | function renderFn(fnDecl) { | 659 | function renderFn(fnDecl) { |
| 602 | var value = resolveValue(fnDecl.value); | 660 | var value = resolveValue(fnDecl.value); |
| 603 | console.assert("type" in value); | 661 | console.assert("type" in value); |
| ... | @@ -622,31 +680,32 @@ var zigAnalysis; | ... | @@ -622,31 +680,32 @@ var zigAnalysis; |
| 622 | errSetTypeIndex = retType.err; | 680 | errSetTypeIndex = retType.err; |
| 623 | } | 681 | } |
| 624 | if (errSetTypeIndex != null) { | 682 | if (errSetTypeIndex != null) { |
| 625 | var errSetType = zigAnalysis.types[errSetTypeIndex]; | 683 | var errSetType = /** @type {ErrSetType} */(zigAnalysis.types[errSetTypeIndex]); |
| 626 | renderErrorSet(errSetType); | 684 | renderErrorSet(errSetType); |
| 627 | } | 685 | } |
| 628 | | 686 | |
| 629 | var protoSrcIndex = fnDecl.src; | 687 | var protoSrcIndex = fnDecl.src; |
| 630 | if (typeIsGenericFn(value.type)) { | 688 | if (typeIsGenericFn(value.type)) { |
| 631 | var instantiations = nodesToFnsMap[protoSrcIndex]; | 689 | throw "TODO"; |
| 632 | var calls = nodesToCallsMap[protoSrcIndex]; | 690 | // var instantiations = nodesToFnsMap[protoSrcIndex]; |
| 633 | if (instantiations == null && calls == null) { | 691 | // var calls = nodesToCallsMap[protoSrcIndex]; |
| 634 | domFnNoExamples.classList.remove("hidden"); | 692 | // if (instantiations == null && calls == null) { |
| 635 | } else if (calls != null) { | 693 | // domFnNoExamples.classList.remove("hidden"); |
| 636 | // if (fnObj.combined === undefined) fnObj.combined = allCompTimeFnCallsResult(calls); | 694 | // } else if (calls != null) { |
| 637 | if (fnObj.combined != null) renderContainer(fnObj.combined); | 695 | // // if (fnObj.combined === undefined) fnObj.combined = allCompTimeFnCallsResult(calls); |
| 638 | | 696 | // if (fnObj.combined != null) renderContainer(fnObj.combined); |
| 639 | resizeDomList(domListFnExamples, calls.length, '<li></li>'); | 697 | |
| 640 | | 698 | // resizeDomList(domListFnExamples, calls.length, '<li></li>'); |
| 641 | for (var callI = 0; callI < calls.length; callI += 1) { | 699 | |
| 642 | var liDom = domListFnExamples.children[callI]; | 700 | // for (var callI = 0; callI < calls.length; callI += 1) { |
| 643 | liDom.innerHTML = getCallHtml(fnDecl, calls[callI]); | 701 | // var liDom = domListFnExamples.children[callI]; |
| 644 | } | 702 | // liDom.innerHTML = getCallHtml(fnDecl, calls[callI]); |
| 645 | | 703 | // } |
| 646 | domFnExamples.classList.remove("hidden"); | 704 | |
| 647 | } else if (instantiations != null) { | 705 | // domFnExamples.classList.remove("hidden"); |
| 648 | // TODO | 706 | // } else if (instantiations != null) { |
| 649 | } | 707 | // // TODO |
| | 708 | // } |
| 650 | } else { | 709 | } else { |
| 651 | | 710 | |
| 652 | domFnExamples.classList.add("hidden"); | 711 | domFnExamples.classList.add("hidden"); |
| ... | @@ -664,11 +723,15 @@ var zigAnalysis; | ... | @@ -664,11 +723,15 @@ var zigAnalysis; |
| 664 | domFnProto.classList.remove("hidden"); | 723 | domFnProto.classList.remove("hidden"); |
| 665 | } | 724 | } |
| 666 | | 725 | |
| | 726 | /** |
| | 727 | * @param {Decl} fnDecl |
| | 728 | * @param {Fn} typeObj |
| | 729 | */ |
| 667 | function renderFnParamDocs(fnDecl, typeObj) { | 730 | function renderFnParamDocs(fnDecl, typeObj) { |
| 668 | var docCount = 0; | 731 | var docCount = 0; |
| 669 | | 732 | |
| 670 | var fnNode = zigAnalysis.astNodes[fnDecl.src]; | 733 | var fnNode = zigAnalysis.astNodes[fnDecl.src]; |
| 671 | var fields = fnNode.fields; | 734 | var fields = /** @type {number[]} */(fnNode.fields); |
| 672 | var isVarArgs = fnNode.varArgs; | 735 | var isVarArgs = fnNode.varArgs; |
| 673 | | 736 | |
| 674 | for (var i = 0; i < fields.length; i += 1) { | 737 | for (var i = 0; i < fields.length; i += 1) { |
| ... | @@ -696,11 +759,11 @@ var zigAnalysis; | ... | @@ -696,11 +759,11 @@ var zigAnalysis; |
| 696 | | 759 | |
| 697 | | 760 | |
| 698 | var value = typeObj.params[i]; | 761 | var value = typeObj.params[i]; |
| 699 | var html = '<pre>' + escapeHtml(fieldNode.name) + ": "; | 762 | var html = '<pre>' + escapeHtml(/** @type {string} */(fieldNode.name)) + ": "; |
| 700 | if (isVarArgs && i === typeObj.params.length - 1) { | 763 | if (isVarArgs && i === typeObj.params.length - 1) { |
| 701 | html += '...'; | 764 | html += '...'; |
| 702 | } else { | 765 | } else { |
| 703 | var name = typeValueName(value); | 766 | var name = typeValueName(value, false, false); |
| 704 | html += '<span class="tok-kw">' + name + '</span>'; | 767 | html += '<span class="tok-kw">' + name + '</span>'; |
| 705 | } | 768 | } |
| 706 | | 769 | |
| ... | @@ -720,7 +783,7 @@ var zigAnalysis; | ... | @@ -720,7 +783,7 @@ var zigAnalysis; |
| 720 | resizeDomList(domListNav, len, '<li><a href="#"></a></li>'); | 783 | resizeDomList(domListNav, len, '<li><a href="#"></a></li>'); |
| 721 | var list = []; | 784 | var list = []; |
| 722 | var hrefPkgNames = []; | 785 | var hrefPkgNames = []; |
| 723 | var hrefDeclNames = []; | 786 | var hrefDeclNames = /** @type {string[]} */([]); |
| 724 | for (var i = 0; i < curNav.pkgNames.length; i += 1) { | 787 | for (var i = 0; i < curNav.pkgNames.length; i += 1) { |
| 725 | hrefPkgNames.push(curNav.pkgNames[i]); | 788 | hrefPkgNames.push(curNav.pkgNames[i]); |
| 726 | list.push({ | 789 | list.push({ |
| ... | @@ -753,7 +816,7 @@ var zigAnalysis; | ... | @@ -753,7 +816,7 @@ var zigAnalysis; |
| 753 | | 816 | |
| 754 | function renderInfo() { | 817 | function renderInfo() { |
| 755 | domTdZigVer.textContent = zigAnalysis.params.zigVersion; | 818 | domTdZigVer.textContent = zigAnalysis.params.zigVersion; |
| 756 | domTdTarget.textContent = zigAnalysis.params.builds[0].target; | 819 | //domTdTarget.textContent = zigAnalysis.params.builds[0].target; |
| 757 | | 820 | |
| 758 | domSectInfo.classList.remove("hidden"); | 821 | domSectInfo.classList.remove("hidden"); |
| 759 | } | 822 | } |
| ... | @@ -809,6 +872,12 @@ var zigAnalysis; | ... | @@ -809,6 +872,12 @@ var zigAnalysis; |
| 809 | } | 872 | } |
| 810 | } | 873 | } |
| 811 | | 874 | |
| | 875 | /** |
| | 876 | * @param {string[]} pkgNames |
| | 877 | * @param {string[]} declNames |
| | 878 | * @param {string} [callName] |
| | 879 | */ |
| | 880 | |
| 812 | function navLink(pkgNames, declNames, callName) { | 881 | function navLink(pkgNames, declNames, callName) { |
| 813 | let base = '#'; | 882 | let base = '#'; |
| 814 | if (curNav.showPrivDecls) { | 883 | if (curNav.showPrivDecls) { |
| ... | @@ -826,23 +895,26 @@ var zigAnalysis; | ... | @@ -826,23 +895,26 @@ var zigAnalysis; |
| 826 | } | 895 | } |
| 827 | } | 896 | } |
| 828 | | 897 | |
| | 898 | /** @param {number} pkgIndex */ |
| 829 | function navLinkPkg(pkgIndex) { | 899 | function navLinkPkg(pkgIndex) { |
| 830 | return navLink(canonPkgPaths[pkgIndex], []); | 900 | return navLink(canonPkgPaths[pkgIndex], []); |
| 831 | } | 901 | } |
| 832 | | 902 | |
| | 903 | /** @param {string} childName */ |
| 833 | function navLinkDecl(childName) { | 904 | function navLinkDecl(childName) { |
| 834 | return navLink(curNav.pkgNames, curNav.declNames.concat([childName])); | 905 | return navLink(curNav.pkgNames, curNav.declNames.concat([childName])); |
| 835 | } | 906 | } |
| 836 | | 907 | |
| | 908 | /** @param {Call} callObj */ |
| 837 | function navLinkCall(callObj) { | 909 | function navLinkCall(callObj) { |
| 838 | var declNamesCopy = curNav.declNames.concat([]); | 910 | var declNamesCopy = curNav.declNames.concat([]); |
| 839 | var callName = declNamesCopy.pop(); | 911 | var callName = /** @type {string} */(declNamesCopy.pop()); |
| 840 | | 912 | |
| 841 | callName += '('; | 913 | callName += '('; |
| 842 | for (var arg_i = 0; arg_i < callObj.args.length; arg_i += 1) { | 914 | for (var arg_i = 0; arg_i < callObj.args.length; arg_i += 1) { |
| 843 | if (arg_i !== 0) callName += ','; | 915 | if (arg_i !== 0) callName += ','; |
| 844 | var argObj = callObj.args[arg_i]; | 916 | var argObj = callObj.args[arg_i]; |
| 845 | callName += getValueText(argObj.type, argObj.value, false, false); | 917 | callName += getValueText(argObj, argObj, false, false); |
| 846 | } | 918 | } |
| 847 | callName += ')'; | 919 | callName += ')'; |
| 848 | | 920 | |
| ... | @@ -850,6 +922,10 @@ var zigAnalysis; | ... | @@ -850,6 +922,10 @@ var zigAnalysis; |
| 850 | return navLink(curNav.pkgNames, declNamesCopy); | 922 | return navLink(curNav.pkgNames, declNamesCopy); |
| 851 | } | 923 | } |
| 852 | | 924 | |
| | 925 | /** |
| | 926 | * @param {any} dlDom |
| | 927 | * @param {number} desiredLen |
| | 928 | */ |
| 853 | function resizeDomListDl(dlDom, desiredLen) { | 929 | function resizeDomListDl(dlDom, desiredLen) { |
| 854 | // add the missing dom entries | 930 | // add the missing dom entries |
| 855 | var i, ev; | 931 | var i, ev; |
| ... | @@ -863,6 +939,11 @@ var zigAnalysis; | ... | @@ -863,6 +939,11 @@ var zigAnalysis; |
| 863 | } | 939 | } |
| 864 | } | 940 | } |
| 865 | | 941 | |
| | 942 | /** |
| | 943 | * @param {any} listDom |
| | 944 | * @param {number} desiredLen |
| | 945 | * @param {string} templateHtml |
| | 946 | */ |
| 866 | function resizeDomList(listDom, desiredLen, templateHtml) { | 947 | function resizeDomList(listDom, desiredLen, templateHtml) { |
| 867 | // add the missing dom entries | 948 | // add the missing dom entries |
| 868 | var i, ev; | 949 | var i, ev; |
| ... | @@ -879,14 +960,14 @@ var zigAnalysis; | ... | @@ -879,14 +960,14 @@ var zigAnalysis; |
| 879 | * @param {WalkResult} typeValue, | 960 | * @param {WalkResult} typeValue, |
| 880 | * @param {boolean} wantHtml, | 961 | * @param {boolean} wantHtml, |
| 881 | * @param {boolean} wantLink, | 962 | * @param {boolean} wantLink, |
| 882 | * @param {number} [fnDecl], | 963 | * @param {Decl | null} [fnDecl], |
| 883 | * @param {string} [linkFnNameDecl], | 964 | * @param {string} [linkFnNameDecl], |
| 884 | * @return {string} | 965 | * @return {string} |
| 885 | */ | 966 | */ |
| 886 | function typeValueName(typeValue, wantHtml, wantLink, fnDecl, linkFnNameDecl) { | 967 | function typeValueName(typeValue, wantHtml, wantLink, fnDecl, linkFnNameDecl) { |
| 887 | | 968 | |
| 888 | if ("int" in typeValue) { | 969 | if ("int" in typeValue) { |
| 889 | return typeValue.int.value; | 970 | return "" + typeValue.int.value; |
| 890 | } | 971 | } |
| 891 | if ("call" in typeValue) { | 972 | if ("call" in typeValue) { |
| 892 | var result = ""; | 973 | var result = ""; |
| ... | @@ -963,38 +1044,51 @@ var zigAnalysis; | ... | @@ -963,38 +1044,51 @@ var zigAnalysis; |
| 963 | } | 1044 | } |
| 964 | } | 1045 | } |
| 965 | | 1046 | |
| | 1047 | /** |
| | 1048 | * @param {WalkResult} typeRef |
| | 1049 | * @param {string} paramName |
| | 1050 | */ |
| 966 | function shouldSkipParamName(typeRef, paramName) { | 1051 | function shouldSkipParamName(typeRef, paramName) { |
| 967 | var resolvedTypeRef = resolveValue(typeRef); | 1052 | var resolvedTypeRef = resolveValue(typeRef); |
| 968 | if ("type" in resolvedTypeRef) { | 1053 | if ("type" in resolvedTypeRef) { |
| 969 | var typeObj = zigAnalysis.types[resolvedTypeRef.type]; | 1054 | var typeObj = zigAnalysis.types[resolvedTypeRef.type]; |
| 970 | if (typeObj.kind === typeKinds.Pointer && | 1055 | if (typeObj.kind === typeKinds.Pointer){ |
| 971 | getPtrSize(typeObj) === pointerSizeEnum.One) { | 1056 | let ptrObj = /** @type {PointerType} */(typeObj); |
| 972 | const value = resolveValue(typeObj.child); | 1057 | if (getPtrSize(ptrObj) === pointerSizeEnum.One) { |
| 973 | return typeValueName(value, false, true).toLowerCase() === paramName; | 1058 | const value = resolveValue(ptrObj.child); |
| | 1059 | return typeValueName(value, false, true).toLowerCase() === paramName; |
| | 1060 | } |
| 974 | } | 1061 | } |
| 975 | } | 1062 | } |
| 976 | return false; | 1063 | return false; |
| 977 | } | 1064 | } |
| 978 | | 1065 | |
| | 1066 | /** @param {PointerType} typeObj */ |
| 979 | function getPtrSize(typeObj) { | 1067 | function getPtrSize(typeObj) { |
| 980 | return (typeObj.len == null) ? pointerSizeEnum.One : typeObj.len; | 1068 | return (typeObj.size == null) ? pointerSizeEnum.One : typeObj.size; |
| 981 | } | 1069 | } |
| 982 | | 1070 | |
| 983 | function getCallHtml(fnDecl, callIndex) { | 1071 | // function getCallHtml(fnDecl, callIndex) { |
| 984 | var callObj = zigAnalysis.calls[callIndex]; | 1072 | // var callObj = zigAnalysis.calls[callIndex]; |
| 985 | | 1073 | |
| 986 | // TODO make these links work | 1074 | // // TODO make these links work |
| 987 | //var html = '<a href="' + navLinkCall(callObj) + '">' + escapeHtml(fnDecl.name) + '</a>('; | 1075 | // //var html = '<a href="' + navLinkCall(callObj) + '">' + escapeHtml(fnDecl.name) + '</a>('; |
| 988 | var html = escapeHtml(fnDecl.name) + '('; | 1076 | // var html = escapeHtml(fnDecl.name) + '('; |
| 989 | for (var arg_i = 0; arg_i < callObj.args.length; arg_i += 1) { | 1077 | // for (var arg_i = 0; arg_i < callObj.args.length; arg_i += 1) { |
| 990 | if (arg_i !== 0) html += ', '; | 1078 | // if (arg_i !== 0) html += ', '; |
| 991 | var argObj = callObj.args[arg_i]; | 1079 | // var argObj = callObj.args[arg_i]; |
| 992 | html += getValueText(argObj, argObj.value, true, true); | 1080 | // html += getValueText(argObj, argObj.value, true, true); |
| 993 | } | 1081 | // } |
| 994 | html += ')'; | 1082 | // html += ')'; |
| 995 | return html; | 1083 | // return html; |
| 996 | } | 1084 | // } |
| 997 | | 1085 | |
| | 1086 | /** |
| | 1087 | * @param {WalkResult} typeRef |
| | 1088 | * @param {any} value |
| | 1089 | * @param {boolean} wantHtml |
| | 1090 | * @param {boolean} wantLink |
| | 1091 | */ |
| 998 | function getValueText(typeRef, value, wantHtml, wantLink) { | 1092 | function getValueText(typeRef, value, wantHtml, wantLink) { |
| 999 | var resolvedTypeRef = resolveValue(typeRef); | 1093 | var resolvedTypeRef = resolveValue(typeRef); |
| 1000 | if ("comptimeExpr" in resolvedTypeRef) { | 1094 | if ("comptimeExpr" in resolvedTypeRef) { |
| ... | @@ -1004,10 +1098,10 @@ var zigAnalysis; | ... | @@ -1004,10 +1098,10 @@ var zigAnalysis; |
| 1004 | var typeObj = zigAnalysis.types[typeRef.type]; | 1098 | var typeObj = zigAnalysis.types[typeRef.type]; |
| 1005 | switch (typeObj.kind) { | 1099 | switch (typeObj.kind) { |
| 1006 | case typeKinds.Type: | 1100 | case typeKinds.Type: |
| 1007 | return typeIndexName(value, wantHtml, wantLink); | 1101 | return typeValueName(value, wantHtml, wantLink); |
| 1008 | case typeKinds.Fn: | 1102 | case typeKinds.Fn: |
| 1009 | var fnObj = zigAnalysis.fns[value]; | 1103 | var fnObj = zigAnalysis.fns[value]; |
| 1010 | return typeValueName(fnObj, wantHtml, wantLink); | 1104 | return typeName(fnObj, wantHtml, wantLink); |
| 1011 | case typeKinds.Int: | 1105 | case typeKinds.Int: |
| 1012 | if (wantHtml) { | 1106 | if (wantHtml) { |
| 1013 | return '<span class="tok-number">' + value + '</span>'; | 1107 | return '<span class="tok-number">' + value + '</span>'; |
| ... | @@ -1023,29 +1117,34 @@ var zigAnalysis; | ... | @@ -1023,29 +1117,34 @@ var zigAnalysis; |
| 1023 | * @param {Type} typeObj, | 1117 | * @param {Type} typeObj, |
| 1024 | * @param {boolean} wantHtml, | 1118 | * @param {boolean} wantHtml, |
| 1025 | * @param {boolean} wantSubLink, | 1119 | * @param {boolean} wantSubLink, |
| 1026 | * @param {number} [fnDecl], | 1120 | * @param {Decl | null} [fnDecl], |
| 1027 | * @param {string} [linkFnNameDecl], | 1121 | * @param {string} [linkFnNameDecl], |
| 1028 | * @return {string} | 1122 | * @return {string} |
| 1029 | */ | 1123 | */ |
| 1030 | function typeName(typeObj, wantHtml, wantSubLink, fnDecl, linkFnNameDecl) { | 1124 | function typeName(typeObj, wantHtml, wantSubLink, fnDecl, linkFnNameDecl) { |
| 1031 | switch (typeObj.kind) { | 1125 | switch (typeObj.kind) { |
| 1032 | case typeKinds.Array: | 1126 | case typeKinds.Array: |
| | 1127 | { |
| | 1128 | let arrayObj = /** @type {ArrayType} */(typeObj); |
| 1033 | var name = "["; | 1129 | var name = "["; |
| 1034 | var lenName = typeValueName(typeObj.len, wantHtml); | 1130 | var lenName = typeValueName(arrayObj.len, wantHtml, wantSubLink); |
| 1035 | if (wantHtml) { | 1131 | if (wantHtml) { |
| 1036 | name += '<span class="tok-number">' + lenName + '</span>'; | 1132 | name += '<span class="tok-number">' + lenName + '</span>'; |
| 1037 | } else { | 1133 | } else { |
| 1038 | name += lenName; | 1134 | name += lenName; |
| 1039 | } | 1135 | } |
| 1040 | name += "]"; | 1136 | name += "]"; |
| 1041 | name += typeValueName(typeObj.child, wantHtml, wantSubLink, null); | 1137 | name += typeValueName(arrayObj.child, wantHtml, wantSubLink, null); |
| 1042 | return name; | 1138 | return name; |
| | 1139 | } |
| 1043 | case typeKinds.Optional: | 1140 | case typeKinds.Optional: |
| 1044 | | 1141 | |
| 1045 | return "?" + typeValueName(typeObj.child, wantHtml, wantSubLink, fnDecl, linkFnNameDecl); | 1142 | return "?" + typeValueName(/**@type {OptionalType} */(typeObj).child, wantHtml, wantSubLink, fnDecl, linkFnNameDecl); |
| 1046 | case typeKinds.Pointer: | 1143 | case typeKinds.Pointer: |
| 1047 | var name = ""; | 1144 | { |
| 1048 | switch (typeObj.size) { | 1145 | let ptrObj = /** @type {PointerType} */(typeObj); |
| | 1146 | var name = ""; |
| | 1147 | switch (ptrObj.size) { |
| 1049 | default: | 1148 | default: |
| 1050 | console.log("TODO: implement unhandled pointer size case"); | 1149 | console.log("TODO: implement unhandled pointer size case"); |
| 1051 | case pointerSizeEnum.One: | 1150 | case pointerSizeEnum.One: |
| ... | @@ -1061,62 +1160,70 @@ var zigAnalysis; | ... | @@ -1061,62 +1160,70 @@ var zigAnalysis; |
| 1061 | name += "[*c]"; | 1160 | name += "[*c]"; |
| 1062 | break; | 1161 | break; |
| 1063 | } | 1162 | } |
| 1064 | if (typeObj['const']) { | 1163 | if (ptrObj['const']) { |
| 1065 | if (wantHtml) { | 1164 | if (wantHtml) { |
| 1066 | name += '<span class="tok-kw">const</span> '; | 1165 | name += '<span class="tok-kw">const</span> '; |
| 1067 | } else { | 1166 | } else { |
| 1068 | name += "const "; | 1167 | name += "const "; |
| 1069 | } | 1168 | } |
| 1070 | } | 1169 | } |
| 1071 | if (typeObj['volatile']) { | 1170 | if (ptrObj['volatile']) { |
| 1072 | if (wantHtml) { | 1171 | if (wantHtml) { |
| 1073 | name += '<span class="tok-kw">volatile</span> '; | 1172 | name += '<span class="tok-kw">volatile</span> '; |
| 1074 | } else { | 1173 | } else { |
| 1075 | name += "volatile "; | 1174 | name += "volatile "; |
| 1076 | } | 1175 | } |
| 1077 | } | 1176 | } |
| 1078 | if (typeObj.align != null) { | 1177 | if (ptrObj.align != null) { |
| 1079 | if (wantHtml) { | 1178 | if (wantHtml) { |
| 1080 | name += '<span class="tok-kw">align</span>('; | 1179 | name += '<span class="tok-kw">align</span>('; |
| 1081 | } else { | 1180 | } else { |
| 1082 | name += "align("; | 1181 | name += "align("; |
| 1083 | } | 1182 | } |
| 1084 | if (wantHtml) { | 1183 | if (wantHtml) { |
| 1085 | name += '<span class="tok-number">' + typeObj.align + '</span>'; | 1184 | name += '<span class="tok-number">' + ptrObj.align + '</span>'; |
| 1086 | } else { | 1185 | } else { |
| 1087 | name += typeObj.align; | 1186 | name += ptrObj.align; |
| 1088 | } | 1187 | } |
| 1089 | if (typeObj.hostIntBytes != null) { | 1188 | if (ptrObj.hostIntBytes != null) { |
| 1090 | name += ":"; | 1189 | name += ":"; |
| 1091 | if (wantHtml) { | 1190 | if (wantHtml) { |
| 1092 | name += '<span class="tok-number">' + typeObj.bitOffsetInHost + '</span>'; | 1191 | name += '<span class="tok-number">' + ptrObj.bitOffsetInHost + '</span>'; |
| 1093 | } else { | 1192 | } else { |
| 1094 | name += typeObj.bitOffsetInHost; | 1193 | name += ptrObj.bitOffsetInHost; |
| 1095 | } | 1194 | } |
| 1096 | name += ":"; | 1195 | name += ":"; |
| 1097 | if (wantHtml) { | 1196 | if (wantHtml) { |
| 1098 | name += '<span class="tok-number">' + typeObj.hostIntBytes + '</span>'; | 1197 | name += '<span class="tok-number">' + ptrObj.hostIntBytes + '</span>'; |
| 1099 | } else { | 1198 | } else { |
| 1100 | name += typeObj.hostIntBytes; | 1199 | name += ptrObj.hostIntBytes; |
| 1101 | } | 1200 | } |
| 1102 | } | 1201 | } |
| 1103 | name += ") "; | 1202 | name += ") "; |
| 1104 | } | 1203 | } |
| 1105 | name += typeValueName(typeObj.child, wantHtml, wantSubLink, null); | 1204 | name += typeValueName(ptrObj.child, wantHtml, wantSubLink, null); |
| 1106 | return name; | 1205 | return name; |
| | 1206 | } |
| 1107 | case typeKinds.Float: | 1207 | case typeKinds.Float: |
| | 1208 | { |
| | 1209 | let floatObj = /** @type {NumberType} */ (typeObj); |
| | 1210 | |
| 1108 | if (wantHtml) { | 1211 | if (wantHtml) { |
| 1109 | return '<span class="tok-type">f' + typeObj.bits + '</span>'; | 1212 | return '<span class="tok-type">' + floatObj.name + '</span>'; |
| 1110 | } else { | 1213 | } else { |
| 1111 | return "f" + typeObj.bits; | 1214 | return floatObj.name; |
| 1112 | } | 1215 | } |
| | 1216 | } |
| 1113 | case typeKinds.Int: | 1217 | case typeKinds.Int: |
| 1114 | var name = typeObj.name; | 1218 | { |
| | 1219 | let intObj = /** @type {NumberType} */(typeObj); |
| | 1220 | var name = intObj.name; |
| 1115 | if (wantHtml) { | 1221 | if (wantHtml) { |
| 1116 | return '<span class="tok-type">' + name + '</span>'; | 1222 | return '<span class="tok-type">' + name + '</span>'; |
| 1117 | } else { | 1223 | } else { |
| 1118 | return name; | 1224 | return name; |
| 1119 | } | 1225 | } |
| | 1226 | } |
| 1120 | case typeKinds.ComptimeInt: | 1227 | case typeKinds.ComptimeInt: |
| 1121 | if (wantHtml) { | 1228 | if (wantHtml) { |
| 1122 | return '<span class="tok-type">comptime_int</span>'; | 1229 | return '<span class="tok-type">comptime_int</span>'; |
| ... | @@ -1160,29 +1267,41 @@ var zigAnalysis; | ... | @@ -1160,29 +1267,41 @@ var zigAnalysis; |
| 1160 | return "noreturn"; | 1267 | return "noreturn"; |
| 1161 | } | 1268 | } |
| 1162 | case typeKinds.ErrorSet: | 1269 | case typeKinds.ErrorSet: |
| 1163 | if (typeObj.errors == null) { | 1270 | { |
| | 1271 | let errSetObj = /** @type {ErrSetType} */(typeObj); |
| | 1272 | if (errSetObj.fields == null) { |
| 1164 | if (wantHtml) { | 1273 | if (wantHtml) { |
| 1165 | return '<span class="tok-type">anyerror</span>'; | 1274 | return '<span class="tok-type">anyerror</span>'; |
| 1166 | } else { | 1275 | } else { |
| 1167 | return "anyerror"; | 1276 | return "anyerror"; |
| 1168 | } | 1277 | } |
| 1169 | } else { | 1278 | } else { |
| 1170 | if (wantHtml) { | 1279 | throw "TODO"; |
| 1171 | return escapeHtml(typeObj.name); | 1280 | // if (wantHtml) { |
| 1172 | } else { | 1281 | // return escapeHtml(typeObj.name); |
| 1173 | return typeObj.name; | 1282 | // } else { |
| 1174 | } | 1283 | // return typeObj.name; |
| | 1284 | // } |
| 1175 | } | 1285 | } |
| | 1286 | } |
| 1176 | case typeKinds.ErrorUnion: | 1287 | case typeKinds.ErrorUnion: |
| 1177 | var errSetTypeObj = zigAnalysis.types[typeObj.err]; | 1288 | { |
| 1178 | var payloadHtml = typeIndexName(typeObj.payload, wantHtml, wantSubLink, null); | 1289 | throw "TODO"; |
| 1179 | if (fnDecl != null && errSetTypeObj.fn === fnDecl.value) { | 1290 | // TODO: implement error union printing assuming that both |
| 1180 | // function index parameter supplied and this is the inferred error set of it | 1291 | // payload and error union are walk results! |
| 1181 | return "!" + payloadHtml; | 1292 | // let errUnionObj = /** @type {ErrUnionType} */(typeObj); |
| 1182 | } else { | 1293 | // var errSetTypeObj = /** @type {ErrSetType} */ (zigAnalysis.types[errUnionObj.err]); |
| 1183 | return typeIndexName(typeObj.err, wantHtml, wantSubLink, null) + "!" + payloadHtml; | 1294 | // var payloadHtml = typeValueName(errUnionObj.payload, wantHtml, wantSubLink, null); |
| 1184 | } | 1295 | // if (fnDecl != null && errSetTypeObj.fn === fnDecl.value.type) { |
| | 1296 | // // function index parameter supplied and this is the inferred error set of it |
| | 1297 | // return "!" + payloadHtml; |
| | 1298 | // } else { |
| | 1299 | // return typeValueName(errUnionObj.err, wantHtml, wantSubLink, null) + "!" + payloadHtml; |
| | 1300 | // } |
| | 1301 | } |
| 1185 | case typeKinds.Fn: | 1302 | case typeKinds.Fn: |
| | 1303 | { |
| | 1304 | let fnObj = /** @type {Fn} */(typeObj); |
| 1186 | var payloadHtml = ""; | 1305 | var payloadHtml = ""; |
| 1187 | if (wantHtml) { | 1306 | if (wantHtml) { |
| 1188 | payloadHtml += '<span class="tok-kw">fn</span>'; | 1307 | payloadHtml += '<span class="tok-kw">fn</span>'; |
| ... | @@ -1200,19 +1319,19 @@ var zigAnalysis; | ... | @@ -1200,19 +1319,19 @@ var zigAnalysis; |
| 1200 | payloadHtml += 'fn' | 1319 | payloadHtml += 'fn' |
| 1201 | } | 1320 | } |
| 1202 | payloadHtml += '('; | 1321 | payloadHtml += '('; |
| 1203 | if (typeObj.params) { | 1322 | if (fnObj.params) { |
| 1204 | var fields = null; | 1323 | var fields = null; |
| 1205 | var isVarArgs = false; | 1324 | var isVarArgs = false; |
| 1206 | var fnNode = zigAnalysis.astNodes[typeObj.src]; | 1325 | var fnNode = zigAnalysis.astNodes[fnObj.src]; |
| 1207 | fields = fnNode.fields; | 1326 | fields = fnNode.fields; |
| 1208 | isVarArgs = fnNode.varArgs; | 1327 | isVarArgs = fnNode.varArgs; |
| 1209 | | 1328 | |
| 1210 | for (var i = 0; i < typeObj.params.length; i += 1) { | 1329 | for (var i = 0; i < fnObj.params.length; i += 1) { |
| 1211 | if (i != 0) { | 1330 | if (i != 0) { |
| 1212 | payloadHtml += ', '; | 1331 | payloadHtml += ', '; |
| 1213 | } | 1332 | } |
| 1214 | | 1333 | |
| 1215 | var value = typeObj.params[i]; | 1334 | var value = fnObj.params[i]; |
| 1216 | var paramValue = resolveValue(value); | 1335 | var paramValue = resolveValue(value); |
| 1217 | var isCte = "comptimeExpr" in paramValue; | 1336 | var isCte = "comptimeExpr" in paramValue; |
| 1218 | | 1337 | |
| ... | @@ -1249,7 +1368,7 @@ var zigAnalysis; | ... | @@ -1249,7 +1368,7 @@ var zigAnalysis; |
| 1249 | } | 1368 | } |
| 1250 | } | 1369 | } |
| 1251 | | 1370 | |
| 1252 | if (isVarArgs && i === typeObj.params.length - 1) { | 1371 | if (isVarArgs && i === fnObj.params.length - 1) { |
| 1253 | payloadHtml += '...'; | 1372 | payloadHtml += '...'; |
| 1254 | } else if ("refPath" in value) { | 1373 | } else if ("refPath" in value) { |
| 1255 | payloadHtml += '<a href="">'; | 1374 | payloadHtml += '<a href="">'; |
| ... | @@ -1257,7 +1376,7 @@ var zigAnalysis; | ... | @@ -1257,7 +1376,7 @@ var zigAnalysis; |
| 1257 | payloadHtml += '</a>'; | 1376 | payloadHtml += '</a>'; |
| 1258 | | 1377 | |
| 1259 | } else if ("type" in value) { | 1378 | } else if ("type" in value) { |
| 1260 | var name = typeValueName(value, false); | 1379 | var name = typeValueName(value, wantHtml, wantSubLink, fnDecl, linkFnNameDecl); |
| 1261 | payloadHtml += '<span class="tok-kw">' + escapeHtml(name) + '</span>'; | 1380 | payloadHtml += '<span class="tok-kw">' + escapeHtml(name) + '</span>'; |
| 1262 | } else if ("comptimeExpr" in value) { | 1381 | } else if ("comptimeExpr" in value) { |
| 1263 | payloadHtml += '<span class="tok-kw">[ComptimeExpr]</span>'; | 1382 | payloadHtml += '<span class="tok-kw">[ComptimeExpr]</span>'; |
| ... | @@ -1270,23 +1389,26 @@ var zigAnalysis; | ... | @@ -1270,23 +1389,26 @@ var zigAnalysis; |
| 1270 | } | 1389 | } |
| 1271 | | 1390 | |
| 1272 | payloadHtml += ') '; | 1391 | payloadHtml += ') '; |
| 1273 | if (typeObj.ret != null) { | 1392 | if (fnObj.ret != null) { |
| 1274 | payloadHtml += typeValueName(typeObj.ret, wantHtml, wantSubLink, fnDecl); | 1393 | payloadHtml += typeValueName(fnObj.ret, wantHtml, wantSubLink, fnDecl); |
| 1275 | } else if (wantHtml) { | 1394 | } else if (wantHtml) { |
| 1276 | payloadHtml += '<span class="tok-kw">anytype</span>'; | 1395 | payloadHtml += '<span class="tok-kw">anytype</span>'; |
| 1277 | } else { | 1396 | } else { |
| 1278 | payloadHtml += 'anytype'; | 1397 | payloadHtml += 'anytype'; |
| 1279 | } | 1398 | } |
| 1280 | return payloadHtml; | 1399 | return payloadHtml; |
| | 1400 | } |
| 1281 | default: | 1401 | default: |
| 1282 | if (wantHtml) { | 1402 | throw "TODO"; |
| 1283 | return escapeHtml(typeObj.name); | 1403 | // if (wantHtml) { |
| 1284 | } else { | 1404 | // return escapeHtml(typeObj.name); |
| 1285 | return typeObj.name; | 1405 | // } else { |
| 1286 | } | 1406 | // return typeObj.name; |
| | 1407 | // } |
| 1287 | } | 1408 | } |
| 1288 | } | 1409 | } |
| 1289 | | 1410 | |
| | 1411 | /** @param {Type} typeObj */ |
| 1290 | function renderType(typeObj) { | 1412 | function renderType(typeObj) { |
| 1291 | var name; | 1413 | var name; |
| 1292 | if (rootIsStd && typeObj === zigAnalysis.types[zigAnalysis.packages[zigAnalysis.rootPkg].main]) { | 1414 | if (rootIsStd && typeObj === zigAnalysis.types[zigAnalysis.packages[zigAnalysis.rootPkg].main]) { |
| ... | @@ -1299,32 +1421,30 @@ var zigAnalysis; | ... | @@ -1299,32 +1421,30 @@ var zigAnalysis; |
| 1299 | domHdrName.classList.remove("hidden"); | 1421 | domHdrName.classList.remove("hidden"); |
| 1300 | } | 1422 | } |
| 1301 | if (typeObj.kind == typeKinds.ErrorSet) { | 1423 | if (typeObj.kind == typeKinds.ErrorSet) { |
| 1302 | renderErrorSet(typeObj); | 1424 | renderErrorSet(/** @type {ErrSetType} */(typeObj)); |
| 1303 | } | 1425 | } |
| 1304 | } | 1426 | } |
| 1305 | | 1427 | |
| | 1428 | /** @param {ErrSetType} errSetType */ |
| 1306 | function renderErrorSet(errSetType) { | 1429 | function renderErrorSet(errSetType) { |
| 1307 | if (errSetType.errors == null) { | 1430 | if (errSetType.fields == null) { |
| 1308 | domFnErrorsAnyError.classList.remove("hidden"); | 1431 | domFnErrorsAnyError.classList.remove("hidden"); |
| 1309 | } else { | 1432 | } else { |
| 1310 | var errorList = []; | 1433 | var errorList = []; |
| 1311 | for (var i = 0; i < errSetType.errors.length; i += 1) { | 1434 | for (var i = 0; i < errSetType.fields.length; i += 1) { |
| 1312 | var errObj = zigAnalysis.errors[errSetType.errors[i]]; | 1435 | var errObj = errSetType.fields[i]; |
| 1313 | var srcObj = zigAnalysis.astNodes[errObj.src]; | 1436 | //var srcObj = zigAnalysis.astNodes[errObj.src]; |
| 1314 | errorList.push({ | 1437 | errorList.push(errObj); |
| 1315 | err: errObj, | | |
| 1316 | docs: srcObj.docs, | | |
| 1317 | }); | | |
| 1318 | } | 1438 | } |
| 1319 | errorList.sort(function(a, b) { | 1439 | errorList.sort(function(a, b) { |
| 1320 | return operatorCompare(a.err.name.toLowerCase(), b.err.name.toLowerCase()); | 1440 | return operatorCompare(a.name.toLowerCase(), b.name.toLowerCase()); |
| 1321 | }); | 1441 | }); |
| 1322 | | 1442 | |
| 1323 | resizeDomListDl(domListFnErrors, errorList.length); | 1443 | resizeDomListDl(domListFnErrors, errorList.length); |
| 1324 | for (var i = 0; i < errorList.length; i += 1) { | 1444 | for (var i = 0; i < errorList.length; i += 1) { |
| 1325 | var nameTdDom = domListFnErrors.children[i * 2 + 0]; | 1445 | var nameTdDom = domListFnErrors.children[i * 2 + 0]; |
| 1326 | var descTdDom = domListFnErrors.children[i * 2 + 1]; | 1446 | var descTdDom = domListFnErrors.children[i * 2 + 1]; |
| 1327 | nameTdDom.textContent = errorList[i].err.name; | 1447 | nameTdDom.textContent = errorList[i].name; |
| 1328 | var docs = errorList[i].docs; | 1448 | var docs = errorList[i].docs; |
| 1329 | if (docs != null) { | 1449 | if (docs != null) { |
| 1330 | descTdDom.innerHTML = markdown(docs); | 1450 | descTdDom.innerHTML = markdown(docs); |
| ... | @@ -1517,7 +1637,7 @@ var zigAnalysis; | ... | @@ -1517,7 +1637,7 @@ var zigAnalysis; |
| 1517 | let fDecl = resolveValue(c.func); | 1637 | let fDecl = resolveValue(c.func); |
| 1518 | if ("type" in fDecl) { | 1638 | if ("type" in fDecl) { |
| 1519 | console.assert("type" in fDecl); | 1639 | console.assert("type" in fDecl); |
| 1520 | let fType = zigAnalysis.types[fDecl.type]; | 1640 | let fType = /** @type {Fn} */(zigAnalysis.types[fDecl.type]); |
| 1521 | console.assert("type" in fType.ret); | 1641 | console.assert("type" in fType.ret); |
| 1522 | if (fType.ret.type === typeTypeId) { | 1642 | if (fType.ret.type === typeTypeId) { |
| 1523 | typesList.push(decl); | 1643 | typesList.push(decl); |
| ... | @@ -1671,7 +1791,7 @@ var zigAnalysis; | ... | @@ -1671,7 +1791,7 @@ var zigAnalysis; |
| 1671 | } else { | 1791 | } else { |
| 1672 | var field = container.fields[i]; | 1792 | var field = container.fields[i]; |
| 1673 | html += ": "; | 1793 | html += ": "; |
| 1674 | var name = typeValueName(field); | 1794 | var name = typeValueName(field, false, false); |
| 1675 | html += '<span class="tok-kw">'+ name +'</span>'; | 1795 | html += '<span class="tok-kw">'+ name +'</span>'; |
| 1676 | } | 1796 | } |
| 1677 | | 1797 | |