mirror of
https://github.com/danbulant/oxc
synced 2026-05-24 12:21:58 +00:00
feat(transformer/class-properties): support for transforming AssignmentTarget (#7697)
Instance prop:
* `[object.#prop] = arr` -> `[_toSetter(_classPrivateFieldSet, [_prop, object])._] = arr`
* `({x: object.#prop} = obj)` -> `({ x: _toSetter(_classPrivateFieldSet, [_prop, object])._ } = obj)`
Static prop:
* `[object.#prop] = arr` -> `[_assertClassBrand(Class, object, _prop)._] = arr`
* `({x: object.#prop} = obj)` -> `({ x: _assertClassBrand(Class, object, _prop)._ } = obj)`
This commit is contained in:
parent
66a680a119
commit
86d4c90e4d
6 changed files with 97 additions and 162 deletions
|
|
@ -152,6 +152,7 @@ pub enum Helper {
|
|||
ClassPrivateFieldGet2,
|
||||
ClassPrivateFieldSet2,
|
||||
AssertClassBrand,
|
||||
ToSetter,
|
||||
}
|
||||
|
||||
impl Helper {
|
||||
|
|
@ -172,6 +173,7 @@ impl Helper {
|
|||
Self::ClassPrivateFieldGet2 => "classPrivateFieldGet2",
|
||||
Self::ClassPrivateFieldSet2 => "classPrivateFieldSet2",
|
||||
Self::AssertClassBrand => "assertClassBrand",
|
||||
Self::ToSetter => "toSetter",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,12 +40,13 @@ impl<'a, 'ctx> ClassProperties<'a, 'ctx> {
|
|||
) {
|
||||
let owned_expr = ctx.ast.move_expression(expr);
|
||||
let Expression::PrivateFieldExpression(field_expr) = owned_expr else { unreachable!() };
|
||||
*expr = self.transform_private_field_expression_impl(field_expr, ctx);
|
||||
*expr = self.transform_private_field_expression_impl(field_expr, false, ctx);
|
||||
}
|
||||
|
||||
fn transform_private_field_expression_impl(
|
||||
&mut self,
|
||||
field_expr: ArenaBox<'a, PrivateFieldExpression<'a>>,
|
||||
is_assignment: bool,
|
||||
ctx: &mut TraverseCtx<'a>,
|
||||
) -> Expression<'a> {
|
||||
let prop_details = self.private_props_stack.find(&field_expr.field);
|
||||
|
|
@ -87,6 +88,9 @@ impl<'a, 'ctx> ClassProperties<'a, 'ctx> {
|
|||
ctx,
|
||||
)
|
||||
}
|
||||
} else if is_assignment {
|
||||
// `_toSetter(_classPrivateFieldSet2, [_prop, object])._`
|
||||
self.create_to_setter(prop_ident, object, span, ctx)
|
||||
} else {
|
||||
// `_classPrivateFieldGet2(_prop, object)`
|
||||
self.create_private_field_get(prop_ident, object, span, ctx)
|
||||
|
|
@ -1428,22 +1432,22 @@ impl<'a, 'ctx> ClassProperties<'a, 'ctx> {
|
|||
// `object.#prop` in assignment pattern.
|
||||
// Must be in assignment pattern, as `enter_expression` already transformed `AssignmentExpression`s.
|
||||
if matches!(target, AssignmentTarget::PrivateFieldExpression(_)) {
|
||||
self.transform_assignment_target_impl(target, ctx);
|
||||
*target = self.transform_assignment_target_impl(target, ctx);
|
||||
}
|
||||
}
|
||||
|
||||
#[expect(clippy::unused_self)]
|
||||
fn transform_assignment_target_impl(
|
||||
&mut self,
|
||||
target: &mut AssignmentTarget<'a>,
|
||||
_ctx: &mut TraverseCtx<'a>,
|
||||
) {
|
||||
let AssignmentTarget::PrivateFieldExpression(_private_field) = target else {
|
||||
ctx: &mut TraverseCtx<'a>,
|
||||
) -> AssignmentTarget<'a> {
|
||||
let AssignmentTarget::PrivateFieldExpression(private_field) =
|
||||
ctx.ast.move_assignment_target(target)
|
||||
else {
|
||||
unreachable!()
|
||||
};
|
||||
|
||||
// TODO: `[object.#prop] = value`
|
||||
// TODO: `({x: object.#prop} = value)`
|
||||
let expr = self.transform_private_field_expression_impl(private_field, true, ctx);
|
||||
AssignmentTarget::from(SimpleAssignmentTarget::from(expr.into_member_expression()))
|
||||
}
|
||||
|
||||
/// Duplicate object to be used in get/set pair.
|
||||
|
|
@ -1571,6 +1575,30 @@ impl<'a, 'ctx> ClassProperties<'a, 'ctx> {
|
|||
)
|
||||
}
|
||||
|
||||
/// `_toSetter(_classPrivateFieldSet2, [_prop, object])._`
|
||||
fn create_to_setter(
|
||||
&self,
|
||||
prop_ident: Expression<'a>,
|
||||
object: Expression<'a>,
|
||||
span: Span,
|
||||
ctx: &mut TraverseCtx<'a>,
|
||||
) -> Expression<'a> {
|
||||
let arguments = ctx.ast.expression_array(
|
||||
SPAN,
|
||||
ctx.ast.vec_from_array([
|
||||
ArrayExpressionElement::from(prop_ident),
|
||||
ArrayExpressionElement::from(object),
|
||||
]),
|
||||
None,
|
||||
);
|
||||
let arguments = ctx.ast.vec_from_array([
|
||||
Argument::from(self.ctx.helper_load(Helper::ClassPrivateFieldSet2, ctx)),
|
||||
Argument::from(arguments),
|
||||
]);
|
||||
let call = self.ctx.helper_call_expr(Helper::ToSetter, span, arguments, ctx);
|
||||
Self::create_underscore_member_expression(call, span, ctx)
|
||||
}
|
||||
|
||||
/// `_assertClassBrand(Class, object, value)` or `_assertClassBrand(Class, object, _prop)`
|
||||
fn create_assert_class_brand(
|
||||
&self,
|
||||
|
|
|
|||
|
|
@ -61,4 +61,14 @@ impl<'a, 'ctx> Traverse<'a> for ES2022<'a, 'ctx> {
|
|||
class_properties.exit_class(class, ctx);
|
||||
}
|
||||
}
|
||||
|
||||
fn enter_assignment_target(
|
||||
&mut self,
|
||||
node: &mut AssignmentTarget<'a>,
|
||||
ctx: &mut TraverseCtx<'a>,
|
||||
) {
|
||||
if let Some(class_properties) = &mut self.class_properties {
|
||||
class_properties.enter_assignment_target(node, ctx);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -310,6 +310,7 @@ impl<'a, 'ctx> Traverse<'a> for TransformerImpl<'a, 'ctx> {
|
|||
if let Some(typescript) = self.x0_typescript.as_mut() {
|
||||
typescript.enter_assignment_target(node, ctx);
|
||||
}
|
||||
self.x2_es2022.enter_assignment_target(node, ctx);
|
||||
}
|
||||
|
||||
fn enter_formal_parameters(
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
commit: 54a8389f
|
||||
|
||||
Passed: 416/846
|
||||
Passed: 427/846
|
||||
|
||||
# All Passed:
|
||||
* babel-plugin-transform-class-static-block
|
||||
|
|
@ -276,7 +276,7 @@ x Output mismatch
|
|||
x Output mismatch
|
||||
|
||||
|
||||
# babel-plugin-transform-class-properties (89/264)
|
||||
# babel-plugin-transform-class-properties (100/264)
|
||||
* assumption-constantSuper/complex-super-class/input.js
|
||||
x Output mismatch
|
||||
|
||||
|
|
@ -412,9 +412,6 @@ x Output mismatch
|
|||
* nested-class/super-property-in-decorator/input.js
|
||||
x Output mismatch
|
||||
|
||||
* private/1-helpermemberexpressionfunction/input.js
|
||||
x Output mismatch
|
||||
|
||||
* private/call/input.js
|
||||
Scope children mismatch:
|
||||
after transform: ScopeId(1): [ScopeId(2), ScopeId(3), ScopeId(4)]
|
||||
|
|
@ -435,36 +432,6 @@ x Output mismatch
|
|||
* private/derived-multiple-supers/input.js
|
||||
x Output mismatch
|
||||
|
||||
* private/destructuring-array-pattern/input.js
|
||||
x Output mismatch
|
||||
|
||||
* private/destructuring-array-pattern-1/input.js
|
||||
x Output mismatch
|
||||
|
||||
* private/destructuring-array-pattern-2/input.js
|
||||
x Output mismatch
|
||||
|
||||
* private/destructuring-array-pattern-3/input.js
|
||||
x Output mismatch
|
||||
|
||||
* private/destructuring-array-pattern-static/input.js
|
||||
x Output mismatch
|
||||
|
||||
* private/destructuring-object-pattern/input.js
|
||||
x Output mismatch
|
||||
|
||||
* private/destructuring-object-pattern-1/input.js
|
||||
x Output mismatch
|
||||
|
||||
* private/destructuring-object-pattern-2/input.js
|
||||
x Output mismatch
|
||||
|
||||
* private/destructuring-object-pattern-3/input.js
|
||||
x Output mismatch
|
||||
|
||||
* private/destructuring-object-pattern-static/input.js
|
||||
x Output mismatch
|
||||
|
||||
* private/extracted-this/input.js
|
||||
x Output mismatch
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
commit: 54a8389f
|
||||
|
||||
node: v22.12.0
|
||||
⎯⎯⎯⎯⎯⎯ Failed Suites 32 ⎯⎯⎯⎯⎯⎯
|
||||
⎯⎯⎯⎯⎯⎯ Failed Suites 9 ⎯⎯⎯⎯⎯⎯⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-arrow-functions-test-fixtures-arrow-functions-implicit-var-arguments-exec.test.js [ fixtures/babel/babel-plugin-transform-arrow-functions-test-fixtures-arrow-functions-implicit-var-arguments-exec.test.js ]
|
||||
Error: 'eval' and 'arguments' cannot be used as a binding identifier in strict mode
|
||||
|
|
@ -11,11 +11,7 @@ Error: 'eval' and 'arguments' cannot be used as a binding identifier in strict m
|
|||
❯ ssrTransformScript ../../node_modules/.pnpm/vite@5.4.11_@types+node@22.10.1/node_modules/vite/dist/node/chunks/dep-CB_7IfJ-.js:52381:11
|
||||
❯ loadAndTransform ../../node_modules/.pnpm/vite@5.4.11_@types+node@22.10.1/node_modules/vite/dist/node/chunks/dep-CB_7IfJ-.js:51979:72
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-assumption-noUninitializedPrivateFieldAccess-static-private-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-assumption-noUninitializedPrivateFieldAccess-static-private-exec.test.js ]
|
||||
SyntaxError: Private field '#x' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-assumption-setPublicClassFields-static-super-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-assumption-setPublicClassFields-static-super-exec.test.js ]
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-public-delete-super-property-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-public-delete-super-property-exec.test.js ]
|
||||
|
|
@ -28,7 +24,7 @@ Error: Invalid access to super
|
|||
❯ ssrTransformScript ../../node_modules/.pnpm/vite@5.4.11_@types+node@22.10.1/node_modules/vite/dist/node/chunks/dep-CB_7IfJ-.js:52381:11
|
||||
❯ loadAndTransform ../../node_modules/.pnpm/vite@5.4.11_@types+node@22.10.1/node_modules/vite/dist/node/chunks/dep-CB_7IfJ-.js:51979:72
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-nested-class-super-property-in-accessor-key-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-nested-class-super-property-in-accessor-key-exec.test.js ]
|
||||
Error: Unexpected token `[`. Expected * for generator, private key, identifier or async
|
||||
|
|
@ -38,109 +34,21 @@ Error: Unexpected token `[`. Expected * for generator, private key, identifier o
|
|||
❯ ssrTransformScript ../../node_modules/.pnpm/vite@5.4.11_@types+node@22.10.1/node_modules/vite/dist/node/chunks/dep-CB_7IfJ-.js:52381:11
|
||||
❯ loadAndTransform ../../node_modules/.pnpm/vite@5.4.11_@types+node@22.10.1/node_modules/vite/dist/node/chunks/dep-CB_7IfJ-.js:51979:72
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-access-before-declaration-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-access-before-declaration-exec.test.js ]
|
||||
SyntaxError: Private field '#p' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-array-pattern-1-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-array-pattern-1-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-array-pattern-2-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-array-pattern-2-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[7/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-array-pattern-3-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-array-pattern-3-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[8/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-array-pattern-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-array-pattern-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[9/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-array-pattern-static-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-array-pattern-static-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[10/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-object-pattern-1-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-object-pattern-1-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[11/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-object-pattern-2-exec-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-object-pattern-2-exec-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[12/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-object-pattern-3-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-object-pattern-3-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[13/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-object-pattern-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-object-pattern-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[14/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-object-pattern-static-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-destructuring-object-pattern-static-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[15/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-access-before-declaration-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-access-before-declaration-exec.test.js ]
|
||||
SyntaxError: Private field '#p' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[16/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-array-pattern-1-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-array-pattern-1-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[17/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-array-pattern-2-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-array-pattern-2-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[18/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-array-pattern-3-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-array-pattern-3-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[19/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-array-pattern-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-array-pattern-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[20/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-array-pattern-static-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-array-pattern-static-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[21/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-object-pattern-1-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-object-pattern-1-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[22/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-object-pattern-2-exec-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-object-pattern-2-exec-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[23/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-object-pattern-3-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-object-pattern-3-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[24/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-object-pattern-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-object-pattern-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[25/50]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-object-pattern-static-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-destructuring-object-pattern-static-exec.test.js ]
|
||||
SyntaxError: Private field '#client' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[26/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-nested-class-computed-redeclared-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-nested-class-computed-redeclared-exec.test.js ]
|
||||
SyntaxError: Private field '#foo' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[27/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-nested-class-computed-redeclared-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-nested-class-computed-redeclared-exec.test.js ]
|
||||
SyntaxError: Private field '#foo' must be declared in an enclosing class
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[28/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[5/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-regression-7371-exec.test.js [ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-regression-7371-exec.test.js ]
|
||||
SyntaxError: 'super' keyword unexpected here
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[29/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[6/28]⎯
|
||||
|
||||
⎯⎯⎯⎯⎯⎯ Failed Tests 18 ⎯⎯⎯⎯⎯⎯⎯
|
||||
⎯⎯⎯⎯⎯⎯ Failed Tests 19 ⎯⎯⎯⎯⎯⎯⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-assumption-setPublicClassFields-static-infer-name-exec.test.js > exec
|
||||
AssertionError: expected '_Class' to be 'Foo' // Object.is equality
|
||||
|
|
@ -155,7 +63,7 @@ Received: "_Class"
|
|||
| ^
|
||||
9| })
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[30/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[7/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-nested-class-super-call-in-decorator-exec.test.js > exec
|
||||
AssertionError: expected undefined to be 'hello' // Object.is equality
|
||||
|
|
@ -173,7 +81,7 @@ undefined
|
|||
| ^
|
||||
22| })
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[31/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[8/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-nested-class-super-property-in-decorator-exec.test.js > exec
|
||||
AssertionError: expected undefined to be 'hello' // Object.is equality
|
||||
|
|
@ -191,7 +99,7 @@ undefined
|
|||
| ^
|
||||
23| })
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[32/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[9/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-constructor-collision-exec.test.js > exec
|
||||
AssertionError: expected undefined to be 'bar' // Object.is equality
|
||||
|
|
@ -210,7 +118,26 @@ undefined
|
|||
19| expect("bar" in f).toBe(false);
|
||||
20| })
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[33/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[10/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-access-before-declaration-exec.test.js > exec
|
||||
AssertionError: expected [Function] to throw error matching /attempted to use private field on non…/ but got 'Cannot read properties of undefined (…'
|
||||
|
||||
- Expected:
|
||||
/attempted to use private field on non-instance/
|
||||
|
||||
+ Received:
|
||||
"Cannot read properties of undefined (reading '_')"
|
||||
|
||||
❯ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-access-before-declaration-exec.test.js:14:5
|
||||
12| var _ = { _: new _C() };
|
||||
13| var _p = { _: void 0 };
|
||||
14| }).toThrow(/attempted to use private field on non-instance/);
|
||||
| ^
|
||||
15| expect(() => {
|
||||
16| var _C2;
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[11/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-constructor-collision-exec.test.js > exec
|
||||
AssertionError: expected undefined to be 'bar' // Object.is equality
|
||||
|
|
@ -229,7 +156,7 @@ undefined
|
|||
19| expect("bar" in f).toBe(false);
|
||||
20| })
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[34/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[12/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-nested-class-extends-computed-exec.test.js > exec
|
||||
AssertionError: expected [Function] to not throw an error but 'TypeError: Private element is not pre…' was thrown
|
||||
|
|
@ -247,7 +174,7 @@ undefined
|
|||
| ^
|
||||
31| })
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[35/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[13/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-static-shadow-exec.test.js > exec
|
||||
TypeError: e.has is not a function
|
||||
|
|
@ -262,7 +189,7 @@ TypeError: e.has is not a function
|
|||
❯ Function.method fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-static-shadow-exec.test.js:12:11
|
||||
❯ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-loose-static-shadow-exec.test.js:16:14
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[36/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[14/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-nested-class-extends-computed-exec.test.js > exec
|
||||
AssertionError: expected [Function] to not throw an error but 'TypeError: Private element is not pre…' was thrown
|
||||
|
|
@ -280,7 +207,7 @@ undefined
|
|||
| ^
|
||||
32| })
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[37/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[15/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-static-shadow-exec.test.js > exec
|
||||
TypeError: e.has is not a function
|
||||
|
|
@ -295,7 +222,7 @@ TypeError: e.has is not a function
|
|||
❯ Function.method fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-static-shadow-exec.test.js:12:11
|
||||
❯ fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-private-static-shadow-exec.test.js:16:14
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[38/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[16/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-public-computed-toPrimitive-exec.test.js > exec
|
||||
AssertionError: expected [Function] to throw error including '@@toPrimitive must return a primitive…' but got 'Cannot convert object to primitive va…'
|
||||
|
|
@ -311,7 +238,7 @@ Received: "Cannot convert object to primitive value"
|
|||
38| expect(() => class {
|
||||
39| static get [arrayLike]() {
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[39/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[17/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-public-loose-static-infer-name-exec.test.js > exec
|
||||
AssertionError: expected '_Class' to be 'Foo' // Object.is equality
|
||||
|
|
@ -326,7 +253,7 @@ Received: "_Class"
|
|||
| ^
|
||||
9| })
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[40/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[18/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-class-properties-test-fixtures-public-static-infer-name-exec.test.js > exec
|
||||
AssertionError: expected '_Class' to be 'Foo' // Object.is equality
|
||||
|
|
@ -341,7 +268,7 @@ Received: "_Class"
|
|||
| ^
|
||||
10| })
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[41/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[19/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-optional-chaining-test-fixtures-assumption-noDocumentAll-parenthesized-expression-member-call-exec.test.js > exec
|
||||
TypeError: Cannot read properties of undefined (reading 'x')
|
||||
|
|
@ -355,7 +282,7 @@ TypeError: Cannot read properties of undefined (reading 'x')
|
|||
❯ Foo.test fixtures/babel/babel-plugin-transform-optional-chaining-test-fixtures-assumption-noDocumentAll-parenthesized-expression-member-call-exec.test.js:25:63
|
||||
❯ fixtures/babel/babel-plugin-transform-optional-chaining-test-fixtures-assumption-noDocumentAll-parenthesized-expression-member-call-exec.test.js:68:12
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[42/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[20/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-optional-chaining-test-fixtures-general-parenthesized-expression-member-call-exec.test.js > exec
|
||||
TypeError: Cannot read properties of undefined (reading 'x')
|
||||
|
|
@ -369,7 +296,7 @@ TypeError: Cannot read properties of undefined (reading 'x')
|
|||
❯ Foo.test fixtures/babel/babel-plugin-transform-optional-chaining-test-fixtures-general-parenthesized-expression-member-call-exec.test.js:25:63
|
||||
❯ fixtures/babel/babel-plugin-transform-optional-chaining-test-fixtures-general-parenthesized-expression-member-call-exec.test.js:68:12
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[43/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[21/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-plugin-transform-optional-chaining-test-fixtures-general-parenthesized-expression-member-call-loose-exec.test.js > exec
|
||||
TypeError: Cannot read properties of undefined (reading 'x')
|
||||
|
|
@ -383,7 +310,7 @@ TypeError: Cannot read properties of undefined (reading 'x')
|
|||
❯ Foo.test fixtures/babel/babel-plugin-transform-optional-chaining-test-fixtures-general-parenthesized-expression-member-call-loose-exec.test.js:25:63
|
||||
❯ fixtures/babel/babel-plugin-transform-optional-chaining-test-fixtures-general-parenthesized-expression-member-call-loose-exec.test.js:68:12
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[44/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[22/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-preset-env-test-fixtures-plugins-integration-issue-15170-exec.test.js > exec
|
||||
AssertionError: expected [Function] to not throw an error but 'ReferenceError: x is not defined' was thrown
|
||||
|
|
@ -401,7 +328,7 @@ undefined
|
|||
| ^
|
||||
7| })
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[45/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[23/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-preset-env-test-fixtures-sanity-check-es2015-constants-exec.test.js > exec
|
||||
TypeError: Assignment to constant variable.
|
||||
|
|
@ -412,7 +339,7 @@ TypeError: Assignment to constant variable.
|
|||
| ^
|
||||
6| })
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[46/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[24/28]⎯
|
||||
|
||||
FAIL fixtures/babel/babel-preset-env-test-fixtures-sanity-regex-dot-all-exec.test.js > exec
|
||||
AssertionError: expected false to be true // Object.is equality
|
||||
|
|
@ -431,5 +358,5 @@ AssertionError: expected false to be true // Object.is equality
|
|||
11| expect(/hello.world/su.test(input)).toBe(true);
|
||||
12| })
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[47/50]⎯
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[25/28]⎯
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue