Skip to content
This repository was archived by the owner on Jan 19, 2019. It is now read-only.

Commit a8fee90

Browse files
armano2JamesHenry
authored andcommitted
Fix: sourceType not correctly set in AST when provided in options. (#583)
1 parent 567e8db commit a8fee90

12 files changed

+12213
-1632
lines changed

analyze-scope.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -778,17 +778,17 @@ class Referencer extends OriginalReferencer {
778778
}
779779
}
780780

781-
module.exports = function(ast, parserOptions, extraOptions) {
781+
module.exports = function(ast, parserOptions) {
782782
const options = {
783783
ignoreEval: true,
784784
optimistic: false,
785785
directive: false,
786786
nodejsScope:
787-
ast.sourceType === "script" &&
787+
parserOptions.sourceType === "script" &&
788788
(parserOptions.ecmaFeatures &&
789789
parserOptions.ecmaFeatures.globalReturn) === true,
790790
impliedStrict: false,
791-
sourceType: extraOptions.sourceType,
791+
sourceType: parserOptions.sourceType,
792792
ecmaVersion: parserOptions.ecmaVersion || 2018,
793793
childVisitorKeys,
794794
fallback

parser.js

+9-15
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,15 @@ exports.parseForESLint = function parseForESLint(code, options) {
3333
}
3434
}
3535

36+
// https://eslint.org/docs/user-guide/configuring#specifying-parser-options
37+
// if sourceType is not provided by default eslint expect that it will be set to "script"
38+
options.sourceType = options.sourceType || "script";
39+
if (options.sourceType !== "module" && options.sourceType !== "script") {
40+
options.sourceType = "script";
41+
}
42+
3643
const ast = parse(code, options);
37-
const extraOptions = {
38-
sourceType: ast.sourceType
39-
};
44+
ast.sourceType = options.sourceType;
4045

4146
traverser.traverse(ast, {
4247
enter: node => {
@@ -47,23 +52,12 @@ exports.parseForESLint = function parseForESLint(code, options) {
4752
node.type = `TSEmptyBody${node.type}`;
4853
}
4954
break;
50-
51-
// Import/Export declarations cannot appear in script.
52-
// But if those appear only in namespace/module blocks, `ast.sourceType` was `"script"`.
53-
// This doesn't modify `ast.sourceType` directly for backward compatibility.
54-
case "ImportDeclaration":
55-
case "ExportAllDeclaration":
56-
case "ExportDefaultDeclaration":
57-
case "ExportNamedDeclaration":
58-
extraOptions.sourceType = "module";
59-
break;
60-
6155
// no default
6256
}
6357
}
6458
});
6559

66-
const scopeManager = analyzeScope(ast, options, extraOptions);
60+
const scopeManager = analyzeScope(ast, options);
6761
return { ast, scopeManager, visitorKeys };
6862
};
6963

tests/lib/__snapshots__/basics.js.snap

+9-9
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ Object {
109109
0,
110110
16,
111111
],
112-
"sourceType": "script",
112+
"sourceType": "module",
113113
"tokens": Array [
114114
Object {
115115
"loc": Object {
@@ -515,7 +515,7 @@ Object {
515515
0,
516516
59,
517517
],
518-
"sourceType": "script",
518+
"sourceType": "module",
519519
"tokens": Array [
520520
Object {
521521
"loc": Object {
@@ -1194,7 +1194,7 @@ Object {
11941194
0,
11951195
60,
11961196
],
1197-
"sourceType": "script",
1197+
"sourceType": "module",
11981198
"tokens": Array [
11991199
Object {
12001200
"loc": Object {
@@ -1562,7 +1562,7 @@ Object {
15621562
0,
15631563
17,
15641564
],
1565-
"sourceType": "script",
1565+
"sourceType": "module",
15661566
"tokens": Array [
15671567
Object {
15681568
"loc": Object {
@@ -1731,7 +1731,7 @@ Object {
17311731
0,
17321732
15,
17331733
],
1734-
"sourceType": "script",
1734+
"sourceType": "module",
17351735
"tokens": Array [
17361736
Object {
17371737
"loc": Object {
@@ -1993,7 +1993,7 @@ Object {
19931993
0,
19941994
23,
19951995
],
1996-
"sourceType": "script",
1996+
"sourceType": "module",
19971997
"tokens": Array [
19981998
Object {
19991999
"loc": Object {
@@ -2236,7 +2236,7 @@ Object {
22362236
0,
22372237
13,
22382238
],
2239-
"sourceType": "script",
2239+
"sourceType": "module",
22402240
"tokens": Array [
22412241
Object {
22422242
"loc": Object {
@@ -2537,7 +2537,7 @@ Object {
25372537
0,
25382538
39,
25392539
],
2540-
"sourceType": "script",
2540+
"sourceType": "module",
25412541
"tokens": Array [
25422542
Object {
25432543
"loc": Object {
@@ -2997,7 +2997,7 @@ Object {
29972997
0,
29982998
17,
29992999
],
3000-
"sourceType": "script",
3000+
"sourceType": "module",
30013001
"tokens": Array [
30023002
Object {
30033003
"loc": Object {

tests/lib/__snapshots__/comments.js.snap

+20-20
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ Object {
110110
0,
111111
27,
112112
],
113-
"sourceType": "script",
113+
"sourceType": "module",
114114
"tokens": Array [
115115
Object {
116116
"loc": Object {
@@ -335,7 +335,7 @@ Object {
335335
10,
336336
31,
337337
],
338-
"sourceType": "script",
338+
"sourceType": "module",
339339
"tokens": Array [
340340
Object {
341341
"loc": Object {
@@ -984,7 +984,7 @@ Object {
984984
99,
985985
137,
986986
],
987-
"sourceType": "script",
987+
"sourceType": "module",
988988
"tokens": Array [
989989
Object {
990990
"loc": Object {
@@ -1489,7 +1489,7 @@ Object {
14891489
0,
14901490
98,
14911491
],
1492-
"sourceType": "script",
1492+
"sourceType": "module",
14931493
"tokens": Array [
14941494
Object {
14951495
"loc": Object {
@@ -2193,7 +2193,7 @@ Object {
21932193
0,
21942194
129,
21952195
],
2196-
"sourceType": "script",
2196+
"sourceType": "module",
21972197
"tokens": Array [
21982198
Object {
21992199
"loc": Object {
@@ -2598,7 +2598,7 @@ Object {
25982598
12,
25992599
12,
26002600
],
2601-
"sourceType": "script",
2601+
"sourceType": "module",
26022602
"tokens": Array [],
26032603
"type": "Program",
26042604
}
@@ -2752,7 +2752,7 @@ Object {
27522752
6,
27532753
35,
27542754
],
2755-
"sourceType": "script",
2755+
"sourceType": "module",
27562756
"tokens": Array [
27572757
Object {
27582758
"loc": Object {
@@ -2946,7 +2946,7 @@ Object {
29462946
0,
29472947
35,
29482948
],
2949-
"sourceType": "script",
2949+
"sourceType": "module",
29502950
"tokens": Array [
29512951
Object {
29522952
"loc": Object {
@@ -3204,7 +3204,7 @@ Object {
32043204
0,
32053205
38,
32063206
],
3207-
"sourceType": "script",
3207+
"sourceType": "module",
32083208
"tokens": Array [
32093209
Object {
32103210
"loc": Object {
@@ -3504,7 +3504,7 @@ Object {
35043504
0,
35053505
61,
35063506
],
3507-
"sourceType": "script",
3507+
"sourceType": "module",
35083508
"tokens": Array [
35093509
Object {
35103510
"loc": Object {
@@ -3822,7 +3822,7 @@ Object {
38223822
0,
38233823
64,
38243824
],
3825-
"sourceType": "script",
3825+
"sourceType": "module",
38263826
"tokens": Array [
38273827
Object {
38283828
"loc": Object {
@@ -4105,7 +4105,7 @@ Object {
41054105
0,
41064106
62,
41074107
],
4108-
"sourceType": "script",
4108+
"sourceType": "module",
41094109
"tokens": Array [
41104110
Object {
41114111
"loc": Object {
@@ -4406,7 +4406,7 @@ Object {
44064406
0,
44074407
64,
44084408
],
4409-
"sourceType": "script",
4409+
"sourceType": "module",
44104410
"tokens": Array [
44114411
Object {
44124412
"loc": Object {
@@ -4799,7 +4799,7 @@ Object {
47994799
0,
48004800
69,
48014801
],
4802-
"sourceType": "script",
4802+
"sourceType": "module",
48034803
"tokens": Array [
48044804
Object {
48054805
"loc": Object {
@@ -5297,7 +5297,7 @@ Object {
52975297
0,
52985298
92,
52995299
],
5300-
"sourceType": "script",
5300+
"sourceType": "module",
53015301
"tokens": Array [
53025302
Object {
53035303
"loc": Object {
@@ -5890,7 +5890,7 @@ Object {
58905890
0,
58915891
142,
58925892
],
5893-
"sourceType": "script",
5893+
"sourceType": "module",
58945894
"tokens": Array [
58955895
Object {
58965896
"loc": Object {
@@ -6442,7 +6442,7 @@ Object {
64426442
0,
64436443
59,
64446444
],
6445-
"sourceType": "script",
6445+
"sourceType": "module",
64466446
"tokens": Array [
64476447
Object {
64486448
"loc": Object {
@@ -6911,7 +6911,7 @@ Object {
69116911
0,
69126912
134,
69136913
],
6914-
"sourceType": "script",
6914+
"sourceType": "module",
69156915
"tokens": Array [
69166916
Object {
69176917
"loc": Object {
@@ -7996,7 +7996,7 @@ Object {
79967996
0,
79977997
288,
79987998
],
7999-
"sourceType": "script",
7999+
"sourceType": "module",
80008000
"tokens": Array [
80018001
Object {
80028002
"loc": Object {
@@ -9115,7 +9115,7 @@ Object {
91159115
0,
91169116
65,
91179117
],
9118-
"sourceType": "script",
9118+
"sourceType": "module",
91199119
"tokens": Array [
91209120
Object {
91219121
"loc": Object {

0 commit comments

Comments
 (0)