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