Commit 8c03985
committed
Fix DCE false positives for functors constrained by a named module type
When a module or functor result is constrained to a module type defined
in another file (via .mli or inline), the typed tree's declaration
dependencies link each implementation value to the `val` item of that
module type, which lives in another compilation unit's cmt. The
extractor only loaded the local cmt and cmti, so those links were dropped
and every value in the functor body was reported dead.
- Index all cmt/cmti files by compilation unit up front and resolve
foreign uids from them (OCaml 5.3+).
- Defer processing of value dependencies until all files are scanned.
When the signature side is not a declaration (a `val` inside a named
module type), forward the references made to it onto the
implementation rather than treating it as an always-live reference,
so unused items in the signature are still reported.1 parent 5b18e1c commit 8c03985
4 files changed
Lines changed: 96 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
1 | 5 | | |
2 | 6 | | |
3 | 7 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
303 | 303 | | |
304 | 304 | | |
305 | 305 | | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
306 | 326 | | |
307 | 327 | | |
308 | 328 | | |
309 | 329 | | |
310 | 330 | | |
| 331 | + | |
311 | 332 | | |
312 | | - | |
| 333 | + | |
| 334 | + | |
313 | 335 | | |
314 | 336 | | |
315 | | - | |
316 | | - | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
317 | 343 | | |
| 344 | + | |
318 | 345 | | |
319 | 346 | | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
320 | 368 | | |
321 | 369 | | |
322 | 370 | | |
323 | 371 | | |
324 | 372 | | |
325 | 373 | | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
326 | 380 | | |
327 | 381 | | |
328 | 382 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
509 | 509 | | |
510 | 510 | | |
511 | 511 | | |
512 | | - | |
513 | | - | |
514 | | - | |
515 | | - | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
516 | 543 | | |
517 | 544 | | |
518 | 545 | | |
519 | 546 | | |
520 | 547 | | |
521 | 548 | | |
522 | | - | |
| 549 | + | |
| 550 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
| 46 | + | |
46 | 47 | | |
47 | 48 | | |
48 | 49 | | |
| |||
88 | 89 | | |
89 | 90 | | |
90 | 91 | | |
| 92 | + | |
91 | 93 | | |
92 | 94 | | |
93 | 95 | | |
| |||
0 commit comments