Skip to content
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

refactor(isolated_declarations, linter, minifier, prettier, semantic, transformer): remove unnecessary ref / ref mut syntax #8643

Conversation

overlookmotel
Copy link
Contributor

@overlookmotel overlookmotel commented Jan 21, 2025

While working on #8641, I found a lot of places where we unnecessarily use ref / ref mut in match arms.

In many cases, we're creating double-references (turning a &T into a &&T). The compiler should be smart enough to remove them for us, but there doesn't seem much point in explicitly creating double-references when we don't actually want them, and relying on compiler to optimize them out again.

@github-actions github-actions bot added A-linter Area - Linter A-semantic Area - Semantic A-minifier Area - Minifier A-transformer Area - Transformer / Transpiler A-prettier Area - Prettier A-isolated-declarations Isolated Declarations A-editor Area - Editor and Language Server labels Jan 21, 2025
Copy link
Contributor Author

overlookmotel commented Jan 21, 2025


How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • 0-merge - adds this PR to the back of the merge queue
  • hotfix - for urgent hot fixes, skip the queue and merge this PR next

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@github-actions github-actions bot added the C-cleanup Category - technical debt or refactoring. Solution not expected to change behavior label Jan 21, 2025
@overlookmotel overlookmotel marked this pull request as ready for review January 21, 2025 13:47
Copy link

codspeed-hq bot commented Jan 21, 2025

CodSpeed Performance Report

Merging #8643 will not alter performance

Comparing 01-21-refactor_isolated_declarations_linter_minifier_prettier_semantic_transformer_remove_unnecessary_ref___ref_mut_syntax (e66da9f) with main (61d96fd)

Summary

✅ 32 untouched benchmarks

@Boshen Boshen added the 0-merge Merge with Graphite Merge Queue label Jan 21, 2025
Copy link
Member

Boshen commented Jan 21, 2025

Merge activity

  • Jan 21, 9:19 AM EST: The merge label '0-merge' was detected. This PR will be added to the Graphite merge queue once it meets the requirements.
  • Jan 21, 9:19 AM EST: A user added this pull request to the Graphite merge queue.
  • Jan 21, 9:35 AM EST: A user merged this pull request with the Graphite merge queue.

… transformer): remove unnecessary `ref` / `ref mut` syntax (#8643)

While working on #8641, I found a lot of places where we unnecessarily use `ref` / `ref mut` in match arms.

In many cases, we're creating double-references (turning a `&T` into a `&&T`). The compiler should be smart enough to remove them for us, but there doesn't seem much point in explicitly creating double-references when we don't actually want them, and relying on compiler to optimize them out again.
@Boshen Boshen force-pushed the 01-21-refactor_span_remove_partialeq_impl_for_atom_ branch from c83b9d1 to 54d0fac Compare January 21, 2025 14:21
@Boshen Boshen force-pushed the 01-21-refactor_isolated_declarations_linter_minifier_prettier_semantic_transformer_remove_unnecessary_ref___ref_mut_syntax branch from 961b755 to e66da9f Compare January 21, 2025 14:22
Base automatically changed from 01-21-refactor_span_remove_partialeq_impl_for_atom_ to main January 21, 2025 14:32
@graphite-app graphite-app bot merged commit e66da9f into main Jan 21, 2025
32 checks passed
@graphite-app graphite-app bot deleted the 01-21-refactor_isolated_declarations_linter_minifier_prettier_semantic_transformer_remove_unnecessary_ref___ref_mut_syntax branch January 21, 2025 14:35
Boshen added a commit that referenced this pull request Jan 24, 2025
## [0.48.0] - 2025-01-24

- 54d0fac span: [**BREAKING**] Remove `PartialEq` impl for `&Atom`
(#8642) (overlookmotel)

### Features

- 2a2ad53 allocator: Add `Allocator::capacity` and `used_bytes` methods
(#8621) (overlookmotel)
- 6801c81 allocator: Add `Allocator::new` and `with_capacity` methods
(#8620) (overlookmotel)
- 99607d3 codegen: Print comments in `TSTypeLiteral` (#8679) (Boshen)
- 4ae568e linter: Add DiagnosticResult to the Reporters for receiving a
sub part result (#8666) (Alexander S.)
- 343690e minifier: Replace `Number.*_SAFE_INTEGER`/`Number.EPSILON`
(#8682) (sapphi-red)
- 0c5bb30 minifier: Replace
`Number.POSITIVE_INFINITY`/`Number.NEGATIVE_INFINITY`/`Number.NaN`
(#8681) (sapphi-red)
- 835b258 minifier: Compress `typeof foo === 'object' && foo !== null`
to `typeof foo == 'object' && !!foo` (#8638) (sapphi-red)
- 2bcbed2 minifier: Compress `(a = b) === null || a === undefined` to
`(a = b) == null` (#8637) (sapphi-red)

### Bug Fixes

- 40316af linter: Fix github `endColumn` output (#8647) (Alexander S.)
- 883d25b minifier: Keep esm in dce (#8677) (Boshen)
- 878ce10 minifier: `void 0` equals to `undefined` (#8673) (Boshen)
- ba201a6 minifier: Remove "non esbuild optimizations" which is
incorrect (#8668) (Boshen)
- 8c8b5fa minifier: Avoid minifing `String(a)` into `"" + a` for symbols
(#8612) (翠 / green)
- 4ff6e85 minifier: Remove expression statement `void 0` (#8602)
(Boshen)
- 93d643e minifier: Keep side effects when folding const conditional
exprs (#8591) (camc314)
- 178c232 parser: Parse `intrinsic` TS keyword (#8627) (Kevin Deng 三咲智子)
- 48717ab parser: Parse `true` as `TSLiteralType` (#8626) (Kevin Deng
三咲智子)
- d1c5dc4 semantic: Fix const assertions in `UnresolvedReferencesStack`
(#8653) (overlookmotel)

### Performance

- 787aaad allocator: Make `String` non-drop (#8617) (overlookmotel)
- d966e0a codegen: Do not check for comments if turned off (#8598)
(Boshen)
- 3fa87ff lexer: Peak 2 bytes after `!` (#8662) (Boshen)
- 9953ac7 minifier: Add `LatePeepholeOptimizations` (#8651) (Boshen)
- 00dc63f minifier: Only substitute typed array constructor once (#8649)
(Boshen)
- 3e19e4e minifier: Remove the useless empty statement removal code in
statement fusion (#8646) (Boshen)
- 5b3c412 minifier: Only run optimizations on local changes (#8644)
(Boshen)

### Documentation

- c1d243b allocator: Improve docs for `Allocator` (#8623)
(overlookmotel)
- 01a5e5d allocator: Improve docs for `HashMap` (#8616) (overlookmotel)
- 87568a1 allocator: Reformat docs (#8615) (overlookmotel)
- 3be0392 lexer: Fix doc comment (#8664) (overlookmotel)
- 5029547 semantic: Fix and reformat doc comments (#8652)
(overlookmotel)

### Refactor

- ae8db53 allocator: Move `Allocator` into own module (#8656)
(overlookmotel)
- 0f85bc6 allocator: Reduce repeat code to prevent `Drop` types in arena
(#8655) (overlookmotel)
- de76eb1 allocator: Reorder `Box` methods (#8654) (overlookmotel)
- 997859c ast: Align `#[estree(via)]` behavior (#8599) (sapphi-red)
- db863a3 codegen: Use `Stack` for `binary_expr_stack` (#8663) (Boshen)
- 8cce69a codegen: Remove `match_member_expression` (#8597) (Boshen)
- a3dc4c3 crates: Clean up snapshot files (#8680) (Boshen)
- e66da9f isolated_declarations, linter, minifier, prettier, semantic,
transformer: Remove unnecessary `ref` / `ref mut` syntax (#8643)
(overlookmotel)
- 23b49a6 linter: Use `cow_to_ascii_lowercase` instead
`cow_to_lowercase` (#8678) (Boshen)
- ce2b9da minifier: Remove `wrap_to_avoid_ambiguous_else` (#8676)
(Boshen)
- 75a579b minifier: Clean up
`has_no_side_effect_for_evaluation_same_target` (#8675) (Boshen)
- 1bb2539 minifier: Move more code into `minimize_conditions` local loop
(#8671) (Boshen)
- 13e4a45 minifier: Move conditional assignment to `minimize_conditions`
(#8669) (Boshen)
- ae895d8 minifier: Use `NonEmptyStack` for function stack (#8661)
(Boshen)
- 3802d28 minifier: Clean up `try_minimize_conditional` (#8660) (Boshen)
- dcc1f2b minifier: Rename `ast_passes` to `peephole` (#8635) (Boshen)
- 52458de minifier: Remove unused code and traits (#8632) (Boshen)
- 6f95cd5 minifier: Remove all the unnecessary fake ast passes (#8618)
(Boshen)
- 712cae0 minifier: Run the compressor on all test cases (#8604)
(Boshen)
- 864b8ef parser: Shorten code (#8640) (overlookmotel)
- b8d9a51 span: Deal only in owned `Atom`s (#8641) (overlookmotel)
- 20f52b1 span: Remove unnecessary lifetimes on `Atom` impls (#8639)
(overlookmotel)
- ac4f98e span: Derive `Copy` on `Atom` (#8596) (branchseer)
- a730f99 transformer: Move `create_prototype_member` to utils module
(#8657) (Dunqing)
- 61d96fd transformer/class-properties: Correct comments (#8636)
(overlookmotel)

### Testing

- 39dbd2d codegen: Fix snapshot file (#8685) (Boshen)
- d9f5e7f minifier: Enable passed esbuild tests (Boshen)

Co-authored-by: Boshen <[email protected]>
Boshen added a commit that referenced this pull request Jan 24, 2025
## [0.15.8] - 2025-01-24

### Features

- 79ba9b5 linter: Added support to run in Node.JS legacy versions
(#8648) (Luiz Felipe Weber)
- dcaebe6 linter: Add "strict" option to `promise/prefer-await-to-then`
rule (#8674) (Neil Fisher)
- 4ae568e linter: Add DiagnosticResult to the Reporters for receiving a
sub part result (#8666) (Alexander S.)
- 8a0eb2a oxlint: Add stylish formatter (#8607) (Andrew Powell)

### Bug Fixes

- 40316af linter: Fix github `endColumn` output (#8647) (Alexander S.)
- dc912fa linter: Added missing $schema property to default config
(#8625) (Tapan Prakash)

### Refactor

- a3dc4c3 crates: Clean up snapshot files (#8680) (Boshen)
- e66da9f isolated_declarations, linter, minifier, prettier, semantic,
transformer: Remove unnecessary `ref` / `ref mut` syntax (#8643)
(overlookmotel)
- 23b49a6 linter: Use `cow_to_ascii_lowercase` instead
`cow_to_lowercase` (#8678) (Boshen)
- b8d9a51 span: Deal only in owned `Atom`s (#8641) (overlookmotel)
- ac4f98e span: Derive `Copy` on `Atom` (#8596) (branchseer)
- 259a47b vscode: Move commands and `findBinary` to separate files
(#8605) (Alexander S.)

Co-authored-by: Boshen <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0-merge Merge with Graphite Merge Queue A-editor Area - Editor and Language Server A-isolated-declarations Isolated Declarations A-linter Area - Linter A-minifier Area - Minifier A-prettier Area - Prettier A-semantic Area - Semantic A-transformer Area - Transformer / Transpiler C-cleanup Category - technical debt or refactoring. Solution not expected to change behavior
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants