Skip to content

Fix ze library topo sort#503

Merged
TApplencourt merged 1 commit into
develfrom
fix-ze-library-topo-sort
May 20, 2026
Merged

Fix ze library topo sort#503
TApplencourt merged 1 commit into
develfrom
fix-ze-library-topo-sort

Conversation

@TApplencourt
Copy link
Copy Markdown
Collaborator

The DFS in gen_ze_library.rb returned early on CustomType nodes, so struct members and function-pointer params that referenced another typedef by name never pulled that typedef forward. The resulting ze_library.rb was loadable only by coincidence of $all_types order (which depends on the libclang version h2yaml uses).

Now CustomType nodes resolve through a name->Decl map and recurse, and the case-branch also handles typedef-to-typedef Decls (e.g. typedef uint8_t ze_bool_t). Fuzz-tested with 130 random shuffles and a full-reverse of every list in ze_api.yaml; previously the same shuffles failed 10/10 with NameError/TypeError at FFI layout time.

The DFS in gen_ze_library.rb returned early on CustomType nodes, so
struct members and function-pointer params that referenced another
typedef by name never pulled that typedef forward. The resulting
ze_library.rb was loadable only by coincidence of $all_types order
(which depends on the libclang version h2yaml uses).

Now CustomType nodes resolve through a name->Decl map and recurse,
and the case-branch also handles typedef-to-typedef Decls (e.g.
`typedef uint8_t ze_bool_t`). Fuzz-tested with 130 random shuffles
and a full-reverse of every list in ze_api.yaml; previously the same
shuffles failed 10/10 with NameError/TypeError at FFI layout time.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@TApplencourt TApplencourt merged commit 900e62e into devel May 20, 2026
28 checks passed
@TApplencourt TApplencourt deleted the fix-ze-library-topo-sort branch May 20, 2026 20:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant