I'm trying to resolve UI from structured data. There is a "resolver" that maps content into a view, or falls back to the root resolver. However, I can't get around a Segmentation fault: 11
crash.
Does anybody know why would the following code crash the compiler, both Swift 5.6 and 5.7?
protocol Content {
var id: String { get }
}
struct TestContent: Content {
var id: String
}
protocol ViewResolver {
associatedtype ContentView: View
associatedtype RootResolver: ViewResolver where RootResolver.RootResolver == RootResolver
@ViewBuilder
func view(content: Content, rootResolver: RootResolver) -> ContentView
}
struct Resolver<RootResolver: ViewResolver>: ViewResolver where RootResolver.RootResolver == RootResolver {
func view(content: Content, rootResolver: RootResolver) -> some View {
switch content {
case let test as TestContent:
Text("Test")
default:
rootResolver.view(content: content, rootResolver: rootResolver)
}
}
}
struct RootResolver: ViewResolver {
let resolver: Resolver<Self>
func view(content: Content) -> some View {
view(content: content, rootResolver: self)
}
func view(content: Content, rootResolver: Self) -> some View {
resolver.view(content: content, rootResolver: self)
}
}