Skip to content

Commit 6a42103

Browse files
committed
fix: throw Error instead of raw array for TypeScript compilation failures
1 parent ebbcc90 commit 6a42103

2 files changed

Lines changed: 7 additions & 81 deletions

File tree

src/TemplateMarkToJavaScriptCompiler.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,11 @@ export class TemplateMarkToJavaScriptCompiler {
105105
return compiled;
106106
}
107107
else {
108-
throw errors;
108+
const messages = errors.map(e => {
109+
const errorList = e.errors.map(d => `${d.renderedMessage} (line ${d.line}, col ${d.character})`);
110+
return `In '${e.nodeId}': ${errorList.join(', ')}`;
111+
});
112+
throw new Error(messages.join('\n'));
109113
}
110114
}
111115
}

test/__snapshots__/TemplateMarkInterpreter.test.ts.snap

Lines changed: 2 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,8 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3-
exports[`templatemark interpreter should fail to generate formula-invalid 1`] = `
4-
[
5-
{
6-
"code": " THIS IS GARBAGE ",
7-
"errors": [
8-
{
9-
"category": 1,
10-
"character": 3,
11-
"code": 2304,
12-
"id": "err-2304-468-4",
13-
"length": 4,
14-
"line": 82,
15-
"renderedMessage": "Cannot find name 'THIS'.",
16-
"start": 1785,
17-
},
18-
{
19-
"category": 1,
20-
"character": 8,
21-
"code": 2304,
22-
"id": "err-2304-473-2",
23-
"length": 2,
24-
"line": 82,
25-
"renderedMessage": "Cannot find name 'IS'.",
26-
"start": 1790,
27-
},
28-
{
29-
"category": 1,
30-
"character": 11,
31-
"code": 2304,
32-
"id": "err-2304-476-7",
33-
"length": 7,
34-
"line": 82,
35-
"renderedMessage": "Cannot find name 'GARBAGE'.",
36-
"start": 1793,
37-
},
38-
{
39-
"category": 1,
40-
"character": 3,
41-
"code": 1435,
42-
"id": "err-1435-468-4",
43-
"length": 4,
44-
"line": 82,
45-
"renderedMessage": "Unknown keyword or identifier. Did you mean 'this'?",
46-
"start": 1785,
47-
},
48-
{
49-
"category": 1,
50-
"character": 8,
51-
"code": 1434,
52-
"id": "err-1434-473-2",
53-
"length": 2,
54-
"line": 82,
55-
"renderedMessage": "Unexpected keyword or identifier.",
56-
"start": 1790,
57-
},
58-
],
59-
"nodeId": "formula_adef0feb9fc1b6e7513409c93d86aa4d9999d35608e1aaeecc07dca99bc591c8",
60-
},
61-
]
62-
`;
3+
exports[`templatemark interpreter should fail to generate formula-invalid 1`] = `[Error: In 'formula_adef0feb9fc1b6e7513409c93d86aa4d9999d35608e1aaeecc07dca99bc591c8': Cannot find name 'THIS'. (line 82, col 3), Cannot find name 'IS'. (line 82, col 8), Cannot find name 'GARBAGE'. (line 82, col 11), Unknown keyword or identifier. Did you mean 'this'? (line 82, col 3), Unexpected keyword or identifier. (line 82, col 8)]`;
634

64-
exports[`templatemark interpreter should fail to generate formula-no-method 1`] = `
65-
[
66-
{
67-
"code": " return message.missing() ",
68-
"errors": [
69-
{
70-
"category": 1,
71-
"character": 18,
72-
"code": 2339,
73-
"id": "err-2339-483-7",
74-
"length": 7,
75-
"line": 82,
76-
"renderedMessage": "Property 'missing' does not exist on type 'string'.",
77-
"start": 1800,
78-
},
79-
],
80-
"nodeId": "formula_4ef52e3adc6e5334e0925838eed0e51a372091d9b3a4499537ccf82fce5b1b25",
81-
},
82-
]
83-
`;
5+
exports[`templatemark interpreter should fail to generate formula-no-method 1`] = `[Error: In 'formula_4ef52e3adc6e5334e0925838eed0e51a372091d9b3a4499537ccf82fce5b1b25': Property 'missing' does not exist on type 'string'. (line 82, col 18)]`;
846

857
exports[`templatemark interpreter should fail to generate formula-optional-noguard 1`] = `[Error: Optional properties used without guards: message]`;
868

0 commit comments

Comments
 (0)