Commit e58f796
committed
Enable PEP 709 inlined comprehensions for function-like scopes
Activate the existing compile_inlined_comprehension() implementation
by fixing 6 bugs that prevented it from working:
- LoadFastAndClear: push NULL (not None) when slot is empty so
StoreFast can restore empty state after comprehension
- StoreFast: accept NULL from stack for the restore path
- sub_tables.remove(0) replaced with next_sub_table cursor to
match the pattern used elsewhere in the compiler
- in_inlined_comp flag moved from non-inlined to inlined path
- is_inlined_comprehension_context() now checks comp_inlined flag
and restricts inlining to function-like scopes
- comp_inlined set only when parent scope uses fastlocals
Symbol table analysis handles conflict detection:
- Nested scopes in comprehension → skip inlining
- Bound name conflicts with parent symbol → skip inlining
- Cross-comprehension reference conflicts → skip inlining
- Splice comprehension sub_tables into parent for nested scope tracking1 parent d62481f commit e58f796
3 files changed
+116
-53
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
968 | 968 | | |
969 | 969 | | |
970 | 970 | | |
971 | | - | |
972 | | - | |
973 | | - | |
974 | | - | |
975 | | - | |
976 | | - | |
| 971 | + | |
| 972 | + | |
| 973 | + | |
| 974 | + | |
| 975 | + | |
| 976 | + | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
| 981 | + | |
| 982 | + | |
| 983 | + | |
| 984 | + | |
| 985 | + | |
977 | 986 | | |
978 | 987 | | |
979 | 988 | | |
| |||
7640 | 7649 | | |
7641 | 7650 | | |
7642 | 7651 | | |
7643 | | - | |
| 7652 | + | |
| 7653 | + | |
7644 | 7654 | | |
7645 | 7655 | | |
7646 | 7656 | | |
7647 | 7657 | | |
7648 | 7658 | | |
| 7659 | + | |
| 7660 | + | |
7649 | 7661 | | |
7650 | 7662 | | |
7651 | 7663 | | |
| |||
7672 | 7684 | | |
7673 | 7685 | | |
7674 | 7686 | | |
7675 | | - | |
7676 | | - | |
7677 | | - | |
7678 | 7687 | | |
7679 | 7688 | | |
7680 | 7689 | | |
| |||
7837 | 7846 | | |
7838 | 7847 | | |
7839 | 7848 | | |
7840 | | - | |
7841 | | - | |
| 7849 | + | |
7842 | 7850 | | |
7843 | | - | |
| 7851 | + | |
| 7852 | + | |
| 7853 | + | |
7844 | 7854 | | |
7845 | 7855 | | |
7846 | | - | |
7847 | | - | |
7848 | | - | |
| 7856 | + | |
| 7857 | + | |
| 7858 | + | |
| 7859 | + | |
| 7860 | + | |
| 7861 | + | |
| 7862 | + | |
| 7863 | + | |
| 7864 | + | |
| 7865 | + | |
7849 | 7866 | | |
7850 | 7867 | | |
7851 | 7868 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
459 | 459 | | |
460 | 460 | | |
461 | 461 | | |
462 | | - | |
463 | | - | |
464 | | - | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
465 | 466 | | |
466 | 467 | | |
467 | 468 | | |
468 | 469 | | |
469 | 470 | | |
470 | | - | |
471 | | - | |
472 | | - | |
473 | | - | |
474 | | - | |
475 | | - | |
476 | | - | |
477 | | - | |
478 | | - | |
479 | | - | |
480 | | - | |
481 | | - | |
482 | | - | |
483 | | - | |
484 | | - | |
485 | | - | |
486 | | - | |
487 | | - | |
488 | | - | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
489 | 514 | | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
490 | 518 | | |
491 | 519 | | |
492 | 520 | | |
| |||
2037 | 2065 | | |
2038 | 2066 | | |
2039 | 2067 | | |
2040 | | - | |
2041 | | - | |
2042 | | - | |
2043 | | - | |
2044 | | - | |
2045 | | - | |
2046 | | - | |
| 2068 | + | |
| 2069 | + | |
| 2070 | + | |
| 2071 | + | |
| 2072 | + | |
| 2073 | + | |
| 2074 | + | |
| 2075 | + | |
| 2076 | + | |
| 2077 | + | |
| 2078 | + | |
| 2079 | + | |
| 2080 | + | |
| 2081 | + | |
| 2082 | + | |
| 2083 | + | |
| 2084 | + | |
| 2085 | + | |
| 2086 | + | |
| 2087 | + | |
| 2088 | + | |
| 2089 | + | |
| 2090 | + | |
| 2091 | + | |
| 2092 | + | |
2047 | 2093 | | |
2048 | 2094 | | |
2049 | 2095 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2699 | 2699 | | |
2700 | 2700 | | |
2701 | 2701 | | |
2702 | | - | |
2703 | | - | |
| 2702 | + | |
| 2703 | + | |
| 2704 | + | |
2704 | 2705 | | |
2705 | | - | |
2706 | | - | |
2707 | | - | |
2708 | | - | |
| 2706 | + | |
| 2707 | + | |
2709 | 2708 | | |
2710 | 2709 | | |
2711 | 2710 | | |
| |||
3300 | 3299 | | |
3301 | 3300 | | |
3302 | 3301 | | |
3303 | | - | |
| 3302 | + | |
| 3303 | + | |
3304 | 3304 | | |
3305 | | - | |
| 3305 | + | |
3306 | 3306 | | |
3307 | 3307 | | |
3308 | 3308 | | |
| |||
0 commit comments