Skip to content
Closed
Show file tree
Hide file tree
Changes from all 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
1,522 changes: 761 additions & 761 deletions Benchmarks/Sources/Generated/BridgeJS.swift

Large diffs are not rendered by default.

382 changes: 191 additions & 191 deletions Benchmarks/Sources/Generated/JavaScript/BridgeJS.json

Large diffs are not rendered by default.

134 changes: 67 additions & 67 deletions Examples/PlayBridgeJS/Sources/PlayBridgeJS/Generated/BridgeJS.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@

@_spi(BridgeJS) import JavaScriptKit

extension PlayBridgeJSOutput: _BridgedSwiftStruct {
@_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> PlayBridgeJSOutput {
extension PlayBridgeJS.PlayBridgeJSOutput: _BridgedSwiftStruct {
@_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> PlayBridgeJS.PlayBridgeJSOutput {
let swiftGlue = String.bridgeJSStackPop()
let importSwiftMacroDecls = String.bridgeJSStackPop()
let outputDts = String.bridgeJSStackPop()
let outputJs = String.bridgeJSStackPop()
return PlayBridgeJSOutput(outputJs: outputJs, outputDts: outputDts, importSwiftMacroDecls: importSwiftMacroDecls, swiftGlue: swiftGlue)
return PlayBridgeJS.PlayBridgeJSOutput(outputJs: outputJs, outputDts: outputDts, importSwiftMacroDecls: importSwiftMacroDecls, swiftGlue: swiftGlue)
}

@_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() {
Expand All @@ -25,50 +25,50 @@ extension PlayBridgeJSOutput: _BridgedSwiftStruct {
}

init(unsafelyCopying jsObject: JSObject) {
_bjs_struct_lower_PlayBridgeJSOutput(jsObject.bridgeJSLowerParameter())
_bjs_struct_lower_PlayBridgeJS_PlayBridgeJSOutput(jsObject.bridgeJSLowerParameter())
self = Self.bridgeJSStackPop()
}

func toJSObject() -> JSObject {
let __bjs_self = self
__bjs_self.bridgeJSStackPush()
return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_PlayBridgeJSOutput()))
return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_PlayBridgeJS_PlayBridgeJSOutput()))
}
}

#if arch(wasm32)
@_extern(wasm, module: "bjs", name: "swift_js_struct_lower_PlayBridgeJSOutput")
fileprivate func _bjs_struct_lower_PlayBridgeJSOutput_extern(_ objectId: Int32) -> Void
@_extern(wasm, module: "bjs", name: "swift_js_struct_lower_PlayBridgeJS_PlayBridgeJSOutput")
fileprivate func _bjs_struct_lower_PlayBridgeJS_PlayBridgeJSOutput_extern(_ objectId: Int32) -> Void
#else
fileprivate func _bjs_struct_lower_PlayBridgeJSOutput_extern(_ objectId: Int32) -> Void {
fileprivate func _bjs_struct_lower_PlayBridgeJS_PlayBridgeJSOutput_extern(_ objectId: Int32) -> Void {
fatalError("Only available on WebAssembly")
}
#endif
@inline(never) fileprivate func _bjs_struct_lower_PlayBridgeJSOutput(_ objectId: Int32) -> Void {
return _bjs_struct_lower_PlayBridgeJSOutput_extern(objectId)
@inline(never) fileprivate func _bjs_struct_lower_PlayBridgeJS_PlayBridgeJSOutput(_ objectId: Int32) -> Void {
return _bjs_struct_lower_PlayBridgeJS_PlayBridgeJSOutput_extern(objectId)
}

#if arch(wasm32)
@_extern(wasm, module: "bjs", name: "swift_js_struct_lift_PlayBridgeJSOutput")
fileprivate func _bjs_struct_lift_PlayBridgeJSOutput_extern() -> Int32
@_extern(wasm, module: "bjs", name: "swift_js_struct_lift_PlayBridgeJS_PlayBridgeJSOutput")
fileprivate func _bjs_struct_lift_PlayBridgeJS_PlayBridgeJSOutput_extern() -> Int32
#else
fileprivate func _bjs_struct_lift_PlayBridgeJSOutput_extern() -> Int32 {
fileprivate func _bjs_struct_lift_PlayBridgeJS_PlayBridgeJSOutput_extern() -> Int32 {
fatalError("Only available on WebAssembly")
}
#endif
@inline(never) fileprivate func _bjs_struct_lift_PlayBridgeJSOutput() -> Int32 {
return _bjs_struct_lift_PlayBridgeJSOutput_extern()
@inline(never) fileprivate func _bjs_struct_lift_PlayBridgeJS_PlayBridgeJSOutput() -> Int32 {
return _bjs_struct_lift_PlayBridgeJS_PlayBridgeJSOutput_extern()
}

extension PlayBridgeJSDiagnostic: _BridgedSwiftStruct {
@_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> PlayBridgeJSDiagnostic {
extension PlayBridgeJS.PlayBridgeJSDiagnostic: _BridgedSwiftStruct {
@_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> PlayBridgeJS.PlayBridgeJSDiagnostic {
let endColumn = Int.bridgeJSStackPop()
let endLine = Int.bridgeJSStackPop()
let startColumn = Int.bridgeJSStackPop()
let startLine = Int.bridgeJSStackPop()
let message = String.bridgeJSStackPop()
let file = String.bridgeJSStackPop()
return PlayBridgeJSDiagnostic(file: file, message: message, startLine: startLine, startColumn: startColumn, endLine: endLine, endColumn: endColumn)
return PlayBridgeJS.PlayBridgeJSDiagnostic(file: file, message: message, startLine: startLine, startColumn: startColumn, endLine: endLine, endColumn: endColumn)
}

@_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() {
Expand All @@ -81,46 +81,46 @@ extension PlayBridgeJSDiagnostic: _BridgedSwiftStruct {
}

init(unsafelyCopying jsObject: JSObject) {
_bjs_struct_lower_PlayBridgeJSDiagnostic(jsObject.bridgeJSLowerParameter())
_bjs_struct_lower_PlayBridgeJS_PlayBridgeJSDiagnostic(jsObject.bridgeJSLowerParameter())
self = Self.bridgeJSStackPop()
}

func toJSObject() -> JSObject {
let __bjs_self = self
__bjs_self.bridgeJSStackPush()
return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_PlayBridgeJSDiagnostic()))
return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_PlayBridgeJS_PlayBridgeJSDiagnostic()))
}
}

#if arch(wasm32)
@_extern(wasm, module: "bjs", name: "swift_js_struct_lower_PlayBridgeJSDiagnostic")
fileprivate func _bjs_struct_lower_PlayBridgeJSDiagnostic_extern(_ objectId: Int32) -> Void
@_extern(wasm, module: "bjs", name: "swift_js_struct_lower_PlayBridgeJS_PlayBridgeJSDiagnostic")
fileprivate func _bjs_struct_lower_PlayBridgeJS_PlayBridgeJSDiagnostic_extern(_ objectId: Int32) -> Void
#else
fileprivate func _bjs_struct_lower_PlayBridgeJSDiagnostic_extern(_ objectId: Int32) -> Void {
fileprivate func _bjs_struct_lower_PlayBridgeJS_PlayBridgeJSDiagnostic_extern(_ objectId: Int32) -> Void {
fatalError("Only available on WebAssembly")
}
#endif
@inline(never) fileprivate func _bjs_struct_lower_PlayBridgeJSDiagnostic(_ objectId: Int32) -> Void {
return _bjs_struct_lower_PlayBridgeJSDiagnostic_extern(objectId)
@inline(never) fileprivate func _bjs_struct_lower_PlayBridgeJS_PlayBridgeJSDiagnostic(_ objectId: Int32) -> Void {
return _bjs_struct_lower_PlayBridgeJS_PlayBridgeJSDiagnostic_extern(objectId)
}

#if arch(wasm32)
@_extern(wasm, module: "bjs", name: "swift_js_struct_lift_PlayBridgeJSDiagnostic")
fileprivate func _bjs_struct_lift_PlayBridgeJSDiagnostic_extern() -> Int32
@_extern(wasm, module: "bjs", name: "swift_js_struct_lift_PlayBridgeJS_PlayBridgeJSDiagnostic")
fileprivate func _bjs_struct_lift_PlayBridgeJS_PlayBridgeJSDiagnostic_extern() -> Int32
#else
fileprivate func _bjs_struct_lift_PlayBridgeJSDiagnostic_extern() -> Int32 {
fileprivate func _bjs_struct_lift_PlayBridgeJS_PlayBridgeJSDiagnostic_extern() -> Int32 {
fatalError("Only available on WebAssembly")
}
#endif
@inline(never) fileprivate func _bjs_struct_lift_PlayBridgeJSDiagnostic() -> Int32 {
return _bjs_struct_lift_PlayBridgeJSDiagnostic_extern()
@inline(never) fileprivate func _bjs_struct_lift_PlayBridgeJS_PlayBridgeJSDiagnostic() -> Int32 {
return _bjs_struct_lift_PlayBridgeJS_PlayBridgeJSDiagnostic_extern()
}

extension PlayBridgeJSResult: _BridgedSwiftStruct {
@_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> PlayBridgeJSResult {
let diagnostics = [PlayBridgeJSDiagnostic].bridgeJSStackPop()
let output = Optional<PlayBridgeJSOutput>.bridgeJSStackPop()
return PlayBridgeJSResult(output: output, diagnostics: diagnostics)
extension PlayBridgeJS.PlayBridgeJSResult: _BridgedSwiftStruct {
@_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> PlayBridgeJS.PlayBridgeJSResult {
let diagnostics = [PlayBridgeJS.PlayBridgeJSDiagnostic].bridgeJSStackPop()
let output = Optional<PlayBridgeJS.PlayBridgeJSOutput>.bridgeJSStackPop()
return PlayBridgeJS.PlayBridgeJSResult(output: output, diagnostics: diagnostics)
}

@_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() {
Expand All @@ -129,58 +129,58 @@ extension PlayBridgeJSResult: _BridgedSwiftStruct {
}

init(unsafelyCopying jsObject: JSObject) {
_bjs_struct_lower_PlayBridgeJSResult(jsObject.bridgeJSLowerParameter())
_bjs_struct_lower_PlayBridgeJS_PlayBridgeJSResult(jsObject.bridgeJSLowerParameter())
self = Self.bridgeJSStackPop()
}

func toJSObject() -> JSObject {
let __bjs_self = self
__bjs_self.bridgeJSStackPush()
return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_PlayBridgeJSResult()))
return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_PlayBridgeJS_PlayBridgeJSResult()))
}
}

#if arch(wasm32)
@_extern(wasm, module: "bjs", name: "swift_js_struct_lower_PlayBridgeJSResult")
fileprivate func _bjs_struct_lower_PlayBridgeJSResult_extern(_ objectId: Int32) -> Void
@_extern(wasm, module: "bjs", name: "swift_js_struct_lower_PlayBridgeJS_PlayBridgeJSResult")
fileprivate func _bjs_struct_lower_PlayBridgeJS_PlayBridgeJSResult_extern(_ objectId: Int32) -> Void
#else
fileprivate func _bjs_struct_lower_PlayBridgeJSResult_extern(_ objectId: Int32) -> Void {
fileprivate func _bjs_struct_lower_PlayBridgeJS_PlayBridgeJSResult_extern(_ objectId: Int32) -> Void {
fatalError("Only available on WebAssembly")
}
#endif
@inline(never) fileprivate func _bjs_struct_lower_PlayBridgeJSResult(_ objectId: Int32) -> Void {
return _bjs_struct_lower_PlayBridgeJSResult_extern(objectId)
@inline(never) fileprivate func _bjs_struct_lower_PlayBridgeJS_PlayBridgeJSResult(_ objectId: Int32) -> Void {
return _bjs_struct_lower_PlayBridgeJS_PlayBridgeJSResult_extern(objectId)
}

#if arch(wasm32)
@_extern(wasm, module: "bjs", name: "swift_js_struct_lift_PlayBridgeJSResult")
fileprivate func _bjs_struct_lift_PlayBridgeJSResult_extern() -> Int32
@_extern(wasm, module: "bjs", name: "swift_js_struct_lift_PlayBridgeJS_PlayBridgeJSResult")
fileprivate func _bjs_struct_lift_PlayBridgeJS_PlayBridgeJSResult_extern() -> Int32
#else
fileprivate func _bjs_struct_lift_PlayBridgeJSResult_extern() -> Int32 {
fileprivate func _bjs_struct_lift_PlayBridgeJS_PlayBridgeJSResult_extern() -> Int32 {
fatalError("Only available on WebAssembly")
}
#endif
@inline(never) fileprivate func _bjs_struct_lift_PlayBridgeJSResult() -> Int32 {
return _bjs_struct_lift_PlayBridgeJSResult_extern()
@inline(never) fileprivate func _bjs_struct_lift_PlayBridgeJS_PlayBridgeJSResult() -> Int32 {
return _bjs_struct_lift_PlayBridgeJS_PlayBridgeJSResult_extern()
}

@_expose(wasm, "bjs_PlayBridgeJS_init")
@_cdecl("bjs_PlayBridgeJS_init")
public func _bjs_PlayBridgeJS_init() -> UnsafeMutableRawPointer {
@_expose(wasm, "bjs_PlayBridgeJS_PlayBridgeJS_init")
@_cdecl("bjs_PlayBridgeJS_PlayBridgeJS_init")
public func _bjs_PlayBridgeJS_PlayBridgeJS_init() -> UnsafeMutableRawPointer {
#if arch(wasm32)
let ret = PlayBridgeJS()
let ret = PlayBridgeJS.PlayBridgeJS()
return ret.bridgeJSLowerReturn()
#else
fatalError("Only available on WebAssembly")
#endif
}

@_expose(wasm, "bjs_PlayBridgeJS_updateDetailed")
@_cdecl("bjs_PlayBridgeJS_updateDetailed")
public func _bjs_PlayBridgeJS_updateDetailed(_ _self: UnsafeMutableRawPointer, _ swiftSourceBytes: Int32, _ swiftSourceLength: Int32, _ dtsSourceBytes: Int32, _ dtsSourceLength: Int32) -> Void {
@_expose(wasm, "bjs_PlayBridgeJS_PlayBridgeJS_updateDetailed")
@_cdecl("bjs_PlayBridgeJS_PlayBridgeJS_updateDetailed")
public func _bjs_PlayBridgeJS_PlayBridgeJS_updateDetailed(_ _self: UnsafeMutableRawPointer, _ swiftSourceBytes: Int32, _ swiftSourceLength: Int32, _ dtsSourceBytes: Int32, _ dtsSourceLength: Int32) -> Void {
#if arch(wasm32)
do {
let ret = try PlayBridgeJS.bridgeJSLiftParameter(_self).updateDetailed(swiftSource: String.bridgeJSLiftParameter(swiftSourceBytes, swiftSourceLength), dtsSource: String.bridgeJSLiftParameter(dtsSourceBytes, dtsSourceLength))
let ret = try PlayBridgeJS.PlayBridgeJS.bridgeJSLiftParameter(_self).updateDetailed(swiftSource: String.bridgeJSLiftParameter(swiftSourceBytes, swiftSourceLength), dtsSource: String.bridgeJSLiftParameter(dtsSourceBytes, dtsSourceLength))
return ret.bridgeJSLowerReturn()
} catch let error {
if let error = error.thrownValue.object {
Expand All @@ -200,35 +200,35 @@ public func _bjs_PlayBridgeJS_updateDetailed(_ _self: UnsafeMutableRawPointer, _
#endif
}

@_expose(wasm, "bjs_PlayBridgeJS_deinit")
@_cdecl("bjs_PlayBridgeJS_deinit")
public func _bjs_PlayBridgeJS_deinit(_ pointer: UnsafeMutableRawPointer) -> Void {
@_expose(wasm, "bjs_PlayBridgeJS_PlayBridgeJS_deinit")
@_cdecl("bjs_PlayBridgeJS_PlayBridgeJS_deinit")
public func _bjs_PlayBridgeJS_PlayBridgeJS_deinit(_ pointer: UnsafeMutableRawPointer) -> Void {
#if arch(wasm32)
Unmanaged<PlayBridgeJS>.fromOpaque(pointer).release()
Unmanaged<PlayBridgeJS.PlayBridgeJS>.fromOpaque(pointer).release()
#else
fatalError("Only available on WebAssembly")
#endif
}

extension PlayBridgeJS: ConvertibleToJSValue, _BridgedSwiftHeapObject, _BridgedSwiftProtocolExportable {
extension PlayBridgeJS.PlayBridgeJS: ConvertibleToJSValue, _BridgedSwiftHeapObject, _BridgedSwiftProtocolExportable {
var jsValue: JSValue {
return .object(JSObject(id: UInt32(bitPattern: _bjs_PlayBridgeJS_wrap(Unmanaged.passRetained(self).toOpaque()))))
return .object(JSObject(id: UInt32(bitPattern: _bjs_PlayBridgeJS_PlayBridgeJS_wrap(Unmanaged.passRetained(self).toOpaque()))))
}
consuming func bridgeJSLowerAsProtocolReturn() -> Int32 {
_bjs_PlayBridgeJS_wrap(Unmanaged.passRetained(self).toOpaque())
_bjs_PlayBridgeJS_PlayBridgeJS_wrap(Unmanaged.passRetained(self).toOpaque())
}
}

#if arch(wasm32)
@_extern(wasm, module: "PlayBridgeJS", name: "bjs_PlayBridgeJS_wrap")
fileprivate func _bjs_PlayBridgeJS_wrap_extern(_ pointer: UnsafeMutableRawPointer) -> Int32
@_extern(wasm, module: "PlayBridgeJS", name: "bjs_PlayBridgeJS_PlayBridgeJS_wrap")
fileprivate func _bjs_PlayBridgeJS_PlayBridgeJS_wrap_extern(_ pointer: UnsafeMutableRawPointer) -> Int32
#else
fileprivate func _bjs_PlayBridgeJS_wrap_extern(_ pointer: UnsafeMutableRawPointer) -> Int32 {
fileprivate func _bjs_PlayBridgeJS_PlayBridgeJS_wrap_extern(_ pointer: UnsafeMutableRawPointer) -> Int32 {
fatalError("Only available on WebAssembly")
}
#endif
@inline(never) fileprivate func _bjs_PlayBridgeJS_wrap(_ pointer: UnsafeMutableRawPointer) -> Int32 {
return _bjs_PlayBridgeJS_wrap_extern(pointer)
@inline(never) fileprivate func _bjs_PlayBridgeJS_PlayBridgeJS_wrap(_ pointer: UnsafeMutableRawPointer) -> Int32 {
return _bjs_PlayBridgeJS_PlayBridgeJS_wrap_extern(pointer)
}

#if arch(wasm32)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"classes" : [
{
"constructor" : {
"abiName" : "bjs_PlayBridgeJS_init",
"abiName" : "bjs_PlayBridgeJS_PlayBridgeJS_init",
"effects" : {
"isAsync" : false,
"isStatic" : false,
Expand All @@ -18,7 +18,7 @@
},
"methods" : [
{
"abiName" : "bjs_PlayBridgeJS_updateDetailed",
"abiName" : "bjs_PlayBridgeJS_PlayBridgeJS_updateDetailed",
"documentation" : "Structured entry point used by the playground so JS doesn't need to parse diagnostics.",
"effects" : {
"isAsync" : false,
Expand Down Expand Up @@ -48,7 +48,7 @@
],
"returnType" : {
"swiftStruct" : {
"_0" : "PlayBridgeJSResult"
"_0" : "PlayBridgeJS.PlayBridgeJSResult"
}
}
}
Expand All @@ -57,7 +57,7 @@
"properties" : [

],
"swiftCallName" : "PlayBridgeJS"
"swiftCallName" : "PlayBridgeJS.PlayBridgeJS"
}
],
"enums" : [
Expand Down Expand Up @@ -118,7 +118,7 @@
}
}
],
"swiftCallName" : "PlayBridgeJSOutput"
"swiftCallName" : "PlayBridgeJS.PlayBridgeJSOutput"
},
{
"methods" : [
Expand Down Expand Up @@ -199,7 +199,7 @@
}
}
],
"swiftCallName" : "PlayBridgeJSDiagnostic"
"swiftCallName" : "PlayBridgeJS.PlayBridgeJSDiagnostic"
},
{
"methods" : [
Expand All @@ -215,7 +215,7 @@
"nullable" : {
"_0" : {
"swiftStruct" : {
"_0" : "PlayBridgeJSOutput"
"_0" : "PlayBridgeJS.PlayBridgeJSOutput"
}
},
"_1" : "null"
Expand All @@ -230,14 +230,14 @@
"array" : {
"_0" : {
"swiftStruct" : {
"_0" : "PlayBridgeJSDiagnostic"
"_0" : "PlayBridgeJS.PlayBridgeJSDiagnostic"
}
}
}
}
}
],
"swiftCallName" : "PlayBridgeJSResult"
"swiftCallName" : "PlayBridgeJS.PlayBridgeJSResult"
}
]
},
Expand Down
8 changes: 6 additions & 2 deletions Plugins/BridgeJS/Sources/BridgeJSCore/ExportSwift.swift
Original file line number Diff line number Diff line change
Expand Up @@ -789,7 +789,7 @@ public class ExportSwift {
try renderSingleExportedConstructor(
constructor: constructor,
callName: klass.swiftCallName,
returnType: .swiftHeapObject(klass.name)
returnType: .swiftHeapObject(klass.swiftCallName)
)
)
}
Expand Down Expand Up @@ -1614,7 +1614,11 @@ extension BridgeType {
case .jsObject(let name?): return name
case .swiftHeapObject(let name): return name
case .unsafePointer(let ptr): return ptr.swiftType
case .swiftProtocol(let name): return "Any\(name)"
case .swiftProtocol(let name):
// The `Any<Proto>` wrapper struct is declared with the bare protocol name in
// the defining module's glue, so strip any module/namespace qualification.
let bareName = name.split(separator: ".").last.map(String.init) ?? name
return "Any\(bareName)"
case .void: return "Void"
case .nullable(let wrappedType, let kind):
return kind == .null ? "Optional<\(wrappedType.swiftType)>" : "JSUndefinedOr<\(wrappedType.swiftType)>"
Expand Down
Loading
Loading