Commit 25c7c94
ast: print side table entries alongside the tree
pretty_print only walked the arena, so there was no way to see what a
binder had written. SideTables also had no way to enumerate its tables -
table<T>() only reaches one you already name - so for_each_table is
generated now, the counterpart of Arena::for_each_pool.
`-- statements[0]: Field #4
|-- [DocComment].leading = 3:0
|-- [IsMutated] = true
`-- name: Ident #5
|-- [Resolution].target -> Field #4
`-- identifier = "value"
All three storage kinds render: dense and sparse through the entry's
for_each_field, flag as bare presence since it carries no value. Tables
are keyed by id regardless of the node type they declare, so the key is
rebuilt from the runtime type.
A Node inside an entry is shown as a reference rather than descended
into. Following it overflows the stack - Resolution points from an Ident
back to the Field that owns it, so Field -> name -> Ident ->
[Resolution].target -> Field repeats. A side table is not an owning edge.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>1 parent 73fbdee commit 25c7c94
3 files changed
Lines changed: 71 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
222 | 222 | | |
223 | 223 | | |
224 | 224 | | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
225 | 231 | | |
226 | 232 | | |
227 | 233 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
26 | 29 | | |
27 | 30 | | |
28 | 31 | | |
29 | 32 | | |
| 33 | + | |
| 34 | + | |
30 | 35 | | |
31 | 36 | | |
32 | 37 | | |
| 38 | + | |
33 | 39 | | |
34 | 40 | | |
35 | | - | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
36 | 45 | | |
37 | 46 | | |
38 | 47 | | |
| |||
97 | 106 | | |
98 | 107 | | |
99 | 108 | | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
100 | 139 | | |
101 | 140 | | |
102 | 141 | | |
| |||
117 | 156 | | |
118 | 157 | | |
119 | 158 | | |
| 159 | + | |
120 | 160 | | |
121 | 161 | | |
122 | 162 | | |
| |||
159 | 199 | | |
160 | 200 | | |
161 | 201 | | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
162 | 210 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
244 | 244 | | |
245 | 245 | | |
246 | 246 | | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
247 | 263 | | |
248 | 264 | | |
249 | 265 | | |
| |||
0 commit comments