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

File tree

12 files changed

+12213
-1632
lines changed

12 files changed

+12213
-1632
lines changed

analyze-scope.js

Lines changed: 3 additions & 3 deletions
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

Lines changed: 9 additions & 15 deletions
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

Lines changed: 9 additions & 9 deletions
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

Lines changed: 20 additions & 20 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy