@zzzen/pyright-internal 1.2.0-dev.20261011 → 1.2.0-dev.20261101
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/binder.js +28 -9
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.js +8 -3
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.js +76 -30
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/dataClasses.js +14 -5
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/decorators.d.ts +1 -1
- package/dist/analyzer/decorators.js +22 -2
- package/dist/analyzer/decorators.js.map +1 -1
- package/dist/analyzer/namedTuples.d.ts +2 -1
- package/dist/analyzer/namedTuples.js +63 -35
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/operations.js +45 -1
- package/dist/analyzer/operations.js.map +1 -1
- package/dist/analyzer/overloadResultAdmission.js +115 -3
- package/dist/analyzer/overloadResultAdmission.js.map +1 -1
- package/dist/analyzer/overloadResultController.js +36 -10
- package/dist/analyzer/overloadResultController.js.map +1 -1
- package/dist/analyzer/overloadResultSelector.js +32 -12
- package/dist/analyzer/overloadResultSelector.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.d.ts +3 -0
- package/dist/analyzer/parseTreeUtils.js +56 -0
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/patternMatching.js +67 -27
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +3 -0
- package/dist/analyzer/program.js +34 -9
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/sentinel.js +7 -1
- package/dist/analyzer/sentinel.js.map +1 -1
- package/dist/analyzer/service.js +6 -2
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceEnumerator.d.ts +3 -1
- package/dist/analyzer/sourceEnumerator.js +30 -11
- package/dist/analyzer/sourceEnumerator.js.map +1 -1
- package/dist/analyzer/sourceFile.js +13 -6
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceMapper.d.ts +1 -0
- package/dist/analyzer/sourceMapper.js +10 -4
- package/dist/analyzer/sourceMapper.js.map +1 -1
- package/dist/analyzer/tupleComparison.d.ts +6 -0
- package/dist/analyzer/tupleComparison.js +731 -0
- package/dist/analyzer/tupleComparison.js.map +1 -0
- package/dist/analyzer/tuples.js +52 -10
- package/dist/analyzer/tuples.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +508 -63
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +1 -1
- package/dist/analyzer/typeEvaluatorTypes.js +2 -3
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.d.ts +6 -1
- package/dist/analyzer/typeGuards.js +373 -72
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typeStubRenderer.d.ts +6 -1
- package/dist/analyzer/typeStubRenderer.js +19 -12
- package/dist/analyzer/typeStubRenderer.js.map +1 -1
- package/dist/analyzer/typeUtils.js +3 -0
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typedDicts.d.ts +2 -1
- package/dist/analyzer/typedDicts.js +49 -10
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +14 -0
- package/dist/analyzer/types.js +215 -10
- package/dist/analyzer/types.js.map +1 -1
- package/dist/common/configOptions.d.ts +1 -0
- package/dist/common/configOptions.js +9 -0
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/processUtils.d.ts +6 -0
- package/dist/common/processUtils.js +56 -1
- package/dist/common/processUtils.js.map +1 -1
- package/dist/common/textEditTracker.js +1 -1
- package/dist/common/textEditTracker.js.map +1 -1
- package/dist/common/windowsProcessTree.d.ts +2 -0
- package/dist/common/windowsProcessTree.js +23 -0
- package/dist/common/windowsProcessTree.js.map +1 -1
- package/dist/common/windowsProcessTree.json +273 -34
- package/dist/languageServerBase.d.ts +3 -0
- package/dist/languageServerBase.js +44 -12
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/callHierarchyProvider.js +6 -6
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/referencesProvider.js +3 -3
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/renameProvider.js +1 -1
- package/dist/languageService/renameProvider.js.map +1 -1
- package/dist/languageService/symbolIndexer.js +2 -2
- package/dist/languageService/symbolIndexer.js.map +1 -1
- package/dist/localization/localize.d.ts +2 -0
- package/dist/localization/localize.js +2 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +8 -0
- package/dist/parser/parseTreeTokenReuse.d.ts +34 -0
- package/dist/parser/parseTreeTokenReuse.js +897 -0
- package/dist/parser/parseTreeTokenReuse.js.map +1 -0
- package/dist/parser/tokenizer.d.ts +10 -1
- package/dist/parser/tokenizer.js +184 -130
- package/dist/parser/tokenizer.js.map +1 -1
- package/dist/tests/checker.test.js +58 -0
- package/dist/tests/checker.test.js.map +1 -1
- package/dist/tests/config.test.js +126 -0
- package/dist/tests/config.test.js.map +1 -1
- package/dist/tests/fourSlashParser.test.js +35 -0
- package/dist/tests/fourSlashParser.test.js.map +1 -1
- package/dist/tests/fourslash/hover.typedDict.get.fourslash.js +11 -0
- package/dist/tests/fourslash/hover.typedDict.get.fourslash.js.map +1 -1
- package/dist/tests/harness/fourslash/fourSlashParser.js +14 -4
- package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
- package/dist/tests/languageServer.test.js +15 -0
- package/dist/tests/languageServer.test.js.map +1 -1
- package/dist/tests/lsp/languageServer.js +6 -6
- package/dist/tests/lsp/languageServer.js.map +1 -1
- package/dist/tests/mypyPrimerAnalysis.test.js +133 -0
- package/dist/tests/mypyPrimerAnalysis.test.js.map +1 -1
- package/dist/tests/overloadResultController.test.js +379 -1
- package/dist/tests/overloadResultController.test.js.map +1 -1
- package/dist/tests/signatureHelp.test.js +34 -0
- package/dist/tests/signatureHelp.test.js.map +1 -1
- package/dist/tests/sourceEnumeratorSymlink.test.js +98 -13
- package/dist/tests/sourceEnumeratorSymlink.test.js.map +1 -1
- package/dist/tests/sourceMapperUtils.test.js +143 -0
- package/dist/tests/sourceMapperUtils.test.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +22 -3
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +54 -1
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +10 -3
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +1 -1
- package/dist/tests/typeEvaluator6.test.js +55 -0
- package/dist/tests/typeEvaluator6.test.js.map +1 -1
- package/dist/tests/typeEvaluator7.test.js +30 -0
- package/dist/tests/typeEvaluator7.test.js.map +1 -1
- package/dist/tests/typeEvaluator8.test.js +1293 -2
- package/dist/tests/typeEvaluator8.test.js.map +1 -1
- package/dist/tests/types.test.js +55 -0
- package/dist/tests/types.test.js.map +1 -1
- package/dist/typeServer/programWrapper.js +8 -2
- package/dist/typeServer/programWrapper.js.map +1 -1
- package/dist/typeServer/server.d.ts +12 -2
- package/dist/typeServer/server.js +97 -0
- package/dist/typeServer/server.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseTreeTokenReuse.js","sourceRoot":"","sources":["../../../../../src/parser/parseTreeTokenReuse.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { TextRange } from '../common/textRange';
|
|
2
2
|
import { TextRangeCollection } from '../common/textRangeCollection';
|
|
3
|
+
import { ModuleNode } from './parseNodes';
|
|
3
4
|
import { OperatorFlags, OperatorType, Token } from './tokenizerTypes';
|
|
4
5
|
export interface TokenizerOutput {
|
|
5
6
|
tokens: TextRangeCollection<Token>;
|
|
@@ -34,6 +35,7 @@ export declare class Tokenizer {
|
|
|
34
35
|
private _comments;
|
|
35
36
|
private _fStringStack;
|
|
36
37
|
private _activeFString;
|
|
38
|
+
private _retainedTokenCursor;
|
|
37
39
|
private _crCount;
|
|
38
40
|
private _crLfCount;
|
|
39
41
|
private _lfCount;
|
|
@@ -46,7 +48,7 @@ export declare class Tokenizer {
|
|
|
46
48
|
private static readonly _identifierCacheSize;
|
|
47
49
|
private static readonly _identifierCacheMask;
|
|
48
50
|
private _identifierCache;
|
|
49
|
-
tokenize(text: string, start?: number, length?: number, initialParenDepth?: number, useNotebookMode?: boolean): TokenizerOutput;
|
|
51
|
+
tokenize(text: string, start?: number, length?: number, initialParenDepth?: number, useNotebookMode?: boolean, retainedTree?: ModuleNode): TokenizerOutput;
|
|
50
52
|
static getOperatorInfo(operatorType: OperatorType): OperatorFlags;
|
|
51
53
|
static isWhitespace(token: Token): boolean;
|
|
52
54
|
static isPythonKeyword(name: string, includeSoftKeywords?: boolean): boolean;
|
|
@@ -66,6 +68,13 @@ export declare class Tokenizer {
|
|
|
66
68
|
private _tryNumber;
|
|
67
69
|
private _tryOperator;
|
|
68
70
|
private _handleInvalid;
|
|
71
|
+
private _addToken;
|
|
72
|
+
private _addOperatorToken;
|
|
73
|
+
private _addNewLineToken;
|
|
74
|
+
private _addIndentToken;
|
|
75
|
+
private _addNumberToken;
|
|
76
|
+
private _addFStringEndToken;
|
|
77
|
+
private _reuseToken;
|
|
69
78
|
private _getComments;
|
|
70
79
|
private _getIPythonMagicsKind;
|
|
71
80
|
private _handleIPythonMagics;
|
package/dist/parser/tokenizer.js
CHANGED
|
@@ -16,6 +16,7 @@ const core_1 = require("../common/core");
|
|
|
16
16
|
const textRangeCollection_1 = require("../common/textRangeCollection");
|
|
17
17
|
const characters_1 = require("./characters");
|
|
18
18
|
const characterStream_1 = require("./characterStream");
|
|
19
|
+
const parseTreeTokenReuse_1 = require("./parseTreeTokenReuse");
|
|
19
20
|
const tokenizerTypes_1 = require("./tokenizerTypes");
|
|
20
21
|
// This must be a Map, as operations like {}["constructor"] succeed.
|
|
21
22
|
const _keywords = new Map([
|
|
@@ -519,109 +520,123 @@ class Tokenizer {
|
|
|
519
520
|
this._useNotebookMode = false;
|
|
520
521
|
this._identifierCache = new Array(Tokenizer._identifierCacheSize);
|
|
521
522
|
}
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
this.
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
this.
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
523
|
+
// A retained tree must correspond to the same text and lexical options. Omit it for initial lexing.
|
|
524
|
+
// Each recovery walks the tree to preserve its token identities without retaining a recovery index.
|
|
525
|
+
tokenize(text, start, length, initialParenDepth = 0, useNotebookMode = false, retainedTree) {
|
|
526
|
+
if (retainedTree &&
|
|
527
|
+
((start !== undefined && start !== 0) ||
|
|
528
|
+
(length !== undefined && length !== text.length) ||
|
|
529
|
+
initialParenDepth !== 0)) {
|
|
530
|
+
throw new Error('Token recovery requires complete-file tokenization');
|
|
531
|
+
}
|
|
532
|
+
this._retainedTokenCursor = retainedTree ? new parseTreeTokenReuse_1.ParseTreeTokenCursor(retainedTree) : undefined;
|
|
533
|
+
try {
|
|
534
|
+
if (start === undefined) {
|
|
535
|
+
start = 0;
|
|
536
|
+
}
|
|
537
|
+
else if (start < 0 || start > text.length) {
|
|
538
|
+
throw new Error(`Invalid range start (start=${start}, text.length=${text.length})`);
|
|
539
|
+
}
|
|
540
|
+
if (length === undefined) {
|
|
541
|
+
length = text.length;
|
|
542
|
+
}
|
|
543
|
+
else if (length < 0 || start + length > text.length) {
|
|
544
|
+
throw new Error(`Invalid range length (start=${start}, length=${length}, text.length=${text.length})`);
|
|
545
|
+
}
|
|
546
|
+
else if (start + length < text.length) {
|
|
547
|
+
text = text.slice(0, start + length);
|
|
548
|
+
}
|
|
549
|
+
this._cs = new characterStream_1.CharacterStream(text);
|
|
550
|
+
this._cs.position = start;
|
|
551
|
+
this._tokens = [];
|
|
552
|
+
this._prevLineStart = 0;
|
|
553
|
+
this._parenDepth = initialParenDepth;
|
|
554
|
+
this._lineRanges = [];
|
|
555
|
+
this._indentAmounts = [];
|
|
556
|
+
this._useNotebookMode = useNotebookMode;
|
|
557
|
+
// Clear per-source identifier intern cache.
|
|
558
|
+
this._identifierCache.fill(undefined);
|
|
559
|
+
const end = start + length;
|
|
560
|
+
if (start === 0) {
|
|
561
|
+
this._readIndentationAfterNewLine();
|
|
562
|
+
}
|
|
563
|
+
while (!this._cs.isEndOfStream()) {
|
|
564
|
+
this._addNextToken();
|
|
565
|
+
if (this._cs.position >= end) {
|
|
566
|
+
break;
|
|
567
|
+
}
|
|
567
568
|
}
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
this._tokens.push(tokenizerTypes_1.Token.create(1 /* TokenType.EndOfStream */, this._cs.position, 0, this._getComments()));
|
|
573
|
-
// Add the final line range.
|
|
574
|
-
this._addLineRange();
|
|
575
|
-
// If the last line ended in a line-end character, add an empty line.
|
|
576
|
-
if (this._lineRanges.length > 0) {
|
|
577
|
-
const lastLine = this._lineRanges[this._lineRanges.length - 1];
|
|
578
|
-
const lastCharOfLastLine = text.charCodeAt(lastLine.start + lastLine.length - 1);
|
|
579
|
-
if (lastCharOfLastLine === 13 /* Char.CarriageReturn */ || lastCharOfLastLine === 10 /* Char.LineFeed */) {
|
|
580
|
-
this._lineRanges.push({ start: this._cs.position, length: 0 });
|
|
569
|
+
// Insert any implied FStringEnd tokens.
|
|
570
|
+
while (this._activeFString) {
|
|
571
|
+
this._addFStringEndToken(this._cs.position, 0, this._activeFString.startToken.flags | 65536 /* StringTokenFlags.Unterminated */);
|
|
572
|
+
this._activeFString = this._fStringStack.pop();
|
|
581
573
|
}
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
else if (this._crLfCount > this._crCount && this._crLfCount > this._lfCount) {
|
|
588
|
-
predominantEndOfLineSequence = '\r\n';
|
|
589
|
-
}
|
|
590
|
-
let predominantTabSequence = ' ';
|
|
591
|
-
let hasPredominantTabSequence = false;
|
|
592
|
-
// If more than half of the indents use tab sequences,
|
|
593
|
-
// assume we're using tabs rather than spaces.
|
|
594
|
-
if (this._indentTabCount > this._indentCount / 2) {
|
|
595
|
-
hasPredominantTabSequence = true;
|
|
596
|
-
predominantTabSequence = '\t';
|
|
597
|
-
}
|
|
598
|
-
else if (this._indentCount > 0) {
|
|
599
|
-
hasPredominantTabSequence = true;
|
|
600
|
-
// Compute the average number of spaces per indent
|
|
601
|
-
// to estimate the predominant tab value.
|
|
602
|
-
let averageSpacePerIndent = Math.round(this._indentSpacesTotal / this._indentCount);
|
|
603
|
-
if (averageSpacePerIndent < 1) {
|
|
604
|
-
averageSpacePerIndent = 1;
|
|
574
|
+
// Insert an implied new line to make parsing easier.
|
|
575
|
+
if (this._tokens.length === 0 || this._tokens[this._tokens.length - 1].type !== 2 /* TokenType.NewLine */) {
|
|
576
|
+
if (this._parenDepth === 0) {
|
|
577
|
+
this._addNewLineToken(this._cs.position, 0, 3 /* NewLineType.Implied */);
|
|
578
|
+
}
|
|
605
579
|
}
|
|
606
|
-
|
|
607
|
-
|
|
580
|
+
// Insert any implied dedent tokens.
|
|
581
|
+
this._setIndent(this._cs.position, 0, 0, /* isSpacePresent */ false, /* isTabPresent */ false);
|
|
582
|
+
// Add a final end-of-stream token to make parsing easier.
|
|
583
|
+
this._addToken(1 /* TokenType.EndOfStream */, this._cs.position, 0);
|
|
584
|
+
// Add the final line range.
|
|
585
|
+
this._addLineRange();
|
|
586
|
+
// If the last line ended in a line-end character, add an empty line.
|
|
587
|
+
if (this._lineRanges.length > 0) {
|
|
588
|
+
const lastLine = this._lineRanges[this._lineRanges.length - 1];
|
|
589
|
+
const lastCharOfLastLine = text.charCodeAt(lastLine.start + lastLine.length - 1);
|
|
590
|
+
if (lastCharOfLastLine === 13 /* Char.CarriageReturn */ || lastCharOfLastLine === 10 /* Char.LineFeed */) {
|
|
591
|
+
this._lineRanges.push({ start: this._cs.position, length: 0 });
|
|
592
|
+
}
|
|
608
593
|
}
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
594
|
+
let predominantEndOfLineSequence = '\n';
|
|
595
|
+
if (this._crCount > this._crLfCount && this._crCount > this._lfCount) {
|
|
596
|
+
predominantEndOfLineSequence = '\r';
|
|
597
|
+
}
|
|
598
|
+
else if (this._crLfCount > this._crCount && this._crLfCount > this._lfCount) {
|
|
599
|
+
predominantEndOfLineSequence = '\r\n';
|
|
600
|
+
}
|
|
601
|
+
let predominantTabSequence = ' ';
|
|
602
|
+
let hasPredominantTabSequence = false;
|
|
603
|
+
// If more than half of the indents use tab sequences,
|
|
604
|
+
// assume we're using tabs rather than spaces.
|
|
605
|
+
if (this._indentTabCount > this._indentCount / 2) {
|
|
606
|
+
hasPredominantTabSequence = true;
|
|
607
|
+
predominantTabSequence = '\t';
|
|
608
|
+
}
|
|
609
|
+
else if (this._indentCount > 0) {
|
|
610
|
+
hasPredominantTabSequence = true;
|
|
611
|
+
// Compute the average number of spaces per indent
|
|
612
|
+
// to estimate the predominant tab value.
|
|
613
|
+
let averageSpacePerIndent = Math.round(this._indentSpacesTotal / this._indentCount);
|
|
614
|
+
if (averageSpacePerIndent < 1) {
|
|
615
|
+
averageSpacePerIndent = 1;
|
|
616
|
+
}
|
|
617
|
+
else if (averageSpacePerIndent > defaultTabSize) {
|
|
618
|
+
averageSpacePerIndent = defaultTabSize;
|
|
619
|
+
}
|
|
620
|
+
predominantTabSequence = '';
|
|
621
|
+
for (let i = 0; i < averageSpacePerIndent; i++) {
|
|
622
|
+
predominantTabSequence += ' ';
|
|
623
|
+
}
|
|
612
624
|
}
|
|
625
|
+
return {
|
|
626
|
+
tokens: new textRangeCollection_1.TextRangeCollection(this._tokens),
|
|
627
|
+
lines: new textRangeCollection_1.TextRangeCollection(this._lineRanges),
|
|
628
|
+
typeIgnoreLines: this._typeIgnoreLines,
|
|
629
|
+
typeIgnoreAll: this._typeIgnoreAll,
|
|
630
|
+
pyrightIgnoreLines: this._pyrightIgnoreLines,
|
|
631
|
+
predominantEndOfLineSequence,
|
|
632
|
+
hasPredominantTabSequence,
|
|
633
|
+
predominantTabSequence,
|
|
634
|
+
predominantSingleQuoteCharacter: this._singleQuoteCount >= this._doubleQuoteCount ? "'" : '"',
|
|
635
|
+
};
|
|
636
|
+
}
|
|
637
|
+
finally {
|
|
638
|
+
this._retainedTokenCursor = undefined;
|
|
613
639
|
}
|
|
614
|
-
return {
|
|
615
|
-
tokens: new textRangeCollection_1.TextRangeCollection(this._tokens),
|
|
616
|
-
lines: new textRangeCollection_1.TextRangeCollection(this._lineRanges),
|
|
617
|
-
typeIgnoreLines: this._typeIgnoreLines,
|
|
618
|
-
typeIgnoreAll: this._typeIgnoreAll,
|
|
619
|
-
pyrightIgnoreLines: this._pyrightIgnoreLines,
|
|
620
|
-
predominantEndOfLineSequence,
|
|
621
|
-
hasPredominantTabSequence,
|
|
622
|
-
predominantTabSequence,
|
|
623
|
-
predominantSingleQuoteCharacter: this._singleQuoteCount >= this._doubleQuoteCount ? "'" : '"',
|
|
624
|
-
};
|
|
625
640
|
}
|
|
626
641
|
static getOperatorInfo(operatorType) {
|
|
627
642
|
return _operatorInfo[operatorType];
|
|
@@ -764,31 +779,31 @@ class Tokenizer {
|
|
|
764
779
|
}
|
|
765
780
|
case 40 /* Char.OpenParenthesis */: {
|
|
766
781
|
this._parenDepth++;
|
|
767
|
-
this.
|
|
782
|
+
this._addToken(13 /* TokenType.OpenParenthesis */, this._cs.position, 1);
|
|
768
783
|
break;
|
|
769
784
|
}
|
|
770
785
|
case 41 /* Char.CloseParenthesis */: {
|
|
771
786
|
if (this._parenDepth > 0) {
|
|
772
787
|
this._parenDepth--;
|
|
773
788
|
}
|
|
774
|
-
this.
|
|
789
|
+
this._addToken(14 /* TokenType.CloseParenthesis */, this._cs.position, 1);
|
|
775
790
|
break;
|
|
776
791
|
}
|
|
777
792
|
case 91 /* Char.OpenBracket */: {
|
|
778
793
|
this._parenDepth++;
|
|
779
|
-
this.
|
|
794
|
+
this._addToken(15 /* TokenType.OpenBracket */, this._cs.position, 1);
|
|
780
795
|
break;
|
|
781
796
|
}
|
|
782
797
|
case 93 /* Char.CloseBracket */: {
|
|
783
798
|
if (this._parenDepth > 0) {
|
|
784
799
|
this._parenDepth--;
|
|
785
800
|
}
|
|
786
|
-
this.
|
|
801
|
+
this._addToken(16 /* TokenType.CloseBracket */, this._cs.position, 1);
|
|
787
802
|
break;
|
|
788
803
|
}
|
|
789
804
|
case 123 /* Char.OpenBrace */: {
|
|
790
805
|
this._parenDepth++;
|
|
791
|
-
this.
|
|
806
|
+
this._addToken(17 /* TokenType.OpenCurlyBrace */, this._cs.position, 1);
|
|
792
807
|
if (this._activeFString) {
|
|
793
808
|
// Are we starting a new replacement field?
|
|
794
809
|
if (!this._activeFString.activeReplacementField ||
|
|
@@ -815,19 +830,19 @@ class Tokenizer {
|
|
|
815
830
|
if (this._parenDepth > 0) {
|
|
816
831
|
this._parenDepth--;
|
|
817
832
|
}
|
|
818
|
-
this.
|
|
833
|
+
this._addToken(18 /* TokenType.CloseCurlyBrace */, this._cs.position, 1);
|
|
819
834
|
break;
|
|
820
835
|
}
|
|
821
836
|
case 44 /* Char.Comma */: {
|
|
822
|
-
this.
|
|
837
|
+
this._addToken(12 /* TokenType.Comma */, this._cs.position, 1);
|
|
823
838
|
break;
|
|
824
839
|
}
|
|
825
840
|
case 96 /* Char.Backtick */: {
|
|
826
|
-
this.
|
|
841
|
+
this._addToken(22 /* TokenType.Backtick */, this._cs.position, 1);
|
|
827
842
|
break;
|
|
828
843
|
}
|
|
829
844
|
case 59 /* Char.Semicolon */: {
|
|
830
|
-
this.
|
|
845
|
+
this._addToken(11 /* TokenType.Semicolon */, this._cs.position, 1);
|
|
831
846
|
break;
|
|
832
847
|
}
|
|
833
848
|
case 58 /* Char.Colon */: {
|
|
@@ -835,12 +850,12 @@ class Tokenizer {
|
|
|
835
850
|
if (!this._activeFString ||
|
|
836
851
|
!this._activeFString.activeReplacementField ||
|
|
837
852
|
this._activeFString.activeReplacementField.parenDepth !== this._parenDepth) {
|
|
838
|
-
this.
|
|
853
|
+
this._addOperatorToken(this._cs.position, 2, 35 /* OperatorType.Walrus */);
|
|
839
854
|
this._cs.advance(1);
|
|
840
855
|
break;
|
|
841
856
|
}
|
|
842
857
|
}
|
|
843
|
-
this.
|
|
858
|
+
this._addToken(10 /* TokenType.Colon */, this._cs.position, 1);
|
|
844
859
|
if (this._activeFString?.activeReplacementField &&
|
|
845
860
|
this._parenDepth === this._activeFString.activeReplacementField.parenDepth) {
|
|
846
861
|
this._activeFString.activeReplacementField.inFormatSpecifier = true;
|
|
@@ -855,11 +870,11 @@ class Tokenizer {
|
|
|
855
870
|
}
|
|
856
871
|
if (this._cs.currentChar === 46 /* Char.Period */) {
|
|
857
872
|
if (this._cs.nextChar === 46 /* Char.Period */ && this._cs.lookAhead(2) === 46 /* Char.Period */) {
|
|
858
|
-
this.
|
|
873
|
+
this._addToken(19 /* TokenType.Ellipsis */, this._cs.position, 3);
|
|
859
874
|
this._cs.advance(3);
|
|
860
875
|
return true;
|
|
861
876
|
}
|
|
862
|
-
this.
|
|
877
|
+
this._addToken(20 /* TokenType.Dot */, this._cs.position, 1);
|
|
863
878
|
break;
|
|
864
879
|
}
|
|
865
880
|
if (!this._tryIdentifier()) {
|
|
@@ -884,7 +899,7 @@ class Tokenizer {
|
|
|
884
899
|
// New lines are ignored within parentheses.
|
|
885
900
|
// We'll also avoid adding multiple newlines in a row to simplify parsing.
|
|
886
901
|
if (this._tokens.length === 0 || this._tokens[this._tokens.length - 1].type !== 2 /* TokenType.NewLine */) {
|
|
887
|
-
this.
|
|
902
|
+
this._addNewLineToken(this._cs.position, length, newLineType);
|
|
888
903
|
}
|
|
889
904
|
}
|
|
890
905
|
if (newLineType === 0 /* NewLineType.CarriageReturn */) {
|
|
@@ -963,7 +978,7 @@ class Tokenizer {
|
|
|
963
978
|
isSpacePresent,
|
|
964
979
|
isTabPresent,
|
|
965
980
|
});
|
|
966
|
-
this.
|
|
981
|
+
this._addIndentToken(startOffset, tab1Spaces, tab8Spaces, false);
|
|
967
982
|
}
|
|
968
983
|
}
|
|
969
984
|
else {
|
|
@@ -986,7 +1001,7 @@ class Tokenizer {
|
|
|
986
1001
|
isSpacePresent,
|
|
987
1002
|
isTabPresent,
|
|
988
1003
|
});
|
|
989
|
-
this.
|
|
1004
|
+
this._addIndentToken(startOffset, tab1Spaces, tab8Spaces, isIndentAmbiguous);
|
|
990
1005
|
}
|
|
991
1006
|
else if (prevTabInfo.tab8Spaces === tab8Spaces) {
|
|
992
1007
|
// The Python spec says that if there is ambiguity about how tabs should
|
|
@@ -994,7 +1009,7 @@ class Tokenizer {
|
|
|
994
1009
|
// spaces, it should be an error. We'll record this condition in the token
|
|
995
1010
|
// so the parser can later report it.
|
|
996
1011
|
if ((prevTabInfo.isSpacePresent && isTabPresent) || (prevTabInfo.isTabPresent && isSpacePresent)) {
|
|
997
|
-
this.
|
|
1012
|
+
this._addIndentToken(startOffset, tab1Spaces, tab8Spaces, true);
|
|
998
1013
|
}
|
|
999
1014
|
}
|
|
1000
1015
|
else {
|
|
@@ -1018,7 +1033,8 @@ class Tokenizer {
|
|
|
1018
1033
|
dedentPoints.forEach((dedentAmount, index) => {
|
|
1019
1034
|
const matchesIndent = index < dedentPoints.length - 1 || dedentAmount === tab8Spaces;
|
|
1020
1035
|
const actualDedentAmount = index < dedentPoints.length - 1 ? dedentAmount : tab8Spaces;
|
|
1021
|
-
this._tokens.push(
|
|
1036
|
+
this._tokens.push((this._retainedTokenCursor && this._reuseToken(4 /* TokenType.Dedent */, this._cs.position, 0)) ??
|
|
1037
|
+
tokenizerTypes_1.DedentToken.create(this._cs.position, 0, actualDedentAmount, matchesIndent, isDedentAmbiguous, this._getComments()));
|
|
1022
1038
|
isDedentAmbiguous = false;
|
|
1023
1039
|
});
|
|
1024
1040
|
}
|
|
@@ -1081,11 +1097,13 @@ class Tokenizer {
|
|
|
1081
1097
|
const length = end - start;
|
|
1082
1098
|
const keywordType = getKeywordTypeFromTextSlice(text, start, length);
|
|
1083
1099
|
if (keywordType !== undefined) {
|
|
1084
|
-
this._tokens.push(
|
|
1100
|
+
this._tokens.push((this._retainedTokenCursor && this._reuseToken(8 /* TokenType.Keyword */, start, length)) ??
|
|
1101
|
+
tokenizerTypes_1.KeywordToken.create(start, length, keywordType, this._getComments()));
|
|
1085
1102
|
}
|
|
1086
1103
|
else {
|
|
1087
1104
|
const value = this._internIdentifier(text, start, end, length);
|
|
1088
|
-
this._tokens.push(
|
|
1105
|
+
this._tokens.push((this._retainedTokenCursor && this._reuseToken(7 /* TokenType.Identifier */, start, length)) ??
|
|
1106
|
+
tokenizerTypes_1.IdentifierToken.create(start, length, value, this._getComments()));
|
|
1089
1107
|
}
|
|
1090
1108
|
return true;
|
|
1091
1109
|
}
|
|
@@ -1179,7 +1197,7 @@ class Tokenizer {
|
|
|
1179
1197
|
intValue > Number.MAX_SAFE_INTEGER) {
|
|
1180
1198
|
intValue = bigIntValue;
|
|
1181
1199
|
}
|
|
1182
|
-
this.
|
|
1200
|
+
this._addNumberToken(start, end - start, intValue, true, false);
|
|
1183
1201
|
return true;
|
|
1184
1202
|
}
|
|
1185
1203
|
}
|
|
@@ -1231,7 +1249,7 @@ class Tokenizer {
|
|
|
1231
1249
|
this._cs.moveNext();
|
|
1232
1250
|
tokenLength += 1;
|
|
1233
1251
|
}
|
|
1234
|
-
this.
|
|
1252
|
+
this._addNumberToken(start, tokenLength, intValue, true, isImaginary);
|
|
1235
1253
|
return true;
|
|
1236
1254
|
}
|
|
1237
1255
|
}
|
|
@@ -1251,7 +1269,7 @@ class Tokenizer {
|
|
|
1251
1269
|
this._cs.moveNext();
|
|
1252
1270
|
tokenLength += 1;
|
|
1253
1271
|
}
|
|
1254
|
-
this.
|
|
1272
|
+
this._addNumberToken(start, tokenLength, value, false, isImaginary);
|
|
1255
1273
|
return true;
|
|
1256
1274
|
}
|
|
1257
1275
|
}
|
|
@@ -1268,13 +1286,13 @@ class Tokenizer {
|
|
|
1268
1286
|
const twoCharKey = (currentChar << 8) | nextChar;
|
|
1269
1287
|
const specialTokenType = _twoCharSpecialTokenTypeMap.get(twoCharKey);
|
|
1270
1288
|
if (specialTokenType !== undefined) {
|
|
1271
|
-
this.
|
|
1289
|
+
this._addToken(specialTokenType, this._cs.position, 2);
|
|
1272
1290
|
this._cs.advance(2);
|
|
1273
1291
|
return true;
|
|
1274
1292
|
}
|
|
1275
1293
|
const twoCharOperatorType = _twoCharOperatorTypeMap.get(twoCharKey);
|
|
1276
1294
|
if (twoCharOperatorType !== undefined) {
|
|
1277
|
-
this.
|
|
1295
|
+
this._addOperatorToken(this._cs.position, 2, twoCharOperatorType);
|
|
1278
1296
|
this._cs.advance(2);
|
|
1279
1297
|
return true;
|
|
1280
1298
|
}
|
|
@@ -1286,7 +1304,7 @@ class Tokenizer {
|
|
|
1286
1304
|
const operatorType = hasTrailingEqual
|
|
1287
1305
|
? _repeatedCharEqualOperatorTypeTable[currentChar]
|
|
1288
1306
|
: repeatedOperatorType;
|
|
1289
|
-
this.
|
|
1307
|
+
this._addOperatorToken(this._cs.position, repeatedLength, operatorType);
|
|
1290
1308
|
this._cs.advance(repeatedLength);
|
|
1291
1309
|
return true;
|
|
1292
1310
|
}
|
|
@@ -1304,7 +1322,7 @@ class Tokenizer {
|
|
|
1304
1322
|
length = 1;
|
|
1305
1323
|
operatorType = singleCharOperatorType;
|
|
1306
1324
|
}
|
|
1307
|
-
this.
|
|
1325
|
+
this._addOperatorToken(this._cs.position, length, operatorType);
|
|
1308
1326
|
this._cs.advance(length);
|
|
1309
1327
|
return true;
|
|
1310
1328
|
}
|
|
@@ -1312,7 +1330,7 @@ class Tokenizer {
|
|
|
1312
1330
|
// `!=` is handled by the 2-char fast path above.
|
|
1313
1331
|
if (currentChar === 33 /* Char.ExclamationMark */ && this._activeFString) {
|
|
1314
1332
|
// Handle the conversion separator (!) within an f-string.
|
|
1315
|
-
this.
|
|
1333
|
+
this._addToken(23 /* TokenType.ExclamationMark */, this._cs.position, 1);
|
|
1316
1334
|
this._cs.advance(1);
|
|
1317
1335
|
return true;
|
|
1318
1336
|
}
|
|
@@ -1337,11 +1355,43 @@ class Tokenizer {
|
|
|
1337
1355
|
}
|
|
1338
1356
|
const length = this._cs.position - start;
|
|
1339
1357
|
if (length > 0) {
|
|
1340
|
-
this.
|
|
1358
|
+
this._addToken(0 /* TokenType.Invalid */, start, length);
|
|
1341
1359
|
return true;
|
|
1342
1360
|
}
|
|
1343
1361
|
return false;
|
|
1344
1362
|
}
|
|
1363
|
+
_addToken(type, start, length) {
|
|
1364
|
+
this._tokens.push((this._retainedTokenCursor && this._reuseToken(type, start, length)) ??
|
|
1365
|
+
tokenizerTypes_1.Token.create(type, start, length, this._getComments()));
|
|
1366
|
+
}
|
|
1367
|
+
_addOperatorToken(start, length, operatorType) {
|
|
1368
|
+
this._tokens.push((this._retainedTokenCursor && this._reuseToken(9 /* TokenType.Operator */, start, length)) ??
|
|
1369
|
+
tokenizerTypes_1.OperatorToken.create(start, length, operatorType, this._getComments()));
|
|
1370
|
+
}
|
|
1371
|
+
_addNewLineToken(start, length, newLineType) {
|
|
1372
|
+
this._tokens.push((this._retainedTokenCursor && this._reuseToken(2 /* TokenType.NewLine */, start, length)) ??
|
|
1373
|
+
tokenizerTypes_1.NewLineToken.create(start, length, newLineType, this._getComments()));
|
|
1374
|
+
}
|
|
1375
|
+
_addIndentToken(start, length, indentAmount, isIndentAmbiguous) {
|
|
1376
|
+
this._tokens.push((this._retainedTokenCursor && this._reuseToken(3 /* TokenType.Indent */, start, length)) ??
|
|
1377
|
+
tokenizerTypes_1.IndentToken.create(start, length, indentAmount, isIndentAmbiguous, this._getComments()));
|
|
1378
|
+
}
|
|
1379
|
+
_addNumberToken(start, length, value, isInteger, isImaginary) {
|
|
1380
|
+
this._tokens.push((this._retainedTokenCursor && this._reuseToken(6 /* TokenType.Number */, start, length)) ??
|
|
1381
|
+
tokenizerTypes_1.NumberToken.create(start, length, value, isInteger, isImaginary, this._getComments()));
|
|
1382
|
+
}
|
|
1383
|
+
_addFStringEndToken(start, length, flags) {
|
|
1384
|
+
this._tokens.push((this._retainedTokenCursor &&
|
|
1385
|
+
this._reuseToken(26 /* TokenType.FStringEnd */, start, length, /* consumeComments */ false)) ??
|
|
1386
|
+
tokenizerTypes_1.FStringEndToken.create(start, length, flags));
|
|
1387
|
+
}
|
|
1388
|
+
_reuseToken(type, start, length, consumeComments = true) {
|
|
1389
|
+
const token = this._retainedTokenCursor.next(start, length, type);
|
|
1390
|
+
if (token && consumeComments) {
|
|
1391
|
+
this._getComments();
|
|
1392
|
+
}
|
|
1393
|
+
return token;
|
|
1394
|
+
}
|
|
1345
1395
|
_getComments() {
|
|
1346
1396
|
const prevComments = this._comments;
|
|
1347
1397
|
this._comments = undefined;
|
|
@@ -1560,7 +1610,8 @@ class Tokenizer {
|
|
|
1560
1610
|
this._cs.moveNext();
|
|
1561
1611
|
}
|
|
1562
1612
|
const end = this._cs.position;
|
|
1563
|
-
const fStringStartToken =
|
|
1613
|
+
const fStringStartToken = (this._retainedTokenCursor && this._reuseToken(24 /* TokenType.FStringStart */, start, end - start)) ??
|
|
1614
|
+
tokenizerTypes_1.FStringStartToken.create(start, end - start, flags, stringPrefixLength, this._getComments());
|
|
1564
1615
|
// Create a new f-string context and push it on the stack.
|
|
1565
1616
|
const fStringContext = {
|
|
1566
1617
|
startToken: fStringStartToken,
|
|
@@ -1616,7 +1667,8 @@ class Tokenizer {
|
|
|
1616
1667
|
}
|
|
1617
1668
|
}
|
|
1618
1669
|
}
|
|
1619
|
-
this._tokens.push(
|
|
1670
|
+
this._tokens.push((this._retainedTokenCursor && this._reuseToken(5 /* TokenType.String */, start, end - start)) ??
|
|
1671
|
+
tokenizerTypes_1.StringToken.create(start, end - start, stringLiteralInfo.flags, stringLiteralInfo.escapedValue, stringPrefixLength, this._getComments()));
|
|
1620
1672
|
}
|
|
1621
1673
|
}
|
|
1622
1674
|
// Scans for either the FString end token or a replacement field.
|
|
@@ -1636,10 +1688,12 @@ class Tokenizer {
|
|
|
1636
1688
|
middleTokenLength -= activeFString.startToken.quoteMarkLength;
|
|
1637
1689
|
}
|
|
1638
1690
|
if (middleTokenLength > 0 || isUnterminated) {
|
|
1639
|
-
this._tokens.push(
|
|
1691
|
+
this._tokens.push((this._retainedTokenCursor &&
|
|
1692
|
+
this._reuseToken(25 /* TokenType.FStringMiddle */, start, middleTokenLength, /* consumeComments */ false)) ??
|
|
1693
|
+
tokenizerTypes_1.FStringMiddleToken.create(start, middleTokenLength, stringLiteralInfo.flags, stringLiteralInfo.escapedValue));
|
|
1640
1694
|
}
|
|
1641
1695
|
if (sawEndQuote) {
|
|
1642
|
-
this.
|
|
1696
|
+
this._addFStringEndToken(start + middleTokenLength, activeFString.startToken.quoteMarkLength, stringLiteralInfo.flags);
|
|
1643
1697
|
this._activeFString = this._fStringStack.pop();
|
|
1644
1698
|
}
|
|
1645
1699
|
else if (isUnterminated) {
|