authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-10-09 15:22:26-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-10-09 15:23:13-04:00
log3ce83e879b48273ada1e4e3d795967004f7d21b3
treed05a4e83189472dc02f059490f2796f65241649b
parenta5714ddb973305b38703a69093af066514bdd8f8
signaturelock-open Commit is signed but in an unrecognized format.

generated docs: show error sets pages

also favicon, improve error sets css, syntax awareness of noreturn

2 files changed, 71 insertions(+), 40 deletions(-)

lib/std/special/docs/index.html+4-6
...@@ -3,7 +3,7 @@...@@ -3,7 +3,7 @@
3 <head>3 <head>
4 <meta charset="utf-8">4 <meta charset="utf-8">
5 <title>Documentation - Zig</title>5 <title>Documentation - Zig</title>
6 <link rel="icon" href="favicon.png">6 <link rel="icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAgklEQVR4AWMYWuD7EllJIM4G4g4g5oIJ/odhOJ8wToOxSTXgNxDHoeiBMfA4+wGShjyYOCkG/IGqWQziEzYAoUAeiF9D5U+DxEg14DRU7jWIT5IBIOdCxf+A+CQZAAoopEB7QJwBCBwHiip8UYmRdrAlDpIMgApwQZNnNii5Dq0MBgCxxycBnwEd+wAAAABJRU5ErkJggg==">
7 <style type="text/css">7 <style type="text/css">
8 body {8 body {
9 font-family: system-ui, -apple-system, Roboto, "Segoe UI", sans-serif;9 font-family: system-ui, -apple-system, Roboto, "Segoe UI", sans-serif;
...@@ -127,7 +127,7 @@...@@ -127,7 +127,7 @@
127 text-align: center;127 text-align: center;
128 font-size: 1.5em;128 font-size: 1.5em;
129 }129 }
130 dt, dd {130 #helpDialog dt, #helpDialog dd {
131 display: inline;131 display: inline;
132 margin: 0 0.2em;132 margin: 0 0.2em;
133 }133 }
...@@ -152,10 +152,8 @@...@@ -152,10 +152,8 @@
152 background-color: #93e196;152 background-color: #93e196;
153 }153 }
154154
155 #tableFnErrors tr td:first-child{155 #tableFnErrors dt {
156 text-align: right;
157 font-weight: bold;156 font-weight: bold;
158 vertical-align: top;
159 }157 }
160158
161 #sectGlobalVars td, #sectFns td, #sectFields td {159 #sectGlobalVars td, #sectFns td, #sectFields td {
...@@ -297,7 +295,7 @@...@@ -297,7 +295,7 @@
297 <div id="fnErrorsAnyError">295 <div id="fnErrorsAnyError">
298 <p><span class="tok-type">anyerror</span> means the error set is known only at runtime.</p>296 <p><span class="tok-type">anyerror</span> means the error set is known only at runtime.</p>
299 </div>297 </div>
300 <table id="tableFnErrors"><tbody id="listFnErrors"></tbody></table>298 <div id="tableFnErrors"><dl id="listFnErrors"></dl></div>
301 </div>299 </div>
302 <div id="fnExamples" class="hidden"></div>300 <div id="fnExamples" class="hidden"></div>
303 <div id="fnNoExamples" class="hidden">301 <div id="fnNoExamples" class="hidden">
lib/std/special/docs/main.js+67-34
...@@ -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 }
247219
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 }
377349
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 entries364 // 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 }
576604
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 }