Skip to content

Commit cbaac77

Browse files
authored
chore: upgrade local ts version to 4.0.0-beta (typescript-eslint#2305)
1 parent 2eb3ca4 commit cbaac77

File tree

11 files changed

+72
-42
lines changed

11 files changed

+72
-42
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,9 @@
9898
"ts-jest": "^25.5.1",
9999
"ts-node": "^8.10.1",
100100
"tslint": "^6.1.2",
101-
"typescript": ">=3.3.1 <4.0.0"
101+
"typescript": ">=3.3.1 <4.0.0 || 4.0.0-beta"
102102
},
103103
"resolutions": {
104-
"typescript": "3.9.2"
104+
"typescript": "4.0.0-beta"
105105
}
106106
}

packages/scope-manager/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
"build": "tsc -b tsconfig.build.json",
3232
"postbuild": "downlevel-dts dist _ts3.4/dist",
3333
"clean": "tsc -b tsconfig.build.json --clean",
34+
"postclean": "rimraf dist",
3435
"format": "prettier --write \"./**/*.{ts,js,json,md}\" --ignore-path ../../.prettierignore",
3536
"generate:lib": "../../node_modules/.bin/ts-node --files --transpile-only tools/generate-lib.ts",
3637
"lint": "eslint . --ext .js,.ts --ignore-path='../../.eslintignore'",

packages/types/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
"format": "prettier --write \"./**/*.{ts,js,json,md}\" --ignore-path ../../.prettierignore",
3434
"generate:lib": "../../node_modules/.bin/ts-node --files --transpile-only ../scope-manager/tools/generate-lib.ts",
3535
"lint": "eslint . --ext .js,.ts --ignore-path='../../.eslintignore'",
36-
"test": "jest --coverage",
3736
"typecheck": "tsc -p tsconfig.json --noEmit"
3837
},
3938
"funding": {

packages/typescript-estree/src/ast-converter.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,13 @@ export function astConverter(
4040
simpleTraverse(estree, {
4141
enter: node => {
4242
if (!extra.range) {
43+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- TS 4.0 made this an error because the types aren't optional
44+
// @ts-expect-error
4345
delete node.range;
4446
}
4547
if (!extra.loc) {
48+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- TS 4.0 made this an error because the types aren't optional
49+
// @ts-expect-error
4650
delete node.loc;
4751
}
4852
},

packages/typescript-estree/src/convert.ts

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1983,19 +1983,12 @@ export class Converter {
19831983
raw: 'false',
19841984
});
19851985

1986-
case SyntaxKind.NullKeyword: {
1987-
if (this.inTypeMode) {
1988-
return this.createNode<TSESTree.TSNullKeyword>(node, {
1989-
type: AST_NODE_TYPES.TSNullKeyword,
1990-
});
1991-
} else {
1992-
return this.createNode<TSESTree.Literal>(node as ts.NullLiteral, {
1993-
type: AST_NODE_TYPES.Literal,
1994-
value: null,
1995-
raw: 'null',
1996-
});
1997-
}
1998-
}
1986+
case SyntaxKind.NullKeyword:
1987+
return this.createNode<TSESTree.Literal>(node, {
1988+
type: AST_NODE_TYPES.Literal,
1989+
value: null,
1990+
raw: 'null',
1991+
});
19991992

20001993
case SyntaxKind.EmptyStatement:
20011994
return this.createNode<TSESTree.EmptyStatement>(node, {
@@ -2620,9 +2613,12 @@ export class Converter {
26202613
// In TS 4.0, the `elementTypes` property was changed to `elements`.
26212614
// To support both at compile time, we cast to access the newer version
26222615
// if the former does not exist.
2623-
const elementTypes = node.elementTypes
2624-
? node.elementTypes.map(el => this.convertType(el))
2625-
: (node as any).elements.map((el: ts.Node) => this.convertType(el));
2616+
const elementTypes =
2617+
'elementTypes' in node
2618+
? (node as any).elementTypes.map((el: ts.Node) =>
2619+
this.convertType(el),
2620+
)
2621+
: node.elements.map((el: ts.Node) => this.convertType(el));
26262622

26272623
return this.createNode<TSESTree.TSTupleType>(node, {
26282624
type: AST_NODE_TYPES.TSTupleType,
@@ -2661,10 +2657,21 @@ export class Converter {
26612657
});
26622658
}
26632659
case SyntaxKind.LiteralType: {
2664-
return this.createNode<TSESTree.TSLiteralType>(node, {
2665-
type: AST_NODE_TYPES.TSLiteralType,
2666-
literal: this.convertType(node.literal),
2667-
});
2660+
if (node.literal.kind === SyntaxKind.NullKeyword) {
2661+
// 4.0.0 started nesting null types inside a LiteralType node
2662+
// but our AST is designed around the old way of null being a keyword
2663+
return this.createNode<TSESTree.TSNullKeyword>(
2664+
node.literal as ts.NullLiteral,
2665+
{
2666+
type: AST_NODE_TYPES.TSNullKeyword,
2667+
},
2668+
);
2669+
} else {
2670+
return this.createNode<TSESTree.TSLiteralType>(node, {
2671+
type: AST_NODE_TYPES.TSLiteralType,
2672+
literal: this.convertType(node.literal),
2673+
});
2674+
}
26682675
}
26692676
case SyntaxKind.TypeAssertionExpression: {
26702677
return this.createNode<TSESTree.TSTypeAssertion>(node, {

packages/typescript-estree/src/node-utils.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,11 @@ interface TokenToText {
6767
[SyntaxKind.GreaterThanGreaterThanEqualsToken]: '>>=';
6868
[SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken]: '>>>=';
6969
[SyntaxKind.AmpersandEqualsToken]: '&=';
70+
[SyntaxKind.AmpersandAmpersandEqualsToken]: '&&=';
7071
[SyntaxKind.BarEqualsToken]: '|=';
72+
[SyntaxKind.BarBarEqualsToken]: '||=';
7173
[SyntaxKind.CaretEqualsToken]: '^=';
74+
[SyntaxKind.QuestionQuestionEqualsToken]: '??=';
7275
[SyntaxKind.AtToken]: '@';
7376
[SyntaxKind.InKeyword]: 'in';
7477
[SyntaxKind.UniqueKeyword]: 'unique';

packages/typescript-estree/tests/lib/__snapshots__/convert.test.ts.snap

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ Object {
170170
},
171171
],
172172
"text": "new foo<T>()",
173-
"transformFlags": 0,
173+
"transformFlags": 9,
174174
"type": "TSSourceFile",
175175
"typeReferenceDirectives": Array [],
176176
}
@@ -190,6 +190,8 @@ Object {
190190
"line": 1,
191191
},
192192
},
193+
"localSymbol": undefined,
194+
"locals": undefined,
193195
"modifiers": undefined,
194196
"name": Object {
195197
"escapedText": "foo",
@@ -203,18 +205,21 @@ Object {
203205
"line": 1,
204206
},
205207
},
208+
"originalKeywordKind": undefined,
206209
"range": Array [
207210
5,
208211
8,
209212
],
210213
"transformFlags": 0,
211214
"type": "TSUnparsedPrologue",
212215
},
216+
"nextContainer": undefined,
213217
"range": Array [
214218
0,
215219
35,
216220
],
217-
"transformFlags": 0,
221+
"symbol": undefined,
222+
"transformFlags": 1,
218223
"type": "TSUnparsedPrologue",
219224
"typeAnnotation": null,
220225
"typeParameters": null,
@@ -289,6 +294,8 @@ Object {
289294
"line": 1,
290295
},
291296
},
297+
"localSymbol": undefined,
298+
"locals": undefined,
292299
"members": Array [],
293300
"modifiers": undefined,
294301
"name": Object {
@@ -309,11 +316,13 @@ Object {
309316
],
310317
"type": "Identifier",
311318
},
319+
"nextContainer": undefined,
312320
"range": Array [
313321
0,
314322
18,
315323
],
316-
"transformFlags": 0,
324+
"symbol": undefined,
325+
"transformFlags": 2305,
317326
"type": "TSClassDeclaration",
318327
"typeParameters": null,
319328
}
@@ -354,7 +363,7 @@ Object {
354363
0,
355364
12,
356365
],
357-
"transformFlags": 0,
366+
"transformFlags": 9,
358367
"type": "TSNewExpression",
359368
"typeParameters": Object {
360369
"loc": Object {
@@ -427,7 +436,10 @@ Object {
427436
"line": 1,
428437
},
429438
},
439+
"localSymbol": undefined,
440+
"locals": undefined,
430441
"members": Array [],
442+
"modifiers": undefined,
431443
"name": Object {
432444
"loc": Object {
433445
"end": Object {
@@ -446,11 +458,13 @@ Object {
446458
],
447459
"type": "Identifier",
448460
},
461+
"nextContainer": undefined,
449462
"range": Array [
450463
0,
451464
15,
452465
],
453-
"transformFlags": 0,
466+
"symbol": undefined,
467+
"transformFlags": 257,
454468
"type": "TSClassDeclaration",
455469
"typeParameters": Object {
456470
"loc": Object {

packages/typescript-estree/tests/lib/__snapshots__/semantic-diagnostics-enabled.test.ts.snap

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1499,17 +1499,17 @@ Object {
14991499

15001500
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-no-common-parent.src 1`] = `
15011501
Object {
1502-
"column": 36,
1503-
"index": 36,
1502+
"column": 8,
1503+
"index": 8,
15041504
"lineNumber": 1,
15051505
"message": "JSX expressions must have one parent element.",
15061506
}
15071507
`;
15081508

15091509
exports[`Parse all fixtures with "errorOnTypeScriptSyntacticAndSemanticIssues" enabled fixtures/jsx/invalid-no-common-parent-with-comment.src 1`] = `
15101510
Object {
1511-
"column": 63,
1512-
"index": 63,
1511+
"column": 8,
1512+
"index": 8,
15131513
"lineNumber": 1,
15141514
"message": "JSX expressions must have one parent element.",
15151515
}

packages/typescript-estree/tests/lib/convert.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ describe('convert', () => {
1919

2020
function fakeUnknownKind(node: ts.Node): void {
2121
ts.forEachChild(node, fakeUnknownKind);
22+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- intentionally writing to a readonly field
23+
// @ts-expect-error
2224
node.kind = ts.SyntaxKind.UnparsedPrologue;
2325
}
2426

packages/typescript-estree/tests/snapshots/typescript/errorRecovery/enum-with-keywords.src.ts.shot

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ Object {
5050
7,
5151
14,
5252
],
53-
"transformFlags": 0,
53+
"transformFlags": 1,
5454
"type": "TSPrivateKeyword",
5555
},
5656
Object {
@@ -68,7 +68,7 @@ Object {
6868
15,
6969
21,
7070
],
71-
"transformFlags": 0,
71+
"transformFlags": 1,
7272
"type": "TSPublicKeyword",
7373
},
7474
Object {
@@ -86,7 +86,7 @@ Object {
8686
22,
8787
31,
8888
],
89-
"transformFlags": 0,
89+
"transformFlags": 1,
9090
"type": "TSProtectedKeyword",
9191
},
9292
Object {
@@ -104,7 +104,7 @@ Object {
104104
32,
105105
38,
106106
],
107-
"transformFlags": 0,
107+
"transformFlags": 256,
108108
"type": "TSStaticKeyword",
109109
},
110110
Object {
@@ -122,7 +122,7 @@ Object {
122122
39,
123123
47,
124124
],
125-
"transformFlags": 0,
125+
"transformFlags": 1,
126126
"type": "TSReadonlyKeyword",
127127
},
128128
Object {
@@ -157,7 +157,7 @@ Object {
157157
57,
158158
62,
159159
],
160-
"transformFlags": 0,
160+
"transformFlags": 96,
161161
"type": "TSAsyncKeyword",
162162
},
163163
],

yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8575,10 +8575,10 @@ typedarray@^0.0.6:
85758575
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
85768576
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
85778577

8578-
typescript@*, typescript@3.9.2, "typescript@>=3.3.1 <4.0.0", typescript@^3.8.0-dev.20200111:
8579-
version "3.9.2"
8580-
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.2.tgz#64e9c8e9be6ea583c54607677dd4680a1cf35db9"
8581-
integrity sha512-q2ktq4n/uLuNNShyayit+DTobV2ApPEo/6so68JaD5ojvc/6GClBipedB9zNWYxRSAlZXAe405Rlijzl6qDiSw==
8578+
typescript@*, typescript@4.0.0-beta, "typescript@>=3.3.1 <4.0.0 || 4.0.0-beta", typescript@^3.8.0-dev.20200111:
8579+
version "4.0.0-beta"
8580+
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.0-beta.tgz#a6a65e430562131de69496a3ef5484346bc0cdd2"
8581+
integrity sha512-d3s/CogGtB2uPZ2Z8ts6eoUxxyB9PH3R27/UrzvpthuOvpCg4FWWnBbBiqJ0K4eu6eTlgmLiqQkh2dquReJweA==
85828582

85838583
uc.micro@^1.0.1, uc.micro@^1.0.5:
85848584
version "1.0.6"

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