Repository navigation
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is a prototype for proposal 2 of #1632 (a value used twice), in reply to the request to prototype 1–7. It is opened against
bendlang/bendfor review:bend2/bend.tsis human-written per AGENTS.md, so it is not a merge request as it stands. The branch isproto/1632-2-uses-point-at-useson the fork,3f22cc5b, rebased onmain; the repo gate is green.uses_close(bend.ts:3568) gets the checked body from its two callers and re-walks it forVarnodes of the binder, as the measure counts them: a type position (an annotation's type, an equation's endpoints, a rewrite's motive, a type application) is dead, and so is an erased field, so neither is counted. It runs only on the failure path. Line:column comes fromparse_col, the caret moves to the second use, and if fewer than two uses are found it falls back to the old wording.Mincounts both operands (meet_charges_its_operandsneeded that), and a use in each match arm is still not flagged (arms join).Your repro:
The count is the mentions in the body, so the message says appears: a match's arms join, so one use in each arm is one use, and the number can be larger than what the measure saw.
The refinement: a field-pattern lambda carries the parameter it matched (set in
match_flatten, carried bybody_flatten/term_higher/term_loweras a non-enumerable property, so it never enters the JSON term keyscomp.tsandsafe.tsderive from terms), so the second Note names that parameter, not the field:All 19 existing tests whose output contains "consumed more than once" take the new message (none fall back), and
tests/check/pattern_use_twice.bendpins the pattern case,tests/check/equation_endpoints_dead.bendpins that a mention in a type position is not a use.