36 lines
1.2 KiB
JavaScript
36 lines
1.2 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
|
|
exports.default = function (ast, strictCode, env, realm) {
|
|
var exprRef = env.evaluate(ast.test, strictCode);
|
|
var 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, _invariant2.default)(exprValue instanceof _index.AbstractValue);
|
|
|
|
if (!exprValue.mightNotBeTrue()) return env.evaluate(ast.consequent, strictCode);
|
|
if (!exprValue.mightNotBeFalse()) return env.evaluate(ast.alternate, strictCode);
|
|
return (0, _IfStatement.evaluateWithAbstractConditional)(exprValue, ast.consequent, ast.alternate, strictCode, env, realm);
|
|
};
|
|
|
|
var _index = require("../values/index.js");
|
|
|
|
var _IfStatement = require("./IfStatement.js");
|
|
|
|
var _singletons = require("../singletons.js");
|
|
|
|
var _invariant = require("../invariant.js");
|
|
|
|
var _invariant2 = _interopRequireDefault(_invariant);
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
//# sourceMappingURL=ConditionalExpression.js.map
|