8000 Implemented provisional support for proposed PEP 695: Improved Syntax… · nejch/scip-python@d7e2571 · GitHub
[go: up one dir, main page]

Skip to content

Commit d7e2571

Browse files
committed
Implemented provisional support for proposed PEP 695: Improved Syntax for Type Parameters. The new functionality is available only if you manually configure pyright to assume Python 3.12. It supports the new type parameter syntax, support for "type" statements (for type alias declarations) and support for autovariance.
1 parent 6e4d539 commit d7e2571

40 files changed

+2121
-375
lines changed

packages/pyright-internal/src/analyzer/analyzerNodeInfo.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
LambdaNode,
1818
ListComprehensionNode,
1919
ModuleNode,
20+
NameNode,
2021
ParseNode,
2122
ParseNodeType,
2223
StringNode,
@@ -26,6 +27,7 @@ import { FlowFlags, FlowNode } from './codeFlowTypes';
2627
import { Declaration } from './declaration';
2728
import { ImportResult } from './importResult';
2829
import { Scope } from './scope';
30+
import { Symbol } from './symbol';
2931

3032
export interface DunderAllInfo {
3133
names: string[];
@@ -70,6 +72,9 @@ interface AnalyzerNodeInfo {
7072

7173
// List of __all__ symbols in the module.
7274
dunderAllInfo?: DunderAllInfo | undefined;
75+
76+
// Indicates that the NameNode refers to a type parameter.
77+
typeParameterSymbol?: Symbol;
7378
}
7479

7580
export type ScopedNode = ModuleNode | ClassNode | FunctionNode | LambdaNode | ListComprehensionNode;
@@ -86,6 +91,7 @@ export function cleanNodeAnalysisInfo(node: ParseNode) {
8691
delete analyzerNode.codeFlowExpressions;
8792
delete analyzerNode.codeFlowComplexity;
8893
delete analyzerNode.dunderAllInfo;
94+
delete analyzerNode.typeParameterSymbol;
8995
}
9096

9197
export function getImportInfo(node: ParseNode): ImportResult | undefined {
@@ -181,6 +187,16 @@ export function setDunderAllInfo(node: ModuleNode, names: DunderAllInfo | undefi
181187
analyzerNode.dunderAllInfo = names;
182188
}
183189

190+
export function getTypeParameterSymbol(node: NameNode) {
191+
const analyzerNode = node as AnalyzerNodeInfo;
192+
return analyzerNode.typeParameterSymbol;
193+
}
194+
195+
export function setTypeParameterSymbol(node: NameNode, symbol: Symbol) {
196+
const analyzerNode = node as AnalyzerNodeInfo;
197+
analyzerNode.typeParameterSymbol = symbol;
198+
}
199+
184200
export function isCodeUnreachable(node: ParseNode): boolean {
185201
let curNode: ParseNode | undefined = node;
186202

0 commit comments

Comments
 (0)
0