Register imported libraries in dependency order (#3620)

block_mark_referenced walks the joined block backwards and skips the
body of any definition not yet marked referenced, so a library must
precede its importers.  f58787c41 registered a library before walking
its dependencies, to have somewhere to keep the `loading` flag, which
reversed that order and made block_drop_unreferenced free definitions
that are still referenced through bound_by.

Keep the libraries being loaded on a stack threaded through the
load_library frames instead, so registration can move back after the
dependency walk.
This commit is contained in:
itchyny authored and GitHub committed 2026-09-18 22:27:54 +09:00
1 parent e371bfaa92
commit 12cdd950e9
7 files changed
+59 -23

No files matched your search

+2
View File
@@ -0,0 +1,2 @@
def _f: 3;
def f: _f;