Repository navigation
Fix qualified range endpoints and literal recovery - #159
Merged
Merged
Conversation
This was referenced Oct 7, 2026
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.
Summary
Fixes #157.
Type.{...},.{...}, andEnum::Variant with payload) and remove migration-only literal parsing and stored control-header state.BadExprdiagnostics intact in the resolver and publish invalid type evidence in the typechecker. Type-argument diagnostic wording requires parsedAppliedType.TypeArgsevidence.afc5568; implementation is commita145d64.Delivered
29eac4d7de54cb82babf880ea26cf876ba6b1d92; Disambiguate qualified range endpoints from loop bodies #157 is closed with its acceptance checklist complete.mainCI passed, including six native Linux/macOS/Windows amd64/arm64 jobs and bundled source fixtures. Post-merge CI: https://github.com/PeeperLanguage/compiler/actions/runs/37576611310.Donein Peeper Roadmap. Project access was granted during post-merge reconciliation; the earlier access blocker is resolved.Production ownership
parseForStmt->parseIndexOperand/parseRangeExpr-> Pratt expression parser -> existing binding, typechecking, THIR, MIR, and LLVM owners.recoverBracedLiteralis called by prefix recovery, identifier/qualified-path suffix recovery, and parsed generic-path recovery. It centralizes non-obvious delimiter/body ownership rather than adding a second parser.literalFieldFollowsis reused by header disambiguation and argument-comma recovery. Both helpers have current non-test production callers.parseBracedItemList, registeredBadExpr, diagnostic codes, and semantic evidence publication.Parser.isControlHeader,parseExprWithControlHeader,variantLiteralPrecedesControlBody, migration-only literal branches, and the obsolete struct-field pass-through layer. No unused production API or experimental scaffolding remains.Design and behavior
values::Zero..values::One { ... }could treat the body as a malformed enum payload and cascade into missing delimiter/return diagnostics. Qualified control headers followed by standalone blocks had the same ambiguity.::.Validation
Passed on final compiler source, before the documentation-only backlog commit:
The focused parser/resolver/typechecker check passed again during read-only review (0.216s / 0.033s / 1.678s). Final targeted bundled fixtures passed in 0.469s.
Earlier Step 7 validation passed before the final diagnostic-only type-argument guard; these results are inherited, not rerun for that guard:
Full bundled fixtures passed in isolation (18.405s). Pipeline regression covers 386/amd64 binding, imported ownership, types, guaranteed entry, missing-return behavior, and lowering/object contracts. Disposable
peeper checkprobes exercised targeted literal diagnostics and valid adjacent-block controls.At PR creation, preflight verified remote
mainwas03a3272, reviewed both included commits, and confirmed implementation-source diff checks pass. Whole-branchgit diff main...HEAD --checkreports the two-space Markdown line breaks in the author's separateTODO.mdcommit; the same check excludingTODO.mdpasses. No compiler source changed after validation. Cross-platform native execution subsequently passed in PR and post-merge CI.Diff sanity
Risks and follow-up
0.2 Language Foundations. Roadmap project sync is complete.