first commit
This commit is contained in:
245
build/node_modules/prepack/lib/values/ArgumentsExotic.js
generated
vendored
Normal file
245
build/node_modules/prepack/lib/values/ArgumentsExotic.js
generated
vendored
Normal file
@@ -0,0 +1,245 @@
|
||||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
||||
|
||||
var _index = require("../values/index.js");
|
||||
|
||||
var _is = require("../methods/is.js");
|
||||
|
||||
var _has = require("../methods/has.js");
|
||||
|
||||
var _abstract = require("../methods/abstract.js");
|
||||
|
||||
var _get = require("../methods/get.js");
|
||||
|
||||
var _singletons = require("../singletons.js");
|
||||
|
||||
var _invariant = require("../invariant");
|
||||
|
||||
var _invariant2 = _interopRequireDefault(_invariant);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
||||
|
||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /**
|
||||
* Copyright (c) 2017-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*/
|
||||
|
||||
var ArgumentsExotic = function (_ObjectValue) {
|
||||
_inherits(ArgumentsExotic, _ObjectValue);
|
||||
|
||||
function ArgumentsExotic(realm, intrinsicName) {
|
||||
_classCallCheck(this, ArgumentsExotic);
|
||||
|
||||
return _possibleConstructorReturn(this, (ArgumentsExotic.__proto__ || Object.getPrototypeOf(ArgumentsExotic)).call(this, realm, realm.intrinsics.ObjectPrototype, intrinsicName));
|
||||
}
|
||||
|
||||
_createClass(ArgumentsExotic, [{
|
||||
key: "$GetOwnProperty",
|
||||
|
||||
|
||||
// ECMA262 9.4.4.1
|
||||
value: function $GetOwnProperty(P) {
|
||||
// 1. Let args be the arguments object.
|
||||
var args = this;
|
||||
|
||||
// 2. Let desc be OrdinaryGetOwnProperty(args, P).
|
||||
var desc = _singletons.Properties.OrdinaryGetOwnProperty(this.$Realm, args, P);
|
||||
|
||||
// 3. If desc is undefined, return desc.
|
||||
if (desc === undefined) return undefined;
|
||||
_singletons.Properties.ThrowIfMightHaveBeenDeleted(desc.value);
|
||||
|
||||
// 4. Let map be args.[[ParameterMap]].
|
||||
var map = args.$ParameterMap;
|
||||
(0, _invariant2.default)(map);
|
||||
|
||||
// 5. Let isMapped be ! HasOwnProperty(map, P).
|
||||
var isMapped = (0, _has.HasOwnProperty)(this.$Realm, map, P);
|
||||
|
||||
// 6. If isMapped is true, then
|
||||
if (isMapped === true) {
|
||||
// a. Set desc.[[Value]] to Get(map, P).
|
||||
desc.value = (0, _get.Get)(this.$Realm, map, P);
|
||||
}
|
||||
|
||||
// 7. Return desc.
|
||||
return desc;
|
||||
}
|
||||
|
||||
// ECMA262 9.4.4.2
|
||||
|
||||
}, {
|
||||
key: "$DefineOwnProperty",
|
||||
value: function $DefineOwnProperty(P, Desc) {
|
||||
// 1. Let args be the arguments object.
|
||||
var args = this;
|
||||
|
||||
// 2. Let map be args.[[ParameterMap]].
|
||||
var map = args.$ParameterMap;
|
||||
(0, _invariant2.default)(map);
|
||||
|
||||
// 3. Let isMapped be HasOwnProperty(map, P).
|
||||
var isMapped = (0, _has.HasOwnProperty)(this.$Realm, map, P);
|
||||
|
||||
// 4. Let newArgDesc be Desc.
|
||||
var newArgDesc = Desc;
|
||||
|
||||
// 5. If isMapped is true and IsDataDescriptor(Desc) is true, then
|
||||
if (isMapped === true && (0, _is.IsDataDescriptor)(this.$Realm, Desc) === true) {
|
||||
// a. If Desc.[[Value]] is not present and Desc.[[Writable]] is present and its value is false, then
|
||||
if (Desc.value === undefined && Desc.writable === false) {
|
||||
// i. Let newArgDesc be a copy of Desc.
|
||||
newArgDesc = Object.assign({}, Desc);
|
||||
|
||||
// ii. Set newArgDesc.[[Value]] to Get(map, P).
|
||||
newArgDesc.value = (0, _get.Get)(this.$Realm, map, P);
|
||||
}
|
||||
}
|
||||
|
||||
// 6. Let allowed be ? OrdinaryDefineOwnProperty(args, P, newArgDesc).
|
||||
var allowed = _singletons.Properties.OrdinaryDefineOwnProperty(this.$Realm, args, P, newArgDesc);
|
||||
|
||||
// 7. If allowed is false, return false.
|
||||
if (allowed === false) return false;
|
||||
|
||||
// 8. If isMapped is true, then
|
||||
if (isMapped === true) {
|
||||
// a. If IsAccessorDescriptor(Desc) is true, then
|
||||
if ((0, _is.IsAccessorDescriptor)(this.$Realm, Desc) === true) {
|
||||
// i. Call map.[[Delete]](P).
|
||||
map.$Delete(P);
|
||||
} else {
|
||||
// b. Else,
|
||||
// i. If Desc.[[Value]] is present, then
|
||||
if (Desc.value !== undefined) {
|
||||
// 1. Let setStatus be Set(map, P, Desc.[[Value]], false).
|
||||
(0, _invariant2.default)(Desc.value instanceof _index.Value);
|
||||
var setStatus = _singletons.Properties.Set(this.$Realm, map, P, Desc.value, false);
|
||||
|
||||
// 2. Assert: setStatus is true because formal parameters mapped by argument objects are always writable.
|
||||
(0, _invariant2.default)(setStatus === true);
|
||||
}
|
||||
|
||||
// ii. If Desc.[[Writable]] is present and its value is false, then
|
||||
if (Desc.writable === false) {
|
||||
// 1. Call map.[[Delete]](P).
|
||||
map.$Delete(P);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 9. Return true.
|
||||
return true;
|
||||
}
|
||||
|
||||
// ECMA262 9.4.4.3
|
||||
|
||||
}, {
|
||||
key: "$Get",
|
||||
value: function $Get(P, Receiver) {
|
||||
// 1. Let args be the arguments object.
|
||||
var args = this;
|
||||
|
||||
// 2. Let map be args.[[ParameterMap]].
|
||||
var map = args.$ParameterMap;
|
||||
(0, _invariant2.default)(map);
|
||||
|
||||
// 3. Let isMapped be ! HasOwnProperty(map, P).
|
||||
var isMapped = (0, _has.HasOwnProperty)(this.$Realm, map, P);
|
||||
|
||||
// 4. If isMapped is false, then
|
||||
if (isMapped === false) {
|
||||
// a. Return ? OrdinaryGet(args, P, Receiver).
|
||||
return (0, _get.OrdinaryGet)(this.$Realm, args, P, Receiver);
|
||||
} else {
|
||||
// 5. Else map contains a formal parameter mapping for P,
|
||||
// b. Return Get(map, P).
|
||||
return (0, _get.Get)(this.$Realm, map, P);
|
||||
}
|
||||
}
|
||||
|
||||
// ECMA262 9.4.4.4
|
||||
|
||||
}, {
|
||||
key: "$Set",
|
||||
value: function $Set(P, V, Receiver) {
|
||||
// 1. Let args be the arguments object.
|
||||
var args = this;
|
||||
|
||||
var isMapped = void 0,
|
||||
map = void 0;
|
||||
// 2. If SameValue(args, Receiver) is false, then
|
||||
if ((0, _abstract.SameValuePartial)(this.$Realm, args, Receiver) === false) {
|
||||
// a. Let isMapped be false.
|
||||
isMapped = false;
|
||||
} else {
|
||||
// 3. Else,
|
||||
// a. Let map be args.[[ParameterMap]].
|
||||
map = args.$ParameterMap;
|
||||
(0, _invariant2.default)(map);
|
||||
|
||||
// b. Let isMapped be ! HasOwnProperty(map, P).
|
||||
isMapped = (0, _has.HasOwnProperty)(this.$Realm, map, P);
|
||||
}
|
||||
|
||||
// 4. If isMapped is true, then
|
||||
if (isMapped === true) {
|
||||
(0, _invariant2.default)(map);
|
||||
// a. Let setStatus be Set(map, P, V, false).
|
||||
var setStatus = _singletons.Properties.Set(this.$Realm, map, P, V, false);
|
||||
|
||||
// b. Assert: setStatus is true because formal parameters mapped by argument objects are always writable.
|
||||
(0, _invariant2.default)(setStatus === true);
|
||||
}
|
||||
|
||||
// 5. Return ? OrdinarySet(args, P, V, Receiver).
|
||||
return _singletons.Properties.OrdinarySet(this.$Realm, args, P, V, Receiver);
|
||||
}
|
||||
|
||||
// ECMA262 9.4.4.5
|
||||
|
||||
}, {
|
||||
key: "$Delete",
|
||||
value: function $Delete(P) {
|
||||
// 1. Let args be the arguments object.
|
||||
var args = this;
|
||||
|
||||
// 2. Let map be args.[[ParameterMap]].
|
||||
var map = args.$ParameterMap;
|
||||
(0, _invariant2.default)(map);
|
||||
|
||||
// 3. Let isMapped be ! HasOwnProperty(map, P).
|
||||
var isMapped = (0, _has.HasOwnProperty)(this.$Realm, map, P);
|
||||
|
||||
// 4. Let result be ? OrdinaryDelete(args, P).
|
||||
var result = _singletons.Properties.OrdinaryDelete(this.$Realm, args, P);
|
||||
|
||||
// 5. If result is true and isMapped is true, then
|
||||
if (result === true && isMapped === true) {
|
||||
// a. Call map.[[Delete]](P).
|
||||
map.$Delete(P);
|
||||
}
|
||||
|
||||
// 6. Return result.
|
||||
return result;
|
||||
}
|
||||
}]);
|
||||
|
||||
return ArgumentsExotic;
|
||||
}(_index.ObjectValue);
|
||||
|
||||
exports.default = ArgumentsExotic;
|
||||
//# sourceMappingURL=ArgumentsExotic.js.map
|
||||
Reference in New Issue
Block a user