Skip to content

Add find_first_by_kind and support :break in cursor traversal.#101

Merged
cfis merged 1 commit intosocketry:mainfrom
cfis:find_first_by_kind
Mar 17, 2026
Merged

Add find_first_by_kind and support :break in cursor traversal.#101
cfis merged 1 commit intosocketry:mainfrom
cfis:find_first_by_kind

Conversation

@cfis
Copy link
Copy Markdown
Collaborator

@cfis cfis commented Mar 16, 2026

Add Cursor#find_first_by_kind which finds the first child cursor matching any of the given kinds, short-circuiting via :break for efficient early termination. Uses Set for O(1) kind lookups.

Also add :break support to Cursor#each so blocks can stop traversal by returning :break. Previously :break was a valid libclang child_visit_result but was silently ignored by the Ruby wrapper.

Types of Changes

  • New feature.

Contribution

Add Cursor#find_first_by_kind which finds the first child cursor
matching any of the given kinds, short-circuiting via :break for
efficient early termination. Uses Set for O(1) kind lookups.

Also add :break support to Cursor#each so blocks can stop traversal
by returning :break. Previously :break was a valid libclang
child_visit_result but was silently ignored by the Ruby wrapper.

## Types of Changes

- New feature.

## Contribution

- [x] I added tests for my changes.
- [x] I tested my changes locally.
- [x] I agree to the [Developer's Certificate of Origin 1.1](https://developercertificate.org/).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@cfis cfis merged commit 06bbcd0 into socketry:main Mar 17, 2026
6 checks passed
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