Skip to content

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

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.
@rahlk rahlk added the bug Something isn't working label Sep 15, 2026
@rahlk rahlk changed the title fix: byte-sliceable L3 statement nodes Byte-sliceable L3 statement nodes Sep 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant