@zzzen/pyright-internal 1.2.0-dev.20261018 → 1.2.0-dev.20261108

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/dist/analyzer/binder.js +29 -12
  2. package/dist/analyzer/binder.js.map +1 -1
  3. package/dist/analyzer/checker.js +4 -0
  4. package/dist/analyzer/checker.js.map +1 -1
  5. package/dist/analyzer/codeFlowEngine.js +3 -3
  6. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  7. package/dist/analyzer/constructorTransform.js +12 -0
  8. package/dist/analyzer/constructorTransform.js.map +1 -1
  9. package/dist/analyzer/constructors.d.ts +1 -1
  10. package/dist/analyzer/constructors.js +1 -1
  11. package/dist/analyzer/constructors.js.map +1 -1
  12. package/dist/analyzer/dataClasses.js +14 -5
  13. package/dist/analyzer/dataClasses.js.map +1 -1
  14. package/dist/analyzer/decorators.d.ts +2 -2
  15. package/dist/analyzer/decorators.js +22 -2
  16. package/dist/analyzer/decorators.js.map +1 -1
  17. package/dist/analyzer/functionTransform.d.ts +5 -0
  18. package/dist/analyzer/functionTransform.js +6 -3
  19. package/dist/analyzer/functionTransform.js.map +1 -1
  20. package/dist/analyzer/missingBindingMetadata.d.ts +6 -0
  21. package/dist/analyzer/missingBindingMetadata.js +22 -0
  22. package/dist/analyzer/missingBindingMetadata.js.map +1 -0
  23. package/dist/analyzer/namedTuples.d.ts +5 -1
  24. package/dist/analyzer/namedTuples.js +64 -35
  25. package/dist/analyzer/namedTuples.js.map +1 -1
  26. package/dist/analyzer/operations.js +45 -1
  27. package/dist/analyzer/operations.js.map +1 -1
  28. package/dist/analyzer/parseTreeUtils.d.ts +2 -0
  29. package/dist/analyzer/parseTreeUtils.js +43 -0
  30. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  31. package/dist/analyzer/patternMatching.d.ts +5 -1
  32. package/dist/analyzer/patternMatching.js +6 -1
  33. package/dist/analyzer/patternMatching.js.map +1 -1
  34. package/dist/analyzer/program.d.ts +3 -0
  35. package/dist/analyzer/program.js +71 -1
  36. package/dist/analyzer/program.js.map +1 -1
  37. package/dist/analyzer/sentinel.js +7 -1
  38. package/dist/analyzer/sentinel.js.map +1 -1
  39. package/dist/analyzer/sourceFile.js +13 -6
  40. package/dist/analyzer/sourceFile.js.map +1 -1
  41. package/dist/analyzer/tupleComparison.d.ts +6 -0
  42. package/dist/analyzer/tupleComparison.js +731 -0
  43. package/dist/analyzer/tupleComparison.js.map +1 -0
  44. package/dist/analyzer/tuples.d.ts +1 -1
  45. package/dist/analyzer/tuples.js +35 -4
  46. package/dist/analyzer/tuples.js.map +1 -1
  47. package/dist/analyzer/typeCacheUtils.d.ts +1 -0
  48. package/dist/analyzer/typeCacheUtils.js +10 -0
  49. package/dist/analyzer/typeCacheUtils.js.map +1 -1
  50. package/dist/analyzer/typeEvaluator/boundMethodSpecialization.d.ts +15 -0
  51. package/dist/analyzer/typeEvaluator/boundMethodSpecialization.js +98 -0
  52. package/dist/analyzer/typeEvaluator/boundMethodSpecialization.js.map +1 -0
  53. package/dist/analyzer/typeEvaluator/classConstruction.d.ts +25 -0
  54. package/dist/analyzer/typeEvaluator/classConstruction.js +251 -0
  55. package/dist/analyzer/typeEvaluator/classConstruction.js.map +1 -0
  56. package/dist/analyzer/typeEvaluator/collectionInference.d.ts +41 -0
  57. package/dist/analyzer/typeEvaluator/collectionInference.js +695 -0
  58. package/dist/analyzer/typeEvaluator/collectionInference.js.map +1 -0
  59. package/dist/analyzer/typeEvaluator/diagnostics.d.ts +33 -0
  60. package/dist/analyzer/typeEvaluator/diagnostics.js +198 -0
  61. package/dist/analyzer/typeEvaluator/diagnostics.js.map +1 -0
  62. package/dist/analyzer/typeEvaluator/evaluatorCore.d.ts +80 -0
  63. package/dist/analyzer/typeEvaluator/evaluatorCore.js +1126 -0
  64. package/dist/analyzer/typeEvaluator/evaluatorCore.js.map +1 -0
  65. package/dist/analyzer/typeEvaluator/evaluatorNarrowing.d.ts +17 -0
  66. package/dist/analyzer/typeEvaluator/evaluatorNarrowing.js +370 -0
  67. package/dist/analyzer/typeEvaluator/evaluatorNarrowing.js.map +1 -0
  68. package/dist/analyzer/typeEvaluator/expressionEvaluation.d.ts +81 -0
  69. package/dist/analyzer/typeEvaluator/expressionEvaluation.js +1802 -0
  70. package/dist/analyzer/typeEvaluator/expressionEvaluation.js.map +1 -0
  71. package/dist/analyzer/typeEvaluator/flowAnalysis.d.ts +33 -0
  72. package/dist/analyzer/typeEvaluator/flowAnalysis.js +217 -0
  73. package/dist/analyzer/typeEvaluator/flowAnalysis.js.map +1 -0
  74. package/dist/analyzer/typeEvaluator/internals.d.ts +137 -0
  75. package/dist/analyzer/typeEvaluator/internals.js +10 -0
  76. package/dist/analyzer/typeEvaluator/internals.js.map +1 -0
  77. package/dist/analyzer/typeEvaluator/literalTypes.d.ts +3 -0
  78. package/dist/analyzer/typeEvaluator/literalTypes.js +52 -0
  79. package/dist/analyzer/typeEvaluator/literalTypes.js.map +1 -0
  80. package/dist/analyzer/typeEvaluator/memberResolution.d.ts +79 -0
  81. package/dist/analyzer/typeEvaluator/memberResolution.js +1007 -0
  82. package/dist/analyzer/typeEvaluator/memberResolution.js.map +1 -0
  83. package/dist/analyzer/typeEvaluator/overrideValidation.d.ts +15 -0
  84. package/dist/analyzer/typeEvaluator/overrideValidation.js +422 -0
  85. package/dist/analyzer/typeEvaluator/overrideValidation.js.map +1 -0
  86. package/dist/analyzer/typeEvaluator/returnTypeInference.d.ts +33 -0
  87. package/dist/analyzer/typeEvaluator/returnTypeInference.js +226 -0
  88. package/dist/analyzer/typeEvaluator/returnTypeInference.js.map +1 -0
  89. package/dist/analyzer/typeEvaluator/specialFormCreation.d.ts +39 -0
  90. package/dist/analyzer/typeEvaluator/specialFormCreation.js +1728 -0
  91. package/dist/analyzer/typeEvaluator/specialFormCreation.js.map +1 -0
  92. package/dist/analyzer/typeEvaluator/tupleUnpacking.d.ts +2 -0
  93. package/dist/analyzer/typeEvaluator/tupleUnpacking.js +36 -0
  94. package/dist/analyzer/typeEvaluator/tupleUnpacking.js.map +1 -0
  95. package/dist/analyzer/typeEvaluator/typeCompatibility.d.ts +36 -0
  96. package/dist/analyzer/typeEvaluator/typeCompatibility.js +1320 -0
  97. package/dist/analyzer/typeEvaluator/typeCompatibility.js.map +1 -0
  98. package/dist/analyzer/typeEvaluator/typeGuardNarrowing.d.ts +186 -0
  99. package/dist/analyzer/typeEvaluator/typeGuardNarrowing.js +1683 -0
  100. package/dist/analyzer/typeEvaluator/typeGuardNarrowing.js.map +1 -0
  101. package/dist/analyzer/typeEvaluator/typeVarHandling.d.ts +48 -0
  102. package/dist/analyzer/typeEvaluator/typeVarHandling.js +756 -0
  103. package/dist/analyzer/typeEvaluator/typeVarHandling.js.map +1 -0
  104. package/dist/analyzer/typeEvaluator.d.ts +3 -31
  105. package/dist/analyzer/typeEvaluator.js +5140 -13656
  106. package/dist/analyzer/typeEvaluator.js.map +1 -1
  107. package/dist/analyzer/typeEvaluatorTypes.d.ts +1 -1
  108. package/dist/analyzer/typeEvaluatorTypes.js +2 -3
  109. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  110. package/dist/analyzer/typeGuards.d.ts +3 -2
  111. package/dist/analyzer/typeGuards.js +236 -1375
  112. package/dist/analyzer/typeGuards.js.map +1 -1
  113. package/dist/analyzer/typeUtils.js +9 -2
  114. package/dist/analyzer/typeUtils.js.map +1 -1
  115. package/dist/analyzer/typedDicts.js +111 -0
  116. package/dist/analyzer/typedDicts.js.map +1 -1
  117. package/dist/analyzer/types.d.ts +14 -0
  118. package/dist/analyzer/types.js +215 -10
  119. package/dist/analyzer/types.js.map +1 -1
  120. package/dist/browser/browserConnection.d.ts +12 -0
  121. package/dist/browser/browserConnection.js +23 -0
  122. package/dist/browser/browserConnection.js.map +1 -0
  123. package/dist/browser/browserFileSystem.d.ts +73 -0
  124. package/dist/browser/browserFileSystem.js +578 -0
  125. package/dist/browser/browserFileSystem.js.map +1 -0
  126. package/dist/browser/browserHost.d.ts +4 -0
  127. package/dist/browser/browserHost.js +10 -0
  128. package/dist/browser/browserHost.js.map +1 -0
  129. package/dist/browser/browserProcess.d.ts +1 -0
  130. package/dist/browser/browserProcess.js +17 -0
  131. package/dist/browser/browserProcess.js.map +1 -0
  132. package/dist/browser/browserServer.d.ts +8 -0
  133. package/dist/browser/browserServer.js +32 -0
  134. package/dist/browser/browserServer.js.map +1 -0
  135. package/dist/browser/cancellation/common.d.ts +10 -0
  136. package/dist/browser/cancellation/common.js +114 -0
  137. package/dist/browser/cancellation/common.js.map +1 -0
  138. package/dist/browser/cancellation/objectURLReceiverStrategy.d.ts +5 -0
  139. package/dist/browser/cancellation/objectURLReceiverStrategy.js +37 -0
  140. package/dist/browser/cancellation/objectURLReceiverStrategy.js.map +1 -0
  141. package/dist/browser/cancellation/objectURLSenderStrategy.d.ts +7 -0
  142. package/dist/browser/cancellation/objectURLSenderStrategy.js +32 -0
  143. package/dist/browser/cancellation/objectURLSenderStrategy.js.map +1 -0
  144. package/dist/browser/worker.d.ts +1 -0
  145. package/dist/browser/worker.js +33 -0
  146. package/dist/browser/worker.js.map +1 -0
  147. package/dist/common/processUtils.d.ts +6 -0
  148. package/dist/common/processUtils.js +56 -1
  149. package/dist/common/processUtils.js.map +1 -1
  150. package/dist/common/textEditTracker.js +1 -1
  151. package/dist/common/textEditTracker.js.map +1 -1
  152. package/dist/common/windowsProcessTree.d.ts +2 -0
  153. package/dist/common/windowsProcessTree.js +23 -0
  154. package/dist/common/windowsProcessTree.js.map +1 -1
  155. package/dist/common/windowsProcessTree.json +23 -3
  156. package/dist/languageServerBase.d.ts +3 -0
  157. package/dist/languageServerBase.js +44 -12
  158. package/dist/languageServerBase.js.map +1 -1
  159. package/dist/languageService/callHierarchyProvider.js +6 -6
  160. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  161. package/dist/languageService/referencesProvider.js +3 -3
  162. package/dist/languageService/referencesProvider.js.map +1 -1
  163. package/dist/languageService/renameProvider.js +1 -1
  164. package/dist/languageService/renameProvider.js.map +1 -1
  165. package/dist/languageService/symbolIndexer.js +2 -2
  166. package/dist/languageService/symbolIndexer.js.map +1 -1
  167. package/dist/localization/localize.d.ts +2 -0
  168. package/dist/localization/localize.js +2 -0
  169. package/dist/localization/localize.js.map +1 -1
  170. package/dist/localization/package.nls.en-us.json +8 -0
  171. package/dist/parser/parseTreeTokenReuse.d.ts +34 -0
  172. package/dist/parser/parseTreeTokenReuse.js +897 -0
  173. package/dist/parser/parseTreeTokenReuse.js.map +1 -0
  174. package/dist/parser/tokenizer.d.ts +10 -1
  175. package/dist/parser/tokenizer.js +184 -130
  176. package/dist/parser/tokenizer.js.map +1 -1
  177. package/dist/pyrightServer.d.ts +34 -0
  178. package/dist/pyrightServer.js +239 -0
  179. package/dist/pyrightServer.js.map +1 -0
  180. package/dist/server.d.ts +3 -23
  181. package/dist/server.js +12 -232
  182. package/dist/server.js.map +1 -1
  183. package/dist/tests/benchmarks/typeInferenceComparison.d.ts +1 -0
  184. package/dist/tests/benchmarks/typeInferenceComparison.js +1235 -0
  185. package/dist/tests/benchmarks/typeInferenceComparison.js.map +1 -0
  186. package/dist/tests/benchmarks/typeInferencePyrightEntry.d.ts +1 -0
  187. package/dist/tests/benchmarks/typeInferencePyrightEntry.js +53 -0
  188. package/dist/tests/benchmarks/typeInferencePyrightEntry.js.map +1 -0
  189. package/dist/tests/browserCancellation.test.d.ts +1 -0
  190. package/dist/tests/browserCancellation.test.js +63 -0
  191. package/dist/tests/browserCancellation.test.js.map +1 -0
  192. package/dist/tests/browserServer.test.d.ts +1 -0
  193. package/dist/tests/browserServer.test.js +177 -0
  194. package/dist/tests/browserServer.test.js.map +1 -0
  195. package/dist/tests/checker.test.js +8 -0
  196. package/dist/tests/checker.test.js.map +1 -1
  197. package/dist/tests/constraintSolver.test.js +45 -0
  198. package/dist/tests/constraintSolver.test.js.map +1 -1
  199. package/dist/tests/fourSlashParser.test.js +35 -0
  200. package/dist/tests/fourSlashParser.test.js.map +1 -1
  201. package/dist/tests/harness/fourslash/fourSlashParser.js +14 -4
  202. package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
  203. package/dist/tests/languageServer.test.js +15 -0
  204. package/dist/tests/languageServer.test.js.map +1 -1
  205. package/dist/tests/lsp/languageServer.js +6 -6
  206. package/dist/tests/lsp/languageServer.js.map +1 -1
  207. package/dist/tests/mypyPrimerAnalysis.test.js +148 -1
  208. package/dist/tests/mypyPrimerAnalysis.test.js.map +1 -1
  209. package/dist/tests/typeCacheUtils.test.js +46 -0
  210. package/dist/tests/typeCacheUtils.test.js.map +1 -1
  211. package/dist/tests/typeEvaluator1.test.js +78 -1
  212. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  213. package/dist/tests/typeEvaluator2.test.js +54 -1
  214. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  215. package/dist/tests/typeEvaluator3.test.js +4 -0
  216. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  217. package/dist/tests/typeEvaluator4.test.js +42 -3
  218. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  219. package/dist/tests/typeEvaluator6.test.js +35 -0
  220. package/dist/tests/typeEvaluator6.test.js.map +1 -1
  221. package/dist/tests/typeEvaluator7.test.js +414 -0
  222. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  223. package/dist/tests/typeEvaluator8.test.js +1291 -1
  224. package/dist/tests/typeEvaluator8.test.js.map +1 -1
  225. package/dist/tests/typeUtils.test.js +28 -0
  226. package/dist/tests/typeUtils.test.js.map +1 -1
  227. package/dist/tests/types.test.js +55 -0
  228. package/dist/tests/types.test.js.map +1 -1
  229. package/dist/typeServer/programWrapper.js +8 -2
  230. package/dist/typeServer/programWrapper.js.map +1 -1
  231. package/dist/typeServer/server.d.ts +12 -2
  232. package/dist/typeServer/server.js +97 -0
  233. package/dist/typeServer/server.js.map +1 -1
  234. package/dist/typeServer/stubGenerator.js +136 -3
  235. package/dist/typeServer/stubGenerator.js.map +1 -1
  236. package/dist/typeServer/typeServerConversionUtils.js +13 -0
  237. package/dist/typeServer/typeServerConversionUtils.js.map +1 -1
  238. package/package.json +3 -1
@@ -0,0 +1,897 @@
1
+ "use strict";
2
+ /*
3
+ * parseTreeTokenReuse.ts
4
+ * Copyright (c) Microsoft Corporation.
5
+ * Licensed under the MIT license.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.ParseTreeTokenCursor = void 0;
9
+ class ParseTreeTokenCursor {
10
+ constructor(root) {
11
+ this._frames = [];
12
+ this._depth = -1;
13
+ this._offset = -1;
14
+ this._previousStart = -1;
15
+ this._root = root;
16
+ }
17
+ next(start, length, type) {
18
+ if (this._offset !== start) {
19
+ this._offset = start;
20
+ this._tokenAtOffset = undefined;
21
+ if (this._atOffset?.length) {
22
+ this._atOffset.length = 0;
23
+ }
24
+ let token = this._lookahead ?? this._nextToken();
25
+ while (token && token.start < start) {
26
+ token = this._nextToken();
27
+ }
28
+ if (token && token.start === start) {
29
+ const firstToken = token;
30
+ token = this._nextToken();
31
+ if (!token || token.start !== start) {
32
+ this._tokenAtOffset = firstToken;
33
+ }
34
+ else {
35
+ // Only same-position collisions need a buffer; most positions have zero or one candidate.
36
+ const atOffset = (this._atOffset ?? (this._atOffset = []));
37
+ atOffset.push(firstToken);
38
+ do {
39
+ atOffset.push(token);
40
+ token = this._nextToken();
41
+ } while (token && token.start === start);
42
+ }
43
+ }
44
+ this._lookahead = token;
45
+ }
46
+ const token = this._tokenAtOffset;
47
+ if (token && token.length === length && isTokenType(token, type)) {
48
+ this._tokenAtOffset = undefined;
49
+ return token;
50
+ }
51
+ const atOffset = this._atOffset;
52
+ if (!atOffset) {
53
+ return undefined;
54
+ }
55
+ for (let index = 0; index < atOffset.length; index++) {
56
+ const token = atOffset[index];
57
+ if (token.length === length && isTokenType(token, type)) {
58
+ atOffset[index] = atOffset[atOffset.length - 1];
59
+ atOffset.pop();
60
+ return token;
61
+ }
62
+ }
63
+ return undefined;
64
+ }
65
+ _nextToken() {
66
+ if (this._root) {
67
+ const root = this._root;
68
+ this._root = undefined;
69
+ this._enter(root);
70
+ }
71
+ while (this._depth >= 0) {
72
+ const frame = this._frames[this._depth];
73
+ let token;
74
+ if (frame.child && (!frame.token || frame.child.start < frame.token.start)) {
75
+ const child = frame.child;
76
+ this._advanceChild(frame);
77
+ switch (child.nodeType) {
78
+ case 38 /* ParseNodeType.Name */:
79
+ case 49 /* ParseNodeType.String */:
80
+ token = child.d.token;
81
+ break;
82
+ case 40 /* ParseNodeType.Number */:
83
+ case 14 /* ParseNodeType.Constant */:
84
+ case 21 /* ParseNodeType.Ellipsis */:
85
+ case 8 /* ParseNodeType.Break */:
86
+ case 15 /* ParseNodeType.Continue */:
87
+ case 42 /* ParseNodeType.Pass */:
88
+ continue;
89
+ default:
90
+ this._enter(child);
91
+ continue;
92
+ }
93
+ }
94
+ else if (frame.token) {
95
+ token = frame.token;
96
+ this._advanceToken(frame);
97
+ }
98
+ else {
99
+ frame.node = undefined;
100
+ frame.child = null;
101
+ frame.assignmentTarget = undefined;
102
+ frame.assignmentValue = undefined;
103
+ this._depth--;
104
+ continue;
105
+ }
106
+ if (token === this._previousToken ||
107
+ (token.length === 0 && (token.type === 7 /* TokenType.Identifier */ || token.type === 8 /* TokenType.Keyword */))) {
108
+ continue;
109
+ }
110
+ if (token.start < this._previousStart) {
111
+ throw new Error('Retained parse-tree tokens are not in source order');
112
+ }
113
+ this._previousToken = token;
114
+ this._previousStart = token.start;
115
+ return token;
116
+ }
117
+ return undefined;
118
+ }
119
+ _enter(node) {
120
+ const depth = ++this._depth;
121
+ let frame = this._frames[depth];
122
+ if (!frame) {
123
+ frame = {
124
+ node: undefined,
125
+ childIndex: 0,
126
+ tokenIndex: 0,
127
+ child: null,
128
+ token: null,
129
+ assignmentTarget: undefined,
130
+ assignmentValue: undefined,
131
+ fieldIndex: 0,
132
+ formatIndex: 0,
133
+ };
134
+ this._frames.push(frame);
135
+ }
136
+ frame.node = node;
137
+ frame.childIndex = 0;
138
+ frame.tokenIndex = 0;
139
+ frame.assignmentTarget = undefined;
140
+ frame.assignmentValue = undefined;
141
+ frame.fieldIndex = 0;
142
+ frame.formatIndex = 0;
143
+ if (node.nodeType === 3 /* ParseNodeType.Assignment */) {
144
+ let target = node;
145
+ while (target.d.rightExpr.nodeType === 3 /* ParseNodeType.Assignment */) {
146
+ target = target.d.rightExpr;
147
+ }
148
+ frame.assignmentTarget = target;
149
+ frame.assignmentValue = target.d.rightExpr;
150
+ }
151
+ this._updateChild(frame);
152
+ frame.token = getNodeToken(node, 0);
153
+ while (frame.token === undefined) {
154
+ frame.token = getNodeToken(node, ++frame.tokenIndex);
155
+ }
156
+ }
157
+ _getChild(frame) {
158
+ const node = frame.node;
159
+ if (node.nodeType === 3 /* ParseNodeType.Assignment */) {
160
+ if (frame.assignmentTarget) {
161
+ return frame.assignmentTarget.d.leftExpr;
162
+ }
163
+ return frame.childIndex === 1 ? frame.assignmentValue : null;
164
+ }
165
+ if (node.nodeType === 30 /* ParseNodeType.FormatString */) {
166
+ const field = node.d.fieldExprs[frame.fieldIndex];
167
+ const format = node.d.formatExprs[frame.formatIndex];
168
+ return field && (!format || field.start <= format.start) ? field : format ?? null;
169
+ }
170
+ return getChildAt(node, frame.childIndex);
171
+ }
172
+ _advanceChild(frame) {
173
+ const node = frame.node;
174
+ if (node.nodeType === 3 /* ParseNodeType.Assignment */ && frame.assignmentTarget) {
175
+ if (frame.assignmentTarget === node) {
176
+ frame.assignmentTarget = undefined;
177
+ frame.childIndex = 1;
178
+ }
179
+ else {
180
+ const parent = frame.assignmentTarget.parent;
181
+ if (parent?.nodeType !== 3 /* ParseNodeType.Assignment */ || parent.d.rightExpr !== frame.assignmentTarget) {
182
+ throw new Error('Chained assignment has inconsistent parent links');
183
+ }
184
+ frame.assignmentTarget = parent;
185
+ }
186
+ }
187
+ else if (node.nodeType === 30 /* ParseNodeType.FormatString */) {
188
+ if (frame.child === node.d.fieldExprs[frame.fieldIndex]) {
189
+ frame.fieldIndex++;
190
+ }
191
+ else {
192
+ frame.formatIndex++;
193
+ }
194
+ }
195
+ else {
196
+ frame.childIndex++;
197
+ }
198
+ this._updateChild(frame);
199
+ }
200
+ _updateChild(frame) {
201
+ frame.child = this._getChild(frame);
202
+ while (frame.child === undefined) {
203
+ frame.childIndex++;
204
+ frame.child = this._getChild(frame);
205
+ }
206
+ }
207
+ _advanceToken(frame) {
208
+ frame.token = getNodeToken(frame.node, ++frame.tokenIndex);
209
+ while (frame.token === undefined) {
210
+ frame.token = getNodeToken(frame.node, ++frame.tokenIndex);
211
+ }
212
+ }
213
+ }
214
+ exports.ParseTreeTokenCursor = ParseTreeTokenCursor;
215
+ function getNodeToken(node, index) {
216
+ switch (node.nodeType) {
217
+ case 38 /* ParseNodeType.Name */:
218
+ case 49 /* ParseNodeType.String */:
219
+ return index === 0 ? node.d.token : null;
220
+ case 7 /* ParseNodeType.BinaryOperation */:
221
+ case 55 /* ParseNodeType.UnaryOperation */:
222
+ return index === 0 ? node.d.operatorToken : null;
223
+ case 30 /* ParseNodeType.FormatString */:
224
+ return index === 0
225
+ ? node.d.token
226
+ : index <= node.d.middleTokens.length
227
+ ? node.d.middleTokens[index - 1]
228
+ : null;
229
+ case 22 /* ParseNodeType.If */:
230
+ case 57 /* ParseNodeType.While */:
231
+ case 53 /* ParseNodeType.Try */:
232
+ case 31 /* ParseNodeType.Function */:
233
+ case 10 /* ParseNodeType.Class */:
234
+ case 47 /* ParseNodeType.StatementList */:
235
+ case 77 /* ParseNodeType.TypeAlias */:
236
+ case 63 /* ParseNodeType.Match */:
237
+ return index === 0 ? node.d.firstToken : null;
238
+ case 29 /* ParseNodeType.For */:
239
+ case 58 /* ParseNodeType.With */:
240
+ return index === 0 ? node.d.asyncToken : index === 1 ? node.d.firstToken : null;
241
+ case 12 /* ParseNodeType.ComprehensionFor */:
242
+ return index === 0 ? node.d.asyncToken : null;
243
+ case 28 /* ParseNodeType.Except */:
244
+ return index === 0 ? node.d.exceptToken : null;
245
+ case 4 /* ParseNodeType.AssignmentExpression */:
246
+ return index === 0 ? node.d.walrusToken : null;
247
+ case 6 /* ParseNodeType.Await */:
248
+ return index === 0 ? node.d.awaitToken : null;
249
+ case 56 /* ParseNodeType.Unpack */:
250
+ return index === 0 ? node.d.starToken : null;
251
+ case 18 /* ParseNodeType.Dictionary */:
252
+ return index === 0 ? node.d.trailingCommaToken : null;
253
+ case 23 /* ParseNodeType.Import */:
254
+ return index === 0 ? node.d.lazyToken : null;
255
+ case 25 /* ParseNodeType.ImportFrom */:
256
+ return index === 0 ? node.d.lazyToken : index === 1 ? node.d.wildcardToken : null;
257
+ default:
258
+ return null;
259
+ }
260
+ }
261
+ function getChildAt(node, index) {
262
+ switch (node.nodeType) {
263
+ case 0 /* ParseNodeType.Error */: {
264
+ if (node.d.decorators && index < node.d.decorators.length)
265
+ return node.d.decorators[index];
266
+ index -= node.d.decorators?.length ?? 0;
267
+ if (index === 0)
268
+ return node.d.child;
269
+ index--;
270
+ return null;
271
+ }
272
+ case 1 /* ParseNodeType.Argument */: {
273
+ if (index === 0)
274
+ return node.d.name;
275
+ index--;
276
+ if (index === 0)
277
+ return node.d.valueExpr;
278
+ index--;
279
+ return null;
280
+ }
281
+ case 2 /* ParseNodeType.Assert */: {
282
+ if (index === 0)
283
+ return node.d.testExpr;
284
+ index--;
285
+ if (index === 0)
286
+ return node.d.exceptionExpr;
287
+ index--;
288
+ return null;
289
+ }
290
+ case 4 /* ParseNodeType.AssignmentExpression */: {
291
+ if (index === 0)
292
+ return node.d.name;
293
+ index--;
294
+ if (index === 0)
295
+ return node.d.rightExpr;
296
+ index--;
297
+ return null;
298
+ }
299
+ case 3 /* ParseNodeType.Assignment */: {
300
+ if (index === 0)
301
+ return node.d.leftExpr;
302
+ index--;
303
+ if (index === 0)
304
+ return node.d.rightExpr;
305
+ index--;
306
+ return null;
307
+ }
308
+ case 5 /* ParseNodeType.AugmentedAssignment */: {
309
+ if (index === 0)
310
+ return node.d.leftExpr;
311
+ index--;
312
+ if (index === 0)
313
+ return node.d.rightExpr;
314
+ index--;
315
+ return null;
316
+ }
317
+ case 6 /* ParseNodeType.Await */: {
318
+ if (index === 0)
319
+ return node.d.expr;
320
+ index--;
321
+ return null;
322
+ }
323
+ case 7 /* ParseNodeType.BinaryOperation */: {
324
+ if (index === 0)
325
+ return node.d.leftExpr;
326
+ index--;
327
+ if (index === 0)
328
+ return node.d.rightExpr;
329
+ index--;
330
+ return null;
331
+ }
332
+ case 8 /* ParseNodeType.Break */: {
333
+ return null;
334
+ }
335
+ case 9 /* ParseNodeType.Call */: {
336
+ if (index === 0)
337
+ return node.d.leftExpr;
338
+ index--;
339
+ if (index < node.d.args.length)
340
+ return node.d.args[index];
341
+ index -= node.d.args.length;
342
+ return null;
343
+ }
344
+ case 64 /* ParseNodeType.Case */: {
345
+ if (index === 0)
346
+ return node.d.pattern;
347
+ index--;
348
+ if (index === 0)
349
+ return node.d.guardExpr;
350
+ index--;
351
+ if (index === 0)
352
+ return node.d.suite;
353
+ index--;
354
+ return null;
355
+ }
356
+ case 10 /* ParseNodeType.Class */: {
357
+ if (index < node.d.decorators.length)
358
+ return node.d.decorators[index];
359
+ index -= node.d.decorators.length;
360
+ if (index === 0)
361
+ return node.d.name;
362
+ index--;
363
+ if (index === 0)
364
+ return node.d.typeParams;
365
+ index--;
366
+ if (index < node.d.arguments.length)
367
+ return node.d.arguments[index];
368
+ index -= node.d.arguments.length;
369
+ if (index === 0)
370
+ return node.d.suite;
371
+ index--;
372
+ return null;
373
+ }
374
+ case 11 /* ParseNodeType.Comprehension */: {
375
+ if (index === 0)
376
+ return node.d.expr;
377
+ index--;
378
+ if (index < node.d.forIfNodes.length)
379
+ return node.d.forIfNodes[index];
380
+ index -= node.d.forIfNodes.length;
381
+ return null;
382
+ }
383
+ case 12 /* ParseNodeType.ComprehensionFor */: {
384
+ if (index === 0)
385
+ return node.d.targetExpr;
386
+ index--;
387
+ if (index === 0)
388
+ return node.d.iterableExpr;
389
+ index--;
390
+ return null;
391
+ }
392
+ case 13 /* ParseNodeType.ComprehensionIf */: {
393
+ if (index === 0)
394
+ return node.d.testExpr;
395
+ index--;
396
+ return null;
397
+ }
398
+ case 14 /* ParseNodeType.Constant */: {
399
+ return null;
400
+ }
401
+ case 15 /* ParseNodeType.Continue */: {
402
+ return null;
403
+ }
404
+ case 16 /* ParseNodeType.Decorator */: {
405
+ if (index === 0)
406
+ return node.d.expr;
407
+ index--;
408
+ return null;
409
+ }
410
+ case 17 /* ParseNodeType.Del */: {
411
+ if (index < node.d.targets.length)
412
+ return node.d.targets[index];
413
+ index -= node.d.targets.length;
414
+ return null;
415
+ }
416
+ case 18 /* ParseNodeType.Dictionary */: {
417
+ if (index < node.d.items.length)
418
+ return node.d.items[index];
419
+ index -= node.d.items.length;
420
+ return null;
421
+ }
422
+ case 19 /* ParseNodeType.DictionaryExpandEntry */: {
423
+ if (index === 0)
424
+ return node.d.expr;
425
+ index--;
426
+ return null;
427
+ }
428
+ case 20 /* ParseNodeType.DictionaryKeyEntry */: {
429
+ if (index === 0)
430
+ return node.d.keyExpr;
431
+ index--;
432
+ if (index === 0)
433
+ return node.d.valueExpr;
434
+ index--;
435
+ return null;
436
+ }
437
+ case 21 /* ParseNodeType.Ellipsis */: {
438
+ return null;
439
+ }
440
+ case 22 /* ParseNodeType.If */: {
441
+ if (index === 0)
442
+ return node.d.testExpr;
443
+ index--;
444
+ if (index === 0)
445
+ return node.d.ifSuite;
446
+ index--;
447
+ if (index === 0)
448
+ return node.d.elseSuite;
449
+ index--;
450
+ return null;
451
+ }
452
+ case 23 /* ParseNodeType.Import */: {
453
+ if (index < node.d.list.length)
454
+ return node.d.list[index];
455
+ index -= node.d.list.length;
456
+ return null;
457
+ }
458
+ case 24 /* ParseNodeType.ImportAs */: {
459
+ if (index === 0)
460
+ return node.d.module;
461
+ index--;
462
+ if (index === 0)
463
+ return node.d.alias;
464
+ index--;
465
+ return null;
466
+ }
467
+ case 25 /* ParseNodeType.ImportFrom */: {
468
+ if (index === 0)
469
+ return node.d.module;
470
+ index--;
471
+ if (index < node.d.imports.length)
472
+ return node.d.imports[index];
473
+ index -= node.d.imports.length;
474
+ return null;
475
+ }
476
+ case 26 /* ParseNodeType.ImportFromAs */: {
477
+ if (index === 0)
478
+ return node.d.name;
479
+ index--;
480
+ if (index === 0)
481
+ return node.d.alias;
482
+ index--;
483
+ return null;
484
+ }
485
+ case 27 /* ParseNodeType.Index */: {
486
+ if (index === 0)
487
+ return node.d.leftExpr;
488
+ index--;
489
+ if (index < node.d.items.length)
490
+ return node.d.items[index];
491
+ index -= node.d.items.length;
492
+ return null;
493
+ }
494
+ case 28 /* ParseNodeType.Except */: {
495
+ if (index === 0)
496
+ return node.d.typeExpr;
497
+ index--;
498
+ if (index === 0)
499
+ return node.d.name;
500
+ index--;
501
+ if (index === 0)
502
+ return node.d.exceptSuite;
503
+ index--;
504
+ return null;
505
+ }
506
+ case 29 /* ParseNodeType.For */: {
507
+ if (index === 0)
508
+ return node.d.targetExpr;
509
+ index--;
510
+ if (index === 0)
511
+ return node.d.iterableExpr;
512
+ index--;
513
+ if (index === 0)
514
+ return node.d.forSuite;
515
+ index--;
516
+ if (index === 0)
517
+ return node.d.elseSuite;
518
+ index--;
519
+ return null;
520
+ }
521
+ case 30 /* ParseNodeType.FormatString */: {
522
+ if (index < node.d.fieldExprs.length)
523
+ return node.d.fieldExprs[index];
524
+ index -= node.d.fieldExprs.length;
525
+ if (node.d.formatExprs && index < node.d.formatExprs.length)
526
+ return node.d.formatExprs[index];
527
+ index -= node.d.formatExprs?.length ?? 0;
528
+ return null;
529
+ }
530
+ case 31 /* ParseNodeType.Function */: {
531
+ if (index < node.d.decorators.length)
532
+ return node.d.decorators[index];
533
+ index -= node.d.decorators.length;
534
+ if (index === 0)
535
+ return node.d.name;
536
+ index--;
537
+ if (index === 0)
538
+ return node.d.typeParams;
539
+ index--;
540
+ if (index < node.d.params.length)
541
+ return node.d.params[index];
542
+ index -= node.d.params.length;
543
+ if (index === 0)
544
+ return node.d.returnAnnotation;
545
+ index--;
546
+ if (index === 0)
547
+ return node.d.suite;
548
+ index--;
549
+ return null;
550
+ }
551
+ case 62 /* ParseNodeType.FunctionAnnotation */: {
552
+ if (index < node.d.paramAnnotations.length)
553
+ return node.d.paramAnnotations[index];
554
+ index -= node.d.paramAnnotations.length;
555
+ if (index === 0)
556
+ return node.d.returnAnnotation;
557
+ index--;
558
+ return null;
559
+ }
560
+ case 32 /* ParseNodeType.Global */: {
561
+ if (index < node.d.targets.length)
562
+ return node.d.targets[index];
563
+ index -= node.d.targets.length;
564
+ return null;
565
+ }
566
+ case 33 /* ParseNodeType.Lambda */: {
567
+ if (index < node.d.params.length)
568
+ return node.d.params[index];
569
+ index -= node.d.params.length;
570
+ if (index === 0)
571
+ return node.d.expr;
572
+ index--;
573
+ return null;
574
+ }
575
+ case 34 /* ParseNodeType.List */: {
576
+ if (index < node.d.items.length)
577
+ return node.d.items[index];
578
+ index -= node.d.items.length;
579
+ return null;
580
+ }
581
+ case 63 /* ParseNodeType.Match */: {
582
+ if (index === 0)
583
+ return node.d.expr;
584
+ index--;
585
+ if (index < node.d.cases.length)
586
+ return node.d.cases[index];
587
+ index -= node.d.cases.length;
588
+ return null;
589
+ }
590
+ case 35 /* ParseNodeType.MemberAccess */: {
591
+ if (index === 0)
592
+ return node.d.leftExpr;
593
+ index--;
594
+ if (index === 0)
595
+ return node.d.member;
596
+ index--;
597
+ return null;
598
+ }
599
+ case 37 /* ParseNodeType.ModuleName */: {
600
+ if (index < node.d.nameParts.length)
601
+ return node.d.nameParts[index];
602
+ index -= node.d.nameParts.length;
603
+ return null;
604
+ }
605
+ case 36 /* ParseNodeType.Module */: {
606
+ if (index < node.d.statements.length)
607
+ return node.d.statements[index];
608
+ index -= node.d.statements.length;
609
+ return null;
610
+ }
611
+ case 38 /* ParseNodeType.Name */: {
612
+ return null;
613
+ }
614
+ case 39 /* ParseNodeType.Nonlocal */: {
615
+ if (index < node.d.targets.length)
616
+ return node.d.targets[index];
617
+ index -= node.d.targets.length;
618
+ return null;
619
+ }
620
+ case 40 /* ParseNodeType.Number */: {
621
+ return null;
622
+ }
623
+ case 41 /* ParseNodeType.Parameter */: {
624
+ if (index === 0)
625
+ return node.d.name;
626
+ index--;
627
+ if (index === 0)
628
+ return node.d.annotation;
629
+ index--;
630
+ if (index === 0)
631
+ return node.d.defaultValue;
632
+ index--;
633
+ return null;
634
+ }
635
+ case 42 /* ParseNodeType.Pass */: {
636
+ return null;
637
+ }
638
+ case 66 /* ParseNodeType.PatternAs */: {
639
+ if (index < node.d.orPatterns.length)
640
+ return node.d.orPatterns[index];
641
+ index -= node.d.orPatterns.length;
642
+ if (index === 0)
643
+ return node.d.target;
644
+ index--;
645
+ return null;
646
+ }
647
+ case 68 /* ParseNodeType.PatternClass */: {
648
+ if (index === 0)
649
+ return node.d.className;
650
+ index--;
651
+ if (index < node.d.args.length)
652
+ return node.d.args[index];
653
+ index -= node.d.args.length;
654
+ return null;
655
+ }
656
+ case 74 /* ParseNodeType.PatternClassArgument */: {
657
+ if (index === 0)
658
+ return node.d.name;
659
+ index--;
660
+ if (index === 0)
661
+ return node.d.pattern;
662
+ index--;
663
+ return null;
664
+ }
665
+ case 69 /* ParseNodeType.PatternCapture */: {
666
+ if (index === 0)
667
+ return node.d.target;
668
+ index--;
669
+ return null;
670
+ }
671
+ case 67 /* ParseNodeType.PatternLiteral */: {
672
+ if (index === 0)
673
+ return node.d.expr;
674
+ index--;
675
+ return null;
676
+ }
677
+ case 72 /* ParseNodeType.PatternMappingExpandEntry */: {
678
+ if (index === 0)
679
+ return node.d.target;
680
+ index--;
681
+ return null;
682
+ }
683
+ case 71 /* ParseNodeType.PatternMappingKeyEntry */: {
684
+ if (index === 0)
685
+ return node.d.keyPattern;
686
+ index--;
687
+ if (index === 0)
688
+ return node.d.valuePattern;
689
+ index--;
690
+ return null;
691
+ }
692
+ case 70 /* ParseNodeType.PatternMapping */: {
693
+ if (index < node.d.entries.length)
694
+ return node.d.entries[index];
695
+ index -= node.d.entries.length;
696
+ return null;
697
+ }
698
+ case 65 /* ParseNodeType.PatternSequence */: {
699
+ if (index < node.d.entries.length)
700
+ return node.d.entries[index];
701
+ index -= node.d.entries.length;
702
+ return null;
703
+ }
704
+ case 73 /* ParseNodeType.PatternValue */: {
705
+ if (index === 0)
706
+ return node.d.expr;
707
+ index--;
708
+ return null;
709
+ }
710
+ case 43 /* ParseNodeType.Raise */: {
711
+ if (index === 0)
712
+ return node.d.expr;
713
+ index--;
714
+ if (index === 0)
715
+ return node.d.fromExpr;
716
+ index--;
717
+ return null;
718
+ }
719
+ case 44 /* ParseNodeType.Return */: {
720
+ if (index === 0)
721
+ return node.d.expr;
722
+ index--;
723
+ return null;
724
+ }
725
+ case 45 /* ParseNodeType.Set */: {
726
+ if (index < node.d.items.length)
727
+ return node.d.items[index];
728
+ index -= node.d.items.length;
729
+ return null;
730
+ }
731
+ case 46 /* ParseNodeType.Slice */: {
732
+ if (index === 0)
733
+ return node.d.startValue;
734
+ index--;
735
+ if (index === 0)
736
+ return node.d.endValue;
737
+ index--;
738
+ if (index === 0)
739
+ return node.d.stepValue;
740
+ index--;
741
+ return null;
742
+ }
743
+ case 47 /* ParseNodeType.StatementList */: {
744
+ if (index < node.d.statements.length)
745
+ return node.d.statements[index];
746
+ index -= node.d.statements.length;
747
+ return null;
748
+ }
749
+ case 48 /* ParseNodeType.StringList */: {
750
+ if (index < node.d.strings.length)
751
+ return node.d.strings[index];
752
+ index -= node.d.strings.length;
753
+ return null;
754
+ }
755
+ case 49 /* ParseNodeType.String */: {
756
+ return null;
757
+ }
758
+ case 50 /* ParseNodeType.Suite */: {
759
+ if (index < node.d.statements.length)
760
+ return node.d.statements[index];
761
+ index -= node.d.statements.length;
762
+ return null;
763
+ }
764
+ case 51 /* ParseNodeType.Ternary */: {
765
+ if (index === 0)
766
+ return node.d.ifExpr;
767
+ index--;
768
+ if (index === 0)
769
+ return node.d.testExpr;
770
+ index--;
771
+ if (index === 0)
772
+ return node.d.elseExpr;
773
+ index--;
774
+ return null;
775
+ }
776
+ case 52 /* ParseNodeType.Tuple */: {
777
+ if (index < node.d.items.length)
778
+ return node.d.items[index];
779
+ index -= node.d.items.length;
780
+ return null;
781
+ }
782
+ case 53 /* ParseNodeType.Try */: {
783
+ if (index === 0)
784
+ return node.d.trySuite;
785
+ index--;
786
+ if (index < node.d.exceptClauses.length)
787
+ return node.d.exceptClauses[index];
788
+ index -= node.d.exceptClauses.length;
789
+ if (index === 0)
790
+ return node.d.elseSuite;
791
+ index--;
792
+ if (index === 0)
793
+ return node.d.finallySuite;
794
+ index--;
795
+ return null;
796
+ }
797
+ case 77 /* ParseNodeType.TypeAlias */: {
798
+ if (index === 0)
799
+ return node.d.name;
800
+ index--;
801
+ if (index === 0)
802
+ return node.d.typeParams;
803
+ index--;
804
+ if (index === 0)
805
+ return node.d.expr;
806
+ index--;
807
+ return null;
808
+ }
809
+ case 54 /* ParseNodeType.TypeAnnotation */: {
810
+ if (index === 0)
811
+ return node.d.valueExpr;
812
+ index--;
813
+ if (index === 0)
814
+ return node.d.annotation;
815
+ index--;
816
+ return null;
817
+ }
818
+ case 75 /* ParseNodeType.TypeParameter */: {
819
+ if (index === 0)
820
+ return node.d.name;
821
+ index--;
822
+ if (index === 0)
823
+ return node.d.boundExpr;
824
+ index--;
825
+ if (index === 0)
826
+ return node.d.defaultExpr;
827
+ index--;
828
+ return null;
829
+ }
830
+ case 76 /* ParseNodeType.TypeParameterList */: {
831
+ if (index < node.d.params.length)
832
+ return node.d.params[index];
833
+ index -= node.d.params.length;
834
+ return null;
835
+ }
836
+ case 55 /* ParseNodeType.UnaryOperation */: {
837
+ if (index === 0)
838
+ return node.d.expr;
839
+ index--;
840
+ return null;
841
+ }
842
+ case 56 /* ParseNodeType.Unpack */: {
843
+ if (index === 0)
844
+ return node.d.expr;
845
+ index--;
846
+ return null;
847
+ }
848
+ case 57 /* ParseNodeType.While */: {
849
+ if (index === 0)
850
+ return node.d.testExpr;
851
+ index--;
852
+ if (index === 0)
853
+ return node.d.whileSuite;
854
+ index--;
855
+ if (index === 0)
856
+ return node.d.elseSuite;
857
+ index--;
858
+ return null;
859
+ }
860
+ case 58 /* ParseNodeType.With */: {
861
+ if (index < node.d.withItems.length)
862
+ return node.d.withItems[index];
863
+ index -= node.d.withItems.length;
864
+ if (index === 0)
865
+ return node.d.suite;
866
+ index--;
867
+ return null;
868
+ }
869
+ case 59 /* ParseNodeType.WithItem */: {
870
+ if (index === 0)
871
+ return node.d.expr;
872
+ index--;
873
+ if (index === 0)
874
+ return node.d.target;
875
+ index--;
876
+ return null;
877
+ }
878
+ case 60 /* ParseNodeType.Yield */: {
879
+ if (index === 0)
880
+ return node.d.expr;
881
+ index--;
882
+ return null;
883
+ }
884
+ case 61 /* ParseNodeType.YieldFrom */: {
885
+ if (index === 0)
886
+ return node.d.expr;
887
+ index--;
888
+ return null;
889
+ }
890
+ default:
891
+ throw new Error('Unsupported parse node in retained-token cursor');
892
+ }
893
+ }
894
+ function isTokenType(token, type) {
895
+ return token.type === type;
896
+ }
897
+ //# sourceMappingURL=parseTreeTokenReuse.js.map