Commit 9e67858
committed
fix(eval): don't leak the implicit 'use Dynamic' into the global env
evalDynamicVM, evalExpandVM and annotateWithinContextVM installed an
implicit 'use Dynamic' on the global env so unqualified dynamic calls
resolve during evaluation, but the modified env escaped through the
returned context and stuck around permanently. Static symbol
qualification then saw the Dynamic module as a used module, so
unqualified multisym calls (like 'reduce' under '(use Array)') inside
nested modules picked up Dynamic.* candidates, failed to narrow to a
single binding, and silently stayed generic -- surfacing later as
'unresolved generic type' errors at call sites that couldn't pin the
types either.
The implicit use path is now scrubbed from result contexts again
(unless the global env legitimately had 'use Dynamic' before), and
qualification in annotateWithinContextVM runs on the unpolluted
context.1 parent 0d354aa commit 9e67858
3 files changed
Lines changed: 62 additions & 13 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| 43 | + | |
43 | 44 | | |
44 | 45 | | |
45 | 46 | | |
| |||
426 | 427 | | |
427 | 428 | | |
428 | 429 | | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
429 | 434 | | |
430 | 435 | | |
431 | 436 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
189 | 189 | | |
190 | 190 | | |
191 | 191 | | |
192 | | - | |
193 | | - | |
194 | | - | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
195 | 197 | | |
196 | 198 | | |
197 | | - | |
198 | | - | |
199 | | - | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
200 | 208 | | |
201 | 209 | | |
202 | 210 | | |
203 | 211 | | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
204 | 215 | | |
205 | 216 | | |
206 | | - | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
207 | 226 | | |
208 | 227 | | |
209 | 228 | | |
| |||
408 | 427 | | |
409 | 428 | | |
410 | 429 | | |
411 | | - | |
412 | | - | |
413 | | - | |
414 | | - | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
415 | 433 | | |
416 | 434 | | |
417 | 435 | | |
418 | 436 | | |
419 | | - | |
| 437 | + | |
420 | 438 | | |
421 | 439 | | |
422 | 440 | | |
423 | | - | |
| 441 | + | |
424 | 442 | | |
425 | 443 | | |
426 | 444 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
0 commit comments