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