@glimmer/compiler
Version:
58 lines (43 loc) • 6.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getDynamicVarKeyword = void 0;
var _syntax = require("@glimmer/syntax");
var _result = require("../../../../shared/result");
var mir = _interopRequireWildcard(require("../../../2-encoding/mir"));
var _expressions = require("../../visitors/expressions");
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function assertGetDynamicVarKeyword(node) {
var call = node.type === 'AppendContent' ? node.value : node;
var named = call.type === 'Call' ? call.args.named : null;
var positionals = call.type === 'Call' ? call.args.positional : null;
if (named && !named.isEmpty()) {
return (0, _result.Err)((0, _syntax.generateSyntaxError)("(-get-dynamic-vars) does not take any named arguments", node.loc));
}
var varName = positionals === null || positionals === void 0 ? void 0 : positionals.nth(0);
if (!varName) {
return (0, _result.Err)((0, _syntax.generateSyntaxError)("(-get-dynamic-vars) requires a var name to get", node.loc));
}
if (positionals && positionals.size > 1) {
return (0, _result.Err)((0, _syntax.generateSyntaxError)("(-get-dynamic-vars) only receives one positional arg", node.loc));
}
return (0, _result.Ok)(varName);
}
function translateGetDynamicVarKeyword(_ref, name) {
var node = _ref.node,
state = _ref.state;
return _expressions.VISIT_EXPRS.visit(name, state).mapOk(function (name) {
return new mir.GetDynamicVar({
name: name,
loc: node.loc
});
});
}
var getDynamicVarKeyword = {
assert: assertGetDynamicVarKeyword,
translate: translateGetDynamicVarKeyword
};
exports.getDynamicVarKeyword = getDynamicVarKeyword;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL3V0aWxzL2R5bmFtaWMtdmFycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7O0FBRUE7Ozs7OztBQUdBLFNBQUEsMEJBQUEsQ0FBQSxJQUFBLEVBQTREO0FBQzFELE1BQUksSUFBSSxHQUFHLElBQUksQ0FBSixJQUFBLEtBQUEsZUFBQSxHQUFnQyxJQUFJLENBQXBDLEtBQUEsR0FBWCxJQUFBO0FBRUEsTUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFKLElBQUEsS0FBQSxNQUFBLEdBQXVCLElBQUksQ0FBSixJQUFBLENBQXZCLEtBQUEsR0FBWixJQUFBO0FBQ0EsTUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFKLElBQUEsS0FBQSxNQUFBLEdBQXVCLElBQUksQ0FBSixJQUFBLENBQXZCLFVBQUEsR0FBbEIsSUFBQTs7QUFFQSxNQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBbkIsT0FBYyxFQUFkLEVBQStCO0FBQzdCLFdBQU8saUJBQ0wsaUNBQW1CLHVEQUFuQixFQUE2RSxJQUFJLENBRG5GLEdBQ0UsQ0FESyxDQUFQO0FBR0Q7O0FBRUQsTUFBSSxPQUFPLEdBQUcsV0FBVyxLQUFYLElBQUEsSUFBQSxXQUFXLEtBQUEsS0FBWCxDQUFBLEdBQVcsS0FBWCxDQUFBLEdBQUEsV0FBVyxDQUFYLEdBQUEsQ0FBZCxDQUFjLENBQWQ7O0FBRUEsTUFBSSxDQUFKLE9BQUEsRUFBYztBQUNaLFdBQU8saUJBQUksaUNBQW1CLGdEQUFuQixFQUFzRSxJQUFJLENBQXJGLEdBQVcsQ0FBSixDQUFQO0FBQ0Q7O0FBRUQsTUFBSSxXQUFXLElBQUksV0FBVyxDQUFYLElBQUEsR0FBbkIsQ0FBQSxFQUF5QztBQUN2QyxXQUFPLGlCQUNMLGlDQUFtQixzREFBbkIsRUFBNEUsSUFBSSxDQURsRixHQUNFLENBREssQ0FBUDtBQUdEOztBQUVELFNBQU8sZ0JBQVAsT0FBTyxDQUFQO0FBQ0Q7O0FBRUQsU0FBQSw2QkFBQSxDQUFBLElBQUEsRUFBQSxJQUFBLEVBRTRCO0FBQUEsTUFEMUIsSUFDMEIsR0FBQSxJQUFBLENBRDFCLElBQzBCO0FBQUEsTUFEbEIsS0FDa0IsR0FBQSxJQUFBLENBRGxCLEtBQ2tCO0FBRTFCLFNBQU8seUJBQUEsS0FBQSxDQUFBLElBQUEsRUFBQSxLQUFBLEVBQUEsS0FBQSxDQUNKLFVBQUQsSUFBQyxFQUFEO0FBQUEsV0FBVSxJQUFJLEdBQUcsQ0FBUCxhQUFBLENBQXNCO0FBQUUsTUFBQSxJQUFGLEVBQUEsSUFBQTtBQUFRLE1BQUEsR0FBRyxFQUFFLElBQUksQ0FBQztBQUFsQixLQUF0QixDQUFWO0FBREYsR0FBTyxDQUFQO0FBR0Q7O0FBRU0sSUFBTSxvQkFBb0IsR0FJN0I7QUFDRixFQUFBLE1BQU0sRUFESiwwQkFBQTtBQUVGLEVBQUEsU0FBUyxFQUFFO0FBRlQsQ0FKRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFTVHYyLCBnZW5lcmF0ZVN5bnRheEVycm9yIH0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcblxuaW1wb3J0IHsgRXJyLCBPaywgUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3Jlc3VsdCc7XG5pbXBvcnQgKiBhcyBtaXIgZnJvbSAnLi4vLi4vLi4vMi1lbmNvZGluZy9taXInO1xuaW1wb3J0IHsgTm9ybWFsaXphdGlvblN0YXRlIH0gZnJvbSAnLi4vLi4vY29udGV4dCc7XG5pbXBvcnQgeyBWSVNJVF9FWFBSUyB9IGZyb20gJy4uLy4uL3Zpc2l0b3JzL2V4cHJlc3Npb25zJztcbmltcG9ydCB7IEdlbmVyaWNLZXl3b3JkTm9kZSwgS2V5d29yZERlbGVnYXRlIH0gZnJvbSAnLi4vaW1wbCc7XG5cbmZ1bmN0aW9uIGFzc2VydEdldER5bmFtaWNWYXJLZXl3b3JkKG5vZGU6IEdlbmVyaWNLZXl3b3JkTm9kZSk6IFJlc3VsdDxBU1R2Mi5FeHByZXNzaW9uTm9kZT4ge1xuICBsZXQgY2FsbCA9IG5vZGUudHlwZSA9PT0gJ0FwcGVuZENvbnRlbnQnID8gbm9kZS52YWx1ZSA6IG5vZGU7XG5cbiAgbGV0IG5hbWVkID0gY2FsbC50eXBlID09PSAnQ2FsbCcgPyBjYWxsLmFyZ3MubmFtZWQgOiBudWxsO1xuICBsZXQgcG9zaXRpb25hbHMgPSBjYWxsLnR5cGUgPT09ICdDYWxsJyA/IGNhbGwuYXJncy5wb3NpdGlvbmFsIDogbnVsbDtcblxuICBpZiAobmFtZWQgJiYgIW5hbWVkLmlzRW1wdHkoKSkge1xuICAgIHJldHVybiBFcnIoXG4gICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKGAoLWdldC1keW5hbWljLXZhcnMpIGRvZXMgbm90IHRha2UgYW55IG5hbWVkIGFyZ3VtZW50c2AsIG5vZGUubG9jKVxuICAgICk7XG4gIH1cblxuICBsZXQgdmFyTmFtZSA9IHBvc2l0aW9uYWxzPy5udGgoMCk7XG5cbiAgaWYgKCF2YXJOYW1lKSB7XG4gICAgcmV0dXJuIEVycihnZW5lcmF0ZVN5bnRheEVycm9yKGAoLWdldC1keW5hbWljLXZhcnMpIHJlcXVpcmVzIGEgdmFyIG5hbWUgdG8gZ2V0YCwgbm9kZS5sb2MpKTtcbiAgfVxuXG4gIGlmIChwb3NpdGlvbmFscyAmJiBwb3NpdGlvbmFscy5zaXplID4gMSkge1xuICAgIHJldHVybiBFcnIoXG4gICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKGAoLWdldC1keW5hbWljLXZhcnMpIG9ubHkgcmVjZWl2ZXMgb25lIHBvc2l0aW9uYWwgYXJnYCwgbm9kZS5sb2MpXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBPayh2YXJOYW1lKTtcbn1cblxuZnVuY3Rpb24gdHJhbnNsYXRlR2V0RHluYW1pY1ZhcktleXdvcmQoXG4gIHsgbm9kZSwgc3RhdGUgfTogeyBub2RlOiBHZW5lcmljS2V5d29yZE5vZGU7IHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUgfSxcbiAgbmFtZTogQVNUdjIuRXhwcmVzc2lvbk5vZGVcbik6IFJlc3VsdDxtaXIuR2V0RHluYW1pY1Zhcj4ge1xuICByZXR1cm4gVklTSVRfRVhQUlMudmlzaXQobmFtZSwgc3RhdGUpLm1hcE9rKFxuICAgIChuYW1lKSA9PiBuZXcgbWlyLkdldER5bmFtaWNWYXIoeyBuYW1lLCBsb2M6IG5vZGUubG9jIH0pXG4gICk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXREeW5hbWljVmFyS2V5d29yZDogS2V5d29yZERlbGVnYXRlPFxuICBHZW5lcmljS2V5d29yZE5vZGUsXG4gIEFTVHYyLkV4cHJlc3Npb25Ob2RlLFxuICBtaXIuR2V0RHluYW1pY1ZhclxuPiA9IHtcbiAgYXNzZXJ0OiBhc3NlcnRHZXREeW5hbWljVmFyS2V5d29yZCxcbiAgdHJhbnNsYXRlOiB0cmFuc2xhdGVHZXREeW5hbWljVmFyS2V5d29yZCxcbn07XG4iXSwic291cmNlUm9vdCI6IiJ9