-
-
Notifications
You must be signed in to change notification settings - Fork 354
/
error-message.mjs
105 lines (102 loc) · 2.5 KB
/
error-message.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import outdent from 'outdent';
import {getTester} from './utils/test.mjs';
const {test} = getTester(import.meta);
test.snapshot({
valid: [
'throw new Error(\'error\')',
'throw new TypeError(\'error\')',
'throw new MyCustomError(\'error\')',
'throw new MyCustomError()',
'throw generateError()',
'throw foo()',
'throw err',
'throw 1',
outdent`
const err = TypeError('error');
throw err;
`,
// Should not check other argument
'new Error("message", 0, 0)',
// We don't know the value
'new Error(foo)',
'new Error(...foo)',
// #915, not a issue anymore, we don't track `ThrowStatement`
outdent`
/* global x */
const a = x;
throw x;
`,
// #1431: Do not fail if Error is shadowed
outdent`
const Error = function () {};
const err = new Error({
name: 'Unauthorized',
});
`,
],
invalid: [
'throw new Error()',
'throw Error()',
'throw new Error(\'\')',
'throw new Error(``)',
outdent`
const err = new Error();
throw err;
`,
outdent`
let err = 1;
err = new Error();
throw err;
`,
outdent`
let err = new Error();
err = 1;
throw err;
`,
'const foo = new TypeError()',
'const foo = new SyntaxError()',
outdent`
const errorMessage = Object.freeze({errorMessage: 1}).errorMessage;
throw new Error(errorMessage)
`,
'throw new Error([])',
'throw new Error([foo])',
'throw new Error([0][0])',
'throw new Error({})',
'throw new Error({foo})',
'throw new Error({foo: 0}.foo)',
'throw new Error(lineNumber=2)',
'const error = new RangeError;',
],
});
// `AggregateError`
test.snapshot({
valid: [
'new AggregateError(errors, "message")',
'new NotAggregateError(errors)',
'new AggregateError(...foo)',
'new AggregateError(...foo, "")',
'new AggregateError(errors, ...foo)',
'new AggregateError(errors, message, "")',
'new AggregateError("", message, "")',
],
invalid: [
'new AggregateError(errors)',
'AggregateError(errors)',
'new AggregateError(errors, "")',
'new AggregateError(errors, ``)',
'new AggregateError(errors, "", extraArgument)',
outdent`
const errorMessage = Object.freeze({errorMessage: 1}).errorMessage;
throw new AggregateError(errors, errorMessage)
`,
'new AggregateError(errors, [])',
'new AggregateError(errors, [foo])',
'new AggregateError(errors, [0][0])',
'new AggregateError(errors, {})',
'new AggregateError(errors, {foo})',
'new AggregateError(errors, {foo: 0}.foo)',
'new AggregateError(errors, lineNumber=2)',
'const error = new AggregateError;',
],
});