Repository navigation
feat: fan-in groups read graph inputs directly - #20
Merged
Merged
Conversation
psyinf
force-pushed
the
feature/to-ascii
branch
from
September 19, 2026 20:59
4457246 to
4f00c6d
Compare
A group entry may now be `in` or `in.<key>`, positional or named: `(plots: plots, ticks: in.ticks) -> Tracker -> out`. Both parsers accept the `.key`; buildStatement spells it `in.<key>`, registers the input in GraphProgram::inputs like a single source does, and rejects `x.key`, `out` and `end` inside a group. An undeclared input read only by a merge slot takes the slot's type. The namedPipeline example gets a section for it, and README, EXAMPLE.md and CHANGELOG describe it.
psyinf
force-pushed
the
feature/group-inputs
branch
from
September 19, 2026 21:07
dcc13f5 to
32d2f52
Compare
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.
Stacked on #19 (
feature/to-ascii). Retarget tomainonce #17–#19 are merged.Problem
A merge could not read a named graph input:
The workaround was a pass-through stage to copy the input onto an ordinary edge. Plain
inin a group wasparsed, but it was never registered as a graph input.
Change
.keyafter a group edge,including after
name:. They record each edge's key and location.buildStatementchecks the group edges.in.<key>is spelled as its edge.x.keygets the usual". only on in/out" diagnostic.
out,out.<key>andendinside a group give "may only appear as the lastterm". Every
in/in.<key>is registered through a newbindInputhelper, the same one the single-sourcebranch now uses, deduplicated by edge.
wireMergeSlotsnow infers the type of an undeclared input read only by a merge slot from thatslot's type. Before, such an input stayed untyped. Declared inputs are checked as before
(
slot 2 of 'X' expects ... but the graph input 'in.quotes' carries ...).namedPipelinegets section 7,(greeting: in.greeting, name: proper) -> Greet, with itstoAsciilisting. README, EXAMPLE.md, CHANGELOG and the grammar comment in GraphLang.hpp describe the new form.Tests
inin a group of a single-input graphstd::invalid_argumenton a wrong typemsg.x,out,out.xGraphProgram::inputsand the input's locationtoAsciiroots a tree at a group-only inputAll 124 tests pass locally (MSVC debug developer preset).