Skip to content

Release 0.17.1: fix the conditional-conformance where clause in dump - #119

Merged
Mx-Iris merged 2 commits into
mainfrom
next
Aug 28, 2026
Merged

Release 0.17.1: fix the conditional-conformance where clause in dump#119
Mx-Iris merged 2 commits into
mainfrom
next

Conversation

@Mx-Iris

@Mx-Iris Mx-Iris commented Aug 28, 2026

Copy link
Copy Markdown
Member

dump printed a conditional conformance's where requirements with no separator between them, so any conformance carrying two or more conditions rendered invalid Swift:

extension …ConditionalContainerTest: …ConditionalThirdProtocol where A: …ConditionalFirstProtocolA: …ConditionalSecondProtocolA: …ConditionalThirdProtocol {}

ProtocolConformanceDumper.declaration's loop never emitted , between requirements. The repository's other two requirement loops — ProtocolDumper's inherited-protocol clause and TargetGenericContext.dumpGenericRequirements — already had the separator; this one was written without it in August 2025 and the dump snapshot froze the malformed line as expected output, so nothing caught it.

interface was never affected: it renders the same clause through SwiftDeclarationPrinter, whose loop is correct (its snapshot shows the commas).

What is in here

  • The fix, plus the corrected snapshot, which fails on the old dumper and passes on the new one.
  • release: 0.17.1BundledVersion bump and Changelogs/0.17.1.md.

Verification

  • swift test --skip IntegrationTests: 1557 tests, one failure — differentKeysParallelViaTaskGroup, the known wall-clock parallelism assertion that only fails under full-suite load; it passes in isolation.
  • The snapshot was flipped to the correct expectation before the code change and confirmed red (exit 1), then green (exit 0) after it.
  • Whole-repository scan for the same pattern: this was the only requirement loop missing a separator, and the only two malformed lines in any snapshot.

`ProtocolConformanceDumper.declaration` emitted every conditional
requirement back to back, so a conformance carrying two or more
conditions rendered as `where A: FirstProtocolA: SecondProtocol` —
not valid Swift. Follow the separator contract the repository's other
two requirement loops already have (`ProtocolDumper`'s inherited-protocol
clause and `TargetGenericContext.dumpGenericRequirements`).

Only the `dump` path was affected; `interface` renders the same clause
through `SwiftDeclarationPrinter`, whose loop was already correct.

The dump snapshot had frozen the malformed output since the dumper was
written (d45a91b, 2025-08-14); its corrected form is the regression test
— it fails on the old dumper and passes on the new one.
Bumps BundledVersion to 0.17.1 and adds the changelog for the single fix
that landed on next after 0.17.0: `dump` emitted a conditional
conformance's `where` requirements with no separator between them, so any
conformance carrying two or more conditions rendered invalid Swift.

A patch number is what this warrants — one behavioural fix in one
rendering path, no API change, no dependency change, no snapshot
formatVersion change. ProjectEvolutionLog's per-section version
annotations were re-checked as its maintenance rule asks at every bump
and need no edit: the last section (PR #118 review fixes) ships in
0.17.0, and a single-line separator fix does not warrant a section of
its own.
Copilot AI lite review requested due to automatic review settings August 28, 2026 10:01

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@Mx-Iris
Mx-Iris merged commit 6ab2cd3 into main Aug 28, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants