Commit bd31dd7
Analyze class decorators (#125 follow-up)
visit_ClassDef previously ignored node.decorator_list entirely, so class
decorators like `@dataclass` or `@register(kind="x")` produced no uses
edges anywhere — neither for the module nor for the decorated class.
Spotted while fixing #125.
Apply the same treatment as function decorators: visit the decorator
expressions in the enclosing scope (Python evaluates them there at
definition time), record the uses via the `_decorator_use_recorders`
stack, and re-emit them from the class node once we're inside the class
scope. Fixture extended with `ApiHandler` / `SecureApiHandler` to cover
the bare and callable-argument cases.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent a50b943 commit bd31dd7
4 files changed
Lines changed: 52 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
8 | 9 | | |
9 | 10 | | |
10 | 11 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
602 | 602 | | |
603 | 603 | | |
604 | 604 | | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
605 | 616 | | |
606 | 617 | | |
607 | 618 | | |
| |||
634 | 645 | | |
635 | 646 | | |
636 | 647 | | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
637 | 653 | | |
638 | 654 | | |
639 | 655 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
263 | 263 | | |
264 | 264 | | |
265 | 265 | | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
0 commit comments