mirror of
https://github.com/danbulant/oxc
synced 2026-05-25 12:51:57 +00:00
fix(transformer/class-properties): transform this in static prop initializers (#7481)
Convert `this` in static property initializers to reference to class name.
`class C { static prop = this; }` -> `class C {}; C.prop = C;`
This commit is contained in:
parent
d2745df3bc
commit
97de0b7be1
5 changed files with 163 additions and 772 deletions
|
|
@ -444,9 +444,12 @@ impl<'a, 'ctx> ClassProperties<'a, 'ctx> {
|
||||||
prop: &mut PropertyDefinition<'a>,
|
prop: &mut PropertyDefinition<'a>,
|
||||||
ctx: &mut TraverseCtx<'a>,
|
ctx: &mut TraverseCtx<'a>,
|
||||||
) {
|
) {
|
||||||
// Get value
|
// Get value, and transform it to replace `this` with reference to class name
|
||||||
let value = match &mut prop.value {
|
let value = match &mut prop.value {
|
||||||
Some(value) => ctx.ast.move_expression(value),
|
Some(value) => {
|
||||||
|
self.transform_static_initializer(value, ctx);
|
||||||
|
ctx.ast.move_expression(value)
|
||||||
|
}
|
||||||
None => ctx.ast.void_0(SPAN),
|
None => ctx.ast.void_0(SPAN),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -155,6 +155,7 @@ use crate::TransformCtx;
|
||||||
mod class;
|
mod class;
|
||||||
mod constructor;
|
mod constructor;
|
||||||
mod private;
|
mod private;
|
||||||
|
mod static_prop;
|
||||||
mod utils;
|
mod utils;
|
||||||
|
|
||||||
type FxIndexMap<K, V> = IndexMap<K, V, BuildHasherDefault<FxHasher>>;
|
type FxIndexMap<K, V> = IndexMap<K, V, BuildHasherDefault<FxHasher>>;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,115 @@
|
||||||
|
//! ES2022: Class Properties
|
||||||
|
//! Transform of static property initializers.
|
||||||
|
|
||||||
|
use oxc_ast::{
|
||||||
|
ast::*,
|
||||||
|
visit::{walk_mut, VisitMut},
|
||||||
|
};
|
||||||
|
use oxc_syntax::scope::ScopeFlags;
|
||||||
|
use oxc_traverse::{BoundIdentifier, TraverseCtx};
|
||||||
|
|
||||||
|
use super::{ClassName, ClassProperties};
|
||||||
|
|
||||||
|
impl<'a, 'ctx> ClassProperties<'a, 'ctx> {
|
||||||
|
/// Transform any `this` in static property initializer to reference to class name.
|
||||||
|
pub(super) fn transform_static_initializer(
|
||||||
|
&mut self,
|
||||||
|
value: &mut Expression<'a>,
|
||||||
|
ctx: &mut TraverseCtx<'a>,
|
||||||
|
) {
|
||||||
|
// TODO: Insert temp var if class binding is mutated.
|
||||||
|
|
||||||
|
let ClassName::Binding(class_name_binding) = &self.class_name else {
|
||||||
|
// Binding is initialized in 1st pass in `transform_class` when a static prop is found
|
||||||
|
unreachable!();
|
||||||
|
};
|
||||||
|
|
||||||
|
let mut replacer = StaticInitializerVisitor::new(class_name_binding, ctx);
|
||||||
|
replacer.visit_expression(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct StaticInitializerVisitor<'a, 'v> {
|
||||||
|
class_name_binding: &'v BoundIdentifier<'a>,
|
||||||
|
ctx: &'v mut TraverseCtx<'a>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a, 'v> StaticInitializerVisitor<'a, 'v> {
|
||||||
|
fn new(class_name_binding: &'v BoundIdentifier<'a>, ctx: &'v mut TraverseCtx<'a>) -> Self {
|
||||||
|
Self { class_name_binding, ctx }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a, 'v> VisitMut<'a> for StaticInitializerVisitor<'a, 'v> {
|
||||||
|
#[inline]
|
||||||
|
fn visit_expression(&mut self, expr: &mut Expression<'a>) {
|
||||||
|
match expr {
|
||||||
|
Expression::ThisExpression(this_expr) => {
|
||||||
|
let span = this_expr.span;
|
||||||
|
self.replace_this_with_class_name(expr, span);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Expression::UnaryExpression(unary_expr) => {
|
||||||
|
if unary_expr.operator == UnaryOperator::Delete
|
||||||
|
&& matches!(&unary_expr.argument, Expression::ThisExpression(_))
|
||||||
|
{
|
||||||
|
let span = unary_expr.span;
|
||||||
|
self.replace_delete_this_with_true(expr, span);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
|
||||||
|
walk_mut::walk_expression(self, expr);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stop traversing where scope of current `this` ends
|
||||||
|
#[inline]
|
||||||
|
fn visit_function(&mut self, _func: &mut Function<'a>, _flags: ScopeFlags) {}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
fn visit_static_block(&mut self, _block: &mut StaticBlock) {}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
fn visit_ts_module_block(&mut self, _block: &mut TSModuleBlock<'a>) {}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
fn visit_property_definition(&mut self, prop: &mut PropertyDefinition<'a>) {
|
||||||
|
// `this` in computed key of property or method refers to `this` of parent class.
|
||||||
|
// So visit computed `key`, but not `value`.
|
||||||
|
// ```js
|
||||||
|
// class Outer {
|
||||||
|
// static prop = class Inner { [this] = 1; };
|
||||||
|
// }
|
||||||
|
// ```
|
||||||
|
// Don't visit `type_annotation` field because can't contain `this`.
|
||||||
|
// TODO: Are decorators in scope?
|
||||||
|
self.visit_decorators(&mut prop.decorators);
|
||||||
|
if prop.computed {
|
||||||
|
self.visit_property_key(&mut prop.key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
fn visit_accessor_property(&mut self, prop: &mut AccessorProperty<'a>) {
|
||||||
|
// Visit computed `key` but not `value`, for same reasons as `visit_property_definition` above.
|
||||||
|
// TODO: Are decorators in scope?
|
||||||
|
self.visit_decorators(&mut prop.decorators);
|
||||||
|
if prop.computed {
|
||||||
|
self.visit_property_key(&mut prop.key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a, 'v> StaticInitializerVisitor<'a, 'v> {
|
||||||
|
/// Replace `this` with reference to class name binding.
|
||||||
|
fn replace_this_with_class_name(&mut self, expr: &mut Expression<'a>, span: Span) {
|
||||||
|
*expr = self.class_name_binding.create_spanned_read_expression(span, self.ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Replace `delete this` with `true`.
|
||||||
|
fn replace_delete_this_with_true(&self, expr: &mut Expression<'a>, span: Span) {
|
||||||
|
*expr = self.ctx.ast.expression_boolean_literal(span, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
commit: 54a8389f
|
commit: 54a8389f
|
||||||
|
|
||||||
Passed: 405/846
|
Passed: 406/846
|
||||||
|
|
||||||
# All Passed:
|
# All Passed:
|
||||||
* babel-plugin-transform-class-static-block
|
* babel-plugin-transform-class-static-block
|
||||||
|
|
@ -276,7 +276,7 @@ x Output mismatch
|
||||||
x Output mismatch
|
x Output mismatch
|
||||||
|
|
||||||
|
|
||||||
# babel-plugin-transform-class-properties (78/264)
|
# babel-plugin-transform-class-properties (79/264)
|
||||||
* assumption-constantSuper/complex-super-class/input.js
|
* assumption-constantSuper/complex-super-class/input.js
|
||||||
x Output mismatch
|
x Output mismatch
|
||||||
|
|
||||||
|
|
@ -791,9 +791,6 @@ x Output mismatch
|
||||||
* public/delete-super-property/input.js
|
* public/delete-super-property/input.js
|
||||||
x Output mismatch
|
x Output mismatch
|
||||||
|
|
||||||
* public/delete-this/input.js
|
|
||||||
x Output mismatch
|
|
||||||
|
|
||||||
* public/derived-multiple-supers/input.js
|
* public/derived-multiple-supers/input.js
|
||||||
x Output mismatch
|
x Output mismatch
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -291,165 +291,20 @@ Received: "_Class"
|
||||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[57/98]⎯
|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[57/98]⎯
|
||||||
|
|
||||||
FAIL fixtures/babel-plugin-transform-class-properties-test-fixtures-assumption-setPublicClassFields-static-this-exec.test.js > exec
|
FAIL fixtures/babel-plugin-transform-class-properties-test-fixtures-assumption-setPublicClassFields-static-this-exec.test.js > exec
|
||||||
AssertionError: expected { Object: [Function Object], …(133), …(6) } to be [Function A] // Object.is equality
|
AssertionError: expected null to be [Function A] // Object.is equality
|
||||||
|
|
||||||
- Expected:
|
- Expected:
|
||||||
[Function A]
|
[Function A]
|
||||||
|
|
||||||
+ Received:
|
+ Received:
|
||||||
Object {
|
null
|
||||||
"__vitest_environment__": "node",
|
|
||||||
"__vitest_required__": Object {
|
|
||||||
"timers": Object {
|
|
||||||
"_unrefActive": [Function deprecated],
|
|
||||||
"active": [Function deprecated],
|
|
||||||
"clearImmediate": [Function clearImmediate],
|
|
||||||
"clearInterval": [Function clearInterval],
|
|
||||||
"clearTimeout": [Function clearTimeout],
|
|
||||||
"enroll": [Function deprecated],
|
|
||||||
"promises": Object {
|
|
||||||
"scheduler": Scheduler {
|
|
||||||
Symbol(kScheduler): true,
|
|
||||||
},
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
},
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
"unenroll": [Function deprecated],
|
|
||||||
},
|
|
||||||
"util": Object {
|
|
||||||
"MIMEParams": [Function MIMEParams],
|
|
||||||
"MIMEType": [Function MIMEType],
|
|
||||||
"TextDecoder": [Function TextDecoder],
|
|
||||||
"TextEncoder": [Function TextEncoder],
|
|
||||||
"_errnoException": [Function _errnoException],
|
|
||||||
"_exceptionWithHostPort": [Function _exceptionWithHostPort],
|
|
||||||
"_extend": [Function deprecated],
|
|
||||||
"aborted": [Function aborted],
|
|
||||||
"callbackify": [Function callbackify],
|
|
||||||
"debug": [Function debuglog],
|
|
||||||
"debuglog": [Function debuglog],
|
|
||||||
"deprecate": [Function deprecate],
|
|
||||||
"format": [Function format],
|
|
||||||
"formatWithOptions": [Function formatWithOptions],
|
|
||||||
"getCallSite": [Function getCallSite],
|
|
||||||
"getSystemErrorMap": [Function getSystemErrorMap],
|
|
||||||
"getSystemErrorName": [Function getSystemErrorName],
|
|
||||||
"inherits": [Function inherits],
|
|
||||||
"inspect": [Function inspect],
|
|
||||||
"isArray": [Function deprecated],
|
|
||||||
"isBoolean": [Function deprecated],
|
|
||||||
"isBuffer": [Function deprecated],
|
|
||||||
"isDate": [Function deprecated],
|
|
||||||
"isDeepStrictEqual": [Function isDeepStrictEqual],
|
|
||||||
"isError": [Function deprecated],
|
|
||||||
"isFunction": [Function deprecated],
|
|
||||||
"isNull": [Function deprecated],
|
|
||||||
"isNullOrUndefined": [Function deprecated],
|
|
||||||
"isNumber": [Function deprecated],
|
|
||||||
"isObject": [Function deprecated],
|
|
||||||
"isPrimitive": [Function deprecated],
|
|
||||||
"isRegExp": [Function deprecated],
|
|
||||||
"isString": [Function deprecated],
|
|
||||||
"isSymbol": [Function deprecated],
|
|
||||||
"isUndefined": [Function deprecated],
|
|
||||||
"log": [Function deprecated],
|
|
||||||
"parseArgs": [Function parseArgs],
|
|
||||||
"parseEnv": [Function parseEnv],
|
|
||||||
"promisify": [Function promisify],
|
|
||||||
"stripVTControlCharacters": [Function stripVTControlCharacters],
|
|
||||||
"styleText": [Function styleText],
|
|
||||||
"toUSVString": [Function toUSVString],
|
|
||||||
"transferableAbortController": [Function transferableAbortController],
|
|
||||||
"transferableAbortSignal": [Function transferableAbortSignal],
|
|
||||||
"types": Object {
|
|
||||||
"isAnyArrayBuffer": [Function isAnyArrayBuffer],
|
|
||||||
"isArgumentsObject": [Function isArgumentsObject],
|
|
||||||
"isArrayBuffer": [Function isArrayBuffer],
|
|
||||||
"isArrayBufferView": [Function isView],
|
|
||||||
"isAsyncFunction": [Function isAsyncFunction],
|
|
||||||
"isBigInt64Array": [Function isBigInt64Array],
|
|
||||||
"isBigIntObject": [Function isBigIntObject],
|
|
||||||
"isBigUint64Array": [Function isBigUint64Array],
|
|
||||||
"isBooleanObject": [Function isBooleanObject],
|
|
||||||
"isBoxedPrimitive": [Function isBoxedPrimitive],
|
|
||||||
"isCryptoKey": [Function value],
|
|
||||||
"isDataView": [Function isDataView],
|
|
||||||
"isDate": [Function isDate],
|
|
||||||
"isExternal": [Function isExternal],
|
|
||||||
"isFloat32Array": [Function isFloat32Array],
|
|
||||||
"isFloat64Array": [Function isFloat64Array],
|
|
||||||
"isGeneratorFunction": [Function isGeneratorFunction],
|
|
||||||
"isGeneratorObject": [Function isGeneratorObject],
|
|
||||||
"isInt16Array": [Function isInt16Array],
|
|
||||||
"isInt32Array": [Function isInt32Array],
|
|
||||||
"isInt8Array": [Function isInt8Array],
|
|
||||||
"isKeyObject": [Function value],
|
|
||||||
"isMap": [Function isMap],
|
|
||||||
"isMapIterator": [Function isMapIterator],
|
|
||||||
"isModuleNamespaceObject": [Function isModuleNamespaceObject],
|
|
||||||
"isNativeError": [Function isNativeError],
|
|
||||||
"isNumberObject": [Function isNumberObject],
|
|
||||||
"isPromise": [Function isPromise],
|
|
||||||
"isProxy": [Function isProxy],
|
|
||||||
"isRegExp": [Function isRegExp],
|
|
||||||
"isSet": [Function isSet],
|
|
||||||
"isSetIterator": [Function isSetIterator],
|
|
||||||
"isSharedArrayBuffer": [Function isSharedArrayBuffer],
|
|
||||||
"isStringObject": [Function isStringObject],
|
|
||||||
"isSymbolObject": [Function isSymbolObject],
|
|
||||||
"isTypedArray": [Function isTypedArray],
|
|
||||||
"isUint16Array": [Function isUint16Array],
|
|
||||||
"isUint32Array": [Function isUint32Array],
|
|
||||||
"isUint8Array": [Function isUint8Array],
|
|
||||||
"isUint8ClampedArray": [Function isUint8ClampedArray],
|
|
||||||
"isWeakMap": [Function isWeakMap],
|
|
||||||
"isWeakSet": [Function isWeakSet],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"atob": [Function atob],
|
|
||||||
"btoa": [Function btoa],
|
|
||||||
"clearImmediate": [Function clearImmediate],
|
|
||||||
"clearInterval": [Function clearInterval],
|
|
||||||
"clearTimeout": [Function clearTimeout],
|
|
||||||
"crypto": Crypto {},
|
|
||||||
"fetch": [Function fetch],
|
|
||||||
"global": [Circular],
|
|
||||||
"navigator": Navigator {},
|
|
||||||
"performance": Performance {
|
|
||||||
Symbol(kEvents): Map {},
|
|
||||||
Symbol(events.maxEventTargetListeners): 10,
|
|
||||||
Symbol(events.maxEventTargetListenersWarned): false,
|
|
||||||
Symbol(kHandlers): Map {},
|
|
||||||
Symbol(performance): true,
|
|
||||||
},
|
|
||||||
"queueMicrotask": [Function queueMicrotask],
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
"structuredClone": [Function structuredClone],
|
|
||||||
Symbol(vitest:SAFE_TIMERS): Object {
|
|
||||||
"clearImmediate": [Function clearImmediate],
|
|
||||||
"clearInterval": [Function clearInterval],
|
|
||||||
"clearTimeout": [Function clearTimeout],
|
|
||||||
"nextTick": [Function nextTick],
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-assumption-setPublicClassFields-static-this-exec.test.js:8:15
|
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-assumption-setPublicClassFields-static-this-exec.test.js:13:22
|
||||||
6| A.getA = () => this;
|
11| A = null;
|
||||||
7| const { self, getA } = A;
|
12| expect(oldA.self).toBe(oldA);
|
||||||
8| expect(self).toBe(A);
|
13| expect(oldA.getA()).toBe(oldA);
|
||||||
| ^
|
| ^
|
||||||
9| expect(getA()).toBe(A);
|
14| })
|
||||||
10| const oldA = A;
|
|
||||||
|
|
||||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[58/98]⎯
|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[58/98]⎯
|
||||||
|
|
||||||
|
|
@ -634,165 +489,20 @@ TypeError: e.has is not a function
|
||||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[70/98]⎯
|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[70/98]⎯
|
||||||
|
|
||||||
FAIL fixtures/babel-plugin-transform-class-properties-test-fixtures-private-loose-static-this-exec.test.js > exec
|
FAIL fixtures/babel-plugin-transform-class-properties-test-fixtures-private-loose-static-this-exec.test.js > exec
|
||||||
AssertionError: expected { Object: [Function Object], …(133), …(6) } to be [Function A] // Object.is equality
|
AssertionError: expected null to be [Function A] // Object.is equality
|
||||||
|
|
||||||
- Expected:
|
- Expected:
|
||||||
[Function A]
|
[Function A]
|
||||||
|
|
||||||
+ Received:
|
+ Received:
|
||||||
Object {
|
null
|
||||||
"__vitest_environment__": "node",
|
|
||||||
"__vitest_required__": Object {
|
|
||||||
"timers": Object {
|
|
||||||
"_unrefActive": [Function deprecated],
|
|
||||||
"active": [Function deprecated],
|
|
||||||
"clearImmediate": [Function clearImmediate],
|
|
||||||
"clearInterval": [Function clearInterval],
|
|
||||||
"clearTimeout": [Function clearTimeout],
|
|
||||||
"enroll": [Function deprecated],
|
|
||||||
"promises": Object {
|
|
||||||
"scheduler": Scheduler {
|
|
||||||
Symbol(kScheduler): true,
|
|
||||||
},
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
},
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
"unenroll": [Function deprecated],
|
|
||||||
},
|
|
||||||
"util": Object {
|
|
||||||
"MIMEParams": [Function MIMEParams],
|
|
||||||
"MIMEType": [Function MIMEType],
|
|
||||||
"TextDecoder": [Function TextDecoder],
|
|
||||||
"TextEncoder": [Function TextEncoder],
|
|
||||||
"_errnoException": [Function _errnoException],
|
|
||||||
"_exceptionWithHostPort": [Function _exceptionWithHostPort],
|
|
||||||
"_extend": [Function deprecated],
|
|
||||||
"aborted": [Function aborted],
|
|
||||||
"callbackify": [Function callbackify],
|
|
||||||
"debug": [Function debuglog],
|
|
||||||
"debuglog": [Function debuglog],
|
|
||||||
"deprecate": [Function deprecate],
|
|
||||||
"format": [Function format],
|
|
||||||
"formatWithOptions": [Function formatWithOptions],
|
|
||||||
"getCallSite": [Function getCallSite],
|
|
||||||
"getSystemErrorMap": [Function getSystemErrorMap],
|
|
||||||
"getSystemErrorName": [Function getSystemErrorName],
|
|
||||||
"inherits": [Function inherits],
|
|
||||||
"inspect": [Function inspect],
|
|
||||||
"isArray": [Function deprecated],
|
|
||||||
"isBoolean": [Function deprecated],
|
|
||||||
"isBuffer": [Function deprecated],
|
|
||||||
"isDate": [Function deprecated],
|
|
||||||
"isDeepStrictEqual": [Function isDeepStrictEqual],
|
|
||||||
"isError": [Function deprecated],
|
|
||||||
"isFunction": [Function deprecated],
|
|
||||||
"isNull": [Function deprecated],
|
|
||||||
"isNullOrUndefined": [Function deprecated],
|
|
||||||
"isNumber": [Function deprecated],
|
|
||||||
"isObject": [Function deprecated],
|
|
||||||
"isPrimitive": [Function deprecated],
|
|
||||||
"isRegExp": [Function deprecated],
|
|
||||||
"isString": [Function deprecated],
|
|
||||||
"isSymbol": [Function deprecated],
|
|
||||||
"isUndefined": [Function deprecated],
|
|
||||||
"log": [Function deprecated],
|
|
||||||
"parseArgs": [Function parseArgs],
|
|
||||||
"parseEnv": [Function parseEnv],
|
|
||||||
"promisify": [Function promisify],
|
|
||||||
"stripVTControlCharacters": [Function stripVTControlCharacters],
|
|
||||||
"styleText": [Function styleText],
|
|
||||||
"toUSVString": [Function toUSVString],
|
|
||||||
"transferableAbortController": [Function transferableAbortController],
|
|
||||||
"transferableAbortSignal": [Function transferableAbortSignal],
|
|
||||||
"types": Object {
|
|
||||||
"isAnyArrayBuffer": [Function isAnyArrayBuffer],
|
|
||||||
"isArgumentsObject": [Function isArgumentsObject],
|
|
||||||
"isArrayBuffer": [Function isArrayBuffer],
|
|
||||||
"isArrayBufferView": [Function isView],
|
|
||||||
"isAsyncFunction": [Function isAsyncFunction],
|
|
||||||
"isBigInt64Array": [Function isBigInt64Array],
|
|
||||||
"isBigIntObject": [Function isBigIntObject],
|
|
||||||
"isBigUint64Array": [Function isBigUint64Array],
|
|
||||||
"isBooleanObject": [Function isBooleanObject],
|
|
||||||
"isBoxedPrimitive": [Function isBoxedPrimitive],
|
|
||||||
"isCryptoKey": [Function value],
|
|
||||||
"isDataView": [Function isDataView],
|
|
||||||
"isDate": [Function isDate],
|
|
||||||
"isExternal": [Function isExternal],
|
|
||||||
"isFloat32Array": [Function isFloat32Array],
|
|
||||||
"isFloat64Array": [Function isFloat64Array],
|
|
||||||
"isGeneratorFunction": [Function isGeneratorFunction],
|
|
||||||
"isGeneratorObject": [Function isGeneratorObject],
|
|
||||||
"isInt16Array": [Function isInt16Array],
|
|
||||||
"isInt32Array": [Function isInt32Array],
|
|
||||||
"isInt8Array": [Function isInt8Array],
|
|
||||||
"isKeyObject": [Function value],
|
|
||||||
"isMap": [Function isMap],
|
|
||||||
"isMapIterator": [Function isMapIterator],
|
|
||||||
"isModuleNamespaceObject": [Function isModuleNamespaceObject],
|
|
||||||
"isNativeError": [Function isNativeError],
|
|
||||||
"isNumberObject": [Function isNumberObject],
|
|
||||||
"isPromise": [Function isPromise],
|
|
||||||
"isProxy": [Function isProxy],
|
|
||||||
"isRegExp": [Function isRegExp],
|
|
||||||
"isSet": [Function isSet],
|
|
||||||
"isSetIterator": [Function isSetIterator],
|
|
||||||
"isSharedArrayBuffer": [Function isSharedArrayBuffer],
|
|
||||||
"isStringObject": [Function isStringObject],
|
|
||||||
"isSymbolObject": [Function isSymbolObject],
|
|
||||||
"isTypedArray": [Function isTypedArray],
|
|
||||||
"isUint16Array": [Function isUint16Array],
|
|
||||||
"isUint32Array": [Function isUint32Array],
|
|
||||||
"isUint8Array": [Function isUint8Array],
|
|
||||||
"isUint8ClampedArray": [Function isUint8ClampedArray],
|
|
||||||
"isWeakMap": [Function isWeakMap],
|
|
||||||
"isWeakSet": [Function isWeakSet],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"atob": [Function atob],
|
|
||||||
"btoa": [Function btoa],
|
|
||||||
"clearImmediate": [Function clearImmediate],
|
|
||||||
"clearInterval": [Function clearInterval],
|
|
||||||
"clearTimeout": [Function clearTimeout],
|
|
||||||
"crypto": Crypto {},
|
|
||||||
"fetch": [Function fetch],
|
|
||||||
"global": [Circular],
|
|
||||||
"navigator": Navigator {},
|
|
||||||
"performance": Performance {
|
|
||||||
Symbol(kEvents): Map {},
|
|
||||||
Symbol(events.maxEventTargetListeners): 10,
|
|
||||||
Symbol(events.maxEventTargetListenersWarned): false,
|
|
||||||
Symbol(kHandlers): Map {},
|
|
||||||
Symbol(performance): true,
|
|
||||||
},
|
|
||||||
"queueMicrotask": [Function queueMicrotask],
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
"structuredClone": [Function structuredClone],
|
|
||||||
Symbol(vitest:SAFE_TIMERS): Object {
|
|
||||||
"clearImmediate": [Function clearImmediate],
|
|
||||||
"clearInterval": [Function clearInterval],
|
|
||||||
"clearTimeout": [Function clearTimeout],
|
|
||||||
"nextTick": [Function nextTick],
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-private-loose-static-this-exec.test.js:15:15
|
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-private-loose-static-this-exec.test.js:20:32
|
||||||
13| var _getA = { _: () => this };
|
18| A = null;
|
||||||
14| const { self, getA } = A.extract();
|
19| expect(oldA.extract().self).toBe(oldA);
|
||||||
15| expect(self).toBe(A);
|
20| expect(oldA.extract().getA()).toBe(oldA);
|
||||||
| ^
|
| ^
|
||||||
16| expect(getA()).toBe(A);
|
21| })
|
||||||
17| const oldA = A;
|
|
||||||
|
|
||||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[71/98]⎯
|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[71/98]⎯
|
||||||
|
|
||||||
|
|
@ -915,165 +625,20 @@ TypeError: e.has is not a function
|
||||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[80/98]⎯
|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[80/98]⎯
|
||||||
|
|
||||||
FAIL fixtures/babel-plugin-transform-class-properties-test-fixtures-private-static-this-exec.test.js > exec
|
FAIL fixtures/babel-plugin-transform-class-properties-test-fixtures-private-static-this-exec.test.js > exec
|
||||||
AssertionError: expected { Object: [Function Object], …(133), …(6) } to be [Function A] // Object.is equality
|
AssertionError: expected null to be [Function A] // Object.is equality
|
||||||
|
|
||||||
- Expected:
|
- Expected:
|
||||||
[Function A]
|
[Function A]
|
||||||
|
|
||||||
+ Received:
|
+ Received:
|
||||||
Object {
|
null
|
||||||
"__vitest_environment__": "node",
|
|
||||||
"__vitest_required__": Object {
|
|
||||||
"timers": Object {
|
|
||||||
"_unrefActive": [Function deprecated],
|
|
||||||
"active": [Function deprecated],
|
|
||||||
"clearImmediate": [Function clearImmediate],
|
|
||||||
"clearInterval": [Function clearInterval],
|
|
||||||
"clearTimeout": [Function clearTimeout],
|
|
||||||
"enroll": [Function deprecated],
|
|
||||||
"promises": Object {
|
|
||||||
"scheduler": Scheduler {
|
|
||||||
Symbol(kScheduler): true,
|
|
||||||
},
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
},
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
"unenroll": [Function deprecated],
|
|
||||||
},
|
|
||||||
"util": Object {
|
|
||||||
"MIMEParams": [Function MIMEParams],
|
|
||||||
"MIMEType": [Function MIMEType],
|
|
||||||
"TextDecoder": [Function TextDecoder],
|
|
||||||
"TextEncoder": [Function TextEncoder],
|
|
||||||
"_errnoException": [Function _errnoException],
|
|
||||||
"_exceptionWithHostPort": [Function _exceptionWithHostPort],
|
|
||||||
"_extend": [Function deprecated],
|
|
||||||
"aborted": [Function aborted],
|
|
||||||
"callbackify": [Function callbackify],
|
|
||||||
"debug": [Function debuglog],
|
|
||||||
"debuglog": [Function debuglog],
|
|
||||||
"deprecate": [Function deprecate],
|
|
||||||
"format": [Function format],
|
|
||||||
"formatWithOptions": [Function formatWithOptions],
|
|
||||||
"getCallSite": [Function getCallSite],
|
|
||||||
"getSystemErrorMap": [Function getSystemErrorMap],
|
|
||||||
"getSystemErrorName": [Function getSystemErrorName],
|
|
||||||
"inherits": [Function inherits],
|
|
||||||
"inspect": [Function inspect],
|
|
||||||
"isArray": [Function deprecated],
|
|
||||||
"isBoolean": [Function deprecated],
|
|
||||||
"isBuffer": [Function deprecated],
|
|
||||||
"isDate": [Function deprecated],
|
|
||||||
"isDeepStrictEqual": [Function isDeepStrictEqual],
|
|
||||||
"isError": [Function deprecated],
|
|
||||||
"isFunction": [Function deprecated],
|
|
||||||
"isNull": [Function deprecated],
|
|
||||||
"isNullOrUndefined": [Function deprecated],
|
|
||||||
"isNumber": [Function deprecated],
|
|
||||||
"isObject": [Function deprecated],
|
|
||||||
"isPrimitive": [Function deprecated],
|
|
||||||
"isRegExp": [Function deprecated],
|
|
||||||
"isString": [Function deprecated],
|
|
||||||
"isSymbol": [Function deprecated],
|
|
||||||
"isUndefined": [Function deprecated],
|
|
||||||
"log": [Function deprecated],
|
|
||||||
"parseArgs": [Function parseArgs],
|
|
||||||
"parseEnv": [Function parseEnv],
|
|
||||||
"promisify": [Function promisify],
|
|
||||||
"stripVTControlCharacters": [Function stripVTControlCharacters],
|
|
||||||
"styleText": [Function styleText],
|
|
||||||
"toUSVString": [Function toUSVString],
|
|
||||||
"transferableAbortController": [Function transferableAbortController],
|
|
||||||
"transferableAbortSignal": [Function transferableAbortSignal],
|
|
||||||
"types": Object {
|
|
||||||
"isAnyArrayBuffer": [Function isAnyArrayBuffer],
|
|
||||||
"isArgumentsObject": [Function isArgumentsObject],
|
|
||||||
"isArrayBuffer": [Function isArrayBuffer],
|
|
||||||
"isArrayBufferView": [Function isView],
|
|
||||||
"isAsyncFunction": [Function isAsyncFunction],
|
|
||||||
"isBigInt64Array": [Function isBigInt64Array],
|
|
||||||
"isBigIntObject": [Function isBigIntObject],
|
|
||||||
"isBigUint64Array": [Function isBigUint64Array],
|
|
||||||
"isBooleanObject": [Function isBooleanObject],
|
|
||||||
"isBoxedPrimitive": [Function isBoxedPrimitive],
|
|
||||||
"isCryptoKey": [Function value],
|
|
||||||
"isDataView": [Function isDataView],
|
|
||||||
"isDate": [Function isDate],
|
|
||||||
"isExternal": [Function isExternal],
|
|
||||||
"isFloat32Array": [Function isFloat32Array],
|
|
||||||
"isFloat64Array": [Function isFloat64Array],
|
|
||||||
"isGeneratorFunction": [Function isGeneratorFunction],
|
|
||||||
"isGeneratorObject": [Function isGeneratorObject],
|
|
||||||
"isInt16Array": [Function isInt16Array],
|
|
||||||
"isInt32Array": [Function isInt32Array],
|
|
||||||
"isInt8Array": [Function isInt8Array],
|
|
||||||
"isKeyObject": [Function value],
|
|
||||||
"isMap": [Function isMap],
|
|
||||||
"isMapIterator": [Function isMapIterator],
|
|
||||||
"isModuleNamespaceObject": [Function isModuleNamespaceObject],
|
|
||||||
"isNativeError": [Function isNativeError],
|
|
||||||
"isNumberObject": [Function isNumberObject],
|
|
||||||
"isPromise": [Function isPromise],
|
|
||||||
"isProxy": [Function isProxy],
|
|
||||||
"isRegExp": [Function isRegExp],
|
|
||||||
"isSet": [Function isSet],
|
|
||||||
"isSetIterator": [Function isSetIterator],
|
|
||||||
"isSharedArrayBuffer": [Function isSharedArrayBuffer],
|
|
||||||
"isStringObject": [Function isStringObject],
|
|
||||||
"isSymbolObject": [Function isSymbolObject],
|
|
||||||
"isTypedArray": [Function isTypedArray],
|
|
||||||
"isUint16Array": [Function isUint16Array],
|
|
||||||
"isUint32Array": [Function isUint32Array],
|
|
||||||
"isUint8Array": [Function isUint8Array],
|
|
||||||
"isUint8ClampedArray": [Function isUint8ClampedArray],
|
|
||||||
"isWeakMap": [Function isWeakMap],
|
|
||||||
"isWeakSet": [Function isWeakSet],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"atob": [Function atob],
|
|
||||||
"btoa": [Function btoa],
|
|
||||||
"clearImmediate": [Function clearImmediate],
|
|
||||||
"clearInterval": [Function clearInterval],
|
|
||||||
"clearTimeout": [Function clearTimeout],
|
|
||||||
"crypto": Crypto {},
|
|
||||||
"fetch": [Function fetch],
|
|
||||||
"global": [Circular],
|
|
||||||
"navigator": Navigator {},
|
|
||||||
"performance": Performance {
|
|
||||||
Symbol(kEvents): Map {},
|
|
||||||
Symbol(events.maxEventTargetListeners): 10,
|
|
||||||
Symbol(events.maxEventTargetListenersWarned): false,
|
|
||||||
Symbol(kHandlers): Map {},
|
|
||||||
Symbol(performance): true,
|
|
||||||
},
|
|
||||||
"queueMicrotask": [Function queueMicrotask],
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
"structuredClone": [Function structuredClone],
|
|
||||||
Symbol(vitest:SAFE_TIMERS): Object {
|
|
||||||
"clearImmediate": [Function clearImmediate],
|
|
||||||
"clearInterval": [Function clearInterval],
|
|
||||||
"clearTimeout": [Function clearTimeout],
|
|
||||||
"nextTick": [Function nextTick],
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-private-static-this-exec.test.js:15:15
|
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-private-static-this-exec.test.js:20:32
|
||||||
13| var _getA = { _: () => this };
|
18| A = null;
|
||||||
14| const { self, getA } = A.extract();
|
19| expect(oldA.extract().self).toBe(oldA);
|
||||||
15| expect(self).toBe(A);
|
20| expect(oldA.extract().getA()).toBe(oldA);
|
||||||
| ^
|
| ^
|
||||||
16| expect(getA()).toBe(A);
|
21| })
|
||||||
17| const oldA = A;
|
|
||||||
|
|
||||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[81/98]⎯
|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[81/98]⎯
|
||||||
|
|
||||||
|
|
@ -1147,165 +712,20 @@ Received: "_Class"
|
||||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[85/98]⎯
|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[85/98]⎯
|
||||||
|
|
||||||
FAIL fixtures/babel-plugin-transform-class-properties-test-fixtures-public-loose-static-this-exec.test.js > exec
|
FAIL fixtures/babel-plugin-transform-class-properties-test-fixtures-public-loose-static-this-exec.test.js > exec
|
||||||
AssertionError: expected { Object: [Function Object], …(133), …(6) } to be [Function A] // Object.is equality
|
AssertionError: expected null to be [Function A] // Object.is equality
|
||||||
|
|
||||||
- Expected:
|
- Expected:
|
||||||
[Function A]
|
[Function A]
|
||||||
|
|
||||||
+ Received:
|
+ Received:
|
||||||
Object {
|
null
|
||||||
"__vitest_environment__": "node",
|
|
||||||
"__vitest_required__": Object {
|
|
||||||
"timers": Object {
|
|
||||||
"_unrefActive": [Function deprecated],
|
|
||||||
"active": [Function deprecated],
|
|
||||||
"clearImmediate": [Function clearImmediate],
|
|
||||||
"clearInterval": [Function clearInterval],
|
|
||||||
"clearTimeout": [Function clearTimeout],
|
|
||||||
"enroll": [Function deprecated],
|
|
||||||
"promises": Object {
|
|
||||||
"scheduler": Scheduler {
|
|
||||||
Symbol(kScheduler): true,
|
|
||||||
},
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
},
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
"unenroll": [Function deprecated],
|
|
||||||
},
|
|
||||||
"util": Object {
|
|
||||||
"MIMEParams": [Function MIMEParams],
|
|
||||||
"MIMEType": [Function MIMEType],
|
|
||||||
"TextDecoder": [Function TextDecoder],
|
|
||||||
"TextEncoder": [Function TextEncoder],
|
|
||||||
"_errnoException": [Function _errnoException],
|
|
||||||
"_exceptionWithHostPort": [Function _exceptionWithHostPort],
|
|
||||||
"_extend": [Function deprecated],
|
|
||||||
"aborted": [Function aborted],
|
|
||||||
"callbackify": [Function callbackify],
|
|
||||||
"debug": [Function debuglog],
|
|
||||||
"debuglog": [Function debuglog],
|
|
||||||
"deprecate": [Function deprecate],
|
|
||||||
"format": [Function format],
|
|
||||||
"formatWithOptions": [Function formatWithOptions],
|
|
||||||
"getCallSite": [Function getCallSite],
|
|
||||||
"getSystemErrorMap": [Function getSystemErrorMap],
|
|
||||||
"getSystemErrorName": [Function getSystemErrorName],
|
|
||||||
"inherits": [Function inherits],
|
|
||||||
"inspect": [Function inspect],
|
|
||||||
"isArray": [Function deprecated],
|
|
||||||
"isBoolean": [Function deprecated],
|
|
||||||
"isBuffer": [Function deprecated],
|
|
||||||
"isDate": [Function deprecated],
|
|
||||||
"isDeepStrictEqual": [Function isDeepStrictEqual],
|
|
||||||
"isError": [Function deprecated],
|
|
||||||
"isFunction": [Function deprecated],
|
|
||||||
"isNull": [Function deprecated],
|
|
||||||
"isNullOrUndefined": [Function deprecated],
|
|
||||||
"isNumber": [Function deprecated],
|
|
||||||
"isObject": [Function deprecated],
|
|
||||||
"isPrimitive": [Function deprecated],
|
|
||||||
"isRegExp": [Function deprecated],
|
|
||||||
"isString": [Function deprecated],
|
|
||||||
"isSymbol": [Function deprecated],
|
|
||||||
"isUndefined": [Function deprecated],
|
|
||||||
"log": [Function deprecated],
|
|
||||||
"parseArgs": [Function parseArgs],
|
|
||||||
"parseEnv": [Function parseEnv],
|
|
||||||
"promisify": [Function promisify],
|
|
||||||
"stripVTControlCharacters": [Function stripVTControlCharacters],
|
|
||||||
"styleText": [Function styleText],
|
|
||||||
"toUSVString": [Function toUSVString],
|
|
||||||
"transferableAbortController": [Function transferableAbortController],
|
|
||||||
"transferableAbortSignal": [Function transferableAbortSignal],
|
|
||||||
"types": Object {
|
|
||||||
"isAnyArrayBuffer": [Function isAnyArrayBuffer],
|
|
||||||
"isArgumentsObject": [Function isArgumentsObject],
|
|
||||||
"isArrayBuffer": [Function isArrayBuffer],
|
|
||||||
"isArrayBufferView": [Function isView],
|
|
||||||
"isAsyncFunction": [Function isAsyncFunction],
|
|
||||||
"isBigInt64Array": [Function isBigInt64Array],
|
|
||||||
"isBigIntObject": [Function isBigIntObject],
|
|
||||||
"isBigUint64Array": [Function isBigUint64Array],
|
|
||||||
"isBooleanObject": [Function isBooleanObject],
|
|
||||||
"isBoxedPrimitive": [Function isBoxedPrimitive],
|
|
||||||
"isCryptoKey": [Function value],
|
|
||||||
"isDataView": [Function isDataView],
|
|
||||||
"isDate": [Function isDate],
|
|
||||||
"isExternal": [Function isExternal],
|
|
||||||
"isFloat32Array": [Function isFloat32Array],
|
|
||||||
"isFloat64Array": [Function isFloat64Array],
|
|
||||||
"isGeneratorFunction": [Function isGeneratorFunction],
|
|
||||||
"isGeneratorObject": [Function isGeneratorObject],
|
|
||||||
"isInt16Array": [Function isInt16Array],
|
|
||||||
"isInt32Array": [Function isInt32Array],
|
|
||||||
"isInt8Array": [Function isInt8Array],
|
|
||||||
"isKeyObject": [Function value],
|
|
||||||
"isMap": [Function isMap],
|
|
||||||
"isMapIterator": [Function isMapIterator],
|
|
||||||
"isModuleNamespaceObject": [Function isModuleNamespaceObject],
|
|
||||||
"isNativeError": [Function isNativeError],
|
|
||||||
"isNumberObject": [Function isNumberObject],
|
|
||||||
"isPromise": [Function isPromise],
|
|
||||||
"isProxy": [Function isProxy],
|
|
||||||
"isRegExp": [Function isRegExp],
|
|
||||||
"isSet": [Function isSet],
|
|
||||||
"isSetIterator": [Function isSetIterator],
|
|
||||||
"isSharedArrayBuffer": [Function isSharedArrayBuffer],
|
|
||||||
"isStringObject": [Function isStringObject],
|
|
||||||
"isSymbolObject": [Function isSymbolObject],
|
|
||||||
"isTypedArray": [Function isTypedArray],
|
|
||||||
"isUint16Array": [Function isUint16Array],
|
|
||||||
"isUint32Array": [Function isUint32Array],
|
|
||||||
"isUint8Array": [Function isUint8Array],
|
|
||||||
"isUint8ClampedArray": [Function isUint8ClampedArray],
|
|
||||||
"isWeakMap": [Function isWeakMap],
|
|
||||||
"isWeakSet": [Function isWeakSet],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"atob": [Function atob],
|
|
||||||
"btoa": [Function btoa],
|
|
||||||
"clearImmediate": [Function clearImmediate],
|
|
||||||
"clearInterval": [Function clearInterval],
|
|
||||||
"clearTimeout": [Function clearTimeout],
|
|
||||||
"crypto": Crypto {},
|
|
||||||
"fetch": [Function fetch],
|
|
||||||
"global": [Circular],
|
|
||||||
"navigator": Navigator {},
|
|
||||||
"performance": Performance {
|
|
||||||
Symbol(kEvents): Map {},
|
|
||||||
Symbol(events.maxEventTargetListeners): 10,
|
|
||||||
Symbol(events.maxEventTargetListenersWarned): false,
|
|
||||||
Symbol(kHandlers): Map {},
|
|
||||||
Symbol(performance): true,
|
|
||||||
},
|
|
||||||
"queueMicrotask": [Function queueMicrotask],
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
"structuredClone": [Function structuredClone],
|
|
||||||
Symbol(vitest:SAFE_TIMERS): Object {
|
|
||||||
"clearImmediate": [Function clearImmediate],
|
|
||||||
"clearInterval": [Function clearInterval],
|
|
||||||
"clearTimeout": [Function clearTimeout],
|
|
||||||
"nextTick": [Function nextTick],
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-public-loose-static-this-exec.test.js:8:15
|
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-public-loose-static-this-exec.test.js:13:22
|
||||||
6| A.getA = () => this;
|
11| A = null;
|
||||||
7| const { self, getA } = A;
|
12| expect(oldA.self).toBe(oldA);
|
||||||
8| expect(self).toBe(A);
|
13| expect(oldA.getA()).toBe(oldA);
|
||||||
| ^
|
| ^
|
||||||
9| expect(getA()).toBe(A);
|
14| })
|
||||||
10| const oldA = A;
|
|
||||||
|
|
||||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[86/98]⎯
|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[86/98]⎯
|
||||||
|
|
||||||
|
|
@ -1343,165 +763,20 @@ Received: "_Class"
|
||||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[88/98]⎯
|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[88/98]⎯
|
||||||
|
|
||||||
FAIL fixtures/babel-plugin-transform-class-properties-test-fixtures-public-static-this-exec.test.js > exec
|
FAIL fixtures/babel-plugin-transform-class-properties-test-fixtures-public-static-this-exec.test.js > exec
|
||||||
AssertionError: expected { Object: [Function Object], …(133), …(6) } to be [Function A] // Object.is equality
|
AssertionError: expected null to be [Function A] // Object.is equality
|
||||||
|
|
||||||
- Expected:
|
- Expected:
|
||||||
[Function A]
|
[Function A]
|
||||||
|
|
||||||
+ Received:
|
+ Received:
|
||||||
Object {
|
null
|
||||||
"__vitest_environment__": "node",
|
|
||||||
"__vitest_required__": Object {
|
|
||||||
"timers": Object {
|
|
||||||
"_unrefActive": [Function deprecated],
|
|
||||||
"active": [Function deprecated],
|
|
||||||
"clearImmediate": [Function clearImmediate],
|
|
||||||
"clearInterval": [Function clearInterval],
|
|
||||||
"clearTimeout": [Function clearTimeout],
|
|
||||||
"enroll": [Function deprecated],
|
|
||||||
"promises": Object {
|
|
||||||
"scheduler": Scheduler {
|
|
||||||
Symbol(kScheduler): true,
|
|
||||||
},
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
},
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
"unenroll": [Function deprecated],
|
|
||||||
},
|
|
||||||
"util": Object {
|
|
||||||
"MIMEParams": [Function MIMEParams],
|
|
||||||
"MIMEType": [Function MIMEType],
|
|
||||||
"TextDecoder": [Function TextDecoder],
|
|
||||||
"TextEncoder": [Function TextEncoder],
|
|
||||||
"_errnoException": [Function _errnoException],
|
|
||||||
"_exceptionWithHostPort": [Function _exceptionWithHostPort],
|
|
||||||
"_extend": [Function deprecated],
|
|
||||||
"aborted": [Function aborted],
|
|
||||||
"callbackify": [Function callbackify],
|
|
||||||
"debug": [Function debuglog],
|
|
||||||
"debuglog": [Function debuglog],
|
|
||||||
"deprecate": [Function deprecate],
|
|
||||||
"format": [Function format],
|
|
||||||
"formatWithOptions": [Function formatWithOptions],
|
|
||||||
"getCallSite": [Function getCallSite],
|
|
||||||
"getSystemErrorMap": [Function getSystemErrorMap],
|
|
||||||
"getSystemErrorName": [Function getSystemErrorName],
|
|
||||||
"inherits": [Function inherits],
|
|
||||||
"inspect": [Function inspect],
|
|
||||||
"isArray": [Function deprecated],
|
|
||||||
"isBoolean": [Function deprecated],
|
|
||||||
"isBuffer": [Function deprecated],
|
|
||||||
"isDate": [Function deprecated],
|
|
||||||
"isDeepStrictEqual": [Function isDeepStrictEqual],
|
|
||||||
"isError": [Function deprecated],
|
|
||||||
"isFunction": [Function deprecated],
|
|
||||||
"isNull": [Function deprecated],
|
|
||||||
"isNullOrUndefined": [Function deprecated],
|
|
||||||
"isNumber": [Function deprecated],
|
|
||||||
"isObject": [Function deprecated],
|
|
||||||
"isPrimitive": [Function deprecated],
|
|
||||||
"isRegExp": [Function deprecated],
|
|
||||||
"isString": [Function deprecated],
|
|
||||||
"isSymbol": [Function deprecated],
|
|
||||||
"isUndefined": [Function deprecated],
|
|
||||||
"log": [Function deprecated],
|
|
||||||
"parseArgs": [Function parseArgs],
|
|
||||||
"parseEnv": [Function parseEnv],
|
|
||||||
"promisify": [Function promisify],
|
|
||||||
"stripVTControlCharacters": [Function stripVTControlCharacters],
|
|
||||||
"styleText": [Function styleText],
|
|
||||||
"toUSVString": [Function toUSVString],
|
|
||||||
"transferableAbortController": [Function transferableAbortController],
|
|
||||||
"transferableAbortSignal": [Function transferableAbortSignal],
|
|
||||||
"types": Object {
|
|
||||||
"isAnyArrayBuffer": [Function isAnyArrayBuffer],
|
|
||||||
"isArgumentsObject": [Function isArgumentsObject],
|
|
||||||
"isArrayBuffer": [Function isArrayBuffer],
|
|
||||||
"isArrayBufferView": [Function isView],
|
|
||||||
"isAsyncFunction": [Function isAsyncFunction],
|
|
||||||
"isBigInt64Array": [Function isBigInt64Array],
|
|
||||||
"isBigIntObject": [Function isBigIntObject],
|
|
||||||
"isBigUint64Array": [Function isBigUint64Array],
|
|
||||||
"isBooleanObject": [Function isBooleanObject],
|
|
||||||
"isBoxedPrimitive": [Function isBoxedPrimitive],
|
|
||||||
"isCryptoKey": [Function value],
|
|
||||||
"isDataView": [Function isDataView],
|
|
||||||
"isDate": [Function isDate],
|
|
||||||
"isExternal": [Function isExternal],
|
|
||||||
"isFloat32Array": [Function isFloat32Array],
|
|
||||||
"isFloat64Array": [Function isFloat64Array],
|
|
||||||
"isGeneratorFunction": [Function isGeneratorFunction],
|
|
||||||
"isGeneratorObject": [Function isGeneratorObject],
|
|
||||||
"isInt16Array": [Function isInt16Array],
|
|
||||||
"isInt32Array": [Function isInt32Array],
|
|
||||||
"isInt8Array": [Function isInt8Array],
|
|
||||||
"isKeyObject": [Function value],
|
|
||||||
"isMap": [Function isMap],
|
|
||||||
"isMapIterator": [Function isMapIterator],
|
|
||||||
"isModuleNamespaceObject": [Function isModuleNamespaceObject],
|
|
||||||
"isNativeError": [Function isNativeError],
|
|
||||||
"isNumberObject": [Function isNumberObject],
|
|
||||||
"isPromise": [Function isPromise],
|
|
||||||
"isProxy": [Function isProxy],
|
|
||||||
"isRegExp": [Function isRegExp],
|
|
||||||
"isSet": [Function isSet],
|
|
||||||
"isSetIterator": [Function isSetIterator],
|
|
||||||
"isSharedArrayBuffer": [Function isSharedArrayBuffer],
|
|
||||||
"isStringObject": [Function isStringObject],
|
|
||||||
"isSymbolObject": [Function isSymbolObject],
|
|
||||||
"isTypedArray": [Function isTypedArray],
|
|
||||||
"isUint16Array": [Function isUint16Array],
|
|
||||||
"isUint32Array": [Function isUint32Array],
|
|
||||||
"isUint8Array": [Function isUint8Array],
|
|
||||||
"isUint8ClampedArray": [Function isUint8ClampedArray],
|
|
||||||
"isWeakMap": [Function isWeakMap],
|
|
||||||
"isWeakSet": [Function isWeakSet],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"atob": [Function atob],
|
|
||||||
"btoa": [Function btoa],
|
|
||||||
"clearImmediate": [Function clearImmediate],
|
|
||||||
"clearInterval": [Function clearInterval],
|
|
||||||
"clearTimeout": [Function clearTimeout],
|
|
||||||
"crypto": Crypto {},
|
|
||||||
"fetch": [Function fetch],
|
|
||||||
"global": [Circular],
|
|
||||||
"navigator": Navigator {},
|
|
||||||
"performance": Performance {
|
|
||||||
Symbol(kEvents): Map {},
|
|
||||||
Symbol(events.maxEventTargetListeners): 10,
|
|
||||||
Symbol(events.maxEventTargetListenersWarned): false,
|
|
||||||
Symbol(kHandlers): Map {},
|
|
||||||
Symbol(performance): true,
|
|
||||||
},
|
|
||||||
"queueMicrotask": [Function queueMicrotask],
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
"structuredClone": [Function structuredClone],
|
|
||||||
Symbol(vitest:SAFE_TIMERS): Object {
|
|
||||||
"clearImmediate": [Function clearImmediate],
|
|
||||||
"clearInterval": [Function clearInterval],
|
|
||||||
"clearTimeout": [Function clearTimeout],
|
|
||||||
"nextTick": [Function nextTick],
|
|
||||||
"setImmediate": [Function setImmediate],
|
|
||||||
"setInterval": [Function setInterval],
|
|
||||||
"setTimeout": [Function setTimeout],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-public-static-this-exec.test.js:9:15
|
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-public-static-this-exec.test.js:14:22
|
||||||
7| _defineProperty(A, "getA", () => this);
|
12| A = null;
|
||||||
8| const { self, getA } = A;
|
13| expect(oldA.self).toBe(oldA);
|
||||||
9| expect(self).toBe(A);
|
14| expect(oldA.getA()).toBe(oldA);
|
||||||
| ^
|
| ^
|
||||||
10| expect(getA()).toBe(A);
|
15| })
|
||||||
11| const oldA = A;
|
|
||||||
|
|
||||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[89/98]⎯
|
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[89/98]⎯
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue