UNPKG

prepack

Version:

Execute a JS bundle, serialize global state and side effects to a snapshot that can be quickly restored.

48 lines (37 loc) 1.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = _default; var _index = require("../values/index.js"); var _realm = require("../realm.js"); var _singletons = require("../singletons.js"); var _invariant = _interopRequireDefault(require("../invariant.js")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * 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. */ /* strict-local */ function _default(ast, strictCode, env, realm) { let exprRef = env.evaluate(ast.test, strictCode); let exprValue = _singletons.Environment.GetConditionValue(realm, exprRef); if (exprValue instanceof _index.ConcreteValue) { if (_singletons.To.ToBoolean(realm, exprValue)) { return env.evaluate(ast.consequent, strictCode); } else { return env.evaluate(ast.alternate, strictCode); } } (0, _invariant.default)(exprValue instanceof _index.AbstractValue); const consequent = ast.consequent; const alternate = ast.alternate; if (!exprValue.mightNotBeTrue()) return env.evaluate(consequent, strictCode); if (!exprValue.mightNotBeFalse()) return env.evaluate(alternate, strictCode); return realm.evaluateWithAbstractConditional(exprValue, () => realm.evaluateNodeForEffects(consequent, strictCode, env), () => alternate ? realm.evaluateNodeForEffects(alternate, strictCode, env) : (0, _realm.construct_empty_effects)(realm)); } //# sourceMappingURL=ConditionalExpression.js.map