Repository navigation
human encoding: fix a couple round-tripping bugs - #395
Merged
apoelstra merged 3 commits intoOct 20, 2026
Merged
Conversation
`FailEntropy`'s `Display` impl renders bare hex, but the human-readable
lexer only accepts hex literals with a `0x` prefix. So any program
containing a `fail` node was serialized by `Forest::string_serialize`
into a string that `Forest::parse` rejected ("unexpected character `0`"),
breaking the parse/serialize round-trip in the same way as issue BlockstreamResearch#394.
Emit `fail 0x...` so the output re-parses.
Written by GLM-5.3-Flash in Hermes Agent.
The type `Display` implementations (`types::Final` and `types::Incomplete`) render the sum `1 + A` as `A?`. But the parser didn't accept this notation. Update the parser and document the new syntax in the human encoding README. Fixes BlockstreamResearch#394. Written by GLM-5.3-Flash in Hermes Agent.
Add tests covering the two serialization bugs fixed in the previous commits: * `parse::ast`: assert that the `A?` display shorthand parses to `1 + A`, binds tighter than `+`/`*`, supports nesting (`2??`), and is accepted in expression type ascriptions. * `human_encoding`: assert that `Forest::string_serialize` output re-parses to an equal forest for the issue BlockstreamResearch#394 reproducer (`- := ?` / `a: v+2 -> v`), for the shorthand in nested and compound type positions, and for a program containing a `fail` node (including the `0x` prefix on the entropy). Written by GLM-5.3-Flash in Hermes Agent.
Collaborator
Author
|
On 07ebcbb successfully ran local tests |
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.
Written by GLM-5.3-Flash in Hermes Agent. I tidied up some tests, rearranged commits, and rewrote commit messages, but otherwise this was one-shotted.
Fixes #394