Skip to content

Commit acdd67e

Browse files
Set synthesized array literal's parent in malformed JSON files (#3166)
1 parent e8823a2 commit acdd67e

6 files changed

Lines changed: 65 additions & 1 deletion

File tree

internal/parser/parser.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ func (p *Parser) parseJSONText() *ast.SourceFile {
199199

200200
var expression *ast.Expression
201201
if es, ok := expressions.([]*ast.Expression); ok {
202-
expression = p.factory.NewArrayLiteralExpression(p.newNodeList(core.NewTextRange(pos, p.nodePos()), es), false)
202+
expression = p.finishNode(p.factory.NewArrayLiteralExpression(p.newNodeList(core.NewTextRange(pos, p.nodePos()), es), false), pos)
203203
} else {
204204
expression = expressions.(*ast.Expression)
205205
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
data.json(2,1): error TS1012: Unexpected token.
2+
3+
4+
==== data.json (1 errors) ====
5+
{"a": 1}
6+
{"b": 2}
7+
~
8+
!!! error TS1012: Unexpected token.
9+
10+
==== index.ts (0 errors) ====
11+
import data from "./data.json";
12+
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//// [tests/cases/compiler/jsonImportMultipleTopLevelObjects.ts] ////
2+
3+
//// [data.json]
4+
{"a": 1}
5+
{"b": 2}
6+
7+
//// [index.ts]
8+
import data from "./data.json";
9+
10+
11+
//// [index.js]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//// [tests/cases/compiler/jsonImportMultipleTopLevelObjects.ts] ////
2+
3+
=== data.json ===
4+
{"a": 1}
5+
>"a" : Symbol("a", Decl(data.json, 0, 1))
6+
7+
{"b": 2}
8+
>"b" : Symbol("b", Decl(data.json, 1, 1))
9+
10+
=== index.ts ===
11+
import data from "./data.json";
12+
>data : Symbol(data, Decl(index.ts, 0, 6))
13+
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
//// [tests/cases/compiler/jsonImportMultipleTopLevelObjects.ts] ////
2+
3+
=== data.json ===
4+
{"a": 1}
5+
>{"a": 1}{"b": 2} : ({ a: number; } | { b: number; })[]
6+
>{"a": 1} : { a: number; }
7+
>"a" : number
8+
>1 : 1
9+
10+
{"b": 2}
11+
>{"b": 2} : { b: number; }
12+
>"b" : number
13+
>2 : 2
14+
15+
=== index.ts ===
16+
import data from "./data.json";
17+
>data : ({ a: number; b?: undefined; } | { a?: undefined; b: number; })[]
18+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// @resolveJsonModule: true
2+
// @module: preserve
3+
// @moduleResolution: bundler
4+
5+
// @filename: data.json
6+
{"a": 1}
7+
{"b": 2}
8+
9+
// @filename: index.ts
10+
import data from "./data.json";

0 commit comments

Comments
 (0)