| ... | ... | @@ -44,6 +44,7 @@ |
| 44 | 44 | var typeKindIntId; |
| 45 | 45 | var typeKindBoolId; |
| 46 | 46 | var typeKindVoidId; |
| 47 | var typeKindNoReturnId; |
| 47 | 48 | var typeKindErrSetId; |
| 48 | 49 | var typeKindErrUnionId; |
| 49 | 50 | findTypeKinds(); |
| ... | ... | @@ -171,7 +172,9 @@ |
| 171 | 172 | } |
| 172 | 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 | 178 | if (lastDecl.pubDecls != null) { |
| 176 | 179 | renderContainer(lastDecl); |
| 177 | 180 | } |
| ... | ... | @@ -211,38 +214,7 @@ |
| 211 | 214 | } |
| 212 | 215 | if (errSetTypeIndex != null) { |
| 213 | 216 | var errSetType = zigAnalysis.types[errSetTypeIndex]; |
| 214 | | if (errSetType.errors == null) { |
| 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"); |
| 217 | renderErrorSet(errSetType); |
| 246 | 218 | } |
| 247 | 219 | |
| 248 | 220 | var protoSrcIndex; |
| ... | ... | @@ -375,6 +347,19 @@ |
| 375 | 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 | 363 | function resizeDomList(listDom, desiredLen, templateHtml) { |
| 379 | 364 | // add the missing dom entries |
| 380 | 365 | var i, ev; |
| ... | ... | @@ -498,6 +483,12 @@ |
| 498 | 483 | } else { |
| 499 | 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 | 492 | case typeKindErrSetId: |
| 502 | 493 | if (typeObj.errors == null) { |
| 503 | 494 | if (wantHtml) { |
| ... | ... | @@ -569,9 +560,46 @@ |
| 569 | 560 | function renderType(typeObj) { |
| 570 | 561 | var name = typeName(typeObj, false, false); |
| 571 | 562 | if (name != null && name != "") { |
| 572 | | domHdrName.innerText = zigAnalysis.typeKinds[typeObj.kind] + " " + name; |
| 563 | domHdrName.innerText = name + " (" + zigAnalysis.typeKinds[typeObj.kind] + ")"; |
| 573 | 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 | 605 | function allCompTimeFnCallsHaveTypeResult(typeIndex, value) { |
| ... | ... | @@ -782,6 +810,8 @@ |
| 782 | 810 | typeKindBoolId = i; |
| 783 | 811 | } else if (zigAnalysis.typeKinds[i] === "Void") { |
| 784 | 812 | typeKindVoidId = i; |
| 813 | } else if (zigAnalysis.typeKinds[i] === "NoReturn") { |
| 814 | typeKindNoReturnId = i; |
| 785 | 815 | } else if (zigAnalysis.typeKinds[i] === "ErrorSet") { |
| 786 | 816 | typeKindErrSetId = i; |
| 787 | 817 | } else if (zigAnalysis.typeKinds[i] === "ErrorUnion") { |
| ... | ... | @@ -809,6 +839,9 @@ |
| 809 | 839 | if (typeKindVoidId == null) { |
| 810 | 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 | 845 | if (typeKindErrSetId == null) { |
| 813 | 846 | throw new Error("No type kind 'ErrorSet' found"); |
| 814 | 847 | } |