Conversation
code-review-graph reviewOverall risk: 0.55 (MEDIUM) — 12 changed function(s)/class(es), 28 affected flow(s), 5 test gap(s) Risk-scored changes
Affected execution flows
Test gaps
Token savings: this graph-backed report used ~264,686 fewer tokens (~90%) than reading every changed file in full (estimated, chars/4 approximation). Powered by code-review-graph — local-first analysis; no code leaves the CI runner. |
|
This fails the checks once merged into Merged into origin/staging (clean, ort strategy). pytest (py3.13): "FAILED tests/test_multilang.py::TestElixirParsing::test_multi_clause_functions_keep_the_full_graph_range / 1 failed, 3224 passed, 9 skipped, 2 xpassed, 1 warning in 112.79s". Failure: "assert (5, 5) == (4, 5)" at tests/test_multilang.py:2769. ruff: "All checks passed!". mypy: "Success: no issues found in 72 source files". To fix:
Merge PRs now target |
|
Ok @tirth8205 I will look into it in a while |
|
You pushed Gates on Item by item:
One nit, not blocking. The two writers now disagree for non-Function kinds. 2,6 is arguably the better answer for a partial class, but it is a side effect of dropping the guard rather than a decision anyone made, and it is untested. Pick one, apply it to both writers, and pin it with a test. That can be a follow-up. Queued for merge. Removing |
|
Yeah thanks for the review @tirth8205 Just a follow up from my side Would love to connect with you if you do allow as per your time on linkedin |
|
The MIN/MAX line-range merge on the
That reaches the read path. The queued follow-up does not fix this. Second problem, in the parser. def guarded(x) when is_binary(x), do: helper(x)staging misses the Third, guard calls such as The Elixir fix itself is right. On To merge: move the clause merge into the Elixir path in the parser, where sibling clauses are known to be siblings, and leave both |
Pull Request
Linked issue
Closes #979
What & why
Fixes two Elixir function graphing issues:
deffunctions usingwhenwere silently dropped because theirfunction heads are wrapped in a
binary_operatornode. The parser nowrecursively unwraps
whenexpressions to find the actual function head.clause to overwrite the earlier clause's line range. Function/Test nodes now
preserve the minimum
line_startand maximumline_endacross clauses.Added regression coverage for guarded function calls, zero-arity functions,
and multi-clause function ranges.
How it was tested