fix(extract): keep decorators separated by a comment#1097
fix(extract): keep decorators separated by a comment#1097JhohanBustamante wants to merge 1 commit into
Conversation
|
Thanks for splitting this into a focused PR. The current head fb7a808 is atomic, the regression is red on the previous named-comment break behavior, and both counting and collection walks apply the same boundary rule. Non-comment named siblings still terminate the run, so this does not broaden decorator association across declarations. The full CI and DCO sets are green. The security review found no dependency, workflow, network, credential, prompt-injection, or parser-execution risk. I have triaged it as a high-priority 0.9.1-rc parsing fix. No contributor change is requested at this stage; the next step is final maintainer diff review. |
|
Reviewed — this is a clean, well-scoped fix and the One thing before it can land: the branch base is ~29 commits behind |
Comments are NAMED tree-sitter nodes, so the prev-sibling walk in
extract_decorators() stopped at one — silently dropping every decorator ABOVE
an interleaved comment:
@post('login') <-- dropped
@httpcode(HttpStatus.OK) <-- dropped
// throttled per IP and account
@Throttle({ ... }) <-- kept
async login(...)
The route then vanished from decorator/route queries, so documenting a
decorator made the endpoint disappear from the graph. Real-world impact: on a
NestJS backend, 1 of 95 HTTP endpoints was missing — the one whose throttle
policy carried an explanatory comment.
Comments are now transparent to the walk, the same way anonymous tokens
(e.g. TS `export`) already were. Reuses the existing is_comment_node() helper.
Signed-off-by: KolisCode <jhohantma@gmail.com>
fb7a808 to
012be57
Compare
Fixes #1095.
A comment between decorators drops every decorator above it
extract_decorators()walks prev-siblings and breaks on the first NAMED node.Comments are named nodes in tree-sitter, so a comment interleaved in a
decorator run ends the walk:
The route then has no
@Post, so it vanishes from any decorator-based query:documenting a decorator removes the endpoint from the graph. On the backend I was
indexing, exactly 1 of 95 HTTP endpoints was missing — the one whose throttle
policy carried an explanatory comment.
Comments are now transparent to the walk, the same way the anonymous tokens
(e.g. TS
export) already were. Reuses the existingis_comment_node()helper.Test
tests/test_extraction.c:extract_ts_decorators_survive_interleaved_commenttest-runner extraction→ 214 passed (ASan + UBSan build).Split out of #1075 per review, as one focused PR linked to its issue. The Cypher
composite-property fix is now #1096 / its own PR.