| ... | @@ -44,6 +44,7 @@ | ... | @@ -44,6 +44,7 @@ |
| 44 | var typeKindIntId; | 44 | var typeKindIntId; |
| 45 | var typeKindBoolId; | 45 | var typeKindBoolId; |
| 46 | var typeKindVoidId; | 46 | var typeKindVoidId; |
| | 47 | var typeKindNoReturnId; |
| 47 | var typeKindErrSetId; | 48 | var typeKindErrSetId; |
| 48 | var typeKindErrUnionId; | 49 | var typeKindErrUnionId; |
| 49 | findTypeKinds(); | 50 | findTypeKinds(); |
| ... | @@ -171,7 +172,9 @@ | ... | @@ -171,7 +172,9 @@ |
| 171 | } | 172 | } |
| 172 | throw new Error("docs for this decl which is not a container"); | 173 | throw new Error("docs for this decl which is not a container"); |
| 173 | } | 174 | } |
| 174 | renderType(lastDecl); | 175 | if (lastDecl.kind != null) { |
| | 176 | renderType(lastDecl); |
| | 177 | } |
| 175 | if (lastDecl.pubDecls != null) { | 178 | if (lastDecl.pubDecls != null) { |
| 176 | renderContainer(lastDecl); | 179 | renderContainer(lastDecl); |
| 177 | } | 180 | } |
| ... | @@ -211,38 +214,7 @@ | ... | @@ -211,38 +214,7 @@ |
| 211 | } | 214 | } |
| 212 | if (errSetTypeIndex != null) { | 215 | if (errSetTypeIndex != null) { |
| 213 | var errSetType = zigAnalysis.types[errSetTypeIndex]; | 216 | var errSetType = zigAnalysis.types[errSetTypeIndex]; |
| 214 | if (errSetType.errors == null) { | 217 | renderErrorSet(errSetType); |
| 215 | domFnErrorsAnyError.classList.remove("hidden"); | | |
| 216 | } else { | | |
| 217 | var errorList = []; | | |
| 218 | for (var i = 0; i < errSetType.errors.length; i += 1) { | | |
| 219 | var errObj = zigAnalysis.errors[errSetType.errors[i]]; | | |
| 220 | var srcObj = zigAnalysis.astNodes[errObj.src]; | | |
| 221 | errorList.push({ | | |
| 222 | err: errObj, | | |
| 223 | docs: srcObj.docs, | | |
| 224 | }); | | |
| 225 | } | | |
| 226 | errorList.sort(function(a, b) { | | |
| 227 | return operatorCompare(a.err.name.toLowerCase(), b.err.name.toLowerCase()); | | |
| 228 | }); | | |
| 229 | | | |
| 230 | resizeDomList(domListFnErrors, errorList.length, '<tr><td></td><td></td></tr>'); | | |
| 231 | for (var i = 0; i < errorList.length; i += 1) { | | |
| 232 | var trDom = domListFnErrors.children[i]; | | |
| 233 | var nameTdDom = trDom.children[0]; | | |
| 234 | var descTdDom = trDom.children[1]; | | |
| 235 | nameTdDom.textContent = errorList[i].err.name; | | |
| 236 | var docs = errorList[i].docs; | | |
| 237 | if (docs != null) { | | |
| 238 | descTdDom.innerHTML = markdown(docs); | | |
| 239 | } else { | | |
| 240 | descTdDom.textContent = ""; | | |
| 241 | } | | |
| 242 | } | | |
| 243 | domTableFnErrors.classList.remove("hidden"); | | |
| 244 | } | | |
| 245 | domSectFnErrors.classList.remove("hidden"); | | |
| 246 | } | 218 | } |
| 247 | | 219 | |
| 248 | var protoSrcIndex; | 220 | var protoSrcIndex; |
| ... | @@ -375,6 +347,19 @@ | ... | @@ -375,6 +347,19 @@ |
| 375 | return navLink(curNav.pkgNames, curNav.declNames.concat([childName])); | 347 | return navLink(curNav.pkgNames, curNav.declNames.concat([childName])); |
| 376 | } | 348 | } |
| 377 | | 349 | |
| | 350 | function resizeDomListDl(dlDom, desiredLen) { |
| | 351 | // add the missing dom entries |
| | 352 | var i, ev; |
| | 353 | for (i = dlDom.childElementCount / 2; i < desiredLen; i += 1) { |
| | 354 | dlDom.insertAdjacentHTML('beforeend', '<dt></dt><dd></dd>'); |
| | 355 | } |
| | 356 | // remove extra dom entries |
| | 357 | while (desiredLen < dlDom.childElementCount / 2) { |
| | 358 | dlDom.removeChild(dlDom.lastChild); |
| | 359 | dlDom.removeChild(dlDom.lastChild); |
| | 360 | } |
| | 361 | } |
| | 362 | |
| 378 | function resizeDomList(listDom, desiredLen, templateHtml) { | 363 | function resizeDomList(listDom, desiredLen, templateHtml) { |
| 379 | // add the missing dom entries | 364 | // add the missing dom entries |
| 380 | var i, ev; | 365 | var i, ev; |
| ... | @@ -498,6 +483,12 @@ | ... | @@ -498,6 +483,12 @@ |
| 498 | } else { | 483 | } else { |
| 499 | return "void"; | 484 | return "void"; |
| 500 | } | 485 | } |
| | 486 | case typeKindNoReturnId: |
| | 487 | if (wantHtml) { |
| | 488 | return '<span class="tok-type">noreturn</span>'; |
| | 489 | } else { |
| | 490 | return "noreturn"; |
| | 491 | } |
| 501 | case typeKindErrSetId: | 492 | case typeKindErrSetId: |
| 502 | if (typeObj.errors == null) { | 493 | if (typeObj.errors == null) { |
| 503 | if (wantHtml) { | 494 | if (wantHtml) { |
| ... | @@ -569,9 +560,46 @@ | ... | @@ -569,9 +560,46 @@ |
| 569 | function renderType(typeObj) { | 560 | function renderType(typeObj) { |
| 570 | var name = typeName(typeObj, false, false); | 561 | var name = typeName(typeObj, false, false); |
| 571 | if (name != null && name != "") { | 562 | if (name != null && name != "") { |
| 572 | domHdrName.innerText = zigAnalysis.typeKinds[typeObj.kind] + " " + name; | 563 | domHdrName.innerText = name + " (" + zigAnalysis.typeKinds[typeObj.kind] + ")"; |
| 573 | domHdrName.classList.remove("hidden"); | 564 | domHdrName.classList.remove("hidden"); |
| 574 | } | 565 | } |
| | 566 | if (typeObj.kind == typeKindErrSetId) { |
| | 567 | renderErrorSet(typeObj); |
| | 568 | } |
| | 569 | } |
| | 570 | |
| | 571 | function renderErrorSet(errSetType) { |
| | 572 | if (errSetType.errors == null) { |
| | 573 | domFnErrorsAnyError.classList.remove("hidden"); |
| | 574 | } else { |
| | 575 | var errorList = []; |
| | 576 | for (var i = 0; i < errSetType.errors.length; i += 1) { |
| | 577 | var errObj = zigAnalysis.errors[errSetType.errors[i]]; |
| | 578 | var srcObj = zigAnalysis.astNodes[errObj.src]; |
| | 579 | errorList.push({ |
| | 580 | err: errObj, |
| | 581 | docs: srcObj.docs, |
| | 582 | }); |
| | 583 | } |
| | 584 | errorList.sort(function(a, b) { |
| | 585 | return operatorCompare(a.err.name.toLowerCase(), b.err.name.toLowerCase()); |
| | 586 | }); |
| | 587 | |
| | 588 | resizeDomListDl(domListFnErrors, errorList.length); |
| | 589 | for (var i = 0; i < errorList.length; i += 1) { |
| | 590 | var nameTdDom = domListFnErrors.children[i * 2 + 0]; |
| | 591 | var descTdDom = domListFnErrors.children[i * 2 + 1]; |
| | 592 | nameTdDom.textContent = errorList[i].err.name; |
| | 593 | var docs = errorList[i].docs; |
| | 594 | if (docs != null) { |
| | 595 | descTdDom.innerHTML = markdown(docs); |
| | 596 | } else { |
| | 597 | descTdDom.textContent = ""; |
| | 598 | } |
| | 599 | } |
| | 600 | domTableFnErrors.classList.remove("hidden"); |
| | 601 | } |
| | 602 | domSectFnErrors.classList.remove("hidden"); |
| 575 | } | 603 | } |
| 576 | | 604 | |
| 577 | function allCompTimeFnCallsHaveTypeResult(typeIndex, value) { | 605 | function allCompTimeFnCallsHaveTypeResult(typeIndex, value) { |
| ... | @@ -782,6 +810,8 @@ | ... | @@ -782,6 +810,8 @@ |
| 782 | typeKindBoolId = i; | 810 | typeKindBoolId = i; |
| 783 | } else if (zigAnalysis.typeKinds[i] === "Void") { | 811 | } else if (zigAnalysis.typeKinds[i] === "Void") { |
| 784 | typeKindVoidId = i; | 812 | typeKindVoidId = i; |
| | 813 | } else if (zigAnalysis.typeKinds[i] === "NoReturn") { |
| | 814 | typeKindNoReturnId = i; |
| 785 | } else if (zigAnalysis.typeKinds[i] === "ErrorSet") { | 815 | } else if (zigAnalysis.typeKinds[i] === "ErrorSet") { |
| 786 | typeKindErrSetId = i; | 816 | typeKindErrSetId = i; |
| 787 | } else if (zigAnalysis.typeKinds[i] === "ErrorUnion") { | 817 | } else if (zigAnalysis.typeKinds[i] === "ErrorUnion") { |
| ... | @@ -809,6 +839,9 @@ | ... | @@ -809,6 +839,9 @@ |
| 809 | if (typeKindVoidId == null) { | 839 | if (typeKindVoidId == null) { |
| 810 | throw new Error("No type kind 'Void' found"); | 840 | throw new Error("No type kind 'Void' found"); |
| 811 | } | 841 | } |
| | 842 | if (typeKindNoReturnId == null) { |
| | 843 | throw new Error("No type kind 'Void' found"); |
| | 844 | } |
| 812 | if (typeKindErrSetId == null) { | 845 | if (typeKindErrSetId == null) { |
| 813 | throw new Error("No type kind 'ErrorSet' found"); | 846 | throw new Error("No type kind 'ErrorSet' found"); |
| 814 | } | 847 | } |