authorgravatar for ian@ianjohnson.devIan Johnson <ian@ianjohnson.dev> 2025-02-15 16:57:04-05:00
committergravatar for ian@ianjohnson.devIan Johnson <ian@ianjohnson.dev> 2025-02-15 17:32:44-05:00
log75ccdcc356839687033ba982a34fe0703ba1e349
tree10e2c3bc5a6351ed11c85c8dcb08387b05732e19
parentb745a96d20e8159a68be53478d30c72f8c216dd3

Autodoc: report errors in user interface

Also includes panics by virtue of the previous commit, checking one item off #19249.

2 files changed, 36 insertions(+), 0 deletions(-)

lib/docs/index.html+32
...@@ -6,6 +6,9 @@...@@ -6,6 +6,9 @@
6 <title>Zig Documentation</title>6 <title>Zig Documentation</title>
7 <link rel="icon" href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTMgMTQwIj48ZyBmaWxsPSIjRjdBNDFEIj48Zz48cG9seWdvbiBwb2ludHM9IjQ2LDIyIDI4LDQ0IDE5LDMwIi8+PHBvbHlnb24gcG9pbnRzPSI0NiwyMiAzMywzMyAyOCw0NCAyMiw0NCAyMiw5NSAzMSw5NSAyMCwxMDAgMTIsMTE3IDAsMTE3IDAsMjIiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyIvPjxwb2x5Z29uIHBvaW50cz0iMzEsOTUgMTIsMTE3IDQsMTA2Ii8+PC9nPjxnPjxwb2x5Z29uIHBvaW50cz0iNTYsMjIgNjIsMzYgMzcsNDQiLz48cG9seWdvbiBwb2ludHM9IjU2LDIyIDExMSwyMiAxMTEsNDQgMzcsNDQgNTYsMzIiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyIvPjxwb2x5Z29uIHBvaW50cz0iMTE2LDk1IDk3LDExNyA5MCwxMDQiLz48cG9seWdvbiBwb2ludHM9IjExNiw5NSAxMDAsMTA0IDk3LDExNyA0MiwxMTcgNDIsOTUiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyIvPjxwb2x5Z29uIHBvaW50cz0iMTUwLDAgNTIsMTE3IDMsMTQwIDEwMSwyMiIvPjwvZz48Zz48cG9seWdvbiBwb2ludHM9IjE0MSwyMiAxNDAsNDAgMTIyLDQ1Ii8+PHBvbHlnb24gcG9pbnRzPSIxNTMsMjIgMTUzLDExNyAxMDYsMTE3IDEyMCwxMDUgMTI1LDk1IDEzMSw5NSAxMzEsNDUgMTIyLDQ1IDEzMiwzNiAxNDEsMjIiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyIvPjxwb2x5Z29uIHBvaW50cz0iMTI1LDk1IDEzMCwxMTAgMTA2LDExNyIvPjwvZz48L2c+PC9zdmc+">7 <link rel="icon" href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTMgMTQwIj48ZyBmaWxsPSIjRjdBNDFEIj48Zz48cG9seWdvbiBwb2ludHM9IjQ2LDIyIDI4LDQ0IDE5LDMwIi8+PHBvbHlnb24gcG9pbnRzPSI0NiwyMiAzMywzMyAyOCw0NCAyMiw0NCAyMiw5NSAzMSw5NSAyMCwxMDAgMTIsMTE3IDAsMTE3IDAsMjIiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyIvPjxwb2x5Z29uIHBvaW50cz0iMzEsOTUgMTIsMTE3IDQsMTA2Ii8+PC9nPjxnPjxwb2x5Z29uIHBvaW50cz0iNTYsMjIgNjIsMzYgMzcsNDQiLz48cG9seWdvbiBwb2ludHM9IjU2LDIyIDExMSwyMiAxMTEsNDQgMzcsNDQgNTYsMzIiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyIvPjxwb2x5Z29uIHBvaW50cz0iMTE2LDk1IDk3LDExNyA5MCwxMDQiLz48cG9seWdvbiBwb2ludHM9IjExNiw5NSAxMDAsMTA0IDk3LDExNyA0MiwxMTcgNDIsOTUiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyIvPjxwb2x5Z29uIHBvaW50cz0iMTUwLDAgNTIsMTE3IDMsMTQwIDEwMSwyMiIvPjwvZz48Zz48cG9seWdvbiBwb2ludHM9IjE0MSwyMiAxNDAsNDAgMTIyLDQ1Ii8+PHBvbHlnb24gcG9pbnRzPSIxNTMsMjIgMTUzLDExNyAxMDYsMTE3IDEyMCwxMDUgMTI1LDk1IDEzMSw5NSAxMzEsNDUgMTIyLDQ1IDEzMiwzNiAxNDEsMjIiIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyIvPjxwb2x5Z29uIHBvaW50cz0iMTI1LDk1IDEzMCwxMTAgMTA2LDExNyIvPjwvZz48L2c+PC9zdmc+">
8 <style type="text/css">8 <style type="text/css">
9 *, *::before, *::after {
10 box-sizing: border-box;
11 }
9 body {12 body {
10 font-family: system-ui, -apple-system, Roboto, "Segoe UI", sans-serif;13 font-family: system-ui, -apple-system, Roboto, "Segoe UI", sans-serif;
11 color: #000000;14 color: #000000;
...@@ -157,6 +160,23 @@...@@ -157,6 +160,23 @@
157 cursor: default;160 cursor: default;
158 }161 }
159162
163 #errors {
164 background-color: #faa;
165 position: fixed;
166 left: 0;
167 bottom: 0;
168 width: 100%;
169 max-height: min(20em, 50vh);
170 padding: 0.5em;
171 overflow: auto;
172 }
173 #errors h1 {
174 font-size: 1.5em;
175 }
176 #errors pre {
177 background-color: #fcc;
178 }
179
160 #listSearchResults li.selected {180 #listSearchResults li.selected {
161 background-color: #93e196;181 background-color: #93e196;
162 }182 }
...@@ -252,6 +272,14 @@...@@ -252,6 +272,14 @@
252 #listSearchResults li.selected a {272 #listSearchResults li.selected a {
253 color: #fff;273 color: #fff;
254 }274 }
275 #errors {
276 background-color: #800;
277 color: #fff;
278 }
279 #errors pre {
280 background-color: #a00;
281 color: #fff;
282 }
255 dl > div {283 dl > div {
256 border-color: #373737;284 border-color: #373737;
257 }285 }
...@@ -414,6 +442,10 @@...@@ -414,6 +442,10 @@
414 <dl><dt><kbd>↓</kbd></dt><dd>Move down in search results</dd></dl>442 <dl><dt><kbd>↓</kbd></dt><dd>Move down in search results</dd></dl>
415 <dl><dt><kbd>⏎</kbd></dt><dd>Go to active search result</dd></dl>443 <dl><dt><kbd>⏎</kbd></dt><dd>Go to active search result</dd></dl>
416 </div>444 </div>
445 <div id="errors" class="hidden">
446 <h1>Errors</h1>
447 <pre id="errorsText"></pre>
448 </div>
417 <script src="main.js"></script>449 <script src="main.js"></script>
418 </body>450 </body>
419</html>451</html>
lib/docs/main.js+4
...@@ -53,6 +53,8 @@...@@ -53,6 +53,8 @@
53 const domStatus = document.getElementById("status");53 const domStatus = document.getElementById("status");
54 const domTableFnErrors = document.getElementById("tableFnErrors");54 const domTableFnErrors = document.getElementById("tableFnErrors");
55 const domTldDocs = document.getElementById("tldDocs");55 const domTldDocs = document.getElementById("tldDocs");
56 const domErrors = document.getElementById("errors");
57 const domErrorsText = document.getElementById("errorsText");
5658
57 var searchTimer = null;59 var searchTimer = null;
5860
...@@ -94,6 +96,8 @@...@@ -94,6 +96,8 @@
94 switch (level) {96 switch (level) {
95 case LOG_err:97 case LOG_err:
96 console.error(msg);98 console.error(msg);
99 domErrorsText.textContent += msg + "\n";
100 domErrors.classList.remove("hidden");
97 break;101 break;
98 case LOG_warn:102 case LOG_warn:
99 console.warn(msg);103 console.warn(msg);