-
-
Notifications
You must be signed in to change notification settings - Fork 524
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(transformer): wrap_in_arrow_function_iife
take span of input Expression
#8547
fix(transformer): wrap_in_arrow_function_iife
take span of input Expression
#8547
Conversation
5f41b75
to
f64e99c
Compare
df4eb7f
to
d5331a8
Compare
CodSpeed Performance ReportMerging #8547 will not alter performanceComparing Summary
|
I don't know how to get the source map to work, I have a question about this, do we need to reset the span of input |
I have been wondering exactly the same thing. I don't know the answer. I would hope that it's OK not to reset the inner span, and that when the source map is generated it should see it doesn't need to create a separate entry for the inner span because it's redundant information. My logic is that when printing a large file which has not been transformed at all, the source map should say "Line 1: Same as before. Line 2: Same as before. ..." and not create a massive source map saying "Line 1 column 0 -> Line 1 column 0. Line 1 column 1 -> Line 1 column 1. Line 1 column 2 -> Line 1 column 2. ... and so on and so on". So, similarly, you'd hope that it can handle an If it doesn't, we should probably look at fixing that in the source map generator! |
PS: I'm treating spans as "best effort" at the moment. I'm just working on the simple principle that if you create a node which replaces another node, the new node should have the span of the old one. But I don't really understand how source maps work, and I think we need some testing infrastructure to figure it out properly. |
I am also following the same principle now.
Yes, we are still thinking it should work like this, we need evidence to tell us we are doing it right. Not far from figuring out how it works. |
Merge activity
|
f64e99c
to
5206c6a
Compare
d5331a8
to
b552f5c
Compare
## [0.47.0] - 2025-01-18 - fae4cd2 allocator: [**BREAKING**] Remove `Vec::into_string` (#8571) (overlookmotel) - 95bc0d7 allocator: [**BREAKING**] `Allocator` do not deref to `bumpalo::Bump` (#8569) (overlookmotel) - 19d3677 ast: [**BREAKING**] Always return `Array<ImportDeclarationSpecifier>` for `ImportDeclaration.specifiers` (#8560) (sapphi-red) - 4ce6329 semantic: [**BREAKING**] Ensure program outlives semantic (#8455) (Valentinas Janeiko) - 7066d1c ast, span, syntax, regular_expression: [**BREAKING**] Remove `ContentHash` (#8512) (overlookmotel) ### Features - bf4e5e1 allocator: Add `HashMap` (#8553) (overlookmotel) - a6d71f8 ast: Add `AstKind::ty` method (#8521) (overlookmotel) - 4d4e805 minifier: Collapse if stmt with empty consequent (#8577) (camc314) - 991a22f minifier: Fold `Array::concat` into literal (#8442) (sapphi-red) - 3dc2d8b minifier: Fold string concat chaining (#8441) (sapphi-red) - a4ae450 minifier: Fold array concat chaining (#8440) (sapphi-red) - 7cc81ef minifier: Fold invalid typeof comparisons (#8550) (camc314) - 927f43f minifier: Improve `.charCodeAt(arg)` when arg is valid (#8534) (Boshen) - 06f14d5 minifier: Remove empty class static block `class Foo { static {} }` (#8525) (Boshen) - 1860411 minifier: Remove last redundant return statement (#8523) (Boshen) - c479a58 napi/parser: Expose dynamic import expressions (#8540) (Boshen) - 2f0314e npm/oxc-minify: Npm package and publish script (#8579) (Boshen) - f413bb5 transformer/optional-chaining: Change parent scope for expression when it wrapped with an arrow function (#8511) (Dunqing) ### Bug Fixes - e87c001 allocator: Statically prevent memory leaks in allocator (#8570) (overlookmotel) - 855c839 codegen: Shorthand assignment target identifier consider mangled names (#8536) (Boshen) - 65c596d minifer: Keep idents if not in scope when minimizing array exprs (#8551) (camc314) - f57aac2 minifier: Incorrect folding of expr in bool ctx (#8542) (camc314) - 946ad76 minifier: `(-Infinity).toString()` -> `'-Infinity'` (#8535) (Boshen) - b1d0186 minifier: Do not fold `!!void b` (#8533) (Boshen) - 53adde5 minifier: `x['-2147483648']` -> `x[-2147483648]` (#8528) (Boshen) - 405b73d minifier: Do not change `delete undefined` to `delete void 0` (#8527) (Boshen) - 92e44cb minifier: Do not remove `undefined` in `var x = undefined` (#8526) (Boshen) - 209e313 minifier: `class C { ['-1']() {} }` cannot be minifized (#8516) (Boshen) - 6585463 minifier: Always keep the last value of sequence expression (#8490) (Boshen) - b552f5c transformer: `wrap_in_arrow_function_iife` take span of input `Expression` (#8547) (overlookmotel) - 9963533 transformer/arrow-functions: Visit arguments to `super()` call (#8494) (overlookmotel) - 06ccb51 transformer/async-to-generator: Move parameters to the inner generator function when they could throw errors (#8500) (Dunqing) - 356f0c1 transformer/class-properties: Handle nested `super()` calls (#8506) (overlookmotel) - a048337 transformer/class-static-blocks: Static block converted to IIFE use span of original block (#8549) (overlookmotel) ### Performance - 76ea52b allocator: Inline `Box` methods (#8572) (overlookmotel) - 93df57f allocator: `#[inline(always)]` methods of `Vec` which just delegate to `allocator_api2` (#8567) (overlookmotel) - 5a28d68 allocator: `#[inline(always)]` methods of `HashMap` which just delegate to `hashbrown` (#8565) (overlookmotel) - d17021c mangler: Optimize `base54` function (#8557) (overlookmotel) - 6b52d7a mangler: Use a single allocation space for temporary vecs (#8495) (Boshen) - 30a869e semantic: Use `oxc_allocator::HashMap` in `ScopeTree` (#8554) (overlookmotel) - 63eb298 span: Compare `Span`s as single `u64`s (#8300) (overlookmotel) - a43560c span: Hash `Span` as a single `u64` (#8299) (overlookmotel) - 3fff7d2 span: Align `Span` same as `usize` (#8298) (overlookmotel) - 53ef263 transformer/arrow-functions: Bail out of visiting early when inserting `_this = this` after `super()` (#8482) (overlookmotel) ### Documentation - fa1a6d5 allocator: Update docs for `Vec` (#8555) (overlookmotel) ### Refactor - ac05134 allocator: `String` type (#8568) (overlookmotel) - 68fab81 allocator: Rename inner `Vec` type (#8566) (overlookmotel) - fcbca32 ast: Rename `#[estree(with)]` to `#[estree(via)]` (#8564) (overlookmotel) - 007e8c0 ast, regular_expression: Shorten `ContentEq` implementations (#8519) (overlookmotel) - b4c87e2 linter: Move DiagnosticsReporters to oxlint (#8454) (Alexander S.) - 8f57929 minifier: Merge `try_compress_type_of_equal_string` into `try_minimize_binary` (#8561) (sapphi-red) - 2857ae1 parser: Refactor visitor in regexp example (#8524) (overlookmotel) - b5ed58e span: All methods take owned `Span` (#8297) (overlookmotel) - 712633f transformer: `wrap_statements_in_arrow_function_iife` utility function (#8548) (overlookmotel) - 5206c6a transformer: Rename `wrap_in_arrow_function_iife` (#8546) (overlookmotel) - 61077ca transformer: `wrap_arrow_function_iife` receive an owned `Expression` (#8545) (overlookmotel) - 6820d24 transformer: Move `wrap_arrow_function_iife` to root utils module (#8529) (Dunqing) - 52bd0b1 transformer: Move common utils functions to the root module (#8513) (Dunqing) - c30654a transformer/arrow-function: Wrapping arrow function iife by using `wrap_arrow_function_iife` (#8530) (Dunqing) - 2bc5175 transformer/arrow-functions: Rename method (#8481) (overlookmotel) - 72f425f transformer/class-properties: Fix lint warning in release mode (#8539) (overlookmotel) - 7e61b23 transformer/typescript: Shorten code (#8504) (overlookmotel) - 04bc259 traverse: Remove unnecessary `#[allow]` (#8518) (overlookmotel) - a368726 traverse: Harden soundness of `Traverse` and document safety invariants better (#8507) (overlookmotel) ### Testing - e0f5d6c minifier: Update esbuild test (Boshen) - 629c417 minifier: Port esbuild minification tests (#8497) (Boshen) Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
#8530 introduced a small change. Previously the IIFE had the span of the original expression which is being wrapped, but after that PR it got a dummy
SPAN
. Fix that.