mirror of
https://github.com/danbulant/oxc
synced 2026-05-25 04:42:10 +00:00
Use the `TraverseCtx::generate_uid` method introduced in #3395 to fix some of the TS namespace test cases. But... I honestly have no idea what I'm doing here! I am running up against a combination of 3 different areas where I know very little: 1. I am unfamiliar with `Semantic`. 2. I am unfamiliar with Oxc's conventions for writing transforms. 3. I don't "speak" Typescript! This PR should not be merged as is. I'm pretty sure it's wrong. I've done it mostly just to test out `generate_uid`. In particular: 1. Is `SymbolFlags::FunctionScopedVariable` the right flags to use in all cases here? 2. `generate_uid` creates a symbol, and registers a binding for it in the scope tree. So if there are any branches in this logic where `name` doesn't actually get used after `generate_uid` is called, then it's not right. 3. Identifiers which are added to AST should also have corresponding `ReferenceId`s created for them (but I imagine this is also missing in many other places in the transformer). On point 2: We could split up `generate_uid` into 2 functions. One function would find a valid UID name *but not register a binding for it*. If you want to actually use that name, you'd call a 2nd function to generate the binding. Would that be a better API? Could someone help me out to progress this please? (Sorry my lack of knowledge is a bit useless here. I will learn all these things in time, but just trying to be honest about where I'm at right now. I'm sure I could figure it out myself, but it would take me hours, whereas others will probably look at it and know what to do in about 5 mins.)
2 KiB
2 KiB
commit: 4bd1b2c2
Passed: 313/351
All Passed:
- babel-preset-react
- babel-plugin-transform-react-display-name
- babel-plugin-transform-react-jsx-self
- babel-plugin-transform-react-jsx-source
babel-plugin-transform-arrow-functions (1/6)
- assumption-newableArrowFunctions-false/basic/input.js
- assumption-newableArrowFunctions-false/naming/input.js
- assumption-newableArrowFunctions-false/self-referential/input.js
- spec/newableArrowFunction-default/input.js
- spec/newableArrowFunction-vs-spec-false/input.js
babel-preset-typescript (7/10)
- node-extensions/import-in-cts/input.cts
- opts/optimizeConstEnums/input.ts
- opts/rewriteImportExtensions/input.ts
babel-plugin-transform-typescript (127/154)
- enum/mix-references/input.ts
- enum/scoped/input.ts
- enum/ts5.0-const-foldable/input.ts
- exports/declared-types/input.ts
- imports/enum-value/input.ts
- imports/type-only-export-specifier-2/input.ts
- namespace/empty-removed/input.ts
- namespace/mutable-fail/input.ts
- namespace/namespace-flag/input.ts
- namespace/namespace-nested-module/input.ts
- namespace/nested/input.ts
- namespace/nested-destructuring/input.ts
- namespace/nested-namespace/input.ts
- namespace/nested-shorthand-export/input.ts
- namespace/same-name/input.ts
- optimize-const-enums/custom-values/input.ts
- optimize-const-enums/custom-values-exported/input.ts
- optimize-const-enums/declare/input.ts
- optimize-const-enums/export-const-enum/input.ts
- optimize-const-enums/export-const-enum-type-and-value/input.ts
- optimize-const-enums/export-const-enum-type-no-deopt/input.ts
- optimize-const-enums/exported/input.ts
- optimize-const-enums/local/input.ts
- optimize-const-enums/local-shadowed/input.ts
- optimize-const-enums/merged/input.ts
- optimize-const-enums/merged-exported/input.ts
- regression/15768/input.ts
babel-plugin-transform-react-jsx (140/142)
- autoImport/complicated-scope-module/input.js
- react-automatic/does-not-add-source-self-automatic/input.mjs
babel-plugin-transform-react-jsx-development (9/10)
- cross-platform/within-ts-module-block/input.ts