Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash in protocol conformance code #167

Closed
MaxDesiatov opened this issue Jul 7, 2020 · 4 comments · Fixed by #168
Closed

Crash in protocol conformance code #167

MaxDesiatov opened this issue Jul 7, 2020 · 4 comments · Fixed by #168
Labels
bug Something isn't working

Comments

@MaxDesiatov
Copy link
Collaborator

I haven't been able to isolate a minimal test case yet, but this is reproducible in both #130 and #149 with the most recent snapshots in both swiftwasm and 5.3 branches, and I tried these snapshots:

  • wasm-5.3-SNAPSHOT-2020-07-07-a
  • wasm-DEVELOPMENT-SNAPSHOT-2020-07-07-a
  • wasm-DEVELOPMENT-SNAPSHOT-2020-06-12-a

The stacktrace follows:

_swift_class_getSuperclass@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[26452]:0x506b79
searchInConformanceCache(swift::TargetMetadata<swift::InProcess> const*, swift::TargetProtocolDescriptor<swift::InProcess> const*)@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[27545]:0x54004c
swift_conformsToSwiftProtocolImpl(swift::TargetMetadata<swift::InProcess> const*, swift::TargetProtocolDescriptor<swift::InProcess> const*, __swift::__runtime::llvm::StringRef)@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[27543]:0x53fb3b
swift_conformsToProtocolImpl(swift::TargetMetadata<swift::InProcess> const*, swift::TargetProtocolDescriptor<swift::InProcess> const*)@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[27541]:0x53f9af
swift_conformsToProtocol@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[27539]:0x53f918
.Ldynamic_cast_existential_1_conditional@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[3092]:0xaa61e
$s11TokamakCore4ViewPAAE011makeMountedC0yAA0eC0Cyqd__G10TargetTypeQyd___AA17EnvironmentValuesVtAA8RendererRd__lFSbypXpXEfU_@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[3069]:0xa9c0d
$sypXmTSbs5Error_pIgydzo_ypXmTSbsAA_pIegndzo_TR@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[3093]:0xaa67d
$sypXmTSbs5Error_pIgydzo_ypXmTSbsAA_pIegndzo_TRTA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[3073]:0xa9dc7
$ss14_ArrayProtocolPsE6filterySay7ElementQzGSbAEKXEKF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[7534]:0x1e1512
$s11TokamakCore4ViewPAAE011makeMountedC0yAA0eC0Cyqd__G10TargetTypeQyd___AA17EnvironmentValuesVtAA8RendererRd__lF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[3066]:0xa815f
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFAA0cE0CyxGAA03AnyE0VXEfU_@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2983]:0xa09fe
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFAA0cE0CyxGAA03AnyE0VXEfU_TA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2976]:0xa0770
$s11TokamakCore7AnyViewVAA07MountedD0CyxGs5Error_pIgnozo_AcFsAG_pIegnrzo_AA8RendererRzlTR@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2984]:0xa0a31
$s11TokamakCore7AnyViewVAA07MountedD0CyxGs5Error_pIgnozo_AcFsAG_pIegnrzo_AA8RendererRzlTRTA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2977]:0xa07ce
$sSlsE3mapySayqd__Gqd__7ElementQzKXEKlF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[6838]:0x1b37ba
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2973]:0xa033c
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFyAA0cE0CyxGXEfU0_@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2985]:0xa0b1f
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFyAA0cE0CyxGXEfU0_TA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2978]:0xa07f5
$s11TokamakCore11MountedViewCyxGs5Error_pIggzo_ADsAE_pIegnzo_AA8RendererRzlTR@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2932]:0x9c333
$s11TokamakCore11MountedViewCyxGs5Error_pIggzo_ADsAE_pIegnzo_AA8RendererRzlTRTA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2980]:0xa0864
$sSTsE7forEachyyy7ElementQzKXEKF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[9954]:0x293e48
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2973]:0xa055b
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFyAA0cE0CyxGXEfU0_@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2985]:0xa0b1f
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFyAA0cE0CyxGXEfU0_TA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2978]:0xa07f5
$s11TokamakCore11MountedViewCyxGs5Error_pIggzo_ADsAE_pIegnzo_AA8RendererRzlTR@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2932]:0x9c333
$s11TokamakCore11MountedViewCyxGs5Error_pIggzo_ADsAE_pIegnzo_AA8RendererRzlTRTA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2980]:0xa0864
$sSTsE7forEachyyy7ElementQzKXEKF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[9954]:0x293e48
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2973]:0xa055b
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFyAA0cE0CyxGXEfU0_@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2985]:0xa0b1f
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFyAA0cE0CyxGXEfU0_TA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2978]:0xa07f5
$s11TokamakCore11MountedViewCyxGs5Error_pIggzo_ADsAE_pIegnzo_AA8RendererRzlTR@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2932]:0x9c333
$s11TokamakCore11MountedViewCyxGs5Error_pIggzo_ADsAE_pIegnzo_AA8RendererRzlTRTA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2980]:0xa0864
$sSTsE7forEachyyy7ElementQzKXEKF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[9954]:0x293e48
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2973]:0xa055b
$s11TokamakCore20MountedCompositeViewC5mount4withyAA15StackReconcilerCyxG_tF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2918]:0x9b92a
$s11TokamakCore20MountedCompositeViewC5mount4withyAA15StackReconcilerCyxG_tF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2918]:0x9b92a
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFyAA0cE0CyxGXEfU0_@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2985]:0xa0b1f
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFyAA0cE0CyxGXEfU0_TA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2978]:0xa07f5
$s11TokamakCore11MountedViewCyxGs5Error_pIggzo_ADsAE_pIegnzo_AA8RendererRzlTR@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2932]:0x9c333
$s11TokamakCore11MountedViewCyxGs5Error_pIggzo_ADsAE_pIegnzo_AA8RendererRzlTRTA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2980]:0xa0864
$sSTsE7forEachyyy7ElementQzKXEKF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[9954]:0x293e48
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2973]:0xa055b
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFyAA0cE0CyxGXEfU0_@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2985]:0xa0b1f
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFyAA0cE0CyxGXEfU0_TA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2978]:0xa07f5
$s11TokamakCore11MountedViewCyxGs5Error_pIggzo_ADsAE_pIegnzo_AA8RendererRzlTR@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2932]:0x9c333
$s11TokamakCore11MountedViewCyxGs5Error_pIggzo_ADsAE_pIegnzo_AA8RendererRzlTRTA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2980]:0xa0864
$sSTsE7forEachyyy7ElementQzKXEKF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[9954]:0x293e48
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2973]:0xa055b
$s11TokamakCore20MountedCompositeViewC5mount4withyAA15StackReconcilerCyxG_tF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2918]:0x9b92a
$s11TokamakCore20MountedCompositeViewC5mount4withyAA15StackReconcilerCyxG_tF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2918]:0x9b92a
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFyAA0cE0CyxGXEfU0_@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2985]:0xa0b1f
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFyAA0cE0CyxGXEfU0_TA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2978]:0xa07f5
$s11TokamakCore11MountedViewCyxGs5Error_pIggzo_ADsAE_pIegnzo_AA8RendererRzlTR@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2932]:0x9c333
$s11TokamakCore11MountedViewCyxGs5Error_pIggzo_ADsAE_pIegnzo_AA8RendererRzlTRTA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2980]:0xa0864
$sSTsE7forEachyyy7ElementQzKXEKF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[9954]:0x293e48
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2973]:0xa055b
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFyAA0cE0CyxGXEfU0_@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2985]:0xa0b1f
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFyAA0cE0CyxGXEfU0_TA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2978]:0xa07f5
$s11TokamakCore11MountedViewCyxGs5Error_pIggzo_ADsAE_pIegnzo_AA8RendererRzlTR@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2932]:0x9c333
$s11TokamakCore11MountedViewCyxGs5Error_pIggzo_ADsAE_pIegnzo_AA8RendererRzlTRTA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2980]:0xa0864
$sSTsE7forEachyyy7ElementQzKXEKF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[9954]:0x293e48
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2973]:0xa055b
$s11TokamakCore20MountedCompositeViewC5mount4withyAA15StackReconcilerCyxG_tF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2918]:0x9b92a
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFyAA0cE0CyxGXEfU0_@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2985]:0xa0b1f
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFyAA0cE0CyxGXEfU0_TA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2978]:0xa07f5
$s11TokamakCore11MountedViewCyxGs5Error_pIggzo_ADsAE_pIegnzo_AA8RendererRzlTR@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2932]:0x9c333
$s11TokamakCore11MountedViewCyxGs5Error_pIggzo_ADsAE_pIegnzo_AA8RendererRzlTRTA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2980]:0xa0864
$sSTsE7forEachyyy7ElementQzKXEKF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[9954]:0x293e48
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2973]:0xa055b
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFyAA0cE0CyxGXEfU0_@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2985]:0xa0b1f
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tFyAA0cE0CyxGXEfU0_TA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2978]:0xa07f5
$s11TokamakCore11MountedViewCyxGs5Error_pIggzo_ADsAE_pIegnzo_AA8RendererRzlTR@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2932]:0x9c333
$s11TokamakCore11MountedViewCyxGs5Error_pIggzo_ADsAE_pIegnzo_AA8RendererRzlTRTA@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2980]:0xa0864
$sSTsE7forEachyyy7ElementQzKXEKF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[9954]:0x293e48
$s11TokamakCore15MountedHostViewC5mount4withyAA15StackReconcilerCyxG_tF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2973]:0xa055b
$s11TokamakCore20MountedCompositeViewC5mount4withyAA15StackReconcilerCyxG_tF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2918]:0x9b92a
$s11TokamakCore20MountedCompositeViewC5mount4withyAA15StackReconcilerCyxG_tF@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[2918]:0x9b92a
$s11TokamakCore15StackReconcilerC4view6target8renderer9schedulerACyxGqd___10TargetTypeQzxyyycctcAA4ViewRd__lufc@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[3823]:0xcac88
$s11TokamakCore15StackReconcilerC4view6target8renderer9schedulerACyxGqd___10TargetTypeQzxyyycctcAA4ViewRd__lufC@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[3822]:0xca9fa
$s10TokamakDOM11DOMRendererCyACx_13JavaScriptKit11JSObjectRefCtc0A4Core4ViewRzlufc@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[5527]:0x124766
$s10TokamakDOM11DOMRendererCyACx_13JavaScriptKit11JSObjectRefCtc0A4Core4ViewRzlufC@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[5526]:0x123aad
main@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[6628]:0x1a063c
__original_main@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[36214]:0x8a8167
_start@http://127.0.0.1:8080/dev.js line 97 > eval line 57 > WebAssembly.instantiate:wasm-function[40]:0x148f0
Qc</a.prototype.start@webpack:///./node_modules/@wasmer/wasi/lib/index.esm.js?:183:361
startWasiTask@webpack:///./entrypoint/dev.js?:64:8
dev.js:70:13
@MaxDesiatov MaxDesiatov transferred this issue from swiftwasm/swift Jul 7, 2020
@MaxDesiatov
Copy link
Collaborator Author

I'm not so sure it's a SwiftWasm issue now, I've narrowed it down to this line: https://github.com/swiftwasm/Tokamak/blob/b9ade79df1fcf9d9d82d63ec483fcf95faf0840e/Sources/TokamakCore/MountedViews/MountedView.swift#L53

Given that there's some runtime magic that we're doing there, we need to make sure it's applied correctly before we can start assuming it's a SwiftWasm-specific issue.

@MaxDesiatov MaxDesiatov added the bug Something isn't working label Jul 7, 2020
@MaxDesiatov
Copy link
Collaborator Author

MaxDesiatov commented Jul 7, 2020

@carson-katri this happens in your environment updates code I've referred to in the previous comment, maybe you could give some directions on what would be the best way to diagnose or refactor it?

UPDATE: Sorry, please disregard that, it could also be a bug in the Runtime library or my fork of the library. We need to thoroughly investigate this before jumping to any conclusions.

@MaxDesiatov
Copy link
Collaborator Author

hm, this only happens for the _ConditionalContent<AnyView, AnyView> type, maybe it's related to this issue after all? swiftwasm/swift#1379

@MaxDesiatov
Copy link
Collaborator Author

MaxDesiatov commented Jul 7, 2020

BTW, I've just published carton 0.3.1 which prints detailed backtraces for these kind of errors in the browser console.

MaxDesiatov added a commit that referenced this issue Jul 16, 2020
It's not needed there as `ViewBuilder` is smarter now.

The macOS SwiftUI SDK even with Xcode 12 still doesn't have the `@ViewBuilder` attribute on the `View` protocol, so we have to build for iOS on CI to make the native buld pass.

Resolves #167, which wasn't caused by protocol conformance problems, but by infinite recursion in the `_ConditionalContent` implementation of `body`.

Adds assorted formatting fixes, some are apparently caused by the newer `swiftformat` version.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Development

Successfully merging a pull request may close this issue.

1 participant