From cbc533a684d919031ec0f8d18e32f347cdfbd3de Mon Sep 17 00:00:00 2001 From: Mickey Rose Date: Tue, 19 Oct 2021 11:30:13 +0200 Subject: [PATCH] fix(helpers): `get` should use default receiver only when the argument is missing --- packages/babel-helpers/src/helpers.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/babel-helpers/src/helpers.ts b/packages/babel-helpers/src/helpers.ts index 1e95f57b0b1d..729deaea9d67 100644 --- a/packages/babel-helpers/src/helpers.ts +++ b/packages/babel-helpers/src/helpers.ts @@ -651,10 +651,14 @@ helpers.superPropBase = helper("7.0.0-beta.0")` } `; +// https://tc39.es/ecma262/multipage/reflection.html#sec-reflect.get +// +// 28.1.5 Reflect.get ( target, propertyKey [ , receiver ] ) +// helpers.get = helper("7.0.0-beta.0")` import superPropBase from "superPropBase"; - export default function _get(target, property, receiver) { + export default function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { @@ -665,13 +669,14 @@ helpers.get = helper("7.0.0-beta.0")` var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { - return desc.get.call(receiver); + // STEP 3. If receiver is not present, then set receiver to target. + return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } - return _get(target, property, receiver || target); + return _get.apply(this, arguments); } `;