Skip to content

Conversation

@kateinoigakukun
Copy link
Member

@kateinoigakukun kateinoigakukun commented Jan 26, 2026

Implements TypeScript enum import support for BridgeJS (string-valued enums; int-valued enums also supported).

  • ts2swift emits Swift enum Name: String (or : Int) and _BridgedSwiftEnumNoPayload conformance for TS enums.
  • ImportTS supports lowering/lifting .rawValueEnum in the ImportTS context, so enums can be used as parameters/returns.
  • Adds runtime coverage for imported TS string enums via FeatureFlag + jsRoundTripFeatureFlag.

Close #489

…ing-valued enums, plus int-valued as a bonus).

- `Plugins/BridgeJS/Sources/TS2Swift/JavaScript/src/processor.js`: emits Swift `enum Name: String { ... }` (or `: Int`) for TS enums, adds `extension Name: _BridgedSwiftEnumNoPayload {}`, and ensures enum-typed parameters/returns stay typed as the enum (not downgraded to `String`).
- `Plugins/BridgeJS/Sources/BridgeJSCore/ImportSwiftMacros.swift`: resolves referenced Swift enums/typealiases via `TypeDeclResolver` so `FeatureFlag` becomes `.rawValueEnum("FeatureFlag", .string)` in the imported skeleton.
- `Plugins/BridgeJS/Sources/BridgeJSCore/ImportTS.swift`: enables lowering/lifting for `.rawValueEnum` in the `.importTS` context (parameters + returns).
- Added coverage: `Plugins/BridgeJS/Tests/BridgeJSToolTests/Inputs/StringEnum.d.ts` with new snapshots `Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/ImportTSTests/StringEnum.Macros.swift` and `Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/ImportTSTests/StringEnum.swift`.
- Verified with `swift test --package-path ./Plugins/BridgeJS --filter ImportTSTests`.
- Updated `Tests/BridgeJSRuntimeTests/bridge-js.d.ts` with `FeatureFlag` + `jsRoundTripFeatureFlag`.
- Added JS implementation in `Tests/prelude.mjs`.
- Added XCTest in `Tests/BridgeJSRuntimeTests/ImportAPITests.swift` (`testRoundTripFeatureFlag`).
- Regenerated runtime fixtures under `Tests/BridgeJSRuntimeTests/Generated/` (via `BridgeJSTool generate`).
- Verified runtime: `make unittest SWIFT_SDK_ID=DEVELOPMENT-SNAPSHOT+MAIN-wasm32-unknown-wasip1-threads` (passes).
@kateinoigakukun kateinoigakukun enabled auto-merge (squash) January 26, 2026 07:51
@kateinoigakukun kateinoigakukun merged commit 8565d3b into main Jan 26, 2026
9 checks passed
@kateinoigakukun kateinoigakukun deleted the katei/3b1f-bridgejs-import branch January 26, 2026 08:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BridgeJS: Import TypeScript enum definitions into Swift enums

3 participants