Skip to content

Commit

Permalink
When reading a new string, U+2028/2029 should correctly set th… (#10944)
Browse files Browse the repository at this point in the history
* test: add test on template

* fix: update lineStart when string contains U+2028/U+2029
  • Loading branch information
JLHwung authored and nicolo-ribaudo committed Jan 3, 2020
1 parent 6ee8c97 commit 467667a
Show file tree
Hide file tree
Showing 9 changed files with 269 additions and 8 deletions.
1 change: 1 addition & 0 deletions packages/babel-parser/src/tokenizer/index.js
Expand Up @@ -1155,6 +1155,7 @@ export default class Tokenizer extends LocationParser {
) {
++this.state.pos;
++this.state.curLine;
this.state.lineStart = this.state.pos;
} else if (isNewLine(ch)) {
throw this.raise(this.state.start, "Unterminated string constant");
} else {
Expand Down
Expand Up @@ -41,7 +41,7 @@
},
"end": {
"line": 2,
"column": 15
"column": 7
}
},
"value": {
Expand All @@ -55,7 +55,7 @@
},
"end": {
"line": 2,
"column": 14
"column": 6
}
},
"value": "before
after",
Expand Down
Expand Up @@ -41,7 +41,7 @@
},
"end": {
"line": 2,
"column": 15
"column": 7
}
},
"value": {
Expand All @@ -55,7 +55,7 @@
},
"end": {
"line": 2,
"column": 14
"column": 6
}
},
"value": "before
after",
Expand Down
Expand Up @@ -40,7 +40,7 @@
},
"end": {
"line": 2,
"column": 17
"column": 8
}
},
"expression": {
Expand All @@ -54,7 +54,7 @@
},
"end": {
"line": 2,
"column": 15
"column": 6
}
},
"extra": {
Expand Down
Expand Up @@ -40,7 +40,7 @@
},
"end": {
"line": 2,
"column": 17
"column": 8
}
},
"expression": {
Expand All @@ -54,7 +54,7 @@
},
"end": {
"line": 2,
"column": 15
"column": 6
}
},
"extra": {
Expand Down
@@ -0,0 +1,2 @@
(`before
after`);
// ^ That's a U+2028 LINE SEPARATOR UTF-16 char (between 'before' and 'after')
@@ -0,0 +1,128 @@
{
"type": "File",
"start": 0,
"end": 101,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 83
}
},
"program": {
"type": "Program",
"start": 0,
"end": 101,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 83
}
},
"sourceType": "script",
"interpreter": null,
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 17,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 2,
"column": 8
}
},
"expression": {
"type": "TemplateLiteral",
"start": 1,
"end": 15,
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 2,
"column": 6
}
},
"expressions": [],
"quasis": [
{
"type": "TemplateElement",
"start": 2,
"end": 14,
"loc": {
"start": {
"line": 1,
"column": 2
},
"end": {
"line": 2,
"column": 5
}
},
"value": {
"raw": "before
after",
"cooked": "before
after"
},
"tail": true
}
],
"extra": {
"parenthesized": true,
"parenStart": 0
}
},
"trailingComments": [
{
"type": "CommentLine",
"value": " ^ That's a U+2028 LINE SEPARATOR UTF-16 char (between 'before' and 'after')",
"start": 18,
"end": 101,
"loc": {
"start": {
"line": 3,
"column": 0
},
"end": {
"line": 3,
"column": 83
}
}
}
]
}
],
"directives": []
},
"comments": [
{
"type": "CommentLine",
"value": " ^ That's a U+2028 LINE SEPARATOR UTF-16 char (between 'before' and 'after')",
"start": 18,
"end": 101,
"loc": {
"start": {
"line": 3,
"column": 0
},
"end": {
"line": 3,
"column": 83
}
}
}
]
}
@@ -0,0 +1,2 @@
(`before
after`);
// ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char (between 'before' and 'after')
@@ -0,0 +1,128 @@
{
"type": "File",
"start": 0,
"end": 106,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 88
}
},
"program": {
"type": "Program",
"start": 0,
"end": 106,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 3,
"column": 88
}
},
"sourceType": "script",
"interpreter": null,
"body": [
{
"type": "ExpressionStatement",
"start": 0,
"end": 17,
"loc": {
"start": {
"line": 1,
"column": 0
},
"end": {
"line": 2,
"column": 8
}
},
"expression": {
"type": "TemplateLiteral",
"start": 1,
"end": 15,
"loc": {
"start": {
"line": 1,
"column": 1
},
"end": {
"line": 2,
"column": 6
}
},
"expressions": [],
"quasis": [
{
"type": "TemplateElement",
"start": 2,
"end": 14,
"loc": {
"start": {
"line": 1,
"column": 2
},
"end": {
"line": 2,
"column": 5
}
},
"value": {
"raw": "before
after",
"cooked": "before
after"
},
"tail": true
}
],
"extra": {
"parenthesized": true,
"parenStart": 0
}
},
"trailingComments": [
{
"type": "CommentLine",
"value": " ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char (between 'before' and 'after')",
"start": 18,
"end": 106,
"loc": {
"start": {
"line": 3,
"column": 0
},
"end": {
"line": 3,
"column": 88
}
}
}
]
}
],
"directives": []
},
"comments": [
{
"type": "CommentLine",
"value": " ^ That's a U+2029 PARAGRAPH SEPARATOR UTF-16 char (between 'before' and 'after')",
"start": 18,
"end": 106,
"loc": {
"start": {
"line": 3,
"column": 0
},
"end": {
"line": 3,
"column": 88
}
}
}
]
}

0 comments on commit 467667a

Please sign in to comment.