Skip to content

Commit e902160

Browse files
authored
Merge pull request #682 from PassiveLogic/kr/fix-namespace-property-codegen
BridgeJS: Fix property codegen using unqualified type name for namespace-nested classes
2 parents a86c7d2 + 816325f commit e902160

File tree

14 files changed

+141
-4
lines changed

14 files changed

+141
-4
lines changed

Plugins/BridgeJS/Sources/BridgeJSCore/ExportSwift.swift

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,17 @@ public class ExportSwift {
395395
}
396396
}
397397

398+
var swiftCallName: String {
399+
switch self {
400+
case .enumStatic(let enumDef):
401+
return enumDef.swiftCallName
402+
case .classStatic(let klass), .classInstance(let klass):
403+
return klass.swiftCallName
404+
case .structStatic(let structDef):
405+
return structDef.swiftCallName
406+
}
407+
}
408+
398409
func callName(for property: ExportedProperty) -> String {
399410
switch self {
400411
case .enumStatic(let enumDef):
@@ -423,7 +434,7 @@ public class ExportSwift {
423434

424435
if !isStatic {
425436
try getterBuilder.liftParameter(
426-
param: Parameter(label: nil, name: "_self", type: .swiftHeapObject(className))
437+
param: Parameter(label: nil, name: "_self", type: .swiftHeapObject(context.swiftCallName))
427438
)
428439
}
429440

@@ -446,7 +457,7 @@ public class ExportSwift {
446457
if !isStatic {
447458
// Instance properties need _self parameter
448459
try setterBuilder.liftParameter(
449-
param: Parameter(label: nil, name: "_self", type: .swiftHeapObject(className))
460+
param: Parameter(label: nil, name: "_self", type: .swiftHeapObject(context.swiftCallName))
450461
)
451462
}
452463

Plugins/BridgeJS/Tests/BridgeJSToolTests/Inputs/MacroSwift/EnumNamespace.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22

33
@JS enum Utils {
44
@JS class Converter {
5-
@JS init() {}
5+
@JS var precision: Int
6+
7+
@JS init() {
8+
self.precision = 2
9+
}
610

711
@JS func toString(value: Int) -> String {
812
return String(value)

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSCodegenTests/EnumNamespace.Global.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,19 @@
4848
"Utils"
4949
],
5050
"properties" : [
51+
{
52+
"isReadonly" : false,
53+
"isStatic" : false,
54+
"name" : "precision",
55+
"namespace" : [
56+
"Utils"
57+
],
58+
"type" : {
59+
"int" : {
5160

61+
}
62+
}
63+
}
5264
],
5365
"swiftCallName" : "Utils.Converter"
5466
},

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,27 @@ public func _bjs_Converter_toString(_ _self: UnsafeMutableRawPointer, _ value: I
151151
#endif
152152
}
153153

154+
@_expose(wasm, "bjs_Converter_precision_get")
155+
@_cdecl("bjs_Converter_precision_get")
156+
public func _bjs_Converter_precision_get(_ _self: UnsafeMutableRawPointer) -> Int32 {
157+
#if arch(wasm32)
158+
let ret = Utils.Converter.bridgeJSLiftParameter(_self).precision
159+
return ret.bridgeJSLowerReturn()
160+
#else
161+
fatalError("Only available on WebAssembly")
162+
#endif
163+
}
164+
165+
@_expose(wasm, "bjs_Converter_precision_set")
166+
@_cdecl("bjs_Converter_precision_set")
167+
public func _bjs_Converter_precision_set(_ _self: UnsafeMutableRawPointer, _ value: Int32) -> Void {
168+
#if arch(wasm32)
169+
Utils.Converter.bridgeJSLiftParameter(_self).precision = Int.bridgeJSLiftParameter(value)
170+
#else
171+
fatalError("Only available on WebAssembly")
172+
#endif
173+
}
174+
154175
@_expose(wasm, "bjs_Converter_deinit")
155176
@_cdecl("bjs_Converter_deinit")
156177
public func _bjs_Converter_deinit(_ pointer: UnsafeMutableRawPointer) -> Void {

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSCodegenTests/EnumNamespace.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,19 @@
4848
"Utils"
4949
],
5050
"properties" : [
51+
{
52+
"isReadonly" : false,
53+
"isStatic" : false,
54+
"name" : "precision",
55+
"namespace" : [
56+
"Utils"
57+
],
58+
"type" : {
59+
"int" : {
5160

61+
}
62+
}
63+
}
5264
],
5365
"swiftCallName" : "Utils.Converter"
5466
},

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSCodegenTests/EnumNamespace.swift

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,27 @@ public func _bjs_Converter_toString(_ _self: UnsafeMutableRawPointer, _ value: I
151151
#endif
152152
}
153153

154+
@_expose(wasm, "bjs_Converter_precision_get")
155+
@_cdecl("bjs_Converter_precision_get")
156+
public func _bjs_Converter_precision_get(_ _self: UnsafeMutableRawPointer) -> Int32 {
157+
#if arch(wasm32)
158+
let ret = Utils.Converter.bridgeJSLiftParameter(_self).precision
159+
return ret.bridgeJSLowerReturn()
160+
#else
161+
fatalError("Only available on WebAssembly")
162+
#endif
163+
}
164+
165+
@_expose(wasm, "bjs_Converter_precision_set")
166+
@_cdecl("bjs_Converter_precision_set")
167+
public func _bjs_Converter_precision_set(_ _self: UnsafeMutableRawPointer, _ value: Int32) -> Void {
168+
#if arch(wasm32)
169+
Utils.Converter.bridgeJSLiftParameter(_self).precision = Int.bridgeJSLiftParameter(value)
170+
#else
171+
fatalError("Only available on WebAssembly")
172+
#endif
173+
}
174+
154175
@_expose(wasm, "bjs_Converter_deinit")
155176
@_cdecl("bjs_Converter_deinit")
156177
public func _bjs_Converter_deinit(_ pointer: UnsafeMutableRawPointer) -> Void {

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/EnumNamespace.Global.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ export interface SwiftHeapObject {
8484
}
8585
export interface Converter extends SwiftHeapObject {
8686
toString(value: number): string;
87+
precision: number;
8788
}
8889
export interface HTTPServer extends SwiftHeapObject {
8990
call(method: Networking.API.MethodTag): void;

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/EnumNamespace.Global.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,13 @@ export async function createInstantiator(options, swift) {
300300
tmpRetString = undefined;
301301
return ret;
302302
}
303+
get precision() {
304+
const ret = instance.exports.bjs_Converter_precision_get(this.pointer);
305+
return ret;
306+
}
307+
set precision(value) {
308+
instance.exports.bjs_Converter_precision_set(this.pointer, value);
309+
}
303310
}
304311
class HTTPServer extends SwiftHeapObject {
305312
static __construct(ptr) {

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/EnumNamespace.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ export interface SwiftHeapObject {
5656
}
5757
export interface Converter extends SwiftHeapObject {
5858
toString(value: number): string;
59+
precision: number;
5960
}
6061
export interface HTTPServer extends SwiftHeapObject {
6162
call(method: Networking.API.MethodTag): void;

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/EnumNamespace.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,13 @@ export async function createInstantiator(options, swift) {
281281
tmpRetString = undefined;
282282
return ret;
283283
}
284+
get precision() {
285+
const ret = instance.exports.bjs_Converter_precision_get(this.pointer);
286+
return ret;
287+
}
288+
set precision(value) {
289+
instance.exports.bjs_Converter_precision_set(this.pointer, value);
290+
}
284291
}
285292
class HTTPServer extends SwiftHeapObject {
286293
static __construct(ptr) {

0 commit comments

Comments
 (0)