Skip to content

Commit

Permalink
feat(transformer/class-properties): insert statements after statement…
Browse files Browse the repository at this point in the history
… of class expression
  • Loading branch information
Dunqing committed Dec 26, 2024
1 parent 58745b8 commit 52b6e42
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 8 deletions.
12 changes: 12 additions & 0 deletions crates/oxc_transformer/src/es2022/class_properties/class.rs
Original file line number Diff line number Diff line change
Expand Up @@ -617,6 +617,18 @@ impl<'a, 'ctx> ClassProperties<'a, 'ctx> {
}
}

if !self.insert_after_stmts.is_empty() {
// Find address of statement of class expression
let position = ctx
.ancestors()
.position(Ancestor::is_parent_of_expression)
.expect("Expression always inside a statement.");
let stmt_ancestor = ctx.ancestor(position);
self.ctx
.statement_injector
.insert_many_after(&stmt_ancestor, self.insert_after_stmts.drain(..));
}

// Insert computed key initializers
exprs.extend(self.insert_before.drain(..));

Expand Down
7 changes: 2 additions & 5 deletions tasks/transform_conformance/snapshots/babel.snap.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
commit: 54a8389f

Passed: 631/1095
Passed: 632/1095

# All Passed:
* babel-plugin-transform-logical-assignment-operators
Expand Down Expand Up @@ -462,7 +462,7 @@ x Output mismatch
x Output mismatch


# babel-plugin-transform-private-methods (16/148)
# babel-plugin-transform-private-methods (17/148)
* accessors/arguments/input.js
x Output mismatch

Expand Down Expand Up @@ -565,9 +565,6 @@ x Output mismatch
* misc/multiple/input.js
x Output mismatch

* private-method/class-expression/input.js
x Output mismatch

* private-method/destructuring/input.js
x Output mismatch

Expand Down
4 changes: 2 additions & 2 deletions tasks/transform_conformance/snapshots/babel_exec.snap.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ TypeError: Cannot read properties of undefined (reading 'bind')
at ./tasks/transform_conformance/fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-parenthesized-optional-member-call-with-transform-exec.test.js:78:12

./fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-static-self-method-exec.test.js
ReferenceError: _Foo_brand is not defined
at Function.extract (./tasks/transform_conformance/fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-static-self-method-exec.test.js:13:28)
ReferenceError: _bar is not defined
at Function.extract (./tasks/transform_conformance/fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-static-self-method-exec.test.js:13:46)
at ./tasks/transform_conformance/fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-static-self-method-exec.test.js:19:45

./fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-static-shadow-exec.test.js
Expand Down
2 changes: 1 addition & 1 deletion tasks/transform_conformance/snapshots/oxc_exec.snap.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ AssertionError: expected [Function] to throw error including 'Receiver must be a
at Proxy.<anonymous> (./node_modules/.pnpm/@vitest[email protected]/node_modules/@vitest/expect/dist/index.js:1438:21)
at Proxy.<anonymous> (./node_modules/.pnpm/@vitest[email protected]/node_modules/@vitest/expect/dist/index.js:923:17)
at Proxy.methodWrapper (./node_modules/.pnpm/[email protected]/node_modules/chai/chai.js:1610:25)
at ./tasks/transform_conformance/fixtures/oxc/babel-plugin-transform-class-properties-test-fixtures-private-field-resolve-to-method-in-computed-key-exec.test.js:86:33
at ./tasks/transform_conformance/fixtures/oxc/babel-plugin-transform-class-properties-test-fixtures-private-field-resolve-to-method-in-computed-key-exec.test.js:93:33

./fixtures/oxc/babel-plugin-transform-class-properties-test-fixtures-static-super-tagged-template-exec.test.js
AssertionError: expected undefined to be [Function C] // Object.is equality
Expand Down

0 comments on commit 52b6e42

Please sign in to comment.