Fix Log.ItemFormat
result builders in Swift 5.8 🪵
#263
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.
Checklist
master
Motivation and Context
Due to recent improvements to Result Builders in Swift 5.8 / Xcode 14.3 the existing
Log.ItemFormat.Builder
implementation resulted in some ambiguities due to it being used with two final result types:Formatting<Output>
: merged formatting closure witness[Formatting<Output>]
: array of formatting witnesses representing a group to which we apply transformations, most notably adding separators where we require the independent un-merged format group elements.While in the previous result builder implementation the result type was propagated to the inner builder closure, that is no longer the case in the new version which causes the ambiguity.
Despite not being as compact, the simplest solution was to have two different builders where each specializes in its own result type. It causes a bit of duplication, but makes the Swift 5.8 compiler happy and requires no changes at the point of usage of current code, while being backwards compatible with Swift 5.7.
Description
Create new
Log.ItemFormat.GroupBuilder
and use where item format groups are required.Fix and add relevant UTs.
References