From 472d86519d17a1f9276dab71dad75b5d670882ba Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Thu, 11 Jul 2024 16:56:22 -0700 Subject: [PATCH] Improved consistency of parse node interface definitions. No functional change. --- .../pyright-internal/src/analyzer/checker.ts | 2 +- .../src/analyzer/operations.ts | 2 +- .../src/analyzer/parseTreeUtils.ts | 6 +- .../src/commands/dumpFileDebugInfoCommand.ts | 2 +- .../pyright-internal/src/parser/parseNodes.ts | 267 ++++++------------ .../pyright-internal/src/parser/parser.ts | 2 +- 6 files changed, 97 insertions(+), 184 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index e5c814a84..08a8a2d01 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -2105,7 +2105,7 @@ export class Checker extends ParseTreeWalker { // Check for chained comparisons. if ( rightExpression.nodeType === ParseNodeType.BinaryOperation && - !rightExpression.parenthesized && + !rightExpression.isParenthesized && ParseTreeUtils.operatorSupportsChaining(rightExpression.operator) ) { // Use the left side of the right expression for comparison purposes. diff --git a/packages/pyright-internal/src/analyzer/operations.ts b/packages/pyright-internal/src/analyzer/operations.ts index 2db866226..8feb75a13 100644 --- a/packages/pyright-internal/src/analyzer/operations.ts +++ b/packages/pyright-internal/src/analyzer/operations.ts @@ -515,7 +515,7 @@ export function getTypeOfBinaryOperation( if (operatorSupportsChaining(node.operator)) { if ( rightExpression.nodeType === ParseNodeType.BinaryOperation && - !rightExpression.parenthesized && + !rightExpression.isParenthesized && operatorSupportsChaining(rightExpression.operator) ) { // Evaluate the right expression so it is type checked. diff --git a/packages/pyright-internal/src/analyzer/parseTreeUtils.ts b/packages/pyright-internal/src/analyzer/parseTreeUtils.ts index 13e33fd59..d44500240 100644 --- a/packages/pyright-internal/src/analyzer/parseTreeUtils.ts +++ b/packages/pyright-internal/src/analyzer/parseTreeUtils.ts @@ -239,7 +239,7 @@ export function printExpression(node: ExpressionNode, flags = PrintExpressionFla case ParseNodeType.UnaryOperation: { const exprStr = printOperator(node.operator) + printExpression(node.expression, flags); - return node.parenthesized ? `(${exprStr})` : exprStr; + return node.isParenthesized ? `(${exprStr})` : exprStr; } case ParseNodeType.BinaryOperation: { @@ -250,7 +250,7 @@ export function printExpression(node: ExpressionNode, flags = PrintExpressionFla ' ' + printExpression(node.rightExpression, flags); - return node.parenthesized ? `(${exprStr})` : exprStr; + return node.isParenthesized ? `(${exprStr})` : exprStr; } case ParseNodeType.Number: { @@ -377,7 +377,7 @@ export function printExpression(node: ExpressionNode, flags = PrintExpressionFla case ParseNodeType.Await: { const exprStr = 'await ' + printExpression(node.expression, flags); - return node.parenthesized ? `(${exprStr})` : exprStr; + return node.isParenthesized ? `(${exprStr})` : exprStr; } case ParseNodeType.Ternary: { diff --git a/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts b/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts index 5ba476d17..982c7669f 100644 --- a/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts +++ b/packages/pyright-internal/src/commands/dumpFileDebugInfoCommand.ts @@ -613,7 +613,7 @@ class TreeDumper extends ParseTreeWalker { this._uri, node.operatorToken, this._lines - )} ${getOperatorTypeString(node.operator)}} parenthesized:(${node.parenthesized})` + )} ${getOperatorTypeString(node.operator)}} parenthesized:(${node.isParenthesized})` ); return true; } diff --git a/packages/pyright-internal/src/parser/parseNodes.ts b/packages/pyright-internal/src/parser/parseNodes.ts index 4e70f4a5c..c5342bc1d 100644 --- a/packages/pyright-internal/src/parser/parseNodes.ts +++ b/packages/pyright-internal/src/parser/parseNodes.ts @@ -130,13 +130,8 @@ export const enum ErrorExpressionCategory { MaxDepthExceeded, } -export interface MutableTextRange { - start: number; - length: number; -} - -export interface ParseNodeBase extends MutableTextRange { - readonly nodeType: ParseNodeType; +export interface ParseNodeBase { + readonly nodeType: T; readonly start: number; readonly length: number; @@ -157,19 +152,17 @@ export function getNextNodeId() { return _nextNodeId++; } -export function extendRange(node: ParseNodeBase, newRange: TextRange) { +export function extendRange(node: ParseNodeBase, newRange: TextRange) { const extendedRange = TextRange.extend(node, newRange); // Temporarily allow writes to the range fields. - const mutableNode = node as MutableTextRange; - mutableNode.start = extendedRange.start; - mutableNode.length = extendedRange.length; + (node as any).start = extendedRange.start; + (node as any).length = extendedRange.length; } export type ParseNodeArray = (ParseNode | undefined)[]; -export interface ModuleNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Module; +export interface ModuleNode extends ParseNodeBase { statements: StatementNode[]; } @@ -187,8 +180,7 @@ export namespace ModuleNode { } } -export interface SuiteNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Suite; +export interface SuiteNode extends ParseNodeBase { statements: StatementNode[]; typeComment?: StringToken; } @@ -207,8 +199,7 @@ export namespace SuiteNode { } } -export interface IfNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.If; +export interface IfNode extends ParseNodeBase { testExpression: ExpressionNode; ifSuite: SuiteNode; elseSuite?: SuiteNode | IfNode | undefined; @@ -245,8 +236,7 @@ export namespace IfNode { } } -export interface WhileNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.While; +export interface WhileNode extends ParseNodeBase { testExpression: ExpressionNode; whileSuite: SuiteNode; elseSuite?: SuiteNode | undefined; @@ -272,8 +262,7 @@ export namespace WhileNode { } } -export interface ForNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.For; +export interface ForNode extends ParseNodeBase { isAsync?: boolean; asyncToken?: Token; targetExpression: ExpressionNode; @@ -312,8 +301,7 @@ export namespace ForNode { export type ComprehensionForIfNode = ComprehensionForNode | ComprehensionIfNode; -export interface ComprehensionForNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.ComprehensionFor; +export interface ComprehensionForNode extends ParseNodeBase { isAsync?: boolean; asyncToken?: Token; targetExpression: ExpressionNode; @@ -341,8 +329,7 @@ export namespace ComprehensionForNode { } } -export interface ComprehensionIfNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.ComprehensionIf; +export interface ComprehensionIfNode extends ParseNodeBase { testExpression: ExpressionNode; } @@ -364,8 +351,7 @@ export namespace ComprehensionIfNode { } } -export interface TryNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Try; +export interface TryNode extends ParseNodeBase { trySuite: SuiteNode; exceptClauses: ExceptNode[]; elseSuite?: SuiteNode | undefined; @@ -391,8 +377,7 @@ export namespace TryNode { } } -export interface ExceptNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Except; +export interface ExceptNode extends ParseNodeBase { typeExpression?: ExpressionNode | undefined; name?: NameNode | undefined; exceptSuite: SuiteNode; @@ -418,8 +403,7 @@ export namespace ExceptNode { } } -export interface FunctionNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Function; +export interface FunctionNode extends ParseNodeBase { decorators: DecoratorNode[]; isAsync?: boolean; name: NameNode; @@ -463,8 +447,7 @@ export const enum ParameterCategory { KwargsDict, } -export interface ParameterNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Parameter; +export interface ParameterNode extends ParseNodeBase { category: ParameterCategory; name?: NameNode | undefined; typeAnnotation?: ExpressionNode | undefined; @@ -486,8 +469,7 @@ export namespace ParameterNode { } } -export interface ClassNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Class; +export interface ClassNode extends ParseNodeBase { decorators: DecoratorNode[]; name: NameNode; typeParameters?: TypeParameterListNode; @@ -572,8 +554,7 @@ export namespace ClassNode { } } -export interface WithNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.With; +export interface WithNode extends ParseNodeBase { isAsync?: boolean; asyncToken?: Token; withItems: WithItemNode[]; @@ -600,8 +581,7 @@ export namespace WithNode { } } -export interface WithItemNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.WithItem; +export interface WithItemNode extends ParseNodeBase { expression: ExpressionNode; target?: ExpressionNode | undefined; } @@ -622,8 +602,7 @@ export namespace WithItemNode { } } -export interface DecoratorNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Decorator; +export interface DecoratorNode extends ParseNodeBase { expression: ExpressionNode; } @@ -645,8 +624,7 @@ export namespace DecoratorNode { } } -export interface StatementListNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.StatementList; +export interface StatementListNode extends ParseNodeBase { statements: ParseNode[]; } @@ -753,8 +731,7 @@ export function isExpressionNode(node: ParseNode): node is ExpressionNode { } } -export interface ErrorNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Error; +export interface ErrorNode extends ParseNodeBase { readonly category: ErrorExpressionCategory; readonly child?: ExpressionNode | undefined; readonly decorators?: DecoratorNode[] | undefined; @@ -796,12 +773,11 @@ export namespace ErrorNode { } } -export interface UnaryOperationNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.UnaryOperation; +export interface UnaryOperationNode extends ParseNodeBase { expression: ExpressionNode; operatorToken: Token; operator: OperatorType; - parenthesized?: boolean; + isParenthesized?: boolean; } export namespace UnaryOperationNode { @@ -825,13 +801,12 @@ export namespace UnaryOperationNode { } } -export interface BinaryOperationNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.BinaryOperation; +export interface BinaryOperationNode extends ParseNodeBase { leftExpression: ExpressionNode; operatorToken: Token; operator: OperatorType; rightExpression: ExpressionNode; - parenthesized?: boolean; + isParenthesized?: boolean; } export namespace BinaryOperationNode { @@ -863,8 +838,7 @@ export namespace BinaryOperationNode { } } -export interface AssignmentExpressionNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.AssignmentExpression; +export interface AssignmentExpressionNode extends ParseNodeBase { name: NameNode; walrusToken: Token; rightExpression: ExpressionNode; @@ -893,8 +867,7 @@ export namespace AssignmentExpressionNode { } } -export interface AssignmentNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Assignment; +export interface AssignmentNode extends ParseNodeBase { leftExpression: ExpressionNode; rightExpression: ExpressionNode; typeAnnotationComment?: ExpressionNode | undefined; @@ -927,8 +900,7 @@ export enum TypeParameterCategory { ParamSpec, } -export interface TypeParameterNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.TypeParameter; +export interface TypeParameterNode extends ParseNodeBase { name: NameNode; typeParamCategory: TypeParameterCategory; boundExpression?: ExpressionNode; @@ -969,8 +941,7 @@ export namespace TypeParameterNode { } } -export interface TypeParameterListNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.TypeParameterList; +export interface TypeParameterListNode extends ParseNodeBase { parameters: TypeParameterNode[]; } @@ -995,8 +966,7 @@ export namespace TypeParameterListNode { } } -export interface TypeAliasNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.TypeAlias; +export interface TypeAliasNode extends ParseNodeBase { name: NameNode; typeParameters?: TypeParameterListNode; expression: ExpressionNode; @@ -1032,8 +1002,7 @@ export namespace TypeAliasNode { } } -export interface TypeAnnotationNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.TypeAnnotation; +export interface TypeAnnotationNode extends ParseNodeBase { valueExpression: ExpressionNode; typeAnnotation: ExpressionNode; } @@ -1058,8 +1027,7 @@ export namespace TypeAnnotationNode { } } -export interface FunctionAnnotationNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.FunctionAnnotation; +export interface FunctionAnnotationNode extends ParseNodeBase { isParamListEllipsis: boolean; paramTypeAnnotations: ExpressionNode[]; returnTypeAnnotation: ExpressionNode; @@ -1093,8 +1061,7 @@ export namespace FunctionAnnotationNode { } } -export interface AugmentedAssignmentNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.AugmentedAssignment; +export interface AugmentedAssignmentNode extends ParseNodeBase { leftExpression: ExpressionNode; operator: OperatorType; rightExpression: ExpressionNode; @@ -1133,10 +1100,9 @@ export namespace AugmentedAssignmentNode { } } -export interface AwaitNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Await; +export interface AwaitNode extends ParseNodeBase { expression: ExpressionNode; - parenthesized?: boolean; + isParenthesized?: boolean; } export namespace AwaitNode { @@ -1157,8 +1123,7 @@ export namespace AwaitNode { } } -export interface TernaryNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Ternary; +export interface TernaryNode extends ParseNodeBase { ifExpression: ExpressionNode; testExpression: ExpressionNode; elseExpression: ExpressionNode; @@ -1190,8 +1155,7 @@ export namespace TernaryNode { } } -export interface UnpackNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Unpack; +export interface UnpackNode extends ParseNodeBase { expression: ExpressionNode; starToken: Token; } @@ -1199,12 +1163,12 @@ export interface UnpackNode extends ParseNodeBase { export namespace UnpackNode { export function create(starToken: Token, expression: ExpressionNode) { const node: UnpackNode = { - starToken, start: starToken.start, length: starToken.length, nodeType: ParseNodeType.Unpack, id: _nextNodeId++, expression, + starToken, }; expression.parent = node; @@ -1215,8 +1179,7 @@ export namespace UnpackNode { } } -export interface TupleNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Tuple; +export interface TupleNode extends ParseNodeBase { expressions: ExpressionNode[]; enclosedInParens: boolean; } @@ -1236,8 +1199,7 @@ export namespace TupleNode { } } -export interface CallNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Call; +export interface CallNode extends ParseNodeBase { leftExpression: ExpressionNode; arguments: ArgumentNode[]; trailingComma: boolean; @@ -1270,8 +1232,7 @@ export namespace CallNode { } } -export interface ComprehensionNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Comprehension; +export interface ComprehensionNode extends ParseNodeBase { expression: ParseNode; forIfNodes: ComprehensionForIfNode[]; isGenerator: boolean; @@ -1296,8 +1257,7 @@ export namespace ComprehensionNode { } } -export interface IndexNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Index; +export interface IndexNode extends ParseNodeBase { baseExpression: ExpressionNode; items: ArgumentNode[]; trailingComma: boolean; @@ -1333,8 +1293,7 @@ export namespace IndexNode { } } -export interface SliceNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Slice; +export interface SliceNode extends ParseNodeBase { startValue?: ExpressionNode | undefined; endValue?: ExpressionNode | undefined; stepValue?: ExpressionNode | undefined; @@ -1353,8 +1312,7 @@ export namespace SliceNode { } } -export interface YieldNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Yield; +export interface YieldNode extends ParseNodeBase { expression?: ExpressionNode | undefined; } @@ -1377,8 +1335,7 @@ export namespace YieldNode { } } -export interface YieldFromNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.YieldFrom; +export interface YieldFromNode extends ParseNodeBase { expression: ExpressionNode; } @@ -1400,8 +1357,7 @@ export namespace YieldFromNode { } } -export interface MemberAccessNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.MemberAccess; +export interface MemberAccessNode extends ParseNodeBase { leftExpression: ExpressionNode; memberName: NameNode; } @@ -1428,8 +1384,7 @@ export namespace MemberAccessNode { } } -export interface LambdaNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Lambda; +export interface LambdaNode extends ParseNodeBase { parameters: ParameterNode[]; expression: ExpressionNode; } @@ -1453,8 +1408,7 @@ export namespace LambdaNode { } } -export interface NameNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Name; +export interface NameNode extends ParseNodeBase { token: IdentifierToken; value: string; } @@ -1474,8 +1428,7 @@ export namespace NameNode { } } -export interface ConstantNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Constant; +export interface ConstantNode extends ParseNodeBase { constType: KeywordType; } @@ -1493,9 +1446,7 @@ export namespace ConstantNode { } } -export interface EllipsisNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Ellipsis; -} +export interface EllipsisNode extends ParseNodeBase {} export namespace EllipsisNode { export function create(range: TextRange) { @@ -1510,8 +1461,7 @@ export namespace EllipsisNode { } } -export interface NumberNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Number; +export interface NumberNode extends ParseNodeBase { value: number | bigint; isInteger: boolean; isImaginary: boolean; @@ -1533,8 +1483,7 @@ export namespace NumberNode { } } -export interface StringNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.String; +export interface StringNode extends ParseNodeBase { token: StringToken; value: string; } @@ -1554,8 +1503,7 @@ export namespace StringNode { } } -export interface FormatStringNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.FormatString; +export interface FormatStringNode extends ParseNodeBase { token: FStringStartToken; middleTokens: FStringMiddleToken[]; fieldExpressions: ExpressionNode[]; @@ -1605,8 +1553,7 @@ export namespace FormatStringNode { } } -export interface StringListNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.StringList; +export interface StringListNode extends ParseNodeBase { strings: (StringNode | FormatStringNode)[]; // If strings are found within the context of @@ -1639,8 +1586,7 @@ export namespace StringListNode { } } -export interface DictionaryNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Dictionary; +export interface DictionaryNode extends ParseNodeBase { entries: DictionaryEntryNode[]; trailingCommaToken?: Token; } @@ -1659,8 +1605,7 @@ export namespace DictionaryNode { } } -export interface DictionaryKeyEntryNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.DictionaryKeyEntry; +export interface DictionaryKeyEntryNode extends ParseNodeBase { keyExpression: ExpressionNode; valueExpression: ExpressionNode; } @@ -1685,8 +1630,7 @@ export namespace DictionaryKeyEntryNode { } } -export interface DictionaryExpandEntryNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.DictionaryExpandEntry; +export interface DictionaryExpandEntryNode extends ParseNodeBase { expandExpression: ExpressionNode; } @@ -1708,8 +1652,7 @@ export namespace DictionaryExpandEntryNode { export type DictionaryEntryNode = DictionaryKeyEntryNode | DictionaryExpandEntryNode | ComprehensionNode; -export interface SetNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Set; +export interface SetNode extends ParseNodeBase { entries: ExpressionNode[]; } @@ -1727,8 +1670,7 @@ export namespace SetNode { } } -export interface ListNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.List; +export interface ListNode extends ParseNodeBase { entries: ExpressionNode[]; } @@ -1752,8 +1694,7 @@ export const enum ArgumentCategory { UnpackedDictionary, } -export interface ArgumentNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Argument; +export interface ArgumentNode extends ParseNodeBase { argumentCategory: ArgumentCategory; name?: NameNode | undefined; valueExpression: ExpressionNode; @@ -1782,7 +1723,7 @@ export namespace ArgumentNode { } } -export interface DelNode extends ParseNodeBase { +export interface DelNode extends ParseNodeBase { readonly nodeType: ParseNodeType.Del; expressions: ExpressionNode[]; } @@ -1801,9 +1742,7 @@ export namespace DelNode { } } -export interface PassNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Pass; -} +export interface PassNode extends ParseNodeBase {} export namespace PassNode { export function create(passToken: TextRange) { @@ -1818,16 +1757,15 @@ export namespace PassNode { } } -export interface ImportNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Import; +export interface ImportNode extends ParseNodeBase { list: ImportAsNode[]; } export namespace ImportNode { - export function create(passToken: TextRange) { + export function create(importToken: TextRange) { const node: ImportNode = { - start: passToken.start, - length: passToken.length, + start: importToken.start, + length: importToken.length, nodeType: ParseNodeType.Import, id: _nextNodeId++, list: [], @@ -1837,8 +1775,7 @@ export namespace ImportNode { } } -export interface ModuleNameNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.ModuleName; +export interface ModuleNameNode extends ParseNodeBase { leadingDots: number; nameParts: NameNode[]; @@ -1861,8 +1798,7 @@ export namespace ModuleNameNode { } } -export interface ImportAsNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.ImportAs; +export interface ImportAsNode extends ParseNodeBase { module: ModuleNameNode; alias?: NameNode | undefined; } @@ -1883,8 +1819,7 @@ export namespace ImportAsNode { } } -export interface ImportFromNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.ImportFrom; +export interface ImportFromNode extends ParseNodeBase { module: ModuleNameNode; imports: ImportFromAsNode[]; isWildcardImport: boolean; @@ -1914,8 +1849,7 @@ export namespace ImportFromNode { } } -export interface ImportFromAsNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.ImportFromAs; +export interface ImportFromAsNode extends ParseNodeBase { name: NameNode; alias?: NameNode | undefined; } @@ -1936,8 +1870,7 @@ export namespace ImportFromAsNode { } } -export interface GlobalNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Global; +export interface GlobalNode extends ParseNodeBase { nameList: NameNode[]; } @@ -1955,8 +1888,7 @@ export namespace GlobalNode { } } -export interface NonlocalNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Nonlocal; +export interface NonlocalNode extends ParseNodeBase { nameList: NameNode[]; } @@ -1974,8 +1906,7 @@ export namespace NonlocalNode { } } -export interface AssertNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Assert; +export interface AssertNode extends ParseNodeBase { testExpression: ExpressionNode; exceptionExpression?: ExpressionNode | undefined; } @@ -1998,9 +1929,7 @@ export namespace AssertNode { } } -export interface BreakNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Break; -} +export interface BreakNode extends ParseNodeBase {} export namespace BreakNode { export function create(range: TextRange) { @@ -2015,9 +1944,7 @@ export namespace BreakNode { } } -export interface ContinueNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Continue; -} +export interface ContinueNode extends ParseNodeBase {} export namespace ContinueNode { export function create(range: TextRange) { @@ -2032,8 +1959,7 @@ export namespace ContinueNode { } } -export interface ReturnNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Return; +export interface ReturnNode extends ParseNodeBase { returnExpression?: ExpressionNode | undefined; } @@ -2050,8 +1976,7 @@ export namespace ReturnNode { } } -export interface RaiseNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Raise; +export interface RaiseNode extends ParseNodeBase { typeExpression?: ExpressionNode | undefined; valueExpression?: ExpressionNode | undefined; tracebackExpression?: ExpressionNode | undefined; @@ -2070,8 +1995,7 @@ export namespace RaiseNode { } } -export interface MatchNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Match; +export interface MatchNode extends ParseNodeBase { subjectExpression: ExpressionNode; cases: CaseNode[]; } @@ -2095,8 +2019,7 @@ export namespace MatchNode { } } -export interface CaseNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.Case; +export interface CaseNode extends ParseNodeBase { pattern: PatternAtomNode; isIrrefutable: boolean; guardExpression?: ExpressionNode | undefined; @@ -2135,8 +2058,7 @@ export namespace CaseNode { } } -export interface PatternSequenceNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.PatternSequence; +export interface PatternSequenceNode extends ParseNodeBase { entries: PatternAsNode[]; starEntryIndex: number | undefined; } @@ -2171,8 +2093,7 @@ export namespace PatternSequenceNode { } } -export interface PatternAsNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.PatternAs; +export interface PatternAsNode extends ParseNodeBase { orPatterns: PatternAtomNode[]; target?: NameNode | undefined; } @@ -2205,8 +2126,7 @@ export namespace PatternAsNode { } } -export interface PatternLiteralNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.PatternLiteral; +export interface PatternLiteralNode extends ParseNodeBase { expression: ExpressionNode; } @@ -2226,8 +2146,7 @@ export namespace PatternLiteralNode { } } -export interface PatternClassNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.PatternClass; +export interface PatternClassNode extends ParseNodeBase { className: NameNode | MemberAccessNode; arguments: PatternClassArgumentNode[]; } @@ -2256,8 +2175,7 @@ export namespace PatternClassNode { } } -export interface PatternClassArgumentNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.PatternClassArgument; +export interface PatternClassArgumentNode extends ParseNodeBase { name?: NameNode | undefined; pattern: PatternAsNode; } @@ -2284,8 +2202,7 @@ export namespace PatternClassArgumentNode { } } -export interface PatternCaptureNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.PatternCapture; +export interface PatternCaptureNode extends ParseNodeBase { target: NameNode; isStar: boolean; isWildcard: boolean; @@ -2313,8 +2230,7 @@ export namespace PatternCaptureNode { } } -export interface PatternMappingNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.PatternMapping; +export interface PatternMappingNode extends ParseNodeBase { entries: PatternMappingEntryNode[]; } @@ -2342,8 +2258,7 @@ export namespace PatternMappingNode { export type PatternMappingEntryNode = PatternMappingKeyEntryNode | PatternMappingExpandEntryNode; -export interface PatternMappingKeyEntryNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.PatternMappingKeyEntry; +export interface PatternMappingKeyEntryNode extends ParseNodeBase { keyPattern: PatternLiteralNode | PatternValueNode | ErrorNode; valuePattern: PatternAsNode | ErrorNode; } @@ -2371,8 +2286,7 @@ export namespace PatternMappingKeyEntryNode { } } -export interface PatternMappingExpandEntryNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.PatternMappingExpandEntry; +export interface PatternMappingExpandEntryNode extends ParseNodeBase { target: NameNode; } @@ -2394,8 +2308,7 @@ export namespace PatternMappingExpandEntryNode { } } -export interface PatternValueNode extends ParseNodeBase { - readonly nodeType: ParseNodeType.PatternValue; +export interface PatternValueNode extends ParseNodeBase { expression: MemberAccessNode; } diff --git a/packages/pyright-internal/src/parser/parser.ts b/packages/pyright-internal/src/parser/parser.ts index 6e7f48ad4..25b1a3746 100644 --- a/packages/pyright-internal/src/parser/parser.ts +++ b/packages/pyright-internal/src/parser/parser.ts @@ -3907,7 +3907,7 @@ export class Parser { // to use comparison chaining, which isn't appropriate when the // expression is parenthesized. Unary and await expressions // are also marked to be able to display them unambiguously. - possibleTupleNode.parenthesized = true; + possibleTupleNode.isParenthesized = true; } if (