docs(changelog): add Objective-C indexing entry under [Unreleased] (#429)

Covers #165: tree-sitter-objc extractor for .m / .mm / content-sniffed
.h, with full multi-part selectors, @protocol nodes, @property, message
expression call edges, extends/implements edges. Validated on
AFNetworking / RestKit / Texture. Disclosed limitations match the
README's 'Partial support' note (categories produce duplicate class
nodes per category file; .mm ObjC++ parses incompletely under the ObjC
grammar; mixed Swift/ObjC bridging out of scope, tracked separately).

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Colby Mchenry
2026-05-26 00:35:35 -05:00
committed by GitHub
co-authored by Claude Opus 4.7
parent 61153f96ee
commit 1821038e4b
+28
View File
@@ -56,6 +56,34 @@ and adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
banner stays accurate at any debounce value because it's per-file, not a banner stays accurate at any debounce value because it's per-file, not a
static "wait N ms" instruction. static "wait N ms" instruction.
- **Objective-C indexing — `.m`, `.mm`, and content-sniffed `.h` files now
parse with full structural extraction (#165).** Adds a tree-sitter-objc
extractor that produces `class` nodes for `@interface` / `@implementation`
(deduplicated into one), `protocol` nodes for `@protocol`, methods with
**full multi-part selectors** (`setObject:forKey:`, `tableView:didSelectRowAtIndexPath:`
— not just the first keyword, which would collide distinct methods),
`+`/`-` static distinction, `@property` declarations, `#import` for both
`<system>` and `"local"` forms, and `extends` / `implements` edges for
superclasses and `<Protocol>` conformance lists. Call edges come from
both C-style `call_expression` and ObjC `message_expression` (with
`self`/`super` skipped on qualified callee names). Header files default
to C unless content-sniffing finds `@interface`/`@implementation`/
`@protocol`/`@synthesize`, so iOS headers classify correctly without
breaking pure-C projects. Validated on AFNetworking (84 files, 100% file
coverage, 93 multi-keyword selectors), RestKit (282 files, 99.6%), and
Texture (926 files, 100% — including heavy `.mm` ObjC++ content).
Disclosed limitations: categories produce one extra class node per
category file (e.g. `ASDisplayNode+Yoga.m` creates a second `ASDisplayNode`
node attributed to the category file); chained/nested message sends record
only the innermost method; `[Class alloc]` patterns don't yet emit
`instantiates` edges; `@protocol Foo <Bar>` refinement lists aren't wired
to `implements`; heavy C++ in `.mm` files may parse incompletely under the
ObjC grammar. Mixed Swift/Objective-C cross-language resolution
(`@objc`-exposed Swift methods, bridging headers, React Native's native
bridge) is **not** in scope for this entry — that's a separate effort
tracked under the dynamic-dispatch coverage playbook.
### Fixed ### Fixed
- **Git worktrees no longer silently borrow another tree's index (#155).** - **Git worktrees no longer silently borrow another tree's index (#155).**
When a worktree is nested inside the main checkout — exactly what agent When a worktree is nested inside the main checkout — exactly what agent