Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions Changelogs/0.17.1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# 0.17.1

A patch release on top of `0.17.0`. One fix, and it only affects `dump`.

1. **Conditional conformances with more than one condition print valid Swift again.** The `where` clause ran its requirements together with no separator — `extension Box: Hashable where A: EquatableA: Hashable` instead of `where A: Equatable, A: Hashable`. A conformance with exactly one condition was never affected, and neither was `interface`, which renders the same clause through a different printer.

The bug had been there since the conditional-conformance clause was first dumped (August 2025). It survived that long because this repository's own dump snapshot had frozen the malformed line as the expected output; the snapshot is corrected in the same commit and is now the regression test.

## Compatibility

- No API additions, removals or renames. No snapshot `formatVersion` change.
- Pinned dependencies are unchanged from `0.17.0`.
- The only output change is the one above: a comma and a space now separate each condition.

## Requirements

- Swift 6.2+
- Xcode 26.0+
6 changes: 5 additions & 1 deletion Sources/SwiftDump/Dumper/ProtocolConformanceDumper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,12 @@ package struct ProtocolConformanceDumper<MachO: FieldLayoutRenderable>: Conforme
Space()
}

for conditionalRequirement in dumped.conditionalRequirements {
for (offset, conditionalRequirement) in dumped.conditionalRequirements.offsetEnumerated() {
try await conditionalRequirement.dump(resolver: demangleResolver, in: machO)
if !offset.isEnd {
Standard(",")
Space()
}
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion Sources/swift-section/Version.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
// When bumping: also add Changelogs/<value>.md, then tag the release with the same string.
// Verified by .github/workflows/version-check.yml (PR) and .github/workflows/release.yml (tag).
enum BundledVersion {
static let value = "0.17.0"
static let value = "0.17.1"
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,5 @@ extension SymbolTestsCore.ConditionalConformanceVariants.ConditionalContainerTes
method descriptor for static Swift.Comparable.> infix(A, A) -> Swift.Bool
}
extension SymbolTestsCore.ConditionalConformanceVariants.ConditionalContainerTest: SymbolTestsCore.ConditionalConformanceVariants.ConditionalFirstProtocol where A: SymbolTestsCore.ConditionalConformanceVariants.ConditionalFirstProtocol {}
extension SymbolTestsCore.ConditionalConformanceVariants.ConditionalContainerTest: SymbolTestsCore.ConditionalConformanceVariants.ConditionalSecondProtocol where A: SymbolTestsCore.ConditionalConformanceVariants.ConditionalFirstProtocolA: SymbolTestsCore.ConditionalConformanceVariants.ConditionalSecondProtocol {}
extension SymbolTestsCore.ConditionalConformanceVariants.ConditionalContainerTest: SymbolTestsCore.ConditionalConformanceVariants.ConditionalThirdProtocol where A: SymbolTestsCore.ConditionalConformanceVariants.ConditionalFirstProtocolA: SymbolTestsCore.ConditionalConformanceVariants.ConditionalSecondProtocolA: SymbolTestsCore.ConditionalConformanceVariants.ConditionalThirdProtocol {}
extension SymbolTestsCore.ConditionalConformanceVariants.ConditionalContainerTest: SymbolTestsCore.ConditionalConformanceVariants.ConditionalSecondProtocol where A: SymbolTestsCore.ConditionalConformanceVariants.ConditionalFirstProtocol, A: SymbolTestsCore.ConditionalConformanceVariants.ConditionalSecondProtocol {}
extension SymbolTestsCore.ConditionalConformanceVariants.ConditionalContainerTest: SymbolTestsCore.ConditionalConformanceVariants.ConditionalThirdProtocol where A: SymbolTestsCore.ConditionalConformanceVariants.ConditionalFirstProtocol, A: SymbolTestsCore.ConditionalConformanceVariants.ConditionalSecondProtocol, A: SymbolTestsCore.ConditionalConformanceVariants.ConditionalThirdProtocol {}
Loading