Skip to content

Commit 61d13b7

Browse files
authored
Merge pull request microsoft#29726 from bmeurer/modifierFlagsCache
Make modifierFlagsCache mandatory for Node objects
2 parents a94c383 + d3e2388 commit 61d13b7

File tree

80 files changed

+733
-66
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+733
-66
lines changed

src/compiler/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -609,7 +609,7 @@ namespace ts {
609609
export interface Node extends TextRange {
610610
kind: SyntaxKind;
611611
flags: NodeFlags;
612-
/* @internal */ modifierFlagsCache?: ModifierFlags;
612+
/* @internal */ modifierFlagsCache: ModifierFlags;
613613
/* @internal */ transformFlags: TransformFlags; // Flags for transforms, possibly undefined
614614
decorators?: NodeArray<Decorator>; // Array of decorators (in document order)
615615
modifiers?: ModifiersArray; // Array of modifiers

src/compiler/utilities.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3792,8 +3792,8 @@ namespace ts {
37923792
}
37933793

37943794
export function getModifierFlags(node: Node): ModifierFlags {
3795-
if (node.modifierFlagsCache! & ModifierFlags.HasComputedFlags) {
3796-
return node.modifierFlagsCache! & ~ModifierFlags.HasComputedFlags;
3795+
if (node.modifierFlagsCache & ModifierFlags.HasComputedFlags) {
3796+
return node.modifierFlagsCache & ~ModifierFlags.HasComputedFlags;
37973797
}
37983798

37993799
const flags = getModifierFlagsNoCache(node);

src/services/services.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,20 @@ namespace ts {
1616
public pos: number;
1717
public end: number;
1818
public flags: NodeFlags;
19+
public modifierFlagsCache: ModifierFlags;
20+
public transformFlags: TransformFlags;
1921
public parent: Node;
2022
public symbol!: Symbol; // Actually optional, but it was too annoying to access `node.symbol!` everywhere since in many cases we know it must be defined
2123
public jsDoc?: JSDoc[];
2224
public original?: Node;
23-
public transformFlags: TransformFlags;
2425
private _children: Node[] | undefined;
2526

2627
constructor(kind: SyntaxKind, pos: number, end: number) {
2728
this.pos = pos;
2829
this.end = end;
2930
this.flags = NodeFlags.None;
30-
this.transformFlags = undefined!; // TODO: GH#18217
31+
this.modifierFlagsCache = ModifierFlags.None;
32+
this.transformFlags = TransformFlags.None;
3133
this.parent = undefined!;
3234
this.kind = kind;
3335
}
@@ -200,16 +202,19 @@ namespace ts {
200202
public pos: number;
201203
public end: number;
202204
public flags: NodeFlags;
205+
public modifierFlagsCache: ModifierFlags;
206+
public transformFlags: TransformFlags;
203207
public parent: Node;
204208
public symbol!: Symbol;
205209
public jsDocComments?: JSDoc[];
206-
public transformFlags!: TransformFlags;
207210

208211
constructor(pos: number, end: number) {
209212
// Set properties in same order as NodeObject
210213
this.pos = pos;
211214
this.end = end;
212215
this.flags = NodeFlags.None;
216+
this.modifierFlagsCache = ModifierFlags.None;
217+
this.transformFlags = TransformFlags.None;
213218
this.parent = undefined!;
214219
}
215220

tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.@link tags.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,21 @@
22
"kind": "JSDocComment",
33
"pos": 0,
44
"end": 127,
5+
"modifierFlagsCache": 0,
6+
"transformFlags": 0,
57
"tags": {
68
"0": {
79
"kind": "JSDocTag",
810
"pos": 63,
911
"end": 68,
12+
"modifierFlagsCache": 0,
13+
"transformFlags": 0,
1014
"tagName": {
1115
"kind": "Identifier",
1216
"pos": 64,
1317
"end": 67,
18+
"modifierFlagsCache": 0,
19+
"transformFlags": 0,
1420
"escapedText": "see"
1521
},
1622
"comment": "{@link second link text} and {@link Foo|a foo} as well."

tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.Nested @param tags.json

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,60 +2,84 @@
22
"kind": "JSDocComment",
33
"pos": 0,
44
"end": 66,
5+
"modifierFlagsCache": 0,
6+
"transformFlags": 0,
57
"tags": {
68
"0": {
79
"kind": "JSDocParameterTag",
810
"pos": 6,
911
"end": 64,
12+
"modifierFlagsCache": 0,
13+
"transformFlags": 0,
1014
"tagName": {
1115
"kind": "Identifier",
1216
"pos": 7,
1317
"end": 12,
18+
"modifierFlagsCache": 0,
19+
"transformFlags": 0,
1420
"escapedText": "param"
1521
},
1622
"typeExpression": {
1723
"kind": "JSDocTypeExpression",
1824
"pos": 34,
1925
"end": 64,
26+
"modifierFlagsCache": 0,
27+
"transformFlags": 0,
2028
"type": {
2129
"kind": "JSDocTypeLiteral",
2230
"pos": 34,
2331
"end": 64,
32+
"modifierFlagsCache": 0,
33+
"transformFlags": 0,
2434
"jsDocPropertyTags": [
2535
{
2636
"kind": "JSDocParameterTag",
2737
"pos": 34,
2838
"end": 64,
39+
"modifierFlagsCache": 0,
40+
"transformFlags": 0,
2941
"tagName": {
3042
"kind": "Identifier",
3143
"pos": 35,
3244
"end": 40,
45+
"modifierFlagsCache": 0,
46+
"transformFlags": 0,
3347
"escapedText": "param"
3448
},
3549
"typeExpression": {
3650
"kind": "JSDocTypeExpression",
3751
"pos": 41,
3852
"end": 49,
53+
"modifierFlagsCache": 0,
54+
"transformFlags": 0,
3955
"type": {
4056
"kind": "StringKeyword",
4157
"pos": 42,
42-
"end": 48
58+
"end": 48,
59+
"modifierFlagsCache": 0,
60+
"transformFlags": 0
4361
}
4462
},
4563
"name": {
4664
"kind": "FirstNode",
4765
"pos": 50,
4866
"end": 53,
67+
"modifierFlagsCache": 0,
68+
"transformFlags": 0,
4969
"left": {
5070
"kind": "Identifier",
5171
"pos": 50,
5272
"end": 51,
73+
"modifierFlagsCache": 0,
74+
"transformFlags": 0,
5375
"escapedText": "o"
5476
},
5577
"right": {
5678
"kind": "Identifier",
5779
"pos": 52,
5880
"end": 53,
81+
"modifierFlagsCache": 0,
82+
"transformFlags": 0,
5983
"escapedText": "f"
6084
}
6185
},
@@ -70,6 +94,8 @@
7094
"kind": "Identifier",
7195
"pos": 22,
7296
"end": 23,
97+
"modifierFlagsCache": 0,
98+
"transformFlags": 0,
7399
"escapedText": "o"
74100
},
75101
"isNameFirst": true,

tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.argSynonymForParamTag.json

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,43 @@
22
"kind": "JSDocComment",
33
"pos": 0,
44
"end": 44,
5+
"modifierFlagsCache": 0,
6+
"transformFlags": 0,
57
"tags": {
68
"0": {
79
"kind": "JSDocParameterTag",
810
"pos": 8,
911
"end": 42,
12+
"modifierFlagsCache": 0,
13+
"transformFlags": 0,
1014
"tagName": {
1115
"kind": "Identifier",
1216
"pos": 9,
1317
"end": 12,
18+
"modifierFlagsCache": 0,
19+
"transformFlags": 0,
1420
"escapedText": "arg"
1521
},
1622
"typeExpression": {
1723
"kind": "JSDocTypeExpression",
1824
"pos": 13,
1925
"end": 21,
26+
"modifierFlagsCache": 0,
27+
"transformFlags": 0,
2028
"type": {
2129
"kind": "NumberKeyword",
2230
"pos": 14,
23-
"end": 20
31+
"end": 20,
32+
"modifierFlagsCache": 0,
33+
"transformFlags": 0
2434
}
2535
},
2636
"name": {
2737
"kind": "Identifier",
2838
"pos": 22,
2939
"end": 27,
40+
"modifierFlagsCache": 0,
41+
"transformFlags": 0,
3042
"escapedText": "name1"
3143
},
3244
"isNameFirst": false,

tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.argumentSynonymForParamTag.json

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,43 @@
22
"kind": "JSDocComment",
33
"pos": 0,
44
"end": 49,
5+
"modifierFlagsCache": 0,
6+
"transformFlags": 0,
57
"tags": {
68
"0": {
79
"kind": "JSDocParameterTag",
810
"pos": 8,
911
"end": 47,
12+
"modifierFlagsCache": 0,
13+
"transformFlags": 0,
1014
"tagName": {
1115
"kind": "Identifier",
1216
"pos": 9,
1317
"end": 17,
18+
"modifierFlagsCache": 0,
19+
"transformFlags": 0,
1420
"escapedText": "argument"
1521
},
1622
"typeExpression": {
1723
"kind": "JSDocTypeExpression",
1824
"pos": 18,
1925
"end": 26,
26+
"modifierFlagsCache": 0,
27+
"transformFlags": 0,
2028
"type": {
2129
"kind": "NumberKeyword",
2230
"pos": 19,
23-
"end": 25
31+
"end": 25,
32+
"modifierFlagsCache": 0,
33+
"transformFlags": 0
2434
}
2535
},
2636
"name": {
2737
"kind": "Identifier",
2838
"pos": 27,
2939
"end": 32,
40+
"modifierFlagsCache": 0,
41+
"transformFlags": 0,
3042
"escapedText": "name1"
3143
},
3244
"isNameFirst": false,

tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.asteriskAfterPreamble.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,7 @@
22
"kind": "JSDocComment",
33
"pos": 0,
44
"end": 23,
5+
"modifierFlagsCache": 0,
6+
"transformFlags": 0,
57
"comment": "* @type {number}"
68
}
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
{
22
"kind": "JSDocComment",
33
"pos": 0,
4-
"end": 5
4+
"end": 5,
5+
"modifierFlagsCache": 0,
6+
"transformFlags": 0
57
}

tests/baselines/reference/JSDocParsing/DocComments.parsesCorrectly.leadingAsterisk.json

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,35 @@
22
"kind": "JSDocComment",
33
"pos": 0,
44
"end": 27,
5+
"modifierFlagsCache": 0,
6+
"transformFlags": 0,
57
"tags": {
68
"0": {
79
"kind": "JSDocTypeTag",
810
"pos": 8,
911
"end": 22,
12+
"modifierFlagsCache": 0,
13+
"transformFlags": 0,
1014
"tagName": {
1115
"kind": "Identifier",
1216
"pos": 9,
1317
"end": 13,
18+
"modifierFlagsCache": 0,
19+
"transformFlags": 0,
1420
"escapedText": "type"
1521
},
1622
"typeExpression": {
1723
"kind": "JSDocTypeExpression",
1824
"pos": 14,
1925
"end": 22,
26+
"modifierFlagsCache": 0,
27+
"transformFlags": 0,
2028
"type": {
2129
"kind": "NumberKeyword",
2230
"pos": 15,
23-
"end": 21
31+
"end": 21,
32+
"modifierFlagsCache": 0,
33+
"transformFlags": 0
2434
}
2535
}
2636
},

0 commit comments

Comments
 (0)