@glimmer/compiler
Version:
43 lines (35 loc) • 5.64 kB
JavaScript
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) {
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 Err(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 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(_ref, name) {
var node = _ref.node,
state = _ref.state;
return VISIT_EXPRS.visit(name, state).mapOk(function (name) {
return new mir.GetDynamicVar({
name: name,
loc: node.loc
});
});
}
export var getDynamicVarKeyword = {
assert: assertGetDynamicVarKeyword,
translate: translateGetDynamicVarKeyword
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL2tleXdvcmRzL3V0aWxzL2R5bmFtaWMtdmFycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFBLG1CQUFBLFFBQUEsaUJBQUE7QUFFQSxTQUFBLEdBQUEsRUFBQSxFQUFBLFFBQUEsMkJBQUE7QUFDQSxPQUFPLEtBQVAsR0FBQSxNQUFBLHlCQUFBO0FBRUEsU0FBQSxXQUFBLFFBQUEsNEJBQUE7O0FBR0EsU0FBQSwwQkFBQSxDQUFBLElBQUEsRUFBNEQ7QUFDMUQsTUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFKLElBQUEsS0FBQSxlQUFBLEdBQWdDLElBQUksQ0FBcEMsS0FBQSxHQUFYLElBQUE7QUFFQSxNQUFJLEtBQUssR0FBRyxJQUFJLENBQUosSUFBQSxLQUFBLE1BQUEsR0FBdUIsSUFBSSxDQUFKLElBQUEsQ0FBdkIsS0FBQSxHQUFaLElBQUE7QUFDQSxNQUFJLFdBQVcsR0FBRyxJQUFJLENBQUosSUFBQSxLQUFBLE1BQUEsR0FBdUIsSUFBSSxDQUFKLElBQUEsQ0FBdkIsVUFBQSxHQUFsQixJQUFBOztBQUVBLE1BQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFuQixPQUFjLEVBQWQsRUFBK0I7QUFDN0IsV0FBTyxHQUFHLENBQ1IsbUJBQW1CLDBEQUEwRCxJQUFJLENBRG5GLEdBQ3FCLENBRFgsQ0FBVjtBQUdEOztBQUVELE1BQUksT0FBTyxHQUFHLFdBQVcsS0FBWCxJQUFBLElBQUEsV0FBVyxLQUFBLEtBQVgsQ0FBQSxHQUFXLEtBQVgsQ0FBQSxHQUFBLFdBQVcsQ0FBWCxHQUFBLENBQWQsQ0FBYyxDQUFkOztBQUVBLE1BQUksQ0FBSixPQUFBLEVBQWM7QUFDWixXQUFPLEdBQUcsQ0FBQyxtQkFBbUIsbURBQW1ELElBQUksQ0FBckYsR0FBOEIsQ0FBcEIsQ0FBVjtBQUNEOztBQUVELE1BQUksV0FBVyxJQUFJLFdBQVcsQ0FBWCxJQUFBLEdBQW5CLENBQUEsRUFBeUM7QUFDdkMsV0FBTyxHQUFHLENBQ1IsbUJBQW1CLHlEQUF5RCxJQUFJLENBRGxGLEdBQ3FCLENBRFgsQ0FBVjtBQUdEOztBQUVELFNBQU8sRUFBRSxDQUFULE9BQVMsQ0FBVDtBQUNEOztBQUVELFNBQUEsNkJBQUEsT0FBQSxJQUFBLEVBRTRCO0FBQUEsTUFEMUIsSUFDMEIsUUFEMUIsSUFDMEI7QUFBQSxNQURsQixLQUNrQixRQURsQixLQUNrQjtBQUUxQixTQUFPLFdBQVcsQ0FBWCxLQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsRUFBQSxLQUFBLENBQ0osVUFBQSxJQUFEO0FBQUEsV0FBVSxJQUFJLEdBQUcsQ0FBUCxhQUFBLENBQXNCO0FBQUUsTUFBQSxJQUFGLEVBQUUsSUFBRjtBQUFRLE1BQUEsR0FBRyxFQUFFLElBQUksQ0FBQztBQUFsQixLQUF0QixDQUFWO0FBQUEsR0FESyxDQUFQO0FBR0Q7O0FBRUQsT0FBTyxJQUFNLG9CQUFvQixHQUk3QjtBQUNGLEVBQUEsTUFBTSxFQURKLDBCQUFBO0FBRUYsRUFBQSxTQUFTLEVBQUU7QUFGVCxDQUpHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVNUdjIsIGdlbmVyYXRlU3ludGF4RXJyb3IgfSBmcm9tICdAZ2xpbW1lci9zeW50YXgnO1xuXG5pbXBvcnQgeyBFcnIsIE9rLCBSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvcmVzdWx0JztcbmltcG9ydCAqIGFzIG1pciBmcm9tICcuLi8uLi8uLi8yLWVuY29kaW5nL21pcic7XG5pbXBvcnQgeyBOb3JtYWxpemF0aW9uU3RhdGUgfSBmcm9tICcuLi8uLi9jb250ZXh0JztcbmltcG9ydCB7IFZJU0lUX0VYUFJTIH0gZnJvbSAnLi4vLi4vdmlzaXRvcnMvZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgR2VuZXJpY0tleXdvcmROb2RlLCBLZXl3b3JkRGVsZWdhdGUgfSBmcm9tICcuLi9pbXBsJztcblxuZnVuY3Rpb24gYXNzZXJ0R2V0RHluYW1pY1ZhcktleXdvcmQobm9kZTogR2VuZXJpY0tleXdvcmROb2RlKTogUmVzdWx0PEFTVHYyLkV4cHJlc3Npb25Ob2RlPiB7XG4gIGxldCBjYWxsID0gbm9kZS50eXBlID09PSAnQXBwZW5kQ29udGVudCcgPyBub2RlLnZhbHVlIDogbm9kZTtcblxuICBsZXQgbmFtZWQgPSBjYWxsLnR5cGUgPT09ICdDYWxsJyA/IGNhbGwuYXJncy5uYW1lZCA6IG51bGw7XG4gIGxldCBwb3NpdGlvbmFscyA9IGNhbGwudHlwZSA9PT0gJ0NhbGwnID8gY2FsbC5hcmdzLnBvc2l0aW9uYWwgOiBudWxsO1xuXG4gIGlmIChuYW1lZCAmJiAhbmFtZWQuaXNFbXB0eSgpKSB7XG4gICAgcmV0dXJuIEVycihcbiAgICAgIGdlbmVyYXRlU3ludGF4RXJyb3IoYCgtZ2V0LWR5bmFtaWMtdmFycykgZG9lcyBub3QgdGFrZSBhbnkgbmFtZWQgYXJndW1lbnRzYCwgbm9kZS5sb2MpXG4gICAgKTtcbiAgfVxuXG4gIGxldCB2YXJOYW1lID0gcG9zaXRpb25hbHM/Lm50aCgwKTtcblxuICBpZiAoIXZhck5hbWUpIHtcbiAgICByZXR1cm4gRXJyKGdlbmVyYXRlU3ludGF4RXJyb3IoYCgtZ2V0LWR5bmFtaWMtdmFycykgcmVxdWlyZXMgYSB2YXIgbmFtZSB0byBnZXRgLCBub2RlLmxvYykpO1xuICB9XG5cbiAgaWYgKHBvc2l0aW9uYWxzICYmIHBvc2l0aW9uYWxzLnNpemUgPiAxKSB7XG4gICAgcmV0dXJuIEVycihcbiAgICAgIGdlbmVyYXRlU3ludGF4RXJyb3IoYCgtZ2V0LWR5bmFtaWMtdmFycykgb25seSByZWNlaXZlcyBvbmUgcG9zaXRpb25hbCBhcmdgLCBub2RlLmxvYylcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIE9rKHZhck5hbWUpO1xufVxuXG5mdW5jdGlvbiB0cmFuc2xhdGVHZXREeW5hbWljVmFyS2V5d29yZChcbiAgeyBub2RlLCBzdGF0ZSB9OiB7IG5vZGU6IEdlbmVyaWNLZXl3b3JkTm9kZTsgc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSB9LFxuICBuYW1lOiBBU1R2Mi5FeHByZXNzaW9uTm9kZVxuKTogUmVzdWx0PG1pci5HZXREeW5hbWljVmFyPiB7XG4gIHJldHVybiBWSVNJVF9FWFBSUy52aXNpdChuYW1lLCBzdGF0ZSkubWFwT2soXG4gICAgKG5hbWUpID0+IG5ldyBtaXIuR2V0RHluYW1pY1Zhcih7IG5hbWUsIGxvYzogbm9kZS5sb2MgfSlcbiAgKTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldER5bmFtaWNWYXJLZXl3b3JkOiBLZXl3b3JkRGVsZWdhdGU8XG4gIEdlbmVyaWNLZXl3b3JkTm9kZSxcbiAgQVNUdjIuRXhwcmVzc2lvbk5vZGUsXG4gIG1pci5HZXREeW5hbWljVmFyXG4+ID0ge1xuICBhc3NlcnQ6IGFzc2VydEdldER5bmFtaWNWYXJLZXl3b3JkLFxuICB0cmFuc2xhdGU6IHRyYW5zbGF0ZUdldER5bmFtaWNWYXJLZXl3b3JkLFxufTtcbiJdLCJzb3VyY2VSb290IjoiIn0=