* Parse when feature * @param {Parser} parser * @returns {WhenFeature | undefined}
(parser)
| 9790 | * @returns {WhenFeature | undefined} |
| 9791 | */ |
| 9792 | static parse(parser) { |
| 9793 | if (!parser.matchToken("when")) return; |
| 9794 | var exprs = []; |
| 9795 | do { |
| 9796 | parser.pushFollow("or"); |
| 9797 | try { |
| 9798 | exprs.push(parser.requireElement("expression")); |
| 9799 | } finally { |
| 9800 | parser.popFollow(); |
| 9801 | } |
| 9802 | } while (parser.matchToken("or")); |
| 9803 | for (var i = 0; i < exprs.length; i++) { |
| 9804 | var expr = exprs[i]; |
| 9805 | if (expr.type === "symbol" && expr.scope === "local" && !expr.name.startsWith("$") && !expr.name.startsWith(":")) { |
| 9806 | parser.raiseError( |
| 9807 | "Cannot watch local variable '" + expr.name + "'. Local variables are not reactive. Use '$" + expr.name + "' (global) or ':" + expr.name + "' (element-scoped) instead." |
| 9808 | ); |
| 9809 | } |
| 9810 | } |
| 9811 | parser.requireToken("changes"); |
| 9812 | var start = parser.requireElement("commandList"); |
| 9813 | parser.ensureTerminated(start); |
| 9814 | var feature = new _WhenFeature(exprs, start); |
| 9815 | parser.setParent(start, feature); |
| 9816 | return feature; |
| 9817 | } |
| 9818 | constructor(exprs, start) { |
| 9819 | super(); |
| 9820 | this.exprs = exprs; |
nothing calls this directly
no test coverage detected