@zzzen/pyright-internal 1.2.0-beta → 1.2.0-dev.20220710
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/README.md +82 -1
- package/dist/analyzer/aliasDeclarationUtils.js +2 -2
- package/dist/analyzer/analyzerFileInfo.d.ts +2 -1
- package/dist/analyzer/analyzerFileInfo.js.map +1 -1
- package/dist/analyzer/analyzerNodeInfo.d.ts +4 -1
- package/dist/analyzer/analyzerNodeInfo.js +12 -1
- package/dist/analyzer/analyzerNodeInfo.js.map +1 -1
- package/dist/analyzer/binder.d.ts +6 -1
- package/dist/analyzer/binder.js +134 -31
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.d.ts +4 -1
- package/dist/analyzer/checker.js +129 -48
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.js +6 -1
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +8 -5
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/declaration.d.ts +18 -6
- package/dist/analyzer/declaration.js +19 -9
- package/dist/analyzer/declaration.js.map +1 -1
- package/dist/analyzer/declarationUtils.d.ts +1 -1
- package/dist/analyzer/declarationUtils.js +19 -16
- package/dist/analyzer/declarationUtils.js.map +1 -1
- package/dist/analyzer/functionTransform.js +2 -1
- package/dist/analyzer/functionTransform.js.map +1 -1
- package/dist/analyzer/packageTypeVerifier.js +6 -6
- package/dist/analyzer/parseTreeUtils.d.ts +3 -3
- package/dist/analyzer/parseTreeUtils.js +28 -18
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/parseTreeWalker.d.ts +4 -1
- package/dist/analyzer/parseTreeWalker.js +19 -1
- package/dist/analyzer/parseTreeWalker.js.map +1 -1
- package/dist/analyzer/patternMatching.js +1 -1
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +2 -2
- package/dist/analyzer/program.js +1 -1
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/properties.js +2 -0
- package/dist/analyzer/properties.js.map +1 -1
- package/dist/analyzer/protocols.d.ts +0 -1
- package/dist/analyzer/protocols.js +1 -63
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/service.d.ts +3 -2
- package/dist/analyzer/service.js +3 -2
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +6 -1
- package/dist/analyzer/sourceFile.js +17 -5
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/tracePrinter.js +8 -4
- package/dist/analyzer/tracePrinter.js.map +1 -1
- package/dist/analyzer/typeDocStringUtils.js +1 -1
- package/dist/analyzer/typeEvaluator.js +692 -293
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +5 -3
- package/dist/analyzer/typeEvaluatorWithTracker.js +2 -0
- package/dist/analyzer/typeEvaluatorWithTracker.js.map +1 -1
- package/dist/analyzer/typeGuards.js +5 -0
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typePrinter.js +4 -1
- package/dist/analyzer/typePrinter.js.map +1 -1
- package/dist/analyzer/typeStubWriter.d.ts +4 -1
- package/dist/analyzer/typeStubWriter.js +36 -0
- package/dist/analyzer/typeStubWriter.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +1 -1
- package/dist/analyzer/typeUtils.js +14 -9
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typedDicts.js +3 -1
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +13 -5
- package/dist/analyzer/types.js +34 -11
- package/dist/analyzer/types.js.map +1 -1
- package/dist/languageServerBase.d.ts +3 -2
- package/dist/languageServerBase.js +3 -2
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/autoImporter.js +1 -1
- package/dist/languageService/callHierarchyProvider.js +9 -9
- package/dist/languageService/completionProvider.js +19 -13
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/definitionProvider.js +3 -3
- package/dist/languageService/documentSymbolCollector.js +1 -1
- package/dist/languageService/documentSymbolProvider.js +10 -7
- package/dist/languageService/documentSymbolProvider.js.map +1 -1
- package/dist/languageService/hoverProvider.js +19 -5
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/indentationUtils.js +3 -2
- package/dist/languageService/indentationUtils.js.map +1 -1
- package/dist/languageService/insertionPointUtils.d.ts +9 -0
- package/dist/languageService/insertionPointUtils.js +110 -0
- package/dist/languageService/insertionPointUtils.js.map +1 -0
- package/dist/languageService/referencesProvider.js +8 -5
- package/dist/languageService/referencesProvider.js.map +1 -1
- package/dist/languageService/signatureHelpProvider.js +4 -2
- package/dist/languageService/signatureHelpProvider.js.map +1 -1
- package/dist/languageService/tooltipUtils.js +1 -1
- package/dist/localization/localize.d.ts +27 -0
- package/dist/localization/localize.js +16 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +18 -2
- package/dist/parser/parseNodes.d.ts +41 -5
- package/dist/parser/parseNodes.js +83 -4
- package/dist/parser/parseNodes.js.map +1 -1
- package/dist/parser/parser.d.ts +5 -1
- package/dist/parser/parser.js +131 -13
- package/dist/parser/parser.js.map +1 -1
- package/dist/parser/tokenizer.d.ts +2 -1
- package/dist/parser/tokenizer.js +7 -5
- package/dist/parser/tokenizer.js.map +1 -1
- package/dist/parser/tokenizerTypes.d.ts +5 -3
- package/dist/parser/tokenizerTypes.js +6 -4
- package/dist/parser/tokenizerTypes.js.map +1 -1
- package/dist/tests/chainedSourceFiles.test.js +2 -1
- package/dist/tests/chainedSourceFiles.test.js.map +1 -1
- package/dist/tests/fourslash/import.multipart.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/import.multipart.fourslash.js +18 -0
- package/dist/tests/fourslash/import.multipart.fourslash.js.map +1 -0
- package/dist/tests/fourslash/signature.simple.fourslash.js +16 -0
- package/dist/tests/fourslash/signature.simple.fourslash.js.map +1 -1
- package/dist/tests/insertionPointUtils.test.d.ts +1 -0
- package/dist/tests/insertionPointUtils.test.js +74 -0
- package/dist/tests/insertionPointUtils.test.js.map +1 -0
- package/dist/tests/testUtils.js +2 -1
- package/dist/tests/testUtils.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +8 -0
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +10 -0
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.d.ts +1 -0
- package/dist/tests/typeEvaluator5.test.js +118 -0
- package/dist/tests/typeEvaluator5.test.js.map +1 -0
- package/package.json +3 -2
package/README.md
CHANGED
@@ -1 +1,82 @@
|
|
1
|
-
# pyright-
|
1
|
+
# @zzzen/pyright-internal
|
2
|
+
|
3
|
+
Repackaged [pyright-internal](https://github.com/microsoft/pyright/tree/main/packages/pyright-internal) with type declaration enabled.
|
4
|
+
|
5
|
+
# Installation
|
6
|
+
|
7
|
+
```sh
|
8
|
+
npm i @zzzen/pyright-internal
|
9
|
+
```
|
10
|
+
|
11
|
+
# Demo
|
12
|
+
|
13
|
+
print ast of code
|
14
|
+
|
15
|
+
```ts
|
16
|
+
import { ImportResolver } from "@zzzen/pyright-internal/dist/analyzer/importResolver";
|
17
|
+
import { printParseNodeType } from "@zzzen/pyright-internal/dist/analyzer/parseTreeUtils";
|
18
|
+
import { ParseTreeWalker } from "@zzzen/pyright-internal/dist/analyzer/parseTreeWalker";
|
19
|
+
import { Program } from "@zzzen/pyright-internal/dist/analyzer/program";
|
20
|
+
import { ConfigOptions } from "@zzzen/pyright-internal/dist/common/configOptions";
|
21
|
+
import {
|
22
|
+
lib,
|
23
|
+
sitePackages,
|
24
|
+
} from "@zzzen/pyright-internal/dist/common/pathConsts";
|
25
|
+
import {
|
26
|
+
combinePaths,
|
27
|
+
normalizeSlashes,
|
28
|
+
} from "@zzzen/pyright-internal/dist/common/pathUtils";
|
29
|
+
import { ParseNode } from "@zzzen/pyright-internal/dist/parser/parseNodes";
|
30
|
+
import { PyrightFileSystem } from "@zzzen/pyright-internal/dist/pyrightFileSystem";
|
31
|
+
import { TestAccessHost } from "@zzzen/pyright-internal/dist/tests/harness/testAccessHost";
|
32
|
+
import { TestFileSystem } from "@zzzen/pyright-internal/dist/tests/harness/vfs/filesystem";
|
33
|
+
|
34
|
+
const FILE_PATH = "/t.py";
|
35
|
+
|
36
|
+
const defaultCode = `
|
37
|
+
def f(a = 1):
|
38
|
+
return a
|
39
|
+
f(1)
|
40
|
+
`;
|
41
|
+
|
42
|
+
// console.log(process.execArgv.join())
|
43
|
+
const libraryRoot = combinePaths(normalizeSlashes("/"), lib, sitePackages);
|
44
|
+
|
45
|
+
const tfs = new TestFileSystem(false, {
|
46
|
+
files: {
|
47
|
+
[FILE_PATH]: defaultCode,
|
48
|
+
},
|
49
|
+
});
|
50
|
+
|
51
|
+
const fs = new PyrightFileSystem(tfs);
|
52
|
+
|
53
|
+
const configOptions = new ConfigOptions(normalizeSlashes("/"));
|
54
|
+
configOptions.typeshedPath = normalizeSlashes(
|
55
|
+
"/node_modules/pyright/dist/typeshed-fallback"
|
56
|
+
);
|
57
|
+
const importResolver = new ImportResolver(
|
58
|
+
fs,
|
59
|
+
configOptions,
|
60
|
+
new TestAccessHost(fs.getModulePath(), [libraryRoot])
|
61
|
+
);
|
62
|
+
const program = new Program(importResolver, configOptions);
|
63
|
+
program.setTrackedFiles([FILE_PATH]);
|
64
|
+
|
65
|
+
while (program.analyze()) {
|
66
|
+
// Continue to call analyze until it completes. Since we're not
|
67
|
+
// specifying a timeout, it should complete the first time.
|
68
|
+
}
|
69
|
+
|
70
|
+
const sourceFile = program.getSourceFile(FILE_PATH)!;
|
71
|
+
|
72
|
+
class PrintWalker extends ParseTreeWalker {
|
73
|
+
override visitNode(node: ParseNode) {
|
74
|
+
console.log(printParseNodeType(node.nodeType));
|
75
|
+
return super.visitNode(node);
|
76
|
+
}
|
77
|
+
}
|
78
|
+
|
79
|
+
new PrintWalker().walk(sourceFile.getParseResults()!.parseTree);
|
80
|
+
```
|
81
|
+
|
82
|
+
For more details, checkout [pyright-ast-viewer](https://github.com/Zzzen/pyright-ast-viewer).
|
@@ -22,7 +22,7 @@ function resolveAliasDeclaration(importLookup, declaration, resolveLocalNames, a
|
|
22
22
|
let privatePyTypedImported;
|
23
23
|
let privatePyTypedImporter;
|
24
24
|
while (true) {
|
25
|
-
if (curDeclaration.type !==
|
25
|
+
if (curDeclaration.type !== 8 /* Alias */ || !curDeclaration.symbolName) {
|
26
26
|
return {
|
27
27
|
declaration: curDeclaration,
|
28
28
|
isPrivate,
|
@@ -110,7 +110,7 @@ function resolveAliasDeclaration(importLookup, declaration, resolveLocalNames, a
|
|
110
110
|
// the module is foo, and the foo.__init__.py file contains the statement
|
111
111
|
// "from foo import bar", we want to import the foo/bar.py submodule.
|
112
112
|
if (curDeclaration.path === declaration.path &&
|
113
|
-
curDeclaration.type ===
|
113
|
+
curDeclaration.type === 8 /* Alias */ &&
|
114
114
|
curDeclaration.submoduleFallback) {
|
115
115
|
return resolveAliasDeclaration(importLookup, curDeclaration.submoduleFallback, resolveLocalNames, allowExternallyHiddenAccess);
|
116
116
|
}
|
@@ -3,6 +3,7 @@ import { TextRangeDiagnosticSink } from '../common/diagnosticSink';
|
|
3
3
|
import { TextRange } from '../common/textRange';
|
4
4
|
import { TextRangeCollection } from '../common/textRangeCollection';
|
5
5
|
import { Scope } from './scope';
|
6
|
+
import { IPythonMode } from './sourceFile';
|
6
7
|
import { SymbolTable } from './symbol';
|
7
8
|
export interface AbsoluteModuleDescriptor {
|
8
9
|
importingFilePath: string;
|
@@ -33,7 +34,7 @@ export interface AnalyzerFileInfo {
|
|
33
34
|
isTypingExtensionsStubFile: boolean;
|
34
35
|
isBuiltInStubFile: boolean;
|
35
36
|
isInPyTypedPackage: boolean;
|
36
|
-
|
37
|
+
ipythonMode: IPythonMode;
|
37
38
|
accessedSymbolSet: Set<number>;
|
38
39
|
}
|
39
40
|
export declare function isAnnotationEvaluationPostponed(fileInfo: AnalyzerFileInfo): boolean;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"analyzerFileInfo.js","sourceRoot":"","sources":["../../../src/analyzer/analyzerFileInfo.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;
|
1
|
+
{"version":3,"file":"analyzerFileInfo.js","sourceRoot":"","sources":["../../../src/analyzer/analyzerFileInfo.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AA8CH,SAAgB,+BAA+B,CAAC,QAA0B;IACtE,OAAO,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,SAAS,IAAI,QAAQ,CAAC,UAAU,CAAC;AAC1F,CAAC;AAFD,0EAEC"}
|
@@ -1,9 +1,10 @@
|
|
1
|
-
import { ClassNode, ExecutionScopeNode, FunctionNode, LambdaNode, ListComprehensionNode, ModuleNode, ParseNode, StringNode } from '../parser/parseNodes';
|
1
|
+
import { ClassNode, ExecutionScopeNode, FunctionNode, LambdaNode, ListComprehensionNode, ModuleNode, NameNode, ParseNode, StringNode } from '../parser/parseNodes';
|
2
2
|
import { AnalyzerFileInfo } from './analyzerFileInfo';
|
3
3
|
import { FlowNode } from './codeFlowTypes';
|
4
4
|
import { Declaration } from './declaration';
|
5
5
|
import { ImportResult } from './importResult';
|
6
6
|
import { Scope } from './scope';
|
7
|
+
import { Symbol } from './symbol';
|
7
8
|
export interface DunderAllInfo {
|
8
9
|
names: string[];
|
9
10
|
stringNodes: StringNode[];
|
@@ -29,4 +30,6 @@ export declare function getCodeFlowComplexity(node: ExecutionScopeNode): number;
|
|
29
30
|
export declare function setCodeFlowComplexity(node: ExecutionScopeNode, complexity: number): void;
|
30
31
|
export declare function getDunderAllInfo(node: ModuleNode): DunderAllInfo | undefined;
|
31
32
|
export declare function setDunderAllInfo(node: ModuleNode, names: DunderAllInfo | undefined): void;
|
33
|
+
export declare function getTypeParameterSymbol(node: NameNode): Symbol | undefined;
|
34
|
+
export declare function setTypeParameterSymbol(node: NameNode, symbol: Symbol): void;
|
32
35
|
export declare function isCodeUnreachable(node: ParseNode): boolean;
|
@@ -11,7 +11,7 @@
|
|
11
11
|
* (e.g. hover information).
|
12
12
|
*/
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
14
|
-
exports.isCodeUnreachable = exports.setDunderAllInfo = exports.getDunderAllInfo = exports.setCodeFlowComplexity = exports.getCodeFlowComplexity = exports.setCodeFlowExpressions = exports.getCodeFlowExpressions = exports.setFileInfo = exports.getFileInfo = exports.setAfterFlowNode = exports.getAfterFlowNode = exports.setFlowNode = exports.getFlowNode = exports.setDeclaration = exports.getDeclaration = exports.setScope = exports.getScope = exports.setImportInfo = exports.getImportInfo = exports.cleanNodeAnalysisInfo = void 0;
|
14
|
+
exports.isCodeUnreachable = exports.setTypeParameterSymbol = exports.getTypeParameterSymbol = exports.setDunderAllInfo = exports.getDunderAllInfo = exports.setCodeFlowComplexity = exports.getCodeFlowComplexity = exports.setCodeFlowExpressions = exports.getCodeFlowExpressions = exports.setFileInfo = exports.getFileInfo = exports.setAfterFlowNode = exports.getAfterFlowNode = exports.setFlowNode = exports.getFlowNode = exports.setDeclaration = exports.getDeclaration = exports.setScope = exports.getScope = exports.setImportInfo = exports.getImportInfo = exports.cleanNodeAnalysisInfo = void 0;
|
15
15
|
const codeFlowTypes_1 = require("./codeFlowTypes");
|
16
16
|
// Cleans out all fields that are added by the analyzer phases
|
17
17
|
// (after the post-parse walker).
|
@@ -25,6 +25,7 @@ function cleanNodeAnalysisInfo(node) {
|
|
25
25
|
delete analyzerNode.codeFlowExpressions;
|
26
26
|
delete analyzerNode.codeFlowComplexity;
|
27
27
|
delete analyzerNode.dunderAllInfo;
|
28
|
+
delete analyzerNode.typeParameterSymbol;
|
28
29
|
}
|
29
30
|
exports.cleanNodeAnalysisInfo = cleanNodeAnalysisInfo;
|
30
31
|
function getImportInfo(node) {
|
@@ -121,6 +122,16 @@ function setDunderAllInfo(node, names) {
|
|
121
122
|
analyzerNode.dunderAllInfo = names;
|
122
123
|
}
|
123
124
|
exports.setDunderAllInfo = setDunderAllInfo;
|
125
|
+
function getTypeParameterSymbol(node) {
|
126
|
+
const analyzerNode = node;
|
127
|
+
return analyzerNode.typeParameterSymbol;
|
128
|
+
}
|
129
|
+
exports.getTypeParameterSymbol = getTypeParameterSymbol;
|
130
|
+
function setTypeParameterSymbol(node, symbol) {
|
131
|
+
const analyzerNode = node;
|
132
|
+
analyzerNode.typeParameterSymbol = symbol;
|
133
|
+
}
|
134
|
+
exports.setTypeParameterSymbol = setTypeParameterSymbol;
|
124
135
|
function isCodeUnreachable(node) {
|
125
136
|
let curNode = node;
|
126
137
|
// Walk up the parse tree until we find a node with
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"analyzerNodeInfo.js","sourceRoot":"","sources":["../../../src/analyzer/analyzerNodeInfo.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;
|
1
|
+
{"version":3,"file":"analyzerNodeInfo.js","sourceRoot":"","sources":["../../../src/analyzer/analyzerNodeInfo.ts"],"names":[],"mappings":"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"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { AssertNode, AssignmentExpressionNode, AssignmentNode, AugmentedAssignmentNode, AwaitNode, BinaryOperationNode, BreakNode, CallNode, ClassNode, ContinueNode, DelNode, ExceptNode, ForNode, FunctionNode, GlobalNode, IfNode, ImportAsNode, ImportFromNode, IndexNode, LambdaNode, ListComprehensionNode, MatchNode, MemberAccessNode, ModuleNameNode, ModuleNode, NameNode, NonlocalNode, ParseNode, PatternAsNode, PatternCaptureNode, PatternMappingExpandEntryNode, RaiseNode, ReturnNode, SuiteNode, TernaryNode, TryNode, TypeAnnotationNode, UnaryOperationNode, WhileNode, WithNode, YieldFromNode, YieldNode } from '../parser/parseNodes';
|
1
|
+
import { AssertNode, AssignmentExpressionNode, AssignmentNode, AugmentedAssignmentNode, AwaitNode, BinaryOperationNode, BreakNode, CallNode, ClassNode, ContinueNode, DelNode, ExceptNode, ForNode, FunctionNode, GlobalNode, IfNode, ImportAsNode, ImportFromNode, IndexNode, LambdaNode, ListComprehensionNode, MatchNode, MemberAccessNode, ModuleNameNode, ModuleNode, NameNode, NonlocalNode, ParseNode, PatternAsNode, PatternCaptureNode, PatternMappingExpandEntryNode, RaiseNode, ReturnNode, SuiteNode, TernaryNode, TryNode, TypeAliasNode, TypeAnnotationNode, TypeParameterListNode, UnaryOperationNode, WhileNode, WithNode, YieldFromNode, YieldNode } from '../parser/parseNodes';
|
2
2
|
import { AnalyzerFileInfo } from './analyzerFileInfo';
|
3
3
|
import { ParseTreeWalker } from './parseTreeWalker';
|
4
4
|
export declare class Binder extends ParseTreeWalker {
|
@@ -7,6 +7,7 @@ export declare class Binder extends ParseTreeWalker {
|
|
7
7
|
private _deferredBindingTasks;
|
8
8
|
private _currentScope;
|
9
9
|
private _currentFlowNode;
|
10
|
+
private _activeTypeParams;
|
10
11
|
private _targetFunctionDeclaration;
|
11
12
|
private _currentBreakTarget;
|
12
13
|
private _currentContinueTarget;
|
@@ -39,6 +40,8 @@ export declare class Binder extends ParseTreeWalker {
|
|
39
40
|
visitFunction(node: FunctionNode): boolean;
|
40
41
|
visitLambda(node: LambdaNode): boolean;
|
41
42
|
visitCall(node: CallNode): boolean;
|
43
|
+
visitTypeParameterList(node: TypeParameterListNode): boolean;
|
44
|
+
visitTypeAlias(node: TypeAliasNode): boolean;
|
42
45
|
visitAssignment(node: AssignmentNode): boolean;
|
43
46
|
visitAssignmentExpression(node: AssignmentExpressionNode): boolean;
|
44
47
|
visitAugmentedAssignment(node: AugmentedAssignmentNode): boolean;
|
@@ -73,6 +76,7 @@ export declare class Binder extends ParseTreeWalker {
|
|
73
76
|
visitPatternAs(node: PatternAsNode): boolean;
|
74
77
|
visitPatternCapture(node: PatternCaptureNode): boolean;
|
75
78
|
visitPatternMappingExpandEntry(node: PatternMappingExpandEntryNode): boolean;
|
79
|
+
private _removeActiveTypeParameters;
|
76
80
|
private _getNonClassParentScope;
|
77
81
|
private _addSlotsToCurrentScope;
|
78
82
|
private _isInListComprehension;
|
@@ -108,6 +112,7 @@ export declare class Binder extends ParseTreeWalker {
|
|
108
112
|
private _bindLoopStatement;
|
109
113
|
private _addAntecedent;
|
110
114
|
private _bindNameToScope;
|
115
|
+
private _bindNameValueToScope;
|
111
116
|
private _bindPossibleTupleNamedTarget;
|
112
117
|
private _addImplicitSymbolToCurrentScope;
|
113
118
|
private _addSymbolToCurrentScope;
|