Skip to content

Commit cf89c5f

Browse files
authored
Merge pull request #656 from PassiveLogic/kr/jsglue-refactor
NFC: BridgeJS: Refactor JSGlueGen with compositional optional handling and helper consolidation
2 parents bbdf7d5 + 834b59a commit cf89c5f

20 files changed

+2711
-2976
lines changed

Plugins/BridgeJS/Sources/BridgeJSLink/BridgeJSLink.swift

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1048,7 +1048,7 @@ public struct BridgeJSLink {
10481048
for skeleton in skeletons.compactMap(\.exported) {
10491049
for enumDef in skeleton.enums where enumDef.enumType == .associatedValue {
10501050
printer.write(
1051-
"const \(enumDef.name)Helpers = __bjs_create\(enumDef.valuesName)Helpers()();"
1051+
"const \(enumDef.name)Helpers = __bjs_create\(enumDef.valuesName)Helpers();"
10521052
)
10531053
printer.write("\(JSGlueVariableScope.reservedEnumHelpers).\(enumDef.name) = \(enumDef.name)Helpers;")
10541054
printer.nextLine()
@@ -1064,7 +1064,7 @@ public struct BridgeJSLink {
10641064
for skeleton in skeletons.compactMap(\.exported) {
10651065
for structDef in skeleton.structs {
10661066
printer.write(
1067-
"const \(structDef.name)Helpers = __bjs_create\(structDef.name)Helpers()();"
1067+
"const \(structDef.name)Helpers = __bjs_create\(structDef.name)Helpers();"
10681068
)
10691069
printer.write(
10701070
"\(JSGlueVariableScope.reservedStructHelpers).\(structDef.name) = \(structDef.name)Helpers;"
@@ -1219,7 +1219,8 @@ public struct BridgeJSLink {
12191219
loweringFragment.parameters.count == 1,
12201220
"Lowering fragment should have exactly one parameter to lower"
12211221
)
1222-
let loweredValues = try loweringFragment.printCode([param.name], context)
1222+
let paramName = scope.variable(param.name)
1223+
let loweredValues = try loweringFragment.printCode([paramName], context)
12231224
parameterForwardings.append(contentsOf: loweredValues)
12241225
}
12251226

@@ -1513,15 +1514,15 @@ public struct BridgeJSLink {
15131514

15141515
switch enumDefinition.enumType {
15151516
case .simple:
1516-
let fragment = IntrinsicJSFragment.simpleEnumHelper(enumDefinition: enumDefinition)
1517+
let fragment = IntrinsicJSFragment.caseEnumHelper(enumDefinition: enumDefinition)
15171518
_ = try fragment.printCode([enumValuesName], context)
15181519
jsTopLevelLines.append(contentsOf: printer.lines)
15191520
case .rawValue:
15201521
guard enumDefinition.rawType != nil else {
15211522
throw BridgeJSLinkError(message: "Raw value enum \(enumDefinition.name) is missing rawType")
15221523
}
15231524

1524-
let fragment = IntrinsicJSFragment.rawValueEnumHelper(enumDefinition: enumDefinition)
1525+
let fragment = IntrinsicJSFragment.caseEnumHelper(enumDefinition: enumDefinition)
15251526
_ = try fragment.printCode([enumValuesName], context)
15261527
jsTopLevelLines.append(contentsOf: printer.lines)
15271528
case .associatedValue:

0 commit comments

Comments
 (0)