Skip to content

Commit 73170f0

Browse files
authored
Don't swallow exceptions in Parser.run (#111)
Also, this adds a few fixtures for testing the missing final newline.
1 parent 61a3fe0 commit 73170f0

14 files changed

+112
-9
lines changed

lib/parser.mjs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,10 @@ export default class Parser {
1313
}
1414

1515
run(iterable) {
16-
const stream = iterable instanceof Stream
16+
let stream = iterable instanceof Stream
1717
? iterable
1818
: new Stream(iterable);
19-
try {
20-
return this.parse(stream);
21-
} catch (err) {
22-
// console.error(err.message);
23-
return new Failure(err.message, stream);
24-
}
19+
return this.parse(stream);
2520
}
2621

2722
get abstract() {

lib/stream.mjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ export default class Stream {
77
: length;
88
}
99

10-
// Get the first value from the iterable.
10+
// Get the element at the cursor.
1111
head() {
1212
if (this.length < 0) {
13-
throw new TypeError("index out of range");
13+
return undefined;
1414
}
1515

1616
if (this.length === 0) {

test/fixtures/eof_comment.ftl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
### NOTE: Disable final newline insertion when editing this file.
2+
3+
# No EOL

test/fixtures/eof_comment.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"type": "Resource",
3+
"body": [
4+
{
5+
"type": "ResourceComment",
6+
"annotations": [],
7+
"content": "NOTE: Disable final newline insertion when editing this file.\n"
8+
},
9+
{
10+
"type": "Comment",
11+
"annotations": [],
12+
"content": "No EOL"
13+
}
14+
]
15+
}

test/fixtures/eof_empty.ftl

Whitespace-only changes.

test/fixtures/eof_empty.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type": "Resource",
3+
"body": []
4+
}

test/fixtures/eof_id.ftl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
### NOTE: Disable final newline insertion when editing this file.
2+
3+
message-id

test/fixtures/eof_id.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"type": "Resource",
3+
"body": [
4+
{
5+
"type": "ResourceComment",
6+
"annotations": [],
7+
"content": "NOTE: Disable final newline insertion when editing this file.\n"
8+
},
9+
{
10+
"type": "Junk",
11+
"annotations": [],
12+
"content": "message-id"
13+
}
14+
]
15+
}

test/fixtures/eof_id_equals.ftl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
### NOTE: Disable final newline insertion when editing this file.
2+
3+
message-id =

test/fixtures/eof_id_equals.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"type": "Resource",
3+
"body": [
4+
{
5+
"type": "ResourceComment",
6+
"annotations": [],
7+
"content": "NOTE: Disable final newline insertion when editing this file.\n"
8+
},
9+
{
10+
"type": "Junk",
11+
"annotations": [],
12+
"content": "message-id ="
13+
}
14+
]
15+
}

test/fixtures/eof_junk.ftl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
### NOTE: Disable final newline insertion when editing this file.
2+
3+
000

test/fixtures/eof_junk.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"type": "Resource",
3+
"body": [
4+
{
5+
"type": "ResourceComment",
6+
"annotations": [],
7+
"content": "NOTE: Disable final newline insertion when editing this file.\n"
8+
},
9+
{
10+
"type": "Junk",
11+
"annotations": [],
12+
"content": "000"
13+
}
14+
]
15+
}

test/fixtures/eof_value.ftl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
### NOTE: Disable final newline insertion when editing this file.
2+
3+
no-eol = No EOL

test/fixtures/eof_value.json

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"type": "Resource",
3+
"body": [
4+
{
5+
"type": "ResourceComment",
6+
"annotations": [],
7+
"content": "NOTE: Disable final newline insertion when editing this file.\n"
8+
},
9+
{
10+
"type": "Message",
11+
"annotations": [],
12+
"id": {
13+
"type": "Identifier",
14+
"name": "no-eol"
15+
},
16+
"value": {
17+
"type": "Pattern",
18+
"elements": [
19+
{
20+
"type": "TextElement",
21+
"value": "No EOL"
22+
}
23+
]
24+
},
25+
"attributes": [],
26+
"comment": null
27+
}
28+
]
29+
}

0 commit comments

Comments
 (0)