Skip to content

Commit 98bb072

Browse files
committed
BridgeJS: Unified prelude.mjs tests with de-duplication logic
1 parent 84397b5 commit 98bb072

File tree

18 files changed

+1343
-13083
lines changed

18 files changed

+1343
-13083
lines changed

Package.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,9 @@ let package = Package(
186186
exclude: [
187187
"bridge-js.config.json",
188188
"bridge-js.d.ts",
189+
"ExportAPITests.swift",
190+
"Generated/BridgeJS.ExportSwift.swift",
191+
"Generated/BridgeJS.ImportTS.swift",
189192
],
190193
swiftSettings: [
191194
.enableExperimentalFeature("Extern")

Plugins/BridgeJS/Sources/BridgeJSLink/BridgeJSLink.swift

Lines changed: 228 additions & 174 deletions
Large diffs are not rendered by default.

Plugins/BridgeJS/Tests/BridgeJSToolTests/BridgeJSLinkTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,21 +91,21 @@ import Testing
9191
let bridgeJSLink: BridgeJSLink = BridgeJSLink(exportedSkeletons: [outputSkeleton], sharedMemory: false)
9292
try snapshot(bridgeJSLink: bridgeJSLink, name: name + ".Global.Export")
9393
}
94-
94+
9595
@Test
9696
func snapshotMixedModuleExposure() throws {
9797
let globalURL = Self.inputsDirectory.appendingPathComponent("MixedGlobal.swift")
9898
let globalSourceFile = Parser.parse(source: try String(contentsOf: globalURL, encoding: .utf8))
9999
let globalAPI = ExportSwift(progress: .silent, moduleName: "GlobalModule", exposeToGlobal: true)
100100
try globalAPI.addSourceFile(globalSourceFile, "MixedGlobal.swift")
101101
let (_, globalSkeleton) = try #require(try globalAPI.finalize())
102-
102+
103103
let privateURL = Self.inputsDirectory.appendingPathComponent("MixedPrivate.swift")
104104
let privateSourceFile = Parser.parse(source: try String(contentsOf: privateURL, encoding: .utf8))
105105
let privateAPI = ExportSwift(progress: .silent, moduleName: "PrivateModule", exposeToGlobal: false)
106106
try privateAPI.addSourceFile(privateSourceFile, "MixedPrivate.swift")
107107
let (_, privateSkeleton) = try #require(try privateAPI.finalize())
108-
108+
109109
let bridgeJSLink = BridgeJSLink(
110110
exportedSkeletons: [globalSkeleton, privateSkeleton],
111111
sharedMemory: false

Plugins/BridgeJS/Tests/BridgeJSToolTests/Inputs/MixedGlobal.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ func globalFunction() -> String
55
class GlobalClass {
66
@JS public init()
77
@JS public func greet() -> String
8-
}
8+
}

Plugins/BridgeJS/Tests/BridgeJSToolTests/Inputs/MixedPrivate.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ func privateFunction() -> String
55
class PrivateClass {
66
@JS public init()
77
@JS public func greet() -> String
8-
}
8+
}

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/MixedModules.Export.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -181,14 +181,6 @@ export async function createInstantiator(options, swift) {
181181
tmpRetOptionalHeapObject = undefined;
182182
return pointer || 0;
183183
}
184-
// Wrapper functions for module: GlobalModule
185-
if (!importObject["GlobalModule"]) {
186-
importObject["GlobalModule"] = {};
187-
}
188-
importObject["GlobalModule"]["bjs_GlobalClass_wrap"] = function(pointer) {
189-
const obj = GlobalClass.__construct(pointer);
190-
return swift.memory.retain(obj);
191-
};
192184
// Wrapper functions for module: PrivateModule
193185
if (!importObject["PrivateModule"]) {
194186
importObject["PrivateModule"] = {};
@@ -197,6 +189,14 @@ export async function createInstantiator(options, swift) {
197189
const obj = PrivateClass.__construct(pointer);
198190
return swift.memory.retain(obj);
199191
};
192+
// Wrapper functions for module: GlobalModule
193+
if (!importObject["GlobalModule"]) {
194+
importObject["GlobalModule"] = {};
195+
}
196+
importObject["GlobalModule"]["bjs_GlobalClass_wrap"] = function(pointer) {
197+
const obj = GlobalClass.__construct(pointer);
198+
return swift.memory.retain(obj);
199+
};
200200
},
201201
setInstance: (i) => {
202202
instance = i;

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/ExportSwiftTests/EnumNamespace.Global.swift

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -120,18 +120,19 @@ public func _bjs_Converter_deinit(pointer: UnsafeMutableRawPointer) {
120120

121121
extension Utils.Converter: ConvertibleToJSValue, _BridgedSwiftHeapObject {
122122
var jsValue: JSValue {
123-
#if arch(wasm32)
124-
@_extern(wasm, module: "TestModule", name: "bjs_Converter_wrap")
125-
func _bjs_Converter_wrap(_: UnsafeMutableRawPointer) -> Int32
126-
#else
127-
func _bjs_Converter_wrap(_: UnsafeMutableRawPointer) -> Int32 {
128-
fatalError("Only available on WebAssembly")
129-
}
130-
#endif
131123
return .object(JSObject(id: UInt32(bitPattern: _bjs_Converter_wrap(Unmanaged.passRetained(self).toOpaque()))))
132124
}
133125
}
134126

127+
#if arch(wasm32)
128+
@_extern(wasm, module: "TestModule", name: "bjs_Converter_wrap")
129+
fileprivate func _bjs_Converter_wrap(_: UnsafeMutableRawPointer) -> Int32
130+
#else
131+
fileprivate func _bjs_Converter_wrap(_: UnsafeMutableRawPointer) -> Int32 {
132+
fatalError("Only available on WebAssembly")
133+
}
134+
#endif
135+
135136
@_expose(wasm, "bjs_HTTPServer_init")
136137
@_cdecl("bjs_HTTPServer_init")
137138
public func _bjs_HTTPServer_init() -> UnsafeMutableRawPointer {
@@ -161,18 +162,19 @@ public func _bjs_HTTPServer_deinit(pointer: UnsafeMutableRawPointer) {
161162

162163
extension Networking.API.HTTPServer: ConvertibleToJSValue, _BridgedSwiftHeapObject {
163164
var jsValue: JSValue {
164-
#if arch(wasm32)
165-
@_extern(wasm, module: "TestModule", name: "bjs_HTTPServer_wrap")
166-
func _bjs_HTTPServer_wrap(_: UnsafeMutableRawPointer) -> Int32
167-
#else
168-
func _bjs_HTTPServer_wrap(_: UnsafeMutableRawPointer) -> Int32 {
169-
fatalError("Only available on WebAssembly")
170-
}
171-
#endif
172165
return .object(JSObject(id: UInt32(bitPattern: _bjs_HTTPServer_wrap(Unmanaged.passRetained(self).toOpaque()))))
173166
}
174167
}
175168

169+
#if arch(wasm32)
170+
@_extern(wasm, module: "TestModule", name: "bjs_HTTPServer_wrap")
171+
fileprivate func _bjs_HTTPServer_wrap(_: UnsafeMutableRawPointer) -> Int32
172+
#else
173+
fileprivate func _bjs_HTTPServer_wrap(_: UnsafeMutableRawPointer) -> Int32 {
174+
fatalError("Only available on WebAssembly")
175+
}
176+
#endif
177+
176178
@_expose(wasm, "bjs_TestServer_init")
177179
@_cdecl("bjs_TestServer_init")
178180
public func _bjs_TestServer_init() -> UnsafeMutableRawPointer {
@@ -202,14 +204,15 @@ public func _bjs_TestServer_deinit(pointer: UnsafeMutableRawPointer) {
202204

203205
extension Internal.TestServer: ConvertibleToJSValue, _BridgedSwiftHeapObject {
204206
var jsValue: JSValue {
205-
#if arch(wasm32)
206-
@_extern(wasm, module: "TestModule", name: "bjs_TestServer_wrap")
207-
func _bjs_TestServer_wrap(_: UnsafeMutableRawPointer) -> Int32
208-
#else
209-
func _bjs_TestServer_wrap(_: UnsafeMutableRawPointer) -> Int32 {
210-
fatalError("Only available on WebAssembly")
211-
}
212-
#endif
213207
return .object(JSObject(id: UInt32(bitPattern: _bjs_TestServer_wrap(Unmanaged.passRetained(self).toOpaque()))))
214208
}
215-
}
209+
}
210+
211+
#if arch(wasm32)
212+
@_extern(wasm, module: "TestModule", name: "bjs_TestServer_wrap")
213+
fileprivate func _bjs_TestServer_wrap(_: UnsafeMutableRawPointer) -> Int32
214+
#else
215+
fileprivate func _bjs_TestServer_wrap(_: UnsafeMutableRawPointer) -> Int32 {
216+
fatalError("Only available on WebAssembly")
217+
}
218+
#endif

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/ExportSwiftTests/MixedGlobal.swift

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,15 @@ public func _bjs_GlobalClass_deinit(pointer: UnsafeMutableRawPointer) {
4747

4848
extension GlobalClass: ConvertibleToJSValue, _BridgedSwiftHeapObject {
4949
var jsValue: JSValue {
50-
#if arch(wasm32)
51-
@_extern(wasm, module: "TestModule", name: "bjs_GlobalClass_wrap")
52-
func _bjs_GlobalClass_wrap(_: UnsafeMutableRawPointer) -> Int32
53-
#else
54-
func _bjs_GlobalClass_wrap(_: UnsafeMutableRawPointer) -> Int32 {
55-
fatalError("Only available on WebAssembly")
56-
}
57-
#endif
5850
return .object(JSObject(id: UInt32(bitPattern: _bjs_GlobalClass_wrap(Unmanaged.passRetained(self).toOpaque()))))
5951
}
60-
}
52+
}
53+
54+
#if arch(wasm32)
55+
@_extern(wasm, module: "TestModule", name: "bjs_GlobalClass_wrap")
56+
fileprivate func _bjs_GlobalClass_wrap(_: UnsafeMutableRawPointer) -> Int32
57+
#else
58+
fileprivate func _bjs_GlobalClass_wrap(_: UnsafeMutableRawPointer) -> Int32 {
59+
fatalError("Only available on WebAssembly")
60+
}
61+
#endif

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/ExportSwiftTests/MixedPrivate.swift

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,15 @@ public func _bjs_PrivateClass_deinit(pointer: UnsafeMutableRawPointer) {
4747

4848
extension PrivateClass: ConvertibleToJSValue, _BridgedSwiftHeapObject {
4949
var jsValue: JSValue {
50-
#if arch(wasm32)
51-
@_extern(wasm, module: "TestModule", name: "bjs_PrivateClass_wrap")
52-
func _bjs_PrivateClass_wrap(_: UnsafeMutableRawPointer) -> Int32
53-
#else
54-
func _bjs_PrivateClass_wrap(_: UnsafeMutableRawPointer) -> Int32 {
55-
fatalError("Only available on WebAssembly")
56-
}
57-
#endif
5850
return .object(JSObject(id: UInt32(bitPattern: _bjs_PrivateClass_wrap(Unmanaged.passRetained(self).toOpaque()))))
5951
}
60-
}
52+
}
53+
54+
#if arch(wasm32)
55+
@_extern(wasm, module: "TestModule", name: "bjs_PrivateClass_wrap")
56+
fileprivate func _bjs_PrivateClass_wrap(_: UnsafeMutableRawPointer) -> Int32
57+
#else
58+
fileprivate func _bjs_PrivateClass_wrap(_: UnsafeMutableRawPointer) -> Int32 {
59+
fatalError("Only available on WebAssembly")
60+
}
61+
#endif

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/ExportSwiftTests/Namespaces.Global.swift

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -58,18 +58,19 @@ public func _bjs_Greeter_deinit(pointer: UnsafeMutableRawPointer) {
5858

5959
extension Greeter: ConvertibleToJSValue, _BridgedSwiftHeapObject {
6060
var jsValue: JSValue {
61-
#if arch(wasm32)
62-
@_extern(wasm, module: "TestModule", name: "bjs_Greeter_wrap")
63-
func _bjs_Greeter_wrap(_: UnsafeMutableRawPointer) -> Int32
64-
#else
65-
func _bjs_Greeter_wrap(_: UnsafeMutableRawPointer) -> Int32 {
66-
fatalError("Only available on WebAssembly")
67-
}
68-
#endif
6961
return .object(JSObject(id: UInt32(bitPattern: _bjs_Greeter_wrap(Unmanaged.passRetained(self).toOpaque()))))
7062
}
7163
}
7264

65+
#if arch(wasm32)
66+
@_extern(wasm, module: "TestModule", name: "bjs_Greeter_wrap")
67+
fileprivate func _bjs_Greeter_wrap(_: UnsafeMutableRawPointer) -> Int32
68+
#else
69+
fileprivate func _bjs_Greeter_wrap(_: UnsafeMutableRawPointer) -> Int32 {
70+
fatalError("Only available on WebAssembly")
71+
}
72+
#endif
73+
7374
@_expose(wasm, "bjs_Converter_init")
7475
@_cdecl("bjs_Converter_init")
7576
public func _bjs_Converter_init() -> UnsafeMutableRawPointer {
@@ -100,18 +101,19 @@ public func _bjs_Converter_deinit(pointer: UnsafeMutableRawPointer) {
100101

101102
extension Converter: ConvertibleToJSValue, _BridgedSwiftHeapObject {
102103
var jsValue: JSValue {
103-
#if arch(wasm32)
104-
@_extern(wasm, module: "TestModule", name: "bjs_Converter_wrap")
105-
func _bjs_Converter_wrap(_: UnsafeMutableRawPointer) -> Int32
106-
#else
107-
func _bjs_Converter_wrap(_: UnsafeMutableRawPointer) -> Int32 {
108-
fatalError("Only available on WebAssembly")
109-
}
110-
#endif
111104
return .object(JSObject(id: UInt32(bitPattern: _bjs_Converter_wrap(Unmanaged.passRetained(self).toOpaque()))))
112105
}
113106
}
114107

108+
#if arch(wasm32)
109+
@_extern(wasm, module: "TestModule", name: "bjs_Converter_wrap")
110+
fileprivate func _bjs_Converter_wrap(_: UnsafeMutableRawPointer) -> Int32
111+
#else
112+
fileprivate func _bjs_Converter_wrap(_: UnsafeMutableRawPointer) -> Int32 {
113+
fatalError("Only available on WebAssembly")
114+
}
115+
#endif
116+
115117
@_expose(wasm, "bjs_UUID_uuidString")
116118
@_cdecl("bjs_UUID_uuidString")
117119
public func _bjs_UUID_uuidString(_self: UnsafeMutableRawPointer) -> Void {
@@ -131,14 +133,15 @@ public func _bjs_UUID_deinit(pointer: UnsafeMutableRawPointer) {
131133

132134
extension UUID: ConvertibleToJSValue, _BridgedSwiftHeapObject {
133135
var jsValue: JSValue {
134-
#if arch(wasm32)
135-
@_extern(wasm, module: "TestModule", name: "bjs_UUID_wrap")
136-
func _bjs_UUID_wrap(_: UnsafeMutableRawPointer) -> Int32
137-
#else
138-
func _bjs_UUID_wrap(_: UnsafeMutableRawPointer) -> Int32 {
139-
fatalError("Only available on WebAssembly")
140-
}
141-
#endif
142136
return .object(JSObject(id: UInt32(bitPattern: _bjs_UUID_wrap(Unmanaged.passRetained(self).toOpaque()))))
143137
}
144-
}
138+
}
139+
140+
#if arch(wasm32)
141+
@_extern(wasm, module: "TestModule", name: "bjs_UUID_wrap")
142+
fileprivate func _bjs_UUID_wrap(_: UnsafeMutableRawPointer) -> Int32
143+
#else
144+
fileprivate func _bjs_UUID_wrap(_: UnsafeMutableRawPointer) -> Int32 {
145+
fatalError("Only available on WebAssembly")
146+
}
147+
#endif

0 commit comments

Comments
 (0)