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:
co-authored by
Claude Opus 4.7
parent
61153f96ee
commit
1821038e4b
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user