Skip to content

fix: byte-sliceable L3 statement nodes#36

Open
rahlk wants to merge 1 commit into
test/issue-27-monotonicity-gatefrom
fix/issue-28-l3-byte-spans
Open

fix: byte-sliceable L3 statement nodes#36
rahlk wants to merge 1 commit into
test/issue-27-monotonicity-gatefrom
fix/issue-28-l3-byte-spans

Conversation

@rahlk

@rahlk rahlk commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Closes #28. Part of epic #26 (contract-correctness cluster).

Stacked PR 2 of 7 — base: test/issue-27-monotonicity-gate; review this PR's diff in isolation. Merge the stack bottom-up into feat/issue-2-program-graphs.

Verified: full suite 99 pass / 0 fail, typecheck clean, schema.neo4j.json in lockstep. Reviewed (task-scoped + final whole-branch review: READY TO MERGE).

GraphNode carried only line/column, so spanOf() in schema/v2/dataflow.ts
hardcoded bytes:[0,0] for every L3 entry/exit/param/statement node —
module.source.slice(...) on any L3 body node returned "". Add
start_offset/end_offset (UTF-16 char offsets, matching the L1 convention)
to GraphNode, populate them at the single construction site
(dataflow/extract.ts's emitNode, from the owning ts-morph node's
getStart()/getEnd() — the whole callable for entry/exit, the param decl
for param nodes), and have spanOf() use them.
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