Skip to content

Comments

refactor(transformer/class-properties): simplify to get constructor method only once#10493

Merged
graphite-app[bot] merged 1 commit intomainfrom
04-18-refactor_transformer_class-properties_simplify_to_get_construcot_method_only_once
Apr 22, 2025
Merged

refactor(transformer/class-properties): simplify to get constructor method only once#10493
graphite-app[bot] merged 1 commit intomainfrom
04-18-refactor_transformer_class-properties_simplify_to_get_construcot_method_only_once

Conversation

@Dunqing
Copy link
Member

@Dunqing Dunqing commented Apr 18, 2025

Benefit from #10495, we can move getting instance_inits_scope_id and instance_inits_constructor_scope_id part to after all instance properties transformed. So that we can avoid to get constructor twice due to borrow checker.

Copy link
Member Author

Dunqing commented Apr 18, 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 A-transformer Area - Transformer / Transpiler C-cleanup Category - technical debt or refactoring. Solution not expected to change behavior labels Apr 18, 2025
@codspeed-hq
Copy link

codspeed-hq bot commented Apr 18, 2025

CodSpeed Instrumentation Performance Report

Merging #10493 will not alter performance

Comparing 04-18-refactor_transformer_class-properties_simplify_to_get_construcot_method_only_once (596978b) with main (e10dfc8)

Summary

✅ 36 untouched benchmarks

@Dunqing Dunqing changed the base branch from 04-18-refactor_transformer_class-properties_streamline_handling_scope_of_instance_property_initializer to graphite-base/10493 April 18, 2025 10:13
@Dunqing Dunqing force-pushed the 04-18-refactor_transformer_class-properties_simplify_to_get_construcot_method_only_once branch from ba4f2c6 to f24f711 Compare April 18, 2025 10:13
@Dunqing Dunqing force-pushed the graphite-base/10493 branch from 3c055cd to 5ca39af Compare April 18, 2025 10:13
@Dunqing Dunqing changed the base branch from graphite-base/10493 to 04-18-refactor_transformer_class-properties_defer_reparent_initializers_scopes_after_all_instance_properties_are_collected April 18, 2025 10:13
@Dunqing Dunqing marked this pull request as ready for review April 22, 2025 01:49
@Dunqing Dunqing requested a review from overlookmotel as a code owner April 22, 2025 01:49
graphite-app bot pushed a commit that referenced this pull request Apr 22, 2025
…instance property initializer (#10492)

Move the `instance_inits_scope_id` and `instance_inits_constructor_scope_id` fields from the `ClassProperties` struct to local variables.

Using struct-level fields as temporary variables is unnecessary within three function depths, and you also need to consider when to reset the states, otherwise, you may cause a bug due to using previous temporary information. Moreover, I think it also improves a bit readability.

NOTE: This is not only a refactor, but also along with #10495 and #10493 to prepare #10491.
Copy link
Member

@overlookmotel overlookmotel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice! Yes, getting constructor twice was necessary before only to work around the borrow checker. You've solved that problem now.

@graphite-app graphite-app bot changed the base branch from 04-18-refactor_transformer_class-properties_defer_reparent_initializers_scopes_after_all_instance_properties_are_collected to graphite-base/10493 April 22, 2025 11:21
graphite-app bot pushed a commit that referenced this pull request Apr 22, 2025
…rs scopes until all instance properties are transformed (#10495)

Re-parenting the initializers' scope after all instance properties are transformed, which is preparing for #10493. And rename `transform_instance_initializer` to `reparent_initializers_scope` because the previous name confused me; the implementation only affects scope data.

Moreover, there is a drawback to this change. The `reparent_initializers_scope` method now processes initializers that have been transformed, so that it will visit many unrelated AST nodes. See the transformer/pdf.js benchmark, it shows `0.1ms` slower than before. It may not matter; we will get it back in the follow-up changes.
@overlookmotel overlookmotel added the 0-merge Merge with Graphite Merge Queue label Apr 22, 2025
Copy link
Member

overlookmotel commented Apr 22, 2025

Merge activity

  • Apr 22, 7:22 AM EDT: The merge label '0-merge' was detected. This PR will be added to the Graphite merge queue once it meets the requirements.
  • Apr 22, 7:23 AM EDT: overlookmotel added this pull request to the Graphite merge queue.
  • Apr 22, 11:32 AM UTC: The Graphite merge queue couldn't merge this PR because it had conflicts with the trunk branch.
  • Apr 22, 11:04 AM EDT: The merge label '0-merge' was detected. This PR will be added to the Graphite merge queue once it meets the requirements.
  • Apr 22, 11:09 AM EDT: overlookmotel added this pull request to the Graphite merge queue.
  • Apr 22, 11:23 AM EDT: Merged by the Graphite merge queue.

@graphite-app graphite-app bot removed the 0-merge Merge with Graphite Merge Queue label Apr 22, 2025
@graphite-app graphite-app bot changed the base branch from graphite-base/10493 to main April 22, 2025 11:30
@overlookmotel overlookmotel force-pushed the 04-18-refactor_transformer_class-properties_simplify_to_get_construcot_method_only_once branch from f24f711 to aaa8993 Compare April 22, 2025 15:02
@overlookmotel
Copy link
Member

Graphite got confused somehow. I've rebased on main and restacked to fix (non-existent) merge conflicts. Hopefully it'll get merged now.

@overlookmotel overlookmotel added the 0-merge Merge with Graphite Merge Queue label Apr 22, 2025
graphite-app bot pushed a commit that referenced this pull request Apr 22, 2025
… method only once (#10493)

Benefit from #10495, we can move getting `instance_inits_scope_id` and `instance_inits_constructor_scope_id` part to after all instance properties transformed. So that we can avoid to get `constructor` twice due to borrow checker.
@graphite-app graphite-app bot force-pushed the 04-18-refactor_transformer_class-properties_simplify_to_get_construcot_method_only_once branch from aaa8993 to 36ea0af Compare April 22, 2025 15:10
… method only once (#10493)

Benefit from #10495, we can move getting `instance_inits_scope_id` and `instance_inits_constructor_scope_id` part to after all instance properties transformed. So that we can avoid to get `constructor` twice due to borrow checker.
@graphite-app graphite-app bot force-pushed the 04-18-refactor_transformer_class-properties_simplify_to_get_construcot_method_only_once branch from 36ea0af to 596978b Compare April 22, 2025 15:11
@graphite-app graphite-app bot merged commit 596978b into main Apr 22, 2025
29 checks passed
@graphite-app graphite-app bot deleted the 04-18-refactor_transformer_class-properties_simplify_to_get_construcot_method_only_once branch April 22, 2025 15:23
@graphite-app graphite-app bot removed the 0-merge Merge with Graphite Merge Queue label Apr 22, 2025
overlookmotel added a commit that referenced this pull request Apr 22, 2025
)

Follow-on after #10493. We no longer locate the class constructor here.
Remove a comment that says we do.
Boshen added a commit that referenced this pull request Apr 23, 2025
## [0.66.0] - 2025-04-23

### Features

- 7d5ad7d parser: Report error when `import type { type }` is used
(#10528) (camc314)
- 6e40fac parser: Report error when `export type { type }` is used
(#10524) (camc314)

### Bug Fixes

- 43ad4e9 ast: Box `this_param` in `TSCallSignatureDeclaration` (#10558)
(Yuji Sugiura)
- 8eb3c0a ast/estree: Fix raw deser for `FormalParameter` (#10548)
(overlookmotel)
- 3ebf220 codegen: Generate missing `type` in `export type {} from
'mod'` (#10539) (Boshen)
- f19b287 estree: Add `TSParameterProperty` (#10534) (Yuji Sugiura)
- 7284f16 isolated-declarations: Leading comments of
`ExportDefaultDeclaration` and `TSExportAssignment` appear in incorrect
places (#10559) (Dunqing)
- 4c316a5 isolated_declarations: Fix broken snapshot files (#10561)
(Boshen)
- 84742d8 transformer/module_runner: Fix export default live binding
(#10560) (hi-ogawa)
- 6c115c7 transformer/module_runner: Fix execution order of re-export
(#10362) (hi-ogawa)
- b9d84b0 transformer/typescript: Remove `StringLiteral::raw` when
rewriting extensions (#10554) (overlookmotel)

### Performance

- 6a045c8 codegen: Speed up printing `Directive`s (#10551)
(overlookmotel)
- 3418ae5 transformer/class-properties: Re-use
`InstanceInitializerVisitor` (#10543) (overlookmotel)
- 7fcf0ac transformer/typescript: Reduce allocations renaming extensions
(#10555) (overlookmotel)

### Documentation

- 1a9530c transformer/class-properties: Fix typo (#10542)
(overlookmotel)

### Refactor

- 7e71282 transformer/class-properties: Correct outdated comment
(#10546) (overlookmotel)
- 596978b transformer/class-properties: Simplify to get `constructor`
method only once (#10493) (Dunqing)
- f13fe0a transformer/class-properties: Defer re-parenting initializers
scopes until all instance properties are transformed (#10495) (Dunqing)
- c83dad6 transformer/class-properties: Streamline handling scope of
instance property initializer (#10492) (Dunqing)

### Styling

- e10dfc8 traverse: Remove excess whitespace (#10544) (overlookmotel)

### Testing

- 227febf allocator: Ignore a slow doc test (#10521) (Dunqing)
- 14bb2be codegen: Add more tests for strings (#10552) (overlookmotel)

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

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.

2 participants