handle invalid expression inside each expression

pull/14733/head
Simon Holthausen 2 years ago
parent 9100120a33
commit 2ba4b95dd6

@ -180,7 +180,20 @@ function open(parser) {
parser.allow_whitespace();
}
parser.eat('}', true);
const matches = parser.eat('}', true, false);
// Parser may have read the `as` as part of the expression (e.g. in `{#each foo. as x}`)
if (!matches && parser.template.slice(parser.index - 4, parser.index) === ' as ') {
const prev_index = parser.index;
context = read_pattern(parser);
parser.eat('}', true);
expression = {
type: 'Identifier',
name: '',
start: expression.start,
end: prev_index - 4
};
}
/** @type {AST.EachBlock} */
const block = parser.append({

@ -13,3 +13,5 @@ asd{a.}asd
{#if x.}{/if}
{#each array as item (item.)}{/each}
{#each obj. as item}{/each}

@ -2,7 +2,7 @@
"html": {
"type": "Fragment",
"start": 0,
"end": 217,
"end": 246,
"children": [
{
"type": "Element",
@ -308,6 +308,43 @@
"end": 208,
"name": ""
}
},
{
"type": "Text",
"start": 217,
"end": 219,
"raw": "\n\n",
"data": "\n\n"
},
{
"type": "EachBlock",
"start": 219,
"end": 246,
"children": [],
"context": {
"type": "Identifier",
"name": "item",
"start": 234,
"loc": {
"start": {
"line": 17,
"column": 15,
"character": 234
},
"end": {
"line": 17,
"column": 19,
"character": 238
}
},
"end": 238
},
"expression": {
"type": "Identifier",
"name": "",
"start": 226,
"end": 230
}
}
]
}

@ -13,3 +13,5 @@ asd{a.}asd
{#if x.}{/if}
{#each array as item (item.)}{/each}
{#each obj. as item}{/each}

@ -2,7 +2,7 @@
"css": null,
"js": [],
"start": 0,
"end": 217,
"end": 246,
"type": "Root",
"fragment": {
"type": "Fragment",
@ -327,6 +327,46 @@
"end": 208,
"name": ""
}
},
{
"type": "Text",
"start": 217,
"end": 219,
"raw": "\n\n",
"data": "\n\n"
},
{
"type": "EachBlock",
"start": 219,
"end": 246,
"expression": {
"type": "Identifier",
"name": "",
"start": 226,
"end": 230
},
"body": {
"type": "Fragment",
"nodes": []
},
"context": {
"type": "Identifier",
"name": "item",
"start": 234,
"loc": {
"start": {
"line": 17,
"column": 15,
"character": 234
},
"end": {
"line": 17,
"column": 19,
"character": 238
}
},
"end": 238
}
}
]
},

Loading…
Cancel
Save