Hi, I'm exploring using the new parameter packs in result builders, as is now done in SwiftUI, but I'm getting this weird error (even though I'm essentially following how SwiftUI does it):
@resultBuilder
public struct FormBuilder {
public static func buildBlock<each Content: FormComponent>(_ content: repeat each Content) -> TupleFormComponent<(repeat each Content)> {
return TupleFormComponent<each Content>(content: content)
}
}
Gives the error Type '(repeat each Content)' does not conform to protocol 'FormComponent'.
The FormComponent struct looks like this:
public struct TupleFormComponent<each Component: FormComponent>: FormComponent { ... }
So to me it feels like this should work. Let me know if you think I made any glaring mistakes!
jrose
(Jordan Rose)
2
Your return type has extra parens, so it’s trying to make a TupleFormComponent of one element, a tuple (which presumably gets redundantly parenthesized within the implementation of TupleFormComponent), rather than the many-element pack you’re using in the body of the function.
Good candidate for a special-case diagnostic, perhaps?
1 Like