From 5e6fe2d2c99012b4c18f215c1974bd55e4d2cce6 Mon Sep 17 00:00:00 2001 From: Yuta Saito Date: Sun, 26 Jun 2022 03:42:37 +0900 Subject: [PATCH] Fix build and tests for 5.7 toolchain (#499) --- .github/workflows/ci.yml | 10 +++++++++- .../Reflection/Pointers/MetadataOffset.swift | 4 +++- Sources/TokamakDOM/Storage/WebStorage.swift | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9d3a3617d..d56b77522 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,11 +20,19 @@ jobs: ls -la Bundle ls -lh Bundle/*.wasm | awk '{printf "::warning file=Sources/TokamakDemo/main.swift,line=1,col=1::TokamakDemo Wasm is %s.",$5}' - swiftwasm_test_5_6: + swiftwasm_test: runs-on: ubuntu-20.04 + strategy: + fail-fast: true + matrix: + include: + - { toolchain: wasm-5.6.0-RELEASE } + - { toolchain: wasm-5.7-SNAPSHOT-2022-06-01-a } + - { toolchain: wasm-DEVELOPMENT-SNAPSHOT-2022-06-23-a } steps: - uses: actions/checkout@v2 + - run: echo "${{ matrix.toolchain }}" > .swift-version - uses: swiftwasm/swiftwasm-action@v5.6 with: shell-action: carton test --environment node diff --git a/Sources/TokamakCore/Reflection/Pointers/MetadataOffset.swift b/Sources/TokamakCore/Reflection/Pointers/MetadataOffset.swift index 83cec8ced..794e3faa7 100644 --- a/Sources/TokamakCore/Reflection/Pointers/MetadataOffset.swift +++ b/Sources/TokamakCore/Reflection/Pointers/MetadataOffset.swift @@ -24,7 +24,9 @@ struct MetadataOffset { let offset: Int32 func apply(to ptr: UnsafeRawPointer) -> UnsafePointer { - #if arch(wasm32) + // Data pointers in constant metadata are absolute until SwiftWasm 5.6 + // Since SwiftWasm 5.7, they are relative as well as other platforms. + #if arch(wasm32) && !compiler(>=5.7) return UnsafePointer(bitPattern: Int(offset))! #else return ptr.advanced(by: numericCast(offset)).assumingMemoryBound(to: Pointee.self) diff --git a/Sources/TokamakDOM/Storage/WebStorage.swift b/Sources/TokamakDOM/Storage/WebStorage.swift index 2daecf53f..2cbe27562 100644 --- a/Sources/TokamakDOM/Storage/WebStorage.swift +++ b/Sources/TokamakDOM/Storage/WebStorage.swift @@ -73,6 +73,6 @@ extension WebStorage { } public func read(key: String) -> String? { - getItem(key: key, String.init) + getItem(key: key, { $0 }) } }