We are seeing unexpected build times resulting in huge binary sizes when dealing with large nested structs. The following code produces around 30mb of binary:
struct Foo {
let foo1: Foo2?
let foo2: Foo2?
let foo3: Foo2?
let foo4: Foo2?
let foo5: Foo2?
}
struct Foo2 {
let foo1: Foo3?
let foo2: Foo3?
let foo3: Foo3?
let foo4: Foo3?
let foo5: Foo3?
let foo6: Foo3?
let foo7: Foo3?
let foo8: Foo3?
let foo9: Foo3?
let foo10: Foo3?
let foo11: Foo3?
let foo12: Foo3?
let foo13: Foo3?
let foo14: Foo3?
let foo15: Foo3?
let foo16: Foo3?
let foo17: Foo3?
let foo18: Foo3?
let foo19: Foo3?
let foo20: Foo3?
}
struct Foo3 {
let foo1: Foo4?
let foo2: Foo4?
let foo3: Foo4?
let foo4: Foo4?
let foo5: Foo4?
let foo6: Foo4?
let foo7: Foo4?
let foo8: Foo4?
let foo9: Foo4?
let foo10: Foo4?
let foo11: Foo4?
let foo12: Foo4?
let foo13: Foo4?
let foo14: Foo4?
let foo15: Foo4?
let foo16: Foo4?
let foo17: Foo4?
let foo18: Foo4?
let foo19: Foo4?
let foo20: Foo4?
}
struct Foo4 {
let foo1: String?
let foo2: String?
let foo3: String?
let foo4: String?
let foo5: String?
let foo6: String?
let foo7: String?
let foo8: String?
let foo9: String?
let foo10: String?
let foo11: String?
let foo12: String?
let foo13: String?
let foo14: String?
let foo15: String?
let foo16: String?
let foo17: String?
let foo18: String?
let foo19: String?
let foo20: String?
}
Is this expected behavior? When replacing the structs with classes everything is fast and the binary is very compact, as expected.