UNPKG

@glimmer/compiler

Version:
42 lines (34 loc) 5.58 kB
import { generateSyntaxError } from '@glimmer/syntax'; import { Err, Ok } from '../../../../shared/result'; import * as mir from '../../../2-encoding/mir'; import { VISIT_EXPRS } from '../../visitors/expressions'; function assertGetDynamicVarKeyword(node) { let call = node.type === 'AppendContent' ? node.value : node; let named = call.type === 'Call' ? call.args.named : null; let positionals = call.type === 'Call' ? call.args.positional : null; if (named && !named.isEmpty()) { return Err(generateSyntaxError(`(-get-dynamic-vars) does not take any named arguments`, node.loc)); } let varName = positionals === null || positionals === void 0 ? void 0 : positionals.nth(0); if (!varName) { return Err(generateSyntaxError(`(-get-dynamic-vars) requires a var name to get`, node.loc)); } if (positionals && positionals.size > 1) { return Err(generateSyntaxError(`(-get-dynamic-vars) only receives one positional arg`, node.loc)); } return Ok(varName); } function translateGetDynamicVarKeyword({ node, state }, name) { return VISIT_EXPRS.visit(name, state).mapOk(name => new mir.GetDynamicVar({ name, loc: node.loc })); } export const getDynamicVarKeyword = { assert: assertGetDynamicVarKeyword, translate: translateGetDynamicVarKeyword }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL3V0aWxzL2R5bmFtaWMtdmFycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFnQixtQkFBaEIsUUFBMkMsaUJBQTNDO0FBRUEsU0FBUyxHQUFULEVBQWMsRUFBZCxRQUFnQywyQkFBaEM7QUFDQSxPQUFPLEtBQUssR0FBWixNQUFxQix5QkFBckI7QUFFQSxTQUFTLFdBQVQsUUFBNEIsNEJBQTVCOztBQUdBLFNBQVMsMEJBQVQsQ0FBb0MsSUFBcEMsRUFBNEQ7QUFDMUQsTUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUwsS0FBYyxlQUFkLEdBQWdDLElBQUksQ0FBQyxLQUFyQyxHQUE2QyxJQUF4RDtBQUVBLE1BQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFMLEtBQWMsTUFBZCxHQUF1QixJQUFJLENBQUMsSUFBTCxDQUFVLEtBQWpDLEdBQXlDLElBQXJEO0FBQ0EsTUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUwsS0FBYyxNQUFkLEdBQXVCLElBQUksQ0FBQyxJQUFMLENBQVUsVUFBakMsR0FBOEMsSUFBaEU7O0FBRUEsTUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTixFQUFkLEVBQStCO0FBQzdCLFdBQU8sR0FBRyxDQUNSLG1CQUFtQixDQUFDLHVEQUFELEVBQTBELElBQUksQ0FBQyxHQUEvRCxDQURYLENBQVY7QUFHRDs7QUFFRCxNQUFJLE9BQU8sR0FBRyxXQUFXLEtBQUEsSUFBWCxJQUFBLFdBQVcsS0FBQSxLQUFBLENBQVgsR0FBVyxLQUFBLENBQVgsR0FBQSxXQUFXLENBQUUsR0FBYixDQUFpQixDQUFqQixDQUFkOztBQUVBLE1BQUksQ0FBQyxPQUFMLEVBQWM7QUFDWixXQUFPLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxnREFBRCxFQUFtRCxJQUFJLENBQUMsR0FBeEQsQ0FBcEIsQ0FBVjtBQUNEOztBQUVELE1BQUksV0FBVyxJQUFJLFdBQVcsQ0FBQyxJQUFaLEdBQW1CLENBQXRDLEVBQXlDO0FBQ3ZDLFdBQU8sR0FBRyxDQUNSLG1CQUFtQixDQUFDLHNEQUFELEVBQXlELElBQUksQ0FBQyxHQUE5RCxDQURYLENBQVY7QUFHRDs7QUFFRCxTQUFPLEVBQUUsQ0FBQyxPQUFELENBQVQ7QUFDRDs7QUFFRCxTQUFTLDZCQUFULENBQ0U7QUFBRSxFQUFBLElBQUY7QUFBUSxFQUFBO0FBQVIsQ0FERixFQUVFLElBRkYsRUFFNEI7QUFFMUIsU0FBTyxXQUFXLENBQUMsS0FBWixDQUFrQixJQUFsQixFQUF3QixLQUF4QixFQUErQixLQUEvQixDQUNKLElBQUQsSUFBVSxJQUFJLEdBQUcsQ0FBQyxhQUFSLENBQXNCO0FBQUUsSUFBQSxJQUFGO0FBQVEsSUFBQSxHQUFHLEVBQUUsSUFBSSxDQUFDO0FBQWxCLEdBQXRCLENBREwsQ0FBUDtBQUdEOztBQUVELE9BQU8sTUFBTSxvQkFBb0IsR0FJN0I7QUFDRixFQUFBLE1BQU0sRUFBRSwwQkFETjtBQUVGLEVBQUEsU0FBUyxFQUFFO0FBRlQsQ0FKRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFTVHYyLCBnZW5lcmF0ZVN5bnRheEVycm9yIH0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcblxuaW1wb3J0IHsgRXJyLCBPaywgUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3Jlc3VsdCc7XG5pbXBvcnQgKiBhcyBtaXIgZnJvbSAnLi4vLi4vLi4vMi1lbmNvZGluZy9taXInO1xuaW1wb3J0IHsgTm9ybWFsaXphdGlvblN0YXRlIH0gZnJvbSAnLi4vLi4vY29udGV4dCc7XG5pbXBvcnQgeyBWSVNJVF9FWFBSUyB9IGZyb20gJy4uLy4uL3Zpc2l0b3JzL2V4cHJlc3Npb25zJztcbmltcG9ydCB7IEdlbmVyaWNLZXl3b3JkTm9kZSwgS2V5d29yZERlbGVnYXRlIH0gZnJvbSAnLi4vaW1wbCc7XG5cbmZ1bmN0aW9uIGFzc2VydEdldER5bmFtaWNWYXJLZXl3b3JkKG5vZGU6IEdlbmVyaWNLZXl3b3JkTm9kZSk6IFJlc3VsdDxBU1R2Mi5FeHByZXNzaW9uTm9kZT4ge1xuICBsZXQgY2FsbCA9IG5vZGUudHlwZSA9PT0gJ0FwcGVuZENvbnRlbnQnID8gbm9kZS52YWx1ZSA6IG5vZGU7XG5cbiAgbGV0IG5hbWVkID0gY2FsbC50eXBlID09PSAnQ2FsbCcgPyBjYWxsLmFyZ3MubmFtZWQgOiBudWxsO1xuICBsZXQgcG9zaXRpb25hbHMgPSBjYWxsLnR5cGUgPT09ICdDYWxsJyA/IGNhbGwuYXJncy5wb3NpdGlvbmFsIDogbnVsbDtcblxuICBpZiAobmFtZWQgJiYgIW5hbWVkLmlzRW1wdHkoKSkge1xuICAgIHJldHVybiBFcnIoXG4gICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKGAoLWdldC1keW5hbWljLXZhcnMpIGRvZXMgbm90IHRha2UgYW55IG5hbWVkIGFyZ3VtZW50c2AsIG5vZGUubG9jKVxuICAgICk7XG4gIH1cblxuICBsZXQgdmFyTmFtZSA9IHBvc2l0aW9uYWxzPy5udGgoMCk7XG5cbiAgaWYgKCF2YXJOYW1lKSB7XG4gICAgcmV0dXJuIEVycihnZW5lcmF0ZVN5bnRheEVycm9yKGAoLWdldC1keW5hbWljLXZhcnMpIHJlcXVpcmVzIGEgdmFyIG5hbWUgdG8gZ2V0YCwgbm9kZS5sb2MpKTtcbiAgfVxuXG4gIGlmIChwb3NpdGlvbmFscyAmJiBwb3NpdGlvbmFscy5zaXplID4gMSkge1xuICAgIHJldHVybiBFcnIoXG4gICAgICBnZW5lcmF0ZVN5bnRheEVycm9yKGAoLWdldC1keW5hbWljLXZhcnMpIG9ubHkgcmVjZWl2ZXMgb25lIHBvc2l0aW9uYWwgYXJnYCwgbm9kZS5sb2MpXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBPayh2YXJOYW1lKTtcbn1cblxuZnVuY3Rpb24gdHJhbnNsYXRlR2V0RHluYW1pY1ZhcktleXdvcmQoXG4gIHsgbm9kZSwgc3RhdGUgfTogeyBub2RlOiBHZW5lcmljS2V5d29yZE5vZGU7IHN0YXRlOiBOb3JtYWxpemF0aW9uU3RhdGUgfSxcbiAgbmFtZTogQVNUdjIuRXhwcmVzc2lvbk5vZGVcbik6IFJlc3VsdDxtaXIuR2V0RHluYW1pY1Zhcj4ge1xuICByZXR1cm4gVklTSVRfRVhQUlMudmlzaXQobmFtZSwgc3RhdGUpLm1hcE9rKFxuICAgIChuYW1lKSA9PiBuZXcgbWlyLkdldER5bmFtaWNWYXIoeyBuYW1lLCBsb2M6IG5vZGUubG9jIH0pXG4gICk7XG59XG5cbmV4cG9ydCBjb25zdCBnZXREeW5hbWljVmFyS2V5d29yZDogS2V5d29yZERlbGVnYXRlPFxuICBHZW5lcmljS2V5d29yZE5vZGUsXG4gIEFTVHYyLkV4cHJlc3Npb25Ob2RlLFxuICBtaXIuR2V0RHluYW1pY1ZhclxuPiA9IHtcbiAgYXNzZXJ0OiBhc3NlcnRHZXREeW5hbWljVmFyS2V5d29yZCxcbiAgdHJhbnNsYXRlOiB0cmFuc2xhdGVHZXREeW5hbWljVmFyS2V5d29yZCxcbn07XG4iXSwic291cmNlUm9vdCI6IiJ9