mirror of
https://github.com/danbulant/oxc
synced 2026-05-25 04:42:10 +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>,
|
||||
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 {
|
||||
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),
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -155,6 +155,7 @@ use crate::TransformCtx;
|
|||
mod class;
|
||||
mod constructor;
|
||||
mod private;
|
||||
mod static_prop;
|
||||
mod utils;
|
||||
|
||||
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
|
||||
|
||||
Passed: 405/846
|
||||
Passed: 406/846
|
||||
|
||||
# All Passed:
|
||||
* babel-plugin-transform-class-static-block
|
||||
|
|
@ -276,7 +276,7 @@ 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
|
||||
x Output mismatch
|
||||
|
||||
|
|
@ -791,9 +791,6 @@ x Output mismatch
|
|||
* public/delete-super-property/input.js
|
||||
x Output mismatch
|
||||
|
||||
* public/delete-this/input.js
|
||||
x Output mismatch
|
||||
|
||||
* public/derived-multiple-supers/input.js
|
||||
x Output mismatch
|
||||
|
||||
|
|
|
|||
|
|
@ -291,165 +291,20 @@ Received: "_Class"
|
|||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[57/98]⎯
|
||||
|
||||
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:
|
||||
[Function A]
|
||||
|
||||
+ Received:
|
||||
Object {
|
||||
"__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],
|
||||
},
|
||||
}
|
||||
null
|
||||
|
||||
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-assumption-setPublicClassFields-static-this-exec.test.js:8:15
|
||||
6| A.getA = () => this;
|
||||
7| const { self, getA } = A;
|
||||
8| expect(self).toBe(A);
|
||||
| ^
|
||||
9| expect(getA()).toBe(A);
|
||||
10| const oldA = A;
|
||||
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-assumption-setPublicClassFields-static-this-exec.test.js:13:22
|
||||
11| A = null;
|
||||
12| expect(oldA.self).toBe(oldA);
|
||||
13| expect(oldA.getA()).toBe(oldA);
|
||||
| ^
|
||||
14| })
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[58/98]⎯
|
||||
|
||||
|
|
@ -634,165 +489,20 @@ TypeError: e.has is not a function
|
|||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[70/98]⎯
|
||||
|
||||
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:
|
||||
[Function A]
|
||||
|
||||
+ Received:
|
||||
Object {
|
||||
"__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],
|
||||
},
|
||||
}
|
||||
null
|
||||
|
||||
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-private-loose-static-this-exec.test.js:15:15
|
||||
13| var _getA = { _: () => this };
|
||||
14| const { self, getA } = A.extract();
|
||||
15| expect(self).toBe(A);
|
||||
| ^
|
||||
16| expect(getA()).toBe(A);
|
||||
17| const oldA = A;
|
||||
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-private-loose-static-this-exec.test.js:20:32
|
||||
18| A = null;
|
||||
19| expect(oldA.extract().self).toBe(oldA);
|
||||
20| expect(oldA.extract().getA()).toBe(oldA);
|
||||
| ^
|
||||
21| })
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[71/98]⎯
|
||||
|
||||
|
|
@ -915,165 +625,20 @@ TypeError: e.has is not a function
|
|||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[80/98]⎯
|
||||
|
||||
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:
|
||||
[Function A]
|
||||
|
||||
+ Received:
|
||||
Object {
|
||||
"__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],
|
||||
},
|
||||
}
|
||||
null
|
||||
|
||||
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-private-static-this-exec.test.js:15:15
|
||||
13| var _getA = { _: () => this };
|
||||
14| const { self, getA } = A.extract();
|
||||
15| expect(self).toBe(A);
|
||||
| ^
|
||||
16| expect(getA()).toBe(A);
|
||||
17| const oldA = A;
|
||||
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-private-static-this-exec.test.js:20:32
|
||||
18| A = null;
|
||||
19| expect(oldA.extract().self).toBe(oldA);
|
||||
20| expect(oldA.extract().getA()).toBe(oldA);
|
||||
| ^
|
||||
21| })
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[81/98]⎯
|
||||
|
||||
|
|
@ -1147,165 +712,20 @@ Received: "_Class"
|
|||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[85/98]⎯
|
||||
|
||||
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:
|
||||
[Function A]
|
||||
|
||||
+ Received:
|
||||
Object {
|
||||
"__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],
|
||||
},
|
||||
}
|
||||
null
|
||||
|
||||
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-public-loose-static-this-exec.test.js:8:15
|
||||
6| A.getA = () => this;
|
||||
7| const { self, getA } = A;
|
||||
8| expect(self).toBe(A);
|
||||
| ^
|
||||
9| expect(getA()).toBe(A);
|
||||
10| const oldA = A;
|
||||
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-public-loose-static-this-exec.test.js:13:22
|
||||
11| A = null;
|
||||
12| expect(oldA.self).toBe(oldA);
|
||||
13| expect(oldA.getA()).toBe(oldA);
|
||||
| ^
|
||||
14| })
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[86/98]⎯
|
||||
|
||||
|
|
@ -1343,165 +763,20 @@ Received: "_Class"
|
|||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[88/98]⎯
|
||||
|
||||
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:
|
||||
[Function A]
|
||||
|
||||
+ Received:
|
||||
Object {
|
||||
"__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],
|
||||
},
|
||||
}
|
||||
null
|
||||
|
||||
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-public-static-this-exec.test.js:9:15
|
||||
7| _defineProperty(A, "getA", () => this);
|
||||
8| const { self, getA } = A;
|
||||
9| expect(self).toBe(A);
|
||||
| ^
|
||||
10| expect(getA()).toBe(A);
|
||||
11| const oldA = A;
|
||||
❯ fixtures/babel-plugin-transform-class-properties-test-fixtures-public-static-this-exec.test.js:14:22
|
||||
12| A = null;
|
||||
13| expect(oldA.self).toBe(oldA);
|
||||
14| expect(oldA.getA()).toBe(oldA);
|
||||
| ^
|
||||
15| })
|
||||
|
||||
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[89/98]⎯
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue