| ... | @@ -39,20 +39,8 @@ | ... | @@ -39,20 +39,8 @@ |
| 39 | var searchTimer = null; | 39 | var searchTimer = null; |
| 40 | var escapeHtmlReplacements = { "&": "&amp;", '"': "&quot;", "<": "&lt;", ">": "&gt;" }; | 40 | var escapeHtmlReplacements = { "&": "&amp;", '"': "&quot;", "<": "&lt;", ">": "&gt;" }; |
| 41 | | 41 | |
| 42 | var typeKindTypeId; | 42 | var typeKinds = indexTypeKinds(); |
| 43 | var typeKindFnId; | 43 | var typeTypeId = findTypeTypeId(); |
| 44 | var typeKindPtrId; | | |
| 45 | var typeKindFloatId; | | |
| 46 | var typeKindIntId; | | |
| 47 | var typeKindBoolId; | | |
| 48 | var typeKindVoidId; | | |
| 49 | var typeKindNoReturnId; | | |
| 50 | var typeKindErrSetId; | | |
| 51 | var typeKindErrUnionId; | | |
| 52 | var typeKindStructId; | | |
| 53 | var typeKindUnionId; | | |
| 54 | var typeKindEnumId; | | |
| 55 | findTypeKinds(); | | |
| 56 | | 44 | |
| 57 | // for each package, is an array with packages to get to this one | 45 | // for each package, is an array with packages to get to this one |
| 58 | var canonPkgPaths = computeCanonicalPackagePaths(); | 46 | var canonPkgPaths = computeCanonicalPackagePaths(); |
| ... | @@ -77,7 +65,6 @@ | ... | @@ -77,7 +65,6 @@ |
| 77 | var curSearchIndex = -1; | 65 | var curSearchIndex = -1; |
| 78 | | 66 | |
| 79 | var rootIsStd = detectRootIsStd(); | 67 | var rootIsStd = detectRootIsStd(); |
| 80 | var typeTypeId = findTypeTypeId(); | | |
| 81 | | 68 | |
| 82 | // map of decl index to list of non-generic fn indexes | 69 | // map of decl index to list of non-generic fn indexes |
| 83 | var nodesToFnsMap = indexNodesToFns(); | 70 | var nodesToFnsMap = indexNodesToFns(); |
| ... | @@ -173,7 +160,7 @@ | ... | @@ -173,7 +160,7 @@ |
| 173 | } | 160 | } |
| 174 | if (lastDecl.type != null) { | 161 | if (lastDecl.type != null) { |
| 175 | var typeObj = zigAnalysis.types[lastDecl.type]; | 162 | var typeObj = zigAnalysis.types[lastDecl.type]; |
| 176 | if (typeObj.kind === typeKindFnId) { | 163 | if (typeObj.kind === typeKinds.Fn) { |
| 177 | return renderFn(lastDecl); | 164 | return renderFn(lastDecl); |
| 178 | } | 165 | } |
| 179 | throw new Error("docs for this decl which is not a container"); | 166 | throw new Error("docs for this decl which is not a container"); |
| ... | @@ -188,19 +175,19 @@ | ... | @@ -188,19 +175,19 @@ |
| 188 | | 175 | |
| 189 | function typeIsErrSet(typeIndex) { | 176 | function typeIsErrSet(typeIndex) { |
| 190 | var typeObj = zigAnalysis.types[typeIndex]; | 177 | var typeObj = zigAnalysis.types[typeIndex]; |
| 191 | return typeObj.kind === typeKindErrSetId; | 178 | return typeObj.kind === typeKinds.ErrorSet; |
| 192 | } | 179 | } |
| 193 | | 180 | |
| 194 | function typeIsStructWithNoFields(typeIndex) { | 181 | function typeIsStructWithNoFields(typeIndex) { |
| 195 | var typeObj = zigAnalysis.types[typeIndex]; | 182 | var typeObj = zigAnalysis.types[typeIndex]; |
| 196 | if (typeObj.kind !== typeKindStructId) | 183 | if (typeObj.kind !== typeKinds.Struct) |
| 197 | return false; | 184 | return false; |
| 198 | return typeObj.fields == null || typeObj.fields.length === 0; | 185 | return typeObj.fields == null || typeObj.fields.length === 0; |
| 199 | } | 186 | } |
| 200 | | 187 | |
| 201 | function typeIsGenericFn(typeIndex) { | 188 | function typeIsGenericFn(typeIndex) { |
| 202 | var typeObj = zigAnalysis.types[typeIndex]; | 189 | var typeObj = zigAnalysis.types[typeIndex]; |
| 203 | if (typeObj.kind !== typeKindFnId) { | 190 | if (typeObj.kind !== typeKinds.Fn) { |
| 204 | return false; | 191 | return false; |
| 205 | } | 192 | } |
| 206 | return typeObj.generic; | 193 | return typeObj.generic; |
| ... | @@ -219,9 +206,9 @@ | ... | @@ -219,9 +206,9 @@ |
| 219 | var errSetTypeIndex = null; | 206 | var errSetTypeIndex = null; |
| 220 | if (typeObj.ret != null) { | 207 | if (typeObj.ret != null) { |
| 221 | var retType = zigAnalysis.types[typeObj.ret]; | 208 | var retType = zigAnalysis.types[typeObj.ret]; |
| 222 | if (retType.kind === typeKindErrSetId) { | 209 | if (retType.kind === typeKinds.ErrorSet) { |
| 223 | errSetTypeIndex = typeObj.ret; | 210 | errSetTypeIndex = typeObj.ret; |
| 224 | } else if (retType.kind === typeKindErrUnionId) { | 211 | } else if (retType.kind === typeKinds.Union) { |
| 225 | errSetTypeIndex = retType.err; | 212 | errSetTypeIndex = retType.err; |
| 226 | } | 213 | } |
| 227 | } | 214 | } |
| ... | @@ -404,7 +391,7 @@ | ... | @@ -404,7 +391,7 @@ |
| 404 | | 391 | |
| 405 | function typeName(typeObj, wantHtml, wantSubLink, fnDecl, skipFnName) { | 392 | function typeName(typeObj, wantHtml, wantSubLink, fnDecl, skipFnName) { |
| 406 | switch (typeObj.kind) { | 393 | switch (typeObj.kind) { |
| 407 | case typeKindPtrId: | 394 | case typeKinds.Pointer: |
| 408 | var name = ""; | 395 | var name = ""; |
| 409 | switch (typeObj.len) { | 396 | switch (typeObj.len) { |
| 410 | case 0: | 397 | case 0: |
| ... | @@ -464,13 +451,13 @@ | ... | @@ -464,13 +451,13 @@ |
| 464 | } | 451 | } |
| 465 | name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null); | 452 | name += typeIndexName(typeObj.elem, wantHtml, wantSubLink, null); |
| 466 | return name; | 453 | return name; |
| 467 | case typeKindFloatId: | 454 | case typeKinds.Float: |
| 468 | if (wantHtml) { | 455 | if (wantHtml) { |
| 469 | return '<span class="tok-type">f' + typeObj.bits + '</span>'; | 456 | return '<span class="tok-type">f' + typeObj.bits + '</span>'; |
| 470 | } else { | 457 | } else { |
| 471 | return "f" + typeObj.bits; | 458 | return "f" + typeObj.bits; |
| 472 | } | 459 | } |
| 473 | case typeKindIntId: | 460 | case typeKinds.Int: |
| 474 | var signed = (typeObj.i != null) ? 'i' : 'u'; | 461 | var signed = (typeObj.i != null) ? 'i' : 'u'; |
| 475 | var bits = typeObj[signed]; | 462 | var bits = typeObj[signed]; |
| 476 | if (wantHtml) { | 463 | if (wantHtml) { |
| ... | @@ -478,31 +465,43 @@ | ... | @@ -478,31 +465,43 @@ |
| 478 | } else { | 465 | } else { |
| 479 | return signed + bits; | 466 | return signed + bits; |
| 480 | } | 467 | } |
| 481 | case typeKindTypeId: | 468 | case typeKinds.ComptimeInt: |
| | 469 | if (wantHtml) { |
| | 470 | return '<span class="tok-type">comptime_int</span>'; |
| | 471 | } else { |
| | 472 | return "comptime_int"; |
| | 473 | } |
| | 474 | case typeKinds.ComptimeFloat: |
| | 475 | if (wantHtml) { |
| | 476 | return '<span class="tok-type">comptime_float</span>'; |
| | 477 | } else { |
| | 478 | return "comptime_float"; |
| | 479 | } |
| | 480 | case typeKinds.Type: |
| 482 | if (wantHtml) { | 481 | if (wantHtml) { |
| 483 | return '<span class="tok-type">type</span>'; | 482 | return '<span class="tok-type">type</span>'; |
| 484 | } else { | 483 | } else { |
| 485 | return "type"; | 484 | return "type"; |
| 486 | } | 485 | } |
| 487 | case typeKindBoolId: | 486 | case typeKinds.Bool: |
| 488 | if (wantHtml) { | 487 | if (wantHtml) { |
| 489 | return '<span class="tok-type">bool</span>'; | 488 | return '<span class="tok-type">bool</span>'; |
| 490 | } else { | 489 | } else { |
| 491 | return "bool"; | 490 | return "bool"; |
| 492 | } | 491 | } |
| 493 | case typeKindVoidId: | 492 | case typeKinds.Void: |
| 494 | if (wantHtml) { | 493 | if (wantHtml) { |
| 495 | return '<span class="tok-type">void</span>'; | 494 | return '<span class="tok-type">void</span>'; |
| 496 | } else { | 495 | } else { |
| 497 | return "void"; | 496 | return "void"; |
| 498 | } | 497 | } |
| 499 | case typeKindNoReturnId: | 498 | case typeKinds.NoReturn: |
| 500 | if (wantHtml) { | 499 | if (wantHtml) { |
| 501 | return '<span class="tok-type">noreturn</span>'; | 500 | return '<span class="tok-type">noreturn</span>'; |
| 502 | } else { | 501 | } else { |
| 503 | return "noreturn"; | 502 | return "noreturn"; |
| 504 | } | 503 | } |
| 505 | case typeKindErrSetId: | 504 | case typeKinds.ErrorSet: |
| 506 | if (typeObj.errors == null) { | 505 | if (typeObj.errors == null) { |
| 507 | if (wantHtml) { | 506 | if (wantHtml) { |
| 508 | return '<span class="tok-type">anyerror</span>'; | 507 | return '<span class="tok-type">anyerror</span>'; |
| ... | @@ -516,7 +515,7 @@ | ... | @@ -516,7 +515,7 @@ |
| 516 | return typeObj.name; | 515 | return typeObj.name; |
| 517 | } | 516 | } |
| 518 | } | 517 | } |
| 519 | case typeKindErrUnionId: | 518 | case typeKinds.Union: |
| 520 | var errSetTypeObj = zigAnalysis.types[typeObj.err]; | 519 | var errSetTypeObj = zigAnalysis.types[typeObj.err]; |
| 521 | var payloadHtml = typeIndexName(typeObj.payload, wantHtml, wantSubLink, null); | 520 | var payloadHtml = typeIndexName(typeObj.payload, wantHtml, wantSubLink, null); |
| 522 | if (fnDecl != null && errSetTypeObj.fn === fnDecl.value) { | 521 | if (fnDecl != null && errSetTypeObj.fn === fnDecl.value) { |
| ... | @@ -525,7 +524,7 @@ | ... | @@ -525,7 +524,7 @@ |
| 525 | } else { | 524 | } else { |
| 526 | return typeIndexName(typeObj.err, wantHtml, wantSubLink, null) + "!" + payloadHtml; | 525 | return typeIndexName(typeObj.err, wantHtml, wantSubLink, null) + "!" + payloadHtml; |
| 527 | } | 526 | } |
| 528 | case typeKindFnId: | 527 | case typeKinds.Fn: |
| 529 | var payloadHtml = ""; | 528 | var payloadHtml = ""; |
| 530 | if (wantHtml) { | 529 | if (wantHtml) { |
| 531 | payloadHtml += '<span class="tok-kw">fn</span>'; | 530 | payloadHtml += '<span class="tok-kw">fn</span>'; |
| ... | @@ -576,7 +575,7 @@ | ... | @@ -576,7 +575,7 @@ |
| 576 | domHdrName.innerText = name + " (" + zigAnalysis.typeKinds[typeObj.kind] + ")"; | 575 | domHdrName.innerText = name + " (" + zigAnalysis.typeKinds[typeObj.kind] + ")"; |
| 577 | domHdrName.classList.remove("hidden"); | 576 | domHdrName.classList.remove("hidden"); |
| 578 | } | 577 | } |
| 579 | if (typeObj.kind == typeKindErrSetId) { | 578 | if (typeObj.kind == typeKinds.ErrorSet) { |
| 580 | renderErrorSet(typeObj); | 579 | renderErrorSet(typeObj); |
| 581 | } | 580 | } |
| 582 | } | 581 | } |
| ... | @@ -662,7 +661,7 @@ | ... | @@ -662,7 +661,7 @@ |
| 662 | } | 661 | } |
| 663 | } else { | 662 | } else { |
| 664 | var typeKind = zigAnalysis.types[decl.type].kind; | 663 | var typeKind = zigAnalysis.types[decl.type].kind; |
| 665 | if (typeKind === typeKindFnId) { | 664 | if (typeKind === typeKinds.Fn) { |
| 666 | if (allCompTimeFnCallsHaveTypeResult(decl.type, decl.value)) { | 665 | if (allCompTimeFnCallsHaveTypeResult(decl.type, decl.value)) { |
| 667 | typesList.push(decl); | 666 | typesList.push(decl); |
| 668 | } else { | 667 | } else { |
| ... | @@ -817,80 +816,24 @@ | ... | @@ -817,80 +816,24 @@ |
| 817 | return rootPkg.file === stdPkg.file; | 816 | return rootPkg.file === stdPkg.file; |
| 818 | } | 817 | } |
| 819 | | 818 | |
| 820 | function findTypeKinds() { | 819 | function indexTypeKinds() { |
| | 820 | var map = {}; |
| 821 | for (var i = 0; i < zigAnalysis.typeKinds.length; i += 1) { | 821 | for (var i = 0; i < zigAnalysis.typeKinds.length; i += 1) { |
| 822 | if (zigAnalysis.typeKinds[i] === "Type") { | 822 | map[zigAnalysis.typeKinds[i]] = i; |
| 823 | typeKindTypeId = i; | | |
| 824 | } else if (zigAnalysis.typeKinds[i] === "Fn") { | | |
| 825 | typeKindFnId = i; | | |
| 826 | } else if (zigAnalysis.typeKinds[i] === "Pointer") { | | |
| 827 | typeKindPtrId = i; | | |
| 828 | } else if (zigAnalysis.typeKinds[i] === "Float") { | | |
| 829 | typeKindFloatId = i; | | |
| 830 | } else if (zigAnalysis.typeKinds[i] === "Int") { | | |
| 831 | typeKindIntId = i; | | |
| 832 | } else if (zigAnalysis.typeKinds[i] === "Bool") { | | |
| 833 | typeKindBoolId = i; | | |
| 834 | } else if (zigAnalysis.typeKinds[i] === "Void") { | | |
| 835 | typeKindVoidId = i; | | |
| 836 | } else if (zigAnalysis.typeKinds[i] === "NoReturn") { | | |
| 837 | typeKindNoReturnId = i; | | |
| 838 | } else if (zigAnalysis.typeKinds[i] === "ErrorSet") { | | |
| 839 | typeKindErrSetId = i; | | |
| 840 | } else if (zigAnalysis.typeKinds[i] === "ErrorUnion") { | | |
| 841 | typeKindErrUnionId = i; | | |
| 842 | } else if (zigAnalysis.typeKinds[i] === "Struct") { | | |
| 843 | typeKindStructId = i; | | |
| 844 | } else if (zigAnalysis.typeKinds[i] === "Union") { | | |
| 845 | typeKindUnionId = i; | | |
| 846 | } else if (zigAnalysis.typeKinds[i] === "Enum") { | | |
| 847 | typeKindEnumId = i; | | |
| 848 | } | | |
| 849 | } | | |
| 850 | if (typeKindTypeId == null) { | | |
| 851 | throw new Error("No type kind 'Type' found"); | | |
| 852 | } | | |
| 853 | if (typeKindFnId == null) { | | |
| 854 | throw new Error("No type kind 'Fn' found"); | | |
| 855 | } | 823 | } |
| 856 | if (typeKindPtrId == null) { | 824 | // This is just for debugging purposes, not needed to function |
| 857 | throw new Error("No type kind 'Pointer' found"); | 825 | var assertList = ["Type","Void","Bool","NoReturn","Int","Float","Pointer","Array","Struct", |
| 858 | } | 826 | "ComptimeFloat","ComptimeInt","Undefined","Null","Optional","ErrorUnion","ErrorSet","Enum", |
| 859 | if (typeKindFloatId == null) { | 827 | "Union","Fn","BoundFn","ArgTuple","Opaque","Frame","AnyFrame","Vector","EnumLiteral"]; |
| 860 | throw new Error("No type kind 'Float' found"); | 828 | for (var i = 0; i < assertList.length; i += 1) { |
| 861 | } | 829 | if (map[assertList[i]] == null) throw new Error("No type kind '" + assertList[i] + "' found"); |
| 862 | if (typeKindIntId == null) { | | |
| 863 | throw new Error("No type kind 'Int' found"); | | |
| 864 | } | | |
| 865 | if (typeKindBoolId == null) { | | |
| 866 | throw new Error("No type kind 'Bool' found"); | | |
| 867 | } | | |
| 868 | if (typeKindVoidId == null) { | | |
| 869 | throw new Error("No type kind 'Void' found"); | | |
| 870 | } | | |
| 871 | if (typeKindNoReturnId == null) { | | |
| 872 | throw new Error("No type kind 'Void' found"); | | |
| 873 | } | | |
| 874 | if (typeKindErrSetId == null) { | | |
| 875 | throw new Error("No type kind 'ErrorSet' found"); | | |
| 876 | } | | |
| 877 | if (typeKindErrUnionId == null) { | | |
| 878 | throw new Error("No type kind 'ErrorUnion' found"); | | |
| 879 | } | | |
| 880 | if (typeKindStructId == null) { | | |
| 881 | throw new Error("No type kind 'Struct' found"); | | |
| 882 | } | | |
| 883 | if (typeKindUnionId == null) { | | |
| 884 | throw new Error("No type kind 'Union' found"); | | |
| 885 | } | | |
| 886 | if (typeKindEnumId == null) { | | |
| 887 | throw new Error("No type kind 'Enum' found"); | | |
| 888 | } | 830 | } |
| | 831 | return map; |
| 889 | } | 832 | } |
| 890 | | 833 | |
| 891 | function findTypeTypeId() { | 834 | function findTypeTypeId() { |
| 892 | for (var i = 0; i < zigAnalysis.types.length; i += 1) { | 835 | for (var i = 0; i < zigAnalysis.types.length; i += 1) { |
| 893 | if (zigAnalysis.types[i].kind == typeKindTypeId) { | 836 | if (zigAnalysis.types[i].kind == typeKinds.Type) { |
| 894 | return i; | 837 | return i; |
| 895 | } | 838 | } |
| 896 | } | 839 | } |
| ... | @@ -976,10 +919,10 @@ | ... | @@ -976,10 +919,10 @@ |
| 976 | } | 919 | } |
| 977 | | 920 | |
| 978 | function declCanRepresentTypeKind(typeKind) { | 921 | function declCanRepresentTypeKind(typeKind) { |
| 979 | return typeKind === typeKindErrSetId || | 922 | return typeKind === typeKinds.ErrorSet || |
| 980 | typeKind === typeKindStructId || | 923 | typeKind === typeKinds.Struct || |
| 981 | typeKind === typeKindUnionId || | 924 | typeKind === typeKinds.Union || |
| 982 | typeKind === typeKindEnumId; | 925 | typeKind === typeKinds.Enum; |
| 983 | } | 926 | } |
| 984 | | 927 | |
| 985 | function computeCanonDeclPaths() { | 928 | function computeCanonDeclPaths() { |