@zzzen/pyright-internal 1.2.0-dev.20220925 → 1.2.0-dev.20221009
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.
- package/dist/analyzer/analyzerFileInfo.d.ts +1 -1
- package/dist/analyzer/analyzerFileInfo.js +1 -1
- package/dist/analyzer/analyzerFileInfo.js.map +1 -1
- package/dist/analyzer/binder.js +41 -24
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/cacheManager.d.ts +14 -0
- package/dist/analyzer/cacheManager.js +63 -0
- package/dist/analyzer/cacheManager.js.map +1 -0
- package/dist/analyzer/checker.d.ts +1 -0
- package/dist/analyzer/checker.js +17 -0
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.d.ts +8 -1
- package/dist/analyzer/codeFlowEngine.js +106 -85
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +1 -1
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/packageTypeVerifier.js +4 -4
- package/dist/analyzer/packageTypeVerifier.js.map +1 -1
- package/dist/analyzer/program.d.ts +5 -0
- package/dist/analyzer/program.js +62 -44
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/service.js +1 -0
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +1 -1
- package/dist/analyzer/sourceFile.js +5 -5
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +58 -40
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +5 -0
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeStubWriter.js +6 -6
- package/dist/analyzer/typeStubWriter.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +1 -1
- package/dist/analyzer/typeUtils.js +4 -31
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typedDicts.js +6 -6
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.js +1 -1
- package/dist/analyzer/types.js.map +1 -1
- package/dist/commands/commandController.d.ts +1 -0
- package/dist/commands/commandController.js +5 -0
- package/dist/commands/commandController.js.map +1 -1
- package/dist/commands/commands.d.ts +7 -1
- package/dist/commands/commands.js +6 -0
- package/dist/commands/commands.js.map +1 -1
- package/dist/commands/dumpFileDebugInfoCommand.d.ts +8 -0
- package/dist/commands/dumpFileDebugInfoCommand.js +983 -0
- package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -0
- package/dist/languageServerBase.js +6 -6
- package/dist/languageServerBase.js.map +1 -1
- package/dist/parser/parser.d.ts +2 -2
- package/dist/parser/parser.js +40 -29
- package/dist/parser/parser.js.map +1 -1
- package/dist/tests/parser.test.js +22 -0
- package/dist/tests/parser.test.js.map +1 -1
- package/dist/tests/testUtils.js +4 -2
- package/dist/tests/testUtils.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +4 -0
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +16 -0
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/workspaceMap.js +2 -0
- package/dist/workspaceMap.js.map +1 -1
- package/package.json +1 -1
@@ -0,0 +1,983 @@
|
|
1
|
+
"use strict";
|
2
|
+
/*
|
3
|
+
* dumpFileDebugInfoCommand.ts
|
4
|
+
* Copyright (c) Microsoft Corporation.
|
5
|
+
*
|
6
|
+
* Dump various token/node/type info
|
7
|
+
*/
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
9
|
+
exports.DumpFileDebugInfoCommand = void 0;
|
10
|
+
const analyzerNodeInfo_1 = require("../analyzer/analyzerNodeInfo");
|
11
|
+
const parseTreeUtils_1 = require("../analyzer/parseTreeUtils");
|
12
|
+
const parseTreeWalker_1 = require("../analyzer/parseTreeWalker");
|
13
|
+
const types_1 = require("../analyzer/types");
|
14
|
+
const cancellationUtils_1 = require("../common/cancellationUtils");
|
15
|
+
const core_1 = require("../common/core");
|
16
|
+
const positionUtils_1 = require("../common/positionUtils");
|
17
|
+
const textRange_1 = require("../common/textRange");
|
18
|
+
const parseNodes_1 = require("../parser/parseNodes");
|
19
|
+
class DumpFileDebugInfoCommand {
|
20
|
+
constructor(_ls) {
|
21
|
+
this._ls = _ls;
|
22
|
+
}
|
23
|
+
async execute(params, token) {
|
24
|
+
(0, cancellationUtils_1.throwIfCancellationRequested)(token);
|
25
|
+
if (!params.arguments || params.arguments.length < 2) {
|
26
|
+
return [];
|
27
|
+
}
|
28
|
+
const filePath = params.arguments[0];
|
29
|
+
const kind = params.arguments[1];
|
30
|
+
const workspace = await this._ls.getWorkspaceForFile(filePath);
|
31
|
+
const parseResults = workspace.serviceInstance.getParseResult(filePath);
|
32
|
+
if (!parseResults) {
|
33
|
+
return [];
|
34
|
+
}
|
35
|
+
const output = [];
|
36
|
+
const collectingConsole = {
|
37
|
+
info: (m) => {
|
38
|
+
output.push(m);
|
39
|
+
},
|
40
|
+
log: (m) => {
|
41
|
+
output.push(m);
|
42
|
+
},
|
43
|
+
error: (m) => {
|
44
|
+
output.push(m);
|
45
|
+
},
|
46
|
+
warn: (m) => {
|
47
|
+
output.push(m);
|
48
|
+
},
|
49
|
+
};
|
50
|
+
collectingConsole.info(`* Dump debug info for '${filePath}'`);
|
51
|
+
switch (kind) {
|
52
|
+
case 'tokens': {
|
53
|
+
collectingConsole.info(`* Token info (${parseResults.tokenizerOutput.tokens.count} tokens)`);
|
54
|
+
for (let i = 0; i < parseResults.tokenizerOutput.tokens.count; i++) {
|
55
|
+
const token = parseResults.tokenizerOutput.tokens.getItemAt(i);
|
56
|
+
collectingConsole.info(`[${i}] ${getTokenString(filePath, token, parseResults.tokenizerOutput.lines)}`);
|
57
|
+
}
|
58
|
+
break;
|
59
|
+
}
|
60
|
+
case 'nodes': {
|
61
|
+
collectingConsole.info(`* Node info`);
|
62
|
+
const dumper = new TreeDumper(filePath, parseResults.tokenizerOutput.lines);
|
63
|
+
dumper.walk(parseResults.parseTree);
|
64
|
+
collectingConsole.info(dumper.output);
|
65
|
+
break;
|
66
|
+
}
|
67
|
+
case 'types': {
|
68
|
+
const evaluator = workspace.serviceInstance.getEvaluator();
|
69
|
+
const start = params.arguments[2];
|
70
|
+
const end = params.arguments[3];
|
71
|
+
if (!evaluator || !start || !end) {
|
72
|
+
return [];
|
73
|
+
}
|
74
|
+
collectingConsole.info(`* Type info`);
|
75
|
+
collectingConsole.info(`${getTypeEvaluatorString(filePath, evaluator, parseResults, start, end)}`);
|
76
|
+
break;
|
77
|
+
}
|
78
|
+
case 'cachedtypes': {
|
79
|
+
const evaluator = workspace.serviceInstance.getEvaluator();
|
80
|
+
const start = params.arguments[2];
|
81
|
+
const end = params.arguments[3];
|
82
|
+
if (!evaluator || !start || !end) {
|
83
|
+
return [];
|
84
|
+
}
|
85
|
+
collectingConsole.info(`* Cached Type info`);
|
86
|
+
collectingConsole.info(`${getTypeEvaluatorString(filePath, evaluator, parseResults, start, end, true)}`);
|
87
|
+
break;
|
88
|
+
}
|
89
|
+
case 'codeflowgraph': {
|
90
|
+
const evaluator = workspace.serviceInstance.getEvaluator();
|
91
|
+
const offset = params.arguments[2];
|
92
|
+
if (!evaluator || offset === undefined) {
|
93
|
+
return [];
|
94
|
+
}
|
95
|
+
const node = (0, parseTreeUtils_1.findNodeByOffset)(parseResults.parseTree, offset);
|
96
|
+
if (!node) {
|
97
|
+
return [];
|
98
|
+
}
|
99
|
+
const flowNode = (0, analyzerNodeInfo_1.getFlowNode)(node);
|
100
|
+
if (!flowNode) {
|
101
|
+
return [];
|
102
|
+
}
|
103
|
+
collectingConsole.info(`* CodeFlow Graph`);
|
104
|
+
evaluator.printControlFlowGraph(flowNode, undefined, 'Dump CodeFlowGraph', collectingConsole);
|
105
|
+
}
|
106
|
+
}
|
107
|
+
// Print all of the output in one message so the trace log is smaller.
|
108
|
+
this._ls.console.info(output.join('\n'));
|
109
|
+
}
|
110
|
+
}
|
111
|
+
exports.DumpFileDebugInfoCommand = DumpFileDebugInfoCommand;
|
112
|
+
function stringify(value, replacer) {
|
113
|
+
const json = JSON.stringify(value, replacer, 2);
|
114
|
+
// Unescape any paths so VS code shows them as clickable.
|
115
|
+
return json.replace(/\\\\/g, '\\');
|
116
|
+
}
|
117
|
+
function getTypeEvaluatorString(file, evaluator, results, start, end, cacheOnly) {
|
118
|
+
var _a, _b;
|
119
|
+
const dumper = new TreeDumper(file, results.tokenizerOutput.lines);
|
120
|
+
const node = (_a = (0, parseTreeUtils_1.findNodeByOffset)(results.parseTree, start)) !== null && _a !== void 0 ? _a : (0, parseTreeUtils_1.findNodeByOffset)(results.parseTree, end);
|
121
|
+
if (!node) {
|
122
|
+
return 'N/A';
|
123
|
+
}
|
124
|
+
const set = new Set();
|
125
|
+
if (node.nodeType === 38 /* Name */) {
|
126
|
+
switch ((_b = node.parent) === null || _b === void 0 ? void 0 : _b.nodeType) {
|
127
|
+
case 10 /* Class */: {
|
128
|
+
const result = cacheOnly
|
129
|
+
? evaluator.getCachedType(node.parent.name)
|
130
|
+
: evaluator.getTypeOfClass(node.parent);
|
131
|
+
if (!result) {
|
132
|
+
return 'N/A';
|
133
|
+
}
|
134
|
+
return stringify(result, replacer);
|
135
|
+
}
|
136
|
+
case 28 /* Function */: {
|
137
|
+
const result = cacheOnly
|
138
|
+
? evaluator.getCachedType(node.parent.name)
|
139
|
+
: evaluator.getTypeOfFunction(node.parent);
|
140
|
+
if (!result) {
|
141
|
+
return 'N/A';
|
142
|
+
}
|
143
|
+
return stringify(result, replacer);
|
144
|
+
}
|
145
|
+
}
|
146
|
+
}
|
147
|
+
const range = textRange_1.TextRange.fromBounds(start, end);
|
148
|
+
const expr = getExpressionNodeWithRange(node, range);
|
149
|
+
if (!expr) {
|
150
|
+
return 'N/A';
|
151
|
+
}
|
152
|
+
const sb = `Expression node found at ${getTextSpanString(expr, results.tokenizerOutput.lines)} from the given span ${getTextSpanString(range, results.tokenizerOutput.lines)}\r\n`;
|
153
|
+
const result = cacheOnly ? evaluator.getCachedType(expr) : evaluator.getType(expr);
|
154
|
+
if (!result) {
|
155
|
+
return sb + 'No result';
|
156
|
+
}
|
157
|
+
return sb + stringify(result, replacer);
|
158
|
+
function getExpressionNodeWithRange(node, range) {
|
159
|
+
// find best expression node that contains both start and end.
|
160
|
+
let current = node;
|
161
|
+
while (current && !textRange_1.TextRange.containsRange(current, range)) {
|
162
|
+
current = current.parent;
|
163
|
+
}
|
164
|
+
if (!current) {
|
165
|
+
return undefined;
|
166
|
+
}
|
167
|
+
while (!(0, parseNodes_1.isExpressionNode)(current)) {
|
168
|
+
current = current.parent;
|
169
|
+
}
|
170
|
+
return current;
|
171
|
+
}
|
172
|
+
function replacer(key, value) {
|
173
|
+
if (value === undefined) {
|
174
|
+
return undefined;
|
175
|
+
}
|
176
|
+
if (!(0, core_1.isNumber)(value) && !(0, core_1.isString)(value)) {
|
177
|
+
if (set.has(value)) {
|
178
|
+
if (isClassType(value)) {
|
179
|
+
return `<cycle> class '${value.details.fullName}' typeSourceId:${value.details.typeSourceId}`;
|
180
|
+
}
|
181
|
+
if (isFunctionType(value)) {
|
182
|
+
return `<cycle> function '${value.details.fullName}' parameter count:${value.details.parameters.length}`;
|
183
|
+
}
|
184
|
+
if (isTypeVarType(value)) {
|
185
|
+
return `<cycle> function '${value.details.name}' scope id:${value.nameWithScope}`;
|
186
|
+
}
|
187
|
+
return undefined;
|
188
|
+
}
|
189
|
+
else {
|
190
|
+
set.add(value);
|
191
|
+
}
|
192
|
+
}
|
193
|
+
if (isTypeBase(this) && key === 'category') {
|
194
|
+
return getTypeCategoryString(value, this);
|
195
|
+
}
|
196
|
+
if (isTypeBase(this) && key === 'flags') {
|
197
|
+
return getTypeFlagsString(value);
|
198
|
+
}
|
199
|
+
if (isClassDetail(this) && key === 'flags') {
|
200
|
+
return getClassTypeFlagsString(value);
|
201
|
+
}
|
202
|
+
if (isFunctionDetail(this) && key === 'flags') {
|
203
|
+
return getFunctionTypeFlagsString(value);
|
204
|
+
}
|
205
|
+
if (isTypeVarDetails(this) && key === 'variance') {
|
206
|
+
return getVarianceString(value);
|
207
|
+
}
|
208
|
+
if (isParamSpecEntry(this) && key === 'category') {
|
209
|
+
return getParameterCategoryString(value);
|
210
|
+
}
|
211
|
+
if (value.nodeType && value.id) {
|
212
|
+
dumper.visitNode(value);
|
213
|
+
const output = dumper.output;
|
214
|
+
dumper.reset();
|
215
|
+
return output;
|
216
|
+
}
|
217
|
+
return value;
|
218
|
+
}
|
219
|
+
function isTypeBase(type) {
|
220
|
+
return type.category && type.flags;
|
221
|
+
}
|
222
|
+
function isClassType(type) {
|
223
|
+
return isTypeBase(type) && type.details && isClassDetail(type.details);
|
224
|
+
}
|
225
|
+
function isClassDetail(type) {
|
226
|
+
return (type.name !== undefined && type.fullName !== undefined && type.moduleName !== undefined && type.baseClasses);
|
227
|
+
}
|
228
|
+
function isFunctionType(type) {
|
229
|
+
return isTypeBase(type) && type.details && isFunctionDetail(type.details);
|
230
|
+
}
|
231
|
+
function isFunctionDetail(type) {
|
232
|
+
return (type.name !== undefined && type.fullName !== undefined && type.moduleName !== undefined && type.parameters);
|
233
|
+
}
|
234
|
+
function isTypeVarType(type) {
|
235
|
+
return isTypeBase(type) && type.details && isTypeVarDetails(type.details);
|
236
|
+
}
|
237
|
+
function isTypeVarDetails(type) {
|
238
|
+
return type.name !== undefined && type.constraints && type.variance !== undefined;
|
239
|
+
}
|
240
|
+
function isParamSpecEntry(type) {
|
241
|
+
return type.category && type.type;
|
242
|
+
}
|
243
|
+
}
|
244
|
+
function getVarianceString(type) {
|
245
|
+
switch (type) {
|
246
|
+
case 2 /* Invariant */:
|
247
|
+
return 'Invariant';
|
248
|
+
case 3 /* Covariant */:
|
249
|
+
return 'Covariant';
|
250
|
+
case 4 /* Contravariant */:
|
251
|
+
return 'Contravariant';
|
252
|
+
default:
|
253
|
+
return `Unknown Value!! (${type})`;
|
254
|
+
}
|
255
|
+
}
|
256
|
+
function getFlagEnumString(enumMap, enumValue) {
|
257
|
+
const str = [];
|
258
|
+
enumMap.forEach((e) => {
|
259
|
+
if (enumValue & e[0]) {
|
260
|
+
str.push(e[1]);
|
261
|
+
}
|
262
|
+
});
|
263
|
+
if (str.length === 0) {
|
264
|
+
if (enumValue === 0) {
|
265
|
+
return 'None';
|
266
|
+
}
|
267
|
+
return '<Unknown>';
|
268
|
+
}
|
269
|
+
return str.join(',');
|
270
|
+
}
|
271
|
+
const FunctionTypeFlagsToString = [
|
272
|
+
[8 /* AbstractMethod */, 'AbstractMethod'],
|
273
|
+
[512 /* Async */, 'Async'],
|
274
|
+
[2 /* ClassMethod */, 'ClassMethod'],
|
275
|
+
[1 /* ConstructorMethod */, 'ConstructorMethod'],
|
276
|
+
[32 /* DisableDefaultChecks */, 'DisableDefaultChecks'],
|
277
|
+
[8192 /* Final */, 'Final'],
|
278
|
+
[16 /* Generator */, 'Generator'],
|
279
|
+
[256 /* Overloaded */, 'Overloaded'],
|
280
|
+
[65536 /* ParamSpecValue */, 'ParamSpecValue'],
|
281
|
+
[131072 /* PartiallyEvaluated */, 'PartiallyEvaluated'],
|
282
|
+
[4096 /* PyTypedDefinition */, 'PyTypedDefinition'],
|
283
|
+
[32768 /* SkipArgsKwargsCompatibilityCheck */, 'SkipArgsKwargsCompatibilityCheck'],
|
284
|
+
[128 /* SkipConstructorCheck */, 'SkipConstructorCheck'],
|
285
|
+
[4 /* StaticMethod */, 'StaticMethod'],
|
286
|
+
[2048 /* StubDefinition */, 'StubDefinition'],
|
287
|
+
[64 /* SynthesizedMethod */, 'SynthesizedMethod'],
|
288
|
+
[16384 /* UnannotatedParams */, 'UnannotatedParams'],
|
289
|
+
[1024 /* WrapReturnTypeInAwait */, 'WrapReturnTypeInAwait'],
|
290
|
+
];
|
291
|
+
function getFunctionTypeFlagsString(flags) {
|
292
|
+
return getFlagEnumString(FunctionTypeFlagsToString, flags);
|
293
|
+
}
|
294
|
+
const ClassTypeFlagsToString = [
|
295
|
+
[1 /* BuiltInClass */, 'BuiltInClass'],
|
296
|
+
[256 /* CanOmitDictValues */, 'CanOmitDictValues'],
|
297
|
+
[4194304 /* ClassProperty */, 'ClassProperty'],
|
298
|
+
[4 /* DataClass */, 'DataClass'],
|
299
|
+
[2097152 /* DataClassKeywordOnlyParams */, 'DataClassKeywordOnlyParams'],
|
300
|
+
[8388608 /* DefinedInStub */, 'DefinedInStub'],
|
301
|
+
[1048576 /* EnumClass */, 'EnumClass'],
|
302
|
+
[4096 /* Final */, 'Final'],
|
303
|
+
[8 /* FrozenDataClass */, 'FrozenDataClass'],
|
304
|
+
[33554432 /* GenerateDataClassSlots */, 'GenerateDataClassSlots'],
|
305
|
+
[262144 /* HasCustomClassGetItem */, 'HasCustomClassGetItem'],
|
306
|
+
[131072 /* PartiallyEvaluated */, 'PartiallyEvaluated'],
|
307
|
+
[2048 /* PropertyClass */, 'PropertyClass'],
|
308
|
+
[8192 /* ProtocolClass */, 'ProtocolClass'],
|
309
|
+
[16384 /* PseudoGenericClass */, 'PseudoGenericClass'],
|
310
|
+
[16777216 /* ReadOnlyInstanceVariables */, 'ReadOnlyInstanceVariables'],
|
311
|
+
[32768 /* RuntimeCheckable */, 'RuntimeCheckable'],
|
312
|
+
[32 /* SkipSynthesizedDataClassEq */, 'SkipSynthesizedDataClassEq'],
|
313
|
+
[16 /* SkipSynthesizedDataClassInit */, 'SkipSynthesizedDataClassInit'],
|
314
|
+
[2 /* SpecialBuiltIn */, 'SpecialBuiltIn'],
|
315
|
+
[512 /* SupportsAbstractMethods */, 'SupportsAbstractMethods'],
|
316
|
+
[67108864 /* SynthesizeDataClassUnsafeHash */, 'SynthesizeDataClassUnsafeHash'],
|
317
|
+
[64 /* SynthesizedDataClassOrder */, 'SynthesizedDataClassOrder'],
|
318
|
+
[524288 /* TupleClass */, 'TupleClass'],
|
319
|
+
[128 /* TypedDictClass */, 'TypedDictClass'],
|
320
|
+
[65536 /* TypingExtensionClass */, 'TypingExtensionClass'],
|
321
|
+
];
|
322
|
+
function getClassTypeFlagsString(flags) {
|
323
|
+
return getFlagEnumString(ClassTypeFlagsToString, flags);
|
324
|
+
}
|
325
|
+
function getTypeFlagsString(flags) {
|
326
|
+
const str = [];
|
327
|
+
if (flags & 1 /* Instantiable */) {
|
328
|
+
str.push('Instantiable');
|
329
|
+
}
|
330
|
+
if (flags & 2 /* Instance */) {
|
331
|
+
str.push('Instance');
|
332
|
+
}
|
333
|
+
if (str.length === 0)
|
334
|
+
return 'None';
|
335
|
+
return str.join(',');
|
336
|
+
}
|
337
|
+
function getTypeCategoryString(typeCategory, type) {
|
338
|
+
switch (typeCategory) {
|
339
|
+
case 0 /* Unbound */:
|
340
|
+
return 'Unbound';
|
341
|
+
case 1 /* Unknown */:
|
342
|
+
return 'Unknown';
|
343
|
+
case 2 /* Any */:
|
344
|
+
return 'Any';
|
345
|
+
case 3 /* None */:
|
346
|
+
return 'None';
|
347
|
+
case 4 /* Never */:
|
348
|
+
return 'Never';
|
349
|
+
case 5 /* Function */:
|
350
|
+
return 'Function';
|
351
|
+
case 6 /* OverloadedFunction */:
|
352
|
+
return 'OverloadedFunction';
|
353
|
+
case 7 /* Class */:
|
354
|
+
if (types_1.TypeBase.isInstantiable(type)) {
|
355
|
+
return 'Class';
|
356
|
+
}
|
357
|
+
else {
|
358
|
+
return 'Object';
|
359
|
+
}
|
360
|
+
case 8 /* Module */:
|
361
|
+
return 'Module';
|
362
|
+
case 9 /* Union */:
|
363
|
+
return 'Union';
|
364
|
+
case 10 /* TypeVar */:
|
365
|
+
return 'TypeVar';
|
366
|
+
default:
|
367
|
+
return `Unknown Value!! (${typeCategory})`;
|
368
|
+
}
|
369
|
+
}
|
370
|
+
class TreeDumper extends parseTreeWalker_1.ParseTreeWalker {
|
371
|
+
constructor(_file, _lines) {
|
372
|
+
super();
|
373
|
+
this._file = _file;
|
374
|
+
this._lines = _lines;
|
375
|
+
this._indentation = '';
|
376
|
+
this._output = '';
|
377
|
+
}
|
378
|
+
get output() {
|
379
|
+
return this._output;
|
380
|
+
}
|
381
|
+
walk(node) {
|
382
|
+
const childrenToWalk = this.visitNode(node);
|
383
|
+
if (childrenToWalk.length > 0) {
|
384
|
+
this._indentation += ' ';
|
385
|
+
this.walkMultiple(childrenToWalk);
|
386
|
+
this._indentation = this._indentation.substr(0, this._indentation.length - 2);
|
387
|
+
}
|
388
|
+
}
|
389
|
+
_log(value) {
|
390
|
+
this._output += `${this._indentation}${value}\r\n`;
|
391
|
+
}
|
392
|
+
_getPrefix(node) {
|
393
|
+
const pos = (0, positionUtils_1.convertOffsetToPosition)(node.start, this._lines);
|
394
|
+
// VS code's output window expects 1 based values, print the line/char with 1 based.
|
395
|
+
return `[${node.id}] '${this._file}:${pos.line + 1}:${pos.character + 1}' => ${(0, parseTreeUtils_1.printParseNodeType)(node.nodeType)} ${getTextSpanString(node, this._lines)} =>`;
|
396
|
+
}
|
397
|
+
reset() {
|
398
|
+
this._indentation = '';
|
399
|
+
this._output = '';
|
400
|
+
}
|
401
|
+
visitArgument(node) {
|
402
|
+
this._log(`${this._getPrefix(node)} ${getArgumentCategoryString(node.argumentCategory)}`);
|
403
|
+
return true;
|
404
|
+
}
|
405
|
+
visitAssert(node) {
|
406
|
+
this._log(`${this._getPrefix(node)}`);
|
407
|
+
return true;
|
408
|
+
}
|
409
|
+
visitAssignment(node) {
|
410
|
+
this._log(`${this._getPrefix(node)}`);
|
411
|
+
return true;
|
412
|
+
}
|
413
|
+
visitAssignmentExpression(node) {
|
414
|
+
this._log(`${this._getPrefix(node)}`);
|
415
|
+
return true;
|
416
|
+
}
|
417
|
+
visitAugmentedAssignment(node) {
|
418
|
+
this._log(`${this._getPrefix(node)} ${getOperatorTypeString(node.operator)}`);
|
419
|
+
return true;
|
420
|
+
}
|
421
|
+
visitAwait(node) {
|
422
|
+
this._log(`${this._getPrefix(node)}`);
|
423
|
+
return true;
|
424
|
+
}
|
425
|
+
visitBinaryOperation(node) {
|
426
|
+
this._log(`${this._getPrefix(node)} ${getTokenString(this._file, node.operatorToken, this._lines)} ${getOperatorTypeString(node.operator)}} parenthesized:(${node.parenthesized})`);
|
427
|
+
return true;
|
428
|
+
}
|
429
|
+
visitBreak(node) {
|
430
|
+
this._log(`${this._getPrefix(node)}`);
|
431
|
+
return true;
|
432
|
+
}
|
433
|
+
visitCall(node) {
|
434
|
+
this._log(`${this._getPrefix(node)}`);
|
435
|
+
return true;
|
436
|
+
}
|
437
|
+
visitClass(node) {
|
438
|
+
this._log(`${this._getPrefix(node)}`);
|
439
|
+
return true;
|
440
|
+
}
|
441
|
+
visitTernary(node) {
|
442
|
+
this._log(`${this._getPrefix(node)}`);
|
443
|
+
return true;
|
444
|
+
}
|
445
|
+
visitContinue(node) {
|
446
|
+
this._log(`${this._getPrefix(node)}`);
|
447
|
+
return true;
|
448
|
+
}
|
449
|
+
visitConstant(node) {
|
450
|
+
this._log(`${this._getPrefix(node)} ${getKeywordTypeString(node.constType)}`);
|
451
|
+
return true;
|
452
|
+
}
|
453
|
+
visitDecorator(node) {
|
454
|
+
this._log(`${this._getPrefix(node)}`);
|
455
|
+
return true;
|
456
|
+
}
|
457
|
+
visitDel(node) {
|
458
|
+
this._log(`${this._getPrefix(node)}`);
|
459
|
+
return true;
|
460
|
+
}
|
461
|
+
visitDictionary(node) {
|
462
|
+
this._log(`${this._getPrefix(node)}`);
|
463
|
+
return true;
|
464
|
+
}
|
465
|
+
visitDictionaryKeyEntry(node) {
|
466
|
+
this._log(`${this._getPrefix(node)}`);
|
467
|
+
return true;
|
468
|
+
}
|
469
|
+
visitDictionaryExpandEntry(node) {
|
470
|
+
this._log(`${this._getPrefix(node)}`);
|
471
|
+
return true;
|
472
|
+
}
|
473
|
+
visitError(node) {
|
474
|
+
this._log(`${this._getPrefix(node)} ${getErrorExpressionCategoryString(node.category)}`);
|
475
|
+
return true;
|
476
|
+
}
|
477
|
+
visitEllipsis(node) {
|
478
|
+
this._log(`${this._getPrefix(node)}`);
|
479
|
+
return true;
|
480
|
+
}
|
481
|
+
visitIf(node) {
|
482
|
+
this._log(`${this._getPrefix(node)}`);
|
483
|
+
return true;
|
484
|
+
}
|
485
|
+
visitImport(node) {
|
486
|
+
this._log(`${this._getPrefix(node)}`);
|
487
|
+
return true;
|
488
|
+
}
|
489
|
+
visitImportAs(node) {
|
490
|
+
this._log(`${this._getPrefix(node)}`);
|
491
|
+
return true;
|
492
|
+
}
|
493
|
+
visitImportFrom(node) {
|
494
|
+
this._log(`${this._getPrefix(node)} wildcard import:(${node.isWildcardImport}) paren:(${node.usesParens}) wildcard token:(${node.wildcardToken ? getTokenString(this._file, node.wildcardToken, this._lines) : 'N/A'}) missing import keyword:(${node.missingImportKeyword})`);
|
495
|
+
return true;
|
496
|
+
}
|
497
|
+
visitImportFromAs(node) {
|
498
|
+
this._log(`${this._getPrefix(node)}`);
|
499
|
+
return true;
|
500
|
+
}
|
501
|
+
visitIndex(node) {
|
502
|
+
this._log(`${this._getPrefix(node)}`);
|
503
|
+
return true;
|
504
|
+
}
|
505
|
+
visitExcept(node) {
|
506
|
+
this._log(`${this._getPrefix(node)}`);
|
507
|
+
return true;
|
508
|
+
}
|
509
|
+
visitFor(node) {
|
510
|
+
this._log(`${this._getPrefix(node)} async:(${node.isAsync})`);
|
511
|
+
return true;
|
512
|
+
}
|
513
|
+
visitFormatString(node) {
|
514
|
+
this._log(`${this._getPrefix(node)} ${getTokenString(this._file, node.token, this._lines)} ${node.value} unescape errors:(${node.hasUnescapeErrors})`);
|
515
|
+
return true;
|
516
|
+
}
|
517
|
+
visitFunction(node) {
|
518
|
+
this._log(`${this._getPrefix(node)} async:(${node.isAsync})`);
|
519
|
+
return true;
|
520
|
+
}
|
521
|
+
visitFunctionAnnotation(node) {
|
522
|
+
this._log(`${this._getPrefix(node)} ellipsis:(${node.isParamListEllipsis})`);
|
523
|
+
return true;
|
524
|
+
}
|
525
|
+
visitGlobal(node) {
|
526
|
+
this._log(`${this._getPrefix(node)}`);
|
527
|
+
return true;
|
528
|
+
}
|
529
|
+
visitLambda(node) {
|
530
|
+
this._log(`${this._getPrefix(node)}`);
|
531
|
+
return true;
|
532
|
+
}
|
533
|
+
visitList(node) {
|
534
|
+
this._log(`${this._getPrefix(node)}`);
|
535
|
+
return true;
|
536
|
+
}
|
537
|
+
visitListComprehension(node) {
|
538
|
+
this._log(`${this._getPrefix(node)}`);
|
539
|
+
return true;
|
540
|
+
}
|
541
|
+
visitListComprehensionFor(node) {
|
542
|
+
this._log(`${this._getPrefix(node)} async:(${node.isAsync})`);
|
543
|
+
return true;
|
544
|
+
}
|
545
|
+
visitListComprehensionIf(node) {
|
546
|
+
this._log(`${this._getPrefix(node)}`);
|
547
|
+
return true;
|
548
|
+
}
|
549
|
+
visitMemberAccess(node) {
|
550
|
+
this._log(`${this._getPrefix(node)}`);
|
551
|
+
return true;
|
552
|
+
}
|
553
|
+
visitModule(node) {
|
554
|
+
this._log(`${this._getPrefix(node)}`);
|
555
|
+
return true;
|
556
|
+
}
|
557
|
+
visitModuleName(node) {
|
558
|
+
this._log(`${this._getPrefix(node)} leading dots:(${node.leadingDots}) trailing dot:(${node.hasTrailingDot})`);
|
559
|
+
return true;
|
560
|
+
}
|
561
|
+
visitName(node) {
|
562
|
+
this._log(`${this._getPrefix(node)} ${getTokenString(this._file, node.token, this._lines)} ${node.value}`);
|
563
|
+
return true;
|
564
|
+
}
|
565
|
+
visitNonlocal(node) {
|
566
|
+
this._log(`${this._getPrefix(node)}`);
|
567
|
+
return true;
|
568
|
+
}
|
569
|
+
visitNumber(node) {
|
570
|
+
this._log(`${this._getPrefix(node)} ${node.value} int:(${node.isInteger}) imaginary:(${node.isImaginary})`);
|
571
|
+
return true;
|
572
|
+
}
|
573
|
+
visitParameter(node) {
|
574
|
+
this._log(`${this._getPrefix(node)} ${getParameterCategoryString(node.category)}`);
|
575
|
+
return true;
|
576
|
+
}
|
577
|
+
visitPass(node) {
|
578
|
+
this._log(`${this._getPrefix(node)}`);
|
579
|
+
return true;
|
580
|
+
}
|
581
|
+
visitRaise(node) {
|
582
|
+
this._log(`${this._getPrefix(node)}`);
|
583
|
+
return true;
|
584
|
+
}
|
585
|
+
visitReturn(node) {
|
586
|
+
this._log(`${this._getPrefix(node)}`);
|
587
|
+
return true;
|
588
|
+
}
|
589
|
+
visitSet(node) {
|
590
|
+
this._log(`${this._getPrefix(node)}`);
|
591
|
+
return true;
|
592
|
+
}
|
593
|
+
visitSlice(node) {
|
594
|
+
this._log(`${this._getPrefix(node)}`);
|
595
|
+
return true;
|
596
|
+
}
|
597
|
+
visitStatementList(node) {
|
598
|
+
this._log(`${this._getPrefix(node)}`);
|
599
|
+
return true;
|
600
|
+
}
|
601
|
+
visitString(node) {
|
602
|
+
this._log(`${this._getPrefix(node)} ${getTokenString(this._file, node.token, this._lines)} ${node.value} unescape errors:(${node.hasUnescapeErrors})`);
|
603
|
+
return true;
|
604
|
+
}
|
605
|
+
visitStringList(node) {
|
606
|
+
this._log(`${this._getPrefix(node)}`);
|
607
|
+
return true;
|
608
|
+
}
|
609
|
+
visitSuite(node) {
|
610
|
+
this._log(`${this._getPrefix(node)}`);
|
611
|
+
return true;
|
612
|
+
}
|
613
|
+
visitTuple(node) {
|
614
|
+
this._log(`${this._getPrefix(node)} paren:(${node.enclosedInParens})`);
|
615
|
+
return true;
|
616
|
+
}
|
617
|
+
visitTry(node) {
|
618
|
+
this._log(`${this._getPrefix(node)}`);
|
619
|
+
return true;
|
620
|
+
}
|
621
|
+
visitTypeAnnotation(node) {
|
622
|
+
this._log(`${this._getPrefix(node)}`);
|
623
|
+
return true;
|
624
|
+
}
|
625
|
+
visitUnaryOperation(node) {
|
626
|
+
this._log(`${this._getPrefix(node)} ${getTokenString(this._file, node.operatorToken, this._lines)} ${getOperatorTypeString(node.operator)}`);
|
627
|
+
return true;
|
628
|
+
}
|
629
|
+
visitUnpack(node) {
|
630
|
+
this._log(`${this._getPrefix(node)}`);
|
631
|
+
return true;
|
632
|
+
}
|
633
|
+
visitWhile(node) {
|
634
|
+
this._log(`${this._getPrefix(node)}`);
|
635
|
+
return true;
|
636
|
+
}
|
637
|
+
visitWith(node) {
|
638
|
+
this._log(`${this._getPrefix(node)} async:(${node.isAsync})`);
|
639
|
+
return true;
|
640
|
+
}
|
641
|
+
visitWithItem(node) {
|
642
|
+
this._log(`${this._getPrefix(node)}`);
|
643
|
+
return true;
|
644
|
+
}
|
645
|
+
visitYield(node) {
|
646
|
+
this._log(`${this._getPrefix(node)}`);
|
647
|
+
return true;
|
648
|
+
}
|
649
|
+
visitYieldFrom(node) {
|
650
|
+
this._log(`${this._getPrefix(node)}`);
|
651
|
+
return true;
|
652
|
+
}
|
653
|
+
}
|
654
|
+
function getParameterCategoryString(type) {
|
655
|
+
switch (type) {
|
656
|
+
case 0 /* Simple */:
|
657
|
+
return 'Simple';
|
658
|
+
case 1 /* VarArgList */:
|
659
|
+
return 'VarArgList';
|
660
|
+
case 2 /* VarArgDictionary */:
|
661
|
+
return 'VarArgDictionary';
|
662
|
+
}
|
663
|
+
}
|
664
|
+
function getArgumentCategoryString(type) {
|
665
|
+
switch (type) {
|
666
|
+
case 0 /* Simple */:
|
667
|
+
return 'Simple';
|
668
|
+
case 1 /* UnpackedList */:
|
669
|
+
return 'UnpackedList';
|
670
|
+
case 2 /* UnpackedDictionary */:
|
671
|
+
return 'UnpackedDictionary';
|
672
|
+
default:
|
673
|
+
return `Unknown Value!! (${type})`;
|
674
|
+
}
|
675
|
+
}
|
676
|
+
function getErrorExpressionCategoryString(type) {
|
677
|
+
switch (type) {
|
678
|
+
case 0 /* MissingIn */:
|
679
|
+
return 'MissingIn';
|
680
|
+
case 1 /* MissingElse */:
|
681
|
+
return 'MissingElse';
|
682
|
+
case 2 /* MissingExpression */:
|
683
|
+
return 'MissingExpression';
|
684
|
+
case 3 /* MissingIndexOrSlice */:
|
685
|
+
return 'MissingIndexOrSlice';
|
686
|
+
case 4 /* MissingDecoratorCallName */:
|
687
|
+
return 'MissingDecoratorCallName';
|
688
|
+
case 5 /* MissingCallCloseParen */:
|
689
|
+
return 'MissingCallCloseParen';
|
690
|
+
case 6 /* MissingIndexCloseBracket */:
|
691
|
+
return 'MissingIndexCloseBracket';
|
692
|
+
case 7 /* MissingMemberAccessName */:
|
693
|
+
return 'MissingMemberAccessName';
|
694
|
+
case 8 /* MissingTupleCloseParen */:
|
695
|
+
return 'MissingTupleCloseParen';
|
696
|
+
case 9 /* MissingListCloseBracket */:
|
697
|
+
return 'MissingListCloseBracket';
|
698
|
+
case 10 /* MissingFunctionParameterList */:
|
699
|
+
return 'MissingFunctionParameterList';
|
700
|
+
default:
|
701
|
+
return `Unknown Value!! (${type})`;
|
702
|
+
}
|
703
|
+
}
|
704
|
+
function getTokenString(file, token, lines) {
|
705
|
+
const pos = (0, positionUtils_1.convertOffsetToPosition)(token.start, lines);
|
706
|
+
let str = `'${file}:${pos.line + 1}:${pos.character + 1}' (`;
|
707
|
+
str += getTokenTypeString(token.type);
|
708
|
+
str += getNewLineInfo(token);
|
709
|
+
str += getOperatorInfo(token);
|
710
|
+
str += getKeywordInfo(token);
|
711
|
+
str += getStringTokenFlags(token);
|
712
|
+
str += `, ${getTextSpanString(token, lines)}`;
|
713
|
+
str += ') ';
|
714
|
+
str += JSON.stringify(token);
|
715
|
+
return str;
|
716
|
+
function getNewLineInfo(t) {
|
717
|
+
return t.newLineType ? `, ${getNewLineTypeString(t.newLineType)}` : '';
|
718
|
+
}
|
719
|
+
function getOperatorInfo(t) {
|
720
|
+
return t.operatorType ? `, ${getOperatorTypeString(t.operatorType)}` : '';
|
721
|
+
}
|
722
|
+
function getKeywordInfo(t) {
|
723
|
+
return t.keywordType ? `, ${getKeywordTypeString(t.keywordType)}` : '';
|
724
|
+
}
|
725
|
+
function getStringTokenFlags(t) {
|
726
|
+
return t.flags ? `, [${getStringTokenFlagsString(t.flags)}]` : '';
|
727
|
+
}
|
728
|
+
}
|
729
|
+
function getTextSpanString(span, lines) {
|
730
|
+
const range = (0, positionUtils_1.convertOffsetsToRange)(span.start, textRange_1.TextRange.getEnd(span), lines);
|
731
|
+
return `(${range.start.line},${range.start.character})-(${range.end.line},${range.end.character})`;
|
732
|
+
}
|
733
|
+
function getTokenTypeString(type) {
|
734
|
+
switch (type) {
|
735
|
+
case 0 /* Invalid */:
|
736
|
+
return 'Invalid';
|
737
|
+
case 1 /* EndOfStream */:
|
738
|
+
return 'EndOfStream';
|
739
|
+
case 2 /* NewLine */:
|
740
|
+
return 'NewLine';
|
741
|
+
case 3 /* Indent */:
|
742
|
+
return 'Indent';
|
743
|
+
case 4 /* Dedent */:
|
744
|
+
return 'Dedent';
|
745
|
+
case 5 /* String */:
|
746
|
+
return 'String';
|
747
|
+
case 6 /* Number */:
|
748
|
+
return 'Number';
|
749
|
+
case 7 /* Identifier */:
|
750
|
+
return 'Identifier';
|
751
|
+
case 8 /* Keyword */:
|
752
|
+
return 'Keyword';
|
753
|
+
case 9 /* Operator */:
|
754
|
+
return 'Operator';
|
755
|
+
case 10 /* Colon */:
|
756
|
+
return 'Colon';
|
757
|
+
case 11 /* Semicolon */:
|
758
|
+
return 'Semicolon';
|
759
|
+
case 12 /* Comma */:
|
760
|
+
return 'Comma';
|
761
|
+
case 13 /* OpenParenthesis */:
|
762
|
+
return 'OpenParenthesis';
|
763
|
+
case 14 /* CloseParenthesis */:
|
764
|
+
return 'CloseParenthesis';
|
765
|
+
case 15 /* OpenBracket */:
|
766
|
+
return 'OpenBracket';
|
767
|
+
case 16 /* CloseBracket */:
|
768
|
+
return 'CloseBracket';
|
769
|
+
case 17 /* OpenCurlyBrace */:
|
770
|
+
return 'OpenCurlyBrace';
|
771
|
+
case 18 /* CloseCurlyBrace */:
|
772
|
+
return 'CloseCurlyBrace';
|
773
|
+
case 19 /* Ellipsis */:
|
774
|
+
return 'Ellipsis';
|
775
|
+
case 20 /* Dot */:
|
776
|
+
return 'Dot';
|
777
|
+
case 21 /* Arrow */:
|
778
|
+
return 'Arrow';
|
779
|
+
case 22 /* Backtick */:
|
780
|
+
return 'Backtick';
|
781
|
+
default:
|
782
|
+
return `Unknown Value!! (${type})`;
|
783
|
+
}
|
784
|
+
}
|
785
|
+
function getNewLineTypeString(type) {
|
786
|
+
switch (type) {
|
787
|
+
case 0 /* CarriageReturn */:
|
788
|
+
return 'CarriageReturn';
|
789
|
+
case 1 /* LineFeed */:
|
790
|
+
return 'LineFeed';
|
791
|
+
case 2 /* CarriageReturnLineFeed */:
|
792
|
+
return 'CarriageReturnLineFeed';
|
793
|
+
case 3 /* Implied */:
|
794
|
+
return 'Implied';
|
795
|
+
default:
|
796
|
+
return `Unknown Value!! (${type})`;
|
797
|
+
}
|
798
|
+
}
|
799
|
+
function getOperatorTypeString(type) {
|
800
|
+
switch (type) {
|
801
|
+
case 0 /* Add */:
|
802
|
+
return 'Add';
|
803
|
+
case 1 /* AddEqual */:
|
804
|
+
return 'AddEqual';
|
805
|
+
case 2 /* Assign */:
|
806
|
+
return 'Assign';
|
807
|
+
case 3 /* BitwiseAnd */:
|
808
|
+
return 'BitwiseAnd';
|
809
|
+
case 4 /* BitwiseAndEqual */:
|
810
|
+
return 'BitwiseAndEqual';
|
811
|
+
case 5 /* BitwiseInvert */:
|
812
|
+
return 'BitwiseInvert';
|
813
|
+
case 6 /* BitwiseOr */:
|
814
|
+
return 'BitwiseOr';
|
815
|
+
case 7 /* BitwiseOrEqual */:
|
816
|
+
return 'BitwiseOrEqual';
|
817
|
+
case 8 /* BitwiseXor */:
|
818
|
+
return 'BitwiseXor';
|
819
|
+
case 9 /* BitwiseXorEqual */:
|
820
|
+
return 'BitwiseXorEqual';
|
821
|
+
case 10 /* Divide */:
|
822
|
+
return 'Divide';
|
823
|
+
case 11 /* DivideEqual */:
|
824
|
+
return 'DivideEqual';
|
825
|
+
case 12 /* Equals */:
|
826
|
+
return 'Equals';
|
827
|
+
case 13 /* FloorDivide */:
|
828
|
+
return 'FloorDivide';
|
829
|
+
case 14 /* FloorDivideEqual */:
|
830
|
+
return 'FloorDivideEqual';
|
831
|
+
case 15 /* GreaterThan */:
|
832
|
+
return 'GreaterThan';
|
833
|
+
case 16 /* GreaterThanOrEqual */:
|
834
|
+
return 'GreaterThanOrEqual';
|
835
|
+
case 17 /* LeftShift */:
|
836
|
+
return 'LeftShift';
|
837
|
+
case 18 /* LeftShiftEqual */:
|
838
|
+
return 'LeftShiftEqual';
|
839
|
+
case 19 /* LessOrGreaterThan */:
|
840
|
+
return 'LessOrGreaterThan';
|
841
|
+
case 20 /* LessThan */:
|
842
|
+
return 'LessThan';
|
843
|
+
case 21 /* LessThanOrEqual */:
|
844
|
+
return 'LessThanOrEqual';
|
845
|
+
case 22 /* MatrixMultiply */:
|
846
|
+
return 'MatrixMultiply';
|
847
|
+
case 23 /* MatrixMultiplyEqual */:
|
848
|
+
return 'MatrixMultiplyEqual';
|
849
|
+
case 24 /* Mod */:
|
850
|
+
return 'Mod';
|
851
|
+
case 25 /* ModEqual */:
|
852
|
+
return 'ModEqual';
|
853
|
+
case 26 /* Multiply */:
|
854
|
+
return 'Multiply';
|
855
|
+
case 27 /* MultiplyEqual */:
|
856
|
+
return 'MultiplyEqual';
|
857
|
+
case 28 /* NotEquals */:
|
858
|
+
return 'NotEquals';
|
859
|
+
case 29 /* Power */:
|
860
|
+
return 'Power';
|
861
|
+
case 30 /* PowerEqual */:
|
862
|
+
return 'PowerEqual';
|
863
|
+
case 31 /* RightShift */:
|
864
|
+
return 'RightShift';
|
865
|
+
case 32 /* RightShiftEqual */:
|
866
|
+
return 'RightShiftEqual';
|
867
|
+
case 33 /* Subtract */:
|
868
|
+
return 'Subtract';
|
869
|
+
case 34 /* SubtractEqual */:
|
870
|
+
return 'SubtractEqual';
|
871
|
+
case 35 /* Walrus */:
|
872
|
+
return 'Walrus';
|
873
|
+
case 36 /* And */:
|
874
|
+
return 'And';
|
875
|
+
case 37 /* Or */:
|
876
|
+
return 'Or';
|
877
|
+
case 38 /* Not */:
|
878
|
+
return 'Not';
|
879
|
+
case 39 /* Is */:
|
880
|
+
return 'Is';
|
881
|
+
case 40 /* IsNot */:
|
882
|
+
return 'IsNot';
|
883
|
+
case 41 /* In */:
|
884
|
+
return 'In';
|
885
|
+
case 42 /* NotIn */:
|
886
|
+
return 'NotIn';
|
887
|
+
default:
|
888
|
+
return `Unknown Value!! (${type})`;
|
889
|
+
}
|
890
|
+
}
|
891
|
+
function getKeywordTypeString(type) {
|
892
|
+
switch (type) {
|
893
|
+
case 0 /* And */:
|
894
|
+
return 'And';
|
895
|
+
case 1 /* As */:
|
896
|
+
return 'As';
|
897
|
+
case 2 /* Assert */:
|
898
|
+
return 'Assert';
|
899
|
+
case 3 /* Async */:
|
900
|
+
return 'Async';
|
901
|
+
case 4 /* Await */:
|
902
|
+
return 'Await';
|
903
|
+
case 5 /* Break */:
|
904
|
+
return 'Break';
|
905
|
+
case 7 /* Class */:
|
906
|
+
return 'Class';
|
907
|
+
case 8 /* Continue */:
|
908
|
+
return 'Continue';
|
909
|
+
case 9 /* Debug */:
|
910
|
+
return 'Debug';
|
911
|
+
case 10 /* Def */:
|
912
|
+
return 'Def';
|
913
|
+
case 11 /* Del */:
|
914
|
+
return 'Del';
|
915
|
+
case 12 /* Elif */:
|
916
|
+
return 'Elif';
|
917
|
+
case 13 /* Else */:
|
918
|
+
return 'Else';
|
919
|
+
case 14 /* Except */:
|
920
|
+
return 'Except';
|
921
|
+
case 15 /* False */:
|
922
|
+
return 'False';
|
923
|
+
case 16 /* Finally */:
|
924
|
+
return 'Finally';
|
925
|
+
case 17 /* For */:
|
926
|
+
return 'For';
|
927
|
+
case 18 /* From */:
|
928
|
+
return 'From';
|
929
|
+
case 19 /* Global */:
|
930
|
+
return 'Global';
|
931
|
+
case 20 /* If */:
|
932
|
+
return 'If';
|
933
|
+
case 21 /* Import */:
|
934
|
+
return 'Import';
|
935
|
+
case 22 /* In */:
|
936
|
+
return 'In';
|
937
|
+
case 23 /* Is */:
|
938
|
+
return 'Is';
|
939
|
+
case 24 /* Lambda */:
|
940
|
+
return 'Lambda';
|
941
|
+
case 26 /* None */:
|
942
|
+
return 'None';
|
943
|
+
case 27 /* Nonlocal */:
|
944
|
+
return 'Nonlocal';
|
945
|
+
case 28 /* Not */:
|
946
|
+
return 'Not';
|
947
|
+
case 29 /* Or */:
|
948
|
+
return 'Or';
|
949
|
+
case 30 /* Pass */:
|
950
|
+
return 'Pass';
|
951
|
+
case 31 /* Raise */:
|
952
|
+
return 'Raise';
|
953
|
+
case 32 /* Return */:
|
954
|
+
return 'Return';
|
955
|
+
case 33 /* True */:
|
956
|
+
return 'True';
|
957
|
+
case 34 /* Try */:
|
958
|
+
return 'Try';
|
959
|
+
case 36 /* While */:
|
960
|
+
return 'While';
|
961
|
+
case 37 /* With */:
|
962
|
+
return 'With';
|
963
|
+
case 38 /* Yield */:
|
964
|
+
return 'Yield';
|
965
|
+
default:
|
966
|
+
return `Unknown Value!! (${type})`;
|
967
|
+
}
|
968
|
+
}
|
969
|
+
const StringTokenFlagsStrings = [
|
970
|
+
[32 /* Bytes */, 'Bytes'],
|
971
|
+
[2 /* DoubleQuote */, 'DoubleQuote'],
|
972
|
+
[131072 /* ExceedsMaxSize */, 'ExceedsMaxSize'],
|
973
|
+
[64 /* Format */, 'Format'],
|
974
|
+
[8 /* Raw */, 'Raw'],
|
975
|
+
[1 /* SingleQuote */, 'SingleQuote'],
|
976
|
+
[4 /* Triplicate */, 'Triplicate'],
|
977
|
+
[16 /* Unicode */, 'Unicode'],
|
978
|
+
[65536 /* Unterminated */, 'Unterminated'],
|
979
|
+
];
|
980
|
+
function getStringTokenFlagsString(flags) {
|
981
|
+
return getFlagEnumString(StringTokenFlagsStrings, flags);
|
982
|
+
}
|
983
|
+
//# sourceMappingURL=dumpFileDebugInfoCommand.js.map
|