oxc/tasks/transform_conformance/babel.snap.md
overlookmotel d4371e8f95
fix(transformer): use UIDs in TS namespace transforms (#3395)
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.)
2024-05-27 08:53:13 +08:00

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