mirror of https://github.com/sveltejs/svelte
[fix] script style end parsing (#6511)
* update script end tag parsing to allow whitespace after tagname * update style end tag parsing to allow for whitespace after tag name * handle no closing match for script and style for eof and non-eof failures * cleaning up script and style end tag parsing Co-authored-by: pngwn <hello@pngwn.io>pull/5262/head
parent
999032835b
commit
6a582af839
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"code": "unclosed-script",
|
||||||
|
"message": "<script> must have a closing tag",
|
||||||
|
"start": {
|
||||||
|
"line": 3,
|
||||||
|
"column": 22,
|
||||||
|
"character": 32
|
||||||
|
},
|
||||||
|
"pos": 32
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
<script>
|
||||||
|
|
||||||
|
<h1>Hello {name}!</h1>
|
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"code": "unclosed-style",
|
||||||
|
"message": "<style> must have a closing tag",
|
||||||
|
"start": {
|
||||||
|
"line": 3,
|
||||||
|
"column": 22,
|
||||||
|
"character": 31
|
||||||
|
},
|
||||||
|
"pos": 31
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
<style>
|
||||||
|
|
||||||
|
<h1>Hello {name}!</h1>
|
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"code": "unclosed-style",
|
||||||
|
"message": "<style> must have a closing tag",
|
||||||
|
"start": {
|
||||||
|
"line": 3,
|
||||||
|
"column": 7,
|
||||||
|
"character": 31
|
||||||
|
},
|
||||||
|
"pos": 31
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
<h1>Hello {name}!</h1>
|
||||||
|
|
||||||
|
<style>
|
@ -0,0 +1,10 @@
|
|||||||
|
<script>
|
||||||
|
let name = 'world';
|
||||||
|
</script
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
>
|
||||||
|
|
||||||
|
<h1>Hello {name}!</h1>
|
@ -0,0 +1,150 @@
|
|||||||
|
{
|
||||||
|
"html": {
|
||||||
|
"start": 51,
|
||||||
|
"end": 73,
|
||||||
|
"type": "Fragment",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"start": 49,
|
||||||
|
"end": 51,
|
||||||
|
"type": "Text",
|
||||||
|
"raw": "\n\n",
|
||||||
|
"data": "\n\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"start": 51,
|
||||||
|
"end": 73,
|
||||||
|
"type": "Element",
|
||||||
|
"name": "h1",
|
||||||
|
"attributes": [],
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"start": 55,
|
||||||
|
"end": 61,
|
||||||
|
"type": "Text",
|
||||||
|
"raw": "Hello ",
|
||||||
|
"data": "Hello "
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"start": 61,
|
||||||
|
"end": 67,
|
||||||
|
"type": "MustacheTag",
|
||||||
|
"expression": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"start": 62,
|
||||||
|
"end": 66,
|
||||||
|
"loc": {
|
||||||
|
"start": {
|
||||||
|
"line": 10,
|
||||||
|
"column": 11
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"line": 10,
|
||||||
|
"column": 15
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "name"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"start": 67,
|
||||||
|
"end": 68,
|
||||||
|
"type": "Text",
|
||||||
|
"raw": "!",
|
||||||
|
"data": "!"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"instance": {
|
||||||
|
"type": "Script",
|
||||||
|
"start": 0,
|
||||||
|
"end": 49,
|
||||||
|
"context": "default",
|
||||||
|
"content": {
|
||||||
|
"type": "Program",
|
||||||
|
"start": 8,
|
||||||
|
"end": 30,
|
||||||
|
"loc": {
|
||||||
|
"start": {
|
||||||
|
"line": 1,
|
||||||
|
"column": 0
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"line": 3,
|
||||||
|
"column": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"body": [
|
||||||
|
{
|
||||||
|
"type": "VariableDeclaration",
|
||||||
|
"start": 10,
|
||||||
|
"end": 29,
|
||||||
|
"loc": {
|
||||||
|
"start": {
|
||||||
|
"line": 2,
|
||||||
|
"column": 1
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"line": 2,
|
||||||
|
"column": 20
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"declarations": [
|
||||||
|
{
|
||||||
|
"type": "VariableDeclarator",
|
||||||
|
"start": 14,
|
||||||
|
"end": 28,
|
||||||
|
"loc": {
|
||||||
|
"start": {
|
||||||
|
"line": 2,
|
||||||
|
"column": 5
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"line": 2,
|
||||||
|
"column": 19
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"type": "Identifier",
|
||||||
|
"start": 14,
|
||||||
|
"end": 18,
|
||||||
|
"loc": {
|
||||||
|
"start": {
|
||||||
|
"line": 2,
|
||||||
|
"column": 5
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"line": 2,
|
||||||
|
"column": 9
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "name"
|
||||||
|
},
|
||||||
|
"init": {
|
||||||
|
"type": "Literal",
|
||||||
|
"start": 21,
|
||||||
|
"end": 28,
|
||||||
|
"loc": {
|
||||||
|
"start": {
|
||||||
|
"line": 2,
|
||||||
|
"column": 12
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"line": 2,
|
||||||
|
"column": 19
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"value": "world",
|
||||||
|
"raw": "'world'"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"kind": "let"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sourceType": "module"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
<div>foo</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
div {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
</style
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
>
|
@ -0,0 +1,97 @@
|
|||||||
|
{
|
||||||
|
"html": {
|
||||||
|
"start": 0,
|
||||||
|
"end": 14,
|
||||||
|
"type": "Fragment",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"start": 0,
|
||||||
|
"end": 14,
|
||||||
|
"type": "Element",
|
||||||
|
"name": "div",
|
||||||
|
"attributes": [],
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"start": 5,
|
||||||
|
"end": 8,
|
||||||
|
"type": "Text",
|
||||||
|
"raw": "foo",
|
||||||
|
"data": "foo"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"start": 14,
|
||||||
|
"end": 16,
|
||||||
|
"type": "Text",
|
||||||
|
"raw": "\n\n",
|
||||||
|
"data": "\n\n"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"css": {
|
||||||
|
"type": "Style",
|
||||||
|
"start": 16,
|
||||||
|
"end": 66,
|
||||||
|
"attributes": [],
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "Rule",
|
||||||
|
"prelude": {
|
||||||
|
"type": "SelectorList",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "Selector",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "TypeSelector",
|
||||||
|
"name": "div",
|
||||||
|
"start": 25,
|
||||||
|
"end": 28
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start": 25,
|
||||||
|
"end": 28
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start": 25,
|
||||||
|
"end": 28
|
||||||
|
},
|
||||||
|
"block": {
|
||||||
|
"type": "Block",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "Declaration",
|
||||||
|
"important": false,
|
||||||
|
"property": "color",
|
||||||
|
"value": {
|
||||||
|
"type": "Value",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"type": "Identifier",
|
||||||
|
"name": "red",
|
||||||
|
"start": 40,
|
||||||
|
"end": 43
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start": 40,
|
||||||
|
"end": 43
|
||||||
|
},
|
||||||
|
"start": 33,
|
||||||
|
"end": 43
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start": 29,
|
||||||
|
"end": 47
|
||||||
|
},
|
||||||
|
"start": 25,
|
||||||
|
"end": 47
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"content": {
|
||||||
|
"start": 23,
|
||||||
|
"end": 48,
|
||||||
|
"styles": "\n\tdiv {\n\t\tcolor: red;\n\t}\n"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue