Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

BridgeJS: Improved @JS Protocol support - properties, Optional, enums#460

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
krodak merged 6 commits intoswiftwasm:mainfromPassiveLogic:feat/protocol-support
Oct 24, 2025
Merged
Show file tree
Hide file tree
Changes fromall commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
114 changes: 112 additions & 2 deletionsBenchmarks/Sources/Generated/BridgeJS.ExportSwift.swift
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,7 +7,7 @@
@_spi(BridgeJS) import JavaScriptKit

extension APIResult: _BridgedSwiftAssociatedValueEnum {
@_spi(BridgeJS) @_transparent publicstatic funcbridgeJSLiftParameter(_ caseId: Int32) -> APIResult {
privatestatic func_bridgeJSLiftFromCaseId(_ caseId: Int32) -> APIResult {
switch caseId {
case 0:
return .success(String.bridgeJSLiftParameter(_swift_js_pop_param_int32(), _swift_js_pop_param_int32()))
Expand All@@ -26,6 +26,43 @@ extension APIResult: _BridgedSwiftAssociatedValueEnum {
}
}

// MARK: Protocol Export

@_spi(BridgeJS) @_transparent public consuming func bridgeJSLowerParameter() -> Int32 {
switch self {
case .success(let param0):
var __bjs_param0 = param0
__bjs_param0.withUTF8 { ptr in
_swift_js_push_string(ptr.baseAddress, Int32(ptr.count))
}
return Int32(0)
case .failure(let param0):
_swift_js_push_int(Int32(param0))
return Int32(1)
case .flag(let param0):
_swift_js_push_int(param0 ? 1 : 0)
return Int32(2)
case .rate(let param0):
_swift_js_push_f32(param0)
return Int32(3)
case .precise(let param0):
_swift_js_push_f64(param0)
return Int32(4)
case .info:
return Int32(5)
}
}

@_spi(BridgeJS) @_transparent public static func bridgeJSLiftReturn(_ caseId: Int32) -> APIResult {
return _bridgeJSLiftFromCaseId(caseId)
}

// MARK: ExportSwift

@_spi(BridgeJS) @_transparent public static func bridgeJSLiftParameter(_ caseId: Int32) -> APIResult {
return _bridgeJSLiftFromCaseId(caseId)
}

@_spi(BridgeJS) @_transparent public consuming func bridgeJSLowerReturn() {
switch self {
case .success(let param0):
Expand DownExpand Up@@ -53,7 +90,7 @@ extension APIResult: _BridgedSwiftAssociatedValueEnum {
}

extension ComplexResult: _BridgedSwiftAssociatedValueEnum {
@_spi(BridgeJS) @_transparent publicstatic funcbridgeJSLiftParameter(_ caseId: Int32) -> ComplexResult {
privatestatic func_bridgeJSLiftFromCaseId(_ caseId: Int32) -> ComplexResult {
switch caseId {
case 0:
return .success(String.bridgeJSLiftParameter(_swift_js_pop_param_int32(), _swift_js_pop_param_int32()))
Expand All@@ -74,6 +111,79 @@ extension ComplexResult: _BridgedSwiftAssociatedValueEnum {
}
}

// MARK: Protocol Export

@_spi(BridgeJS) @_transparent public consuming func bridgeJSLowerParameter() -> Int32 {
switch self {
case .success(let param0):
var __bjs_param0 = param0
__bjs_param0.withUTF8 { ptr in
_swift_js_push_string(ptr.baseAddress, Int32(ptr.count))
}
return Int32(0)
case .error(let param0, let param1):
var __bjs_param0 = param0
__bjs_param0.withUTF8 { ptr in
_swift_js_push_string(ptr.baseAddress, Int32(ptr.count))
}
_swift_js_push_int(Int32(param1))
return Int32(1)
case .location(let param0, let param1, let param2):
_swift_js_push_f64(param0)
_swift_js_push_f64(param1)
var __bjs_param2 = param2
__bjs_param2.withUTF8 { ptr in
_swift_js_push_string(ptr.baseAddress, Int32(ptr.count))
}
return Int32(2)
case .status(let param0, let param1, let param2):
_swift_js_push_int(param0 ? 1 : 0)
_swift_js_push_int(Int32(param1))
var __bjs_param2 = param2
__bjs_param2.withUTF8 { ptr in
_swift_js_push_string(ptr.baseAddress, Int32(ptr.count))
}
return Int32(3)
case .coordinates(let param0, let param1, let param2):
_swift_js_push_f64(param0)
_swift_js_push_f64(param1)
_swift_js_push_f64(param2)
return Int32(4)
case .comprehensive(let param0, let param1, let param2, let param3, let param4, let param5, let param6, let param7, let param8):
_swift_js_push_int(param0 ? 1 : 0)
_swift_js_push_int(param1 ? 1 : 0)
_swift_js_push_int(Int32(param2))
_swift_js_push_int(Int32(param3))
_swift_js_push_f64(param4)
_swift_js_push_f64(param5)
var __bjs_param6 = param6
__bjs_param6.withUTF8 { ptr in
_swift_js_push_string(ptr.baseAddress, Int32(ptr.count))
}
var __bjs_param7 = param7
__bjs_param7.withUTF8 { ptr in
_swift_js_push_string(ptr.baseAddress, Int32(ptr.count))
}
var __bjs_param8 = param8
__bjs_param8.withUTF8 { ptr in
_swift_js_push_string(ptr.baseAddress, Int32(ptr.count))
}
return Int32(5)
case .info:
return Int32(6)
}
}

@_spi(BridgeJS) @_transparent public static func bridgeJSLiftReturn(_ caseId: Int32) -> ComplexResult {
return _bridgeJSLiftFromCaseId(caseId)
}

// MARK: ExportSwift

@_spi(BridgeJS) @_transparent public static func bridgeJSLiftParameter(_ caseId: Int32) -> ComplexResult {
return _bridgeJSLiftFromCaseId(caseId)
}

@_spi(BridgeJS) @_transparent public consuming func bridgeJSLowerReturn() {
switch self {
case .success(let param0):
Expand Down
4 changes: 4 additions & 0 deletionsCONTRIBUTING.md
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -112,5 +112,9 @@ Run this script when you've made changes to:
These changes require updating the pre-generated Swift bindings committed to the repository.
**Adding new BridgeJS intrinsics:**
If you add new `@_extern(wasm, module: "bjs")` functions to [`BridgeJSInstrincics.swift`](Sources/JavaScriptKit/BridgeJSInstrincics.swift), also add corresponding stub entries to [`Plugins/PackageToJS/Templates/instantiate.js`](Plugins/PackageToJS/Templates/instantiate.js) in the `importObject["bjs"]` object. This allows packages without BridgeJS-generated code to instantiate successfully.
## Support
If you have any questions or need assistance, feel free to reach out via [GitHub Issues](https://github.com/swiftwasm/JavaScriptKit/issues) or [Discord](https://discord.gg/ashJW8T8yp).
Loading

[8]ページ先頭

©2009-2025 Movatter.jp