diff --git a/src/compiler/ast.ts b/src/compiler/ast.ts index cd93debb87a..dadf5c740ba 100644 --- a/src/compiler/ast.ts +++ b/src/compiler/ast.ts @@ -76,7 +76,7 @@ import { } from "./_namespaces/ts.js"; /** @internal */ -export type NextContainer = AstNode; +export type AstNextContainer = AstHasLocals; /** @internal */ export class AstNodeId { @@ -1991,7 +1991,7 @@ export class Identifier extends Token this.ast.data.resolvedSymbol = value; } get symbol(): Symbol { - return this.ast.data.symbol!; // TODO: remove `!` + return this.ast.data.symbol; } set symbol(value) { this.ast.data.symbol = value; @@ -2025,7 +2025,7 @@ export class AstIdentifierData extends AstTokenData { escapedText: __String = undefined!; resolvedSymbol: Symbol = undefined!; // TransientIdentifier jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) flowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) @@ -2140,10 +2140,10 @@ export class ComputedPropertyName extends Node | undefined = undefined; dotDotDotToken: AstDotDotDotToken | undefined = undefined; - name: AstBindingName = undefined!; + name: AstBindingName = undefined!; // TODO(rbuckton): `name` can be undefined for JSDoc signature parameters questionToken: AstQuestionToken | undefined = undefined; type: AstTypeNode | undefined = undefined; initializer: AstExpression | undefined = undefined; - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) @@ -2378,10 +2378,10 @@ export class Decorator extends Node impl } get expression(): LeftHandSideExpression { - return this.ast.data.expression?.node; + return this.ast.data.expression.node; } set expression(value: LeftHandSideExpression) { - this.ast.data.expression = value?.ast; + this.ast.data.expression = value.ast; } } @@ -2419,10 +2419,10 @@ export class PropertySignature extends Node { - return this.ast.data.parameters?.nodes!; // TODO: remove `!` + return this.ast.data.parameters.nodes; } set parameters(value) { - this.ast.data.parameters = value?.ast; + this.ast.data.parameters = value.ast; } get type(): TypeNode | undefined { return this.ast.data.type?.node; @@ -2534,7 +2534,7 @@ export class CallSignatureDeclaration extends Node | undefined = undefined; - parameters: AstNodeArray | undefined = undefined; + parameters: AstNodeArray = undefined!; type: AstTypeNode | undefined = undefined; typeArguments: AstNodeArray | undefined = undefined; // quick info locals: SymbolTable | undefined = undefined; - nextContainer: NextContainer | undefined = undefined; - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + nextContainer: AstNextContainer | undefined = undefined; + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) } @@ -2588,10 +2588,10 @@ export class ConstructSignatureDeclaration extends Node { - return this.ast.data.parameters?.nodes!; // TODO: remove `!` + return this.ast.data.parameters.nodes; } set parameters(value) { - this.ast.data.parameters = value?.ast; + this.ast.data.parameters = value.ast; } get type(): TypeNode | undefined { return this.ast.data.type?.node; @@ -2612,7 +2612,7 @@ export class ConstructSignatureDeclaration extends Node | undefined = undefined; - parameters: AstNodeArray | undefined = undefined; + parameters: AstNodeArray = undefined!; type: AstTypeNode | undefined = undefined; typeArguments: AstNodeArray | undefined = undefined; // quick info jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) locals: SymbolTable | undefined = undefined; - nextContainer: NextContainer | undefined = undefined; + nextContainer: AstNextContainer | undefined = undefined; } /** @internal */ @@ -2665,10 +2665,10 @@ export class VariableDeclaration extends Node | undefined { return this.ast.data.modifiers?.nodes; } set modifiers(value) { this.ast.data.modifiers = value?.ast; } + get name(): PropertyName { + return this.ast.data.name.node; + } + set name(value) { + this.ast.data.name = value.ast; + } get questionToken(): QuestionToken | undefined { return this.ast.data.questionToken?.node; } @@ -2984,6 +2978,12 @@ export class PropertyAssignment extends Node | undefined { return this.ast.data.modifiers?.nodes; } set modifiers(value) { this.ast.data.modifiers = value?.ast; } + get name(): Identifier { + return this.ast.data.name.node; + } + set name(value) { + this.ast.data.name = value.ast; + } get questionToken(): QuestionToken | undefined { return this.ast.data.questionToken?.node; } @@ -3073,6 +3061,18 @@ export class ShorthandPropertyAssignment extends Node { - return this.ast.data.elements?.nodes!; // TODO: remove `!` + return this.ast.data.elements.nodes; } set elements(value) { - this.ast.data.elements = value?.ast; + this.ast.data.elements = value.ast; } } /** @internal */ export class AstObjectBindingPatternData extends AstData { - elements: AstNodeArray | undefined = undefined; + elements: AstNodeArray = undefined!; override computeTransformFlags(_: AstNode): TransformFlags { let transformFlags = propagateChildrenFlags(this.elements) | @@ -3231,16 +3231,16 @@ export class ArrayBindingPattern extends Node { - return this.ast.data.elements?.nodes!; // TODO: remove `!` + return this.ast.data.elements.nodes; } set elements(value) { - this.ast.data.elements = value?.ast; + this.ast.data.elements = value.ast; } } /** @internal */ export class AstArrayBindingPatternData extends AstData { - elements: AstNodeArray | undefined = undefined; + elements: AstNodeArray = undefined!; override computeTransformFlags(_: AstNode): TransformFlags { return propagateChildrenFlags(this.elements) | @@ -3284,10 +3284,10 @@ export class FunctionDeclaration extends Node { - return this.ast.data.parameters?.nodes!; // TODO: remove `!` + return this.ast.data.parameters.nodes; } set parameters(value) { - this.ast.data.parameters = value?.ast; + this.ast.data.parameters = value.ast; } get type(): TypeNode | undefined { return this.ast.data.type?.node; @@ -3308,7 +3308,7 @@ export class FunctionDeclaration extends Node | undefined { - return this.ast.data.typeArguments?.nodes; - } // Used for quick info, replaces typeParameters for instantiated signatures + return this.ast.data.typeArguments?.nodes; // Used for quick info, replaces typeParameters for instantiated signatures + } set typeArguments(value) { this.ast.data.typeArguments = value?.ast; } @@ -3358,15 +3357,14 @@ export class AstFunctionDeclarationData extends AstData { asteriskToken: AstAsteriskToken | undefined = undefined; name: AstIdentifier | undefined = undefined; typeParameters: AstNodeArray | undefined = undefined; - parameters: AstNodeArray | undefined = undefined; + parameters: AstNodeArray = undefined!; type: AstTypeNode | undefined = undefined; body: AstFunctionBody | undefined = undefined; - jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) locals: SymbolTable | undefined = undefined; - nextContainer: NextContainer | undefined = undefined; + nextContainer: AstNextContainer | undefined = undefined; endFlowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) returnFlowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) @@ -3421,10 +3419,10 @@ export class MethodSignature extends Node { - return this.ast.data.parameters?.nodes!; // TODO: remove `!` + return this.ast.data.parameters.nodes; } set parameters(value) { - this.ast.data.parameters = value?.ast; + this.ast.data.parameters = value.ast; } get type(): TypeNode | undefined { return this.ast.data.type?.node; @@ -3463,7 +3461,7 @@ export class MethodSignature extends Node | undefined = undefined; - parameters: AstNodeArray | undefined = undefined; + parameters: AstNodeArray = undefined!; type: AstTypeNode | undefined = undefined; - typeArguments: AstNodeArray | undefined = undefined; // quick info + typeArguments: AstNodeArray | undefined = undefined; // quick info jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) locals: SymbolTable | undefined = undefined; - nextContainer: NextContainer | undefined = undefined; + nextContainer: AstNextContainer | undefined = undefined; } /** @internal */ @@ -3537,10 +3535,10 @@ export class MethodDeclaration extends Node { - return this.ast.data.parameters?.nodes!; // TODO: remove `!` + return this.ast.data.parameters.nodes; } set parameters(value) { - this.ast.data.parameters = value?.ast; + this.ast.data.parameters = value.ast; } get type(): TypeNode | undefined { return this.ast.data.type?.node; @@ -3591,7 +3589,7 @@ export class MethodDeclaration extends Node | undefined = undefined; - parameters: AstNodeArray | undefined = undefined; + parameters: AstNodeArray = undefined!; type: AstTypeNode | undefined = undefined; body: AstFunctionBody | undefined = undefined; typeArguments: AstNodeArray | undefined = undefined; jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) locals: SymbolTable | undefined = undefined; - nextContainer: NextContainer | undefined = undefined; + nextContainer: AstNextContainer | undefined = undefined; flowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) endFlowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) returnFlowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) @@ -3719,10 +3717,10 @@ export class ConstructorDeclaration extends Node { - return this.ast.data.parameters?.nodes!; // TODO: remove `!` + return this.ast.data.parameters.nodes; } set parameters(value) { - this.ast.data.parameters = value?.ast; + this.ast.data.parameters = value.ast; } get type(): TypeNode | undefined { return this.ast.data.type?.node; @@ -3743,7 +3741,7 @@ export class ConstructorDeclaration extends Node | undefined = undefined; body: AstFunctionBody | undefined = undefined; typeParameters: AstNodeArray | undefined = undefined; // initialized by parser (grammar error) - parameters: AstNodeArray | undefined = undefined; + parameters: AstNodeArray = undefined!; type: AstTypeNode | undefined = undefined; // initialized by parser (grammar error) typeArguments: AstNodeArray | undefined = undefined; // quick info jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) locals: SymbolTable | undefined = undefined; - nextContainer: NextContainer | undefined = undefined; + nextContainer: AstNextContainer | undefined = undefined; endFlowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) returnFlowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) @@ -3871,10 +3869,10 @@ export class GetAccessorDeclaration extends Node { - return this.ast.data.parameters?.nodes!; // TODO: remove `!` + return this.ast.data.parameters.nodes; } set parameters(value) { - this.ast.data.parameters = value?.ast; + this.ast.data.parameters = value.ast; } get type(): TypeNode | undefined { return this.ast.data.type?.node; @@ -3913,7 +3911,7 @@ export class GetAccessorDeclaration extends Node | undefined = undefined; // initialized by parser (grammar error) - parameters: AstNodeArray | undefined = undefined; + parameters: AstNodeArray = undefined!; type: AstTypeNode | undefined = undefined; typeArguments: AstNodeArray | undefined = undefined; // quick info jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) locals: SymbolTable | undefined = undefined; - nextContainer: NextContainer | undefined = undefined; + nextContainer: AstNextContainer | undefined = undefined; flowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) endFlowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) returnFlowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) @@ -4017,10 +4015,10 @@ export class SetAccessorDeclaration extends Node { - return this.ast.data.parameters?.nodes!; // TODO: remove `!` + return this.ast.data.parameters.nodes; } set parameters(value) { - this.ast.data.parameters = value?.ast; + this.ast.data.parameters = value.ast; } get type(): TypeNode | undefined { return this.ast.data.type?.node; @@ -4059,7 +4057,7 @@ export class SetAccessorDeclaration extends Node | undefined = undefined; // initialized by parser (grammar error) - parameters: AstNodeArray | undefined = undefined; + parameters: AstNodeArray = undefined!; type: AstTypeNode | undefined = undefined; // initialized by parser (grammar error) typeArguments: AstNodeArray | undefined = undefined; // quick info jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) locals: SymbolTable | undefined = undefined; - nextContainer: NextContainer | undefined = undefined; + nextContainer: AstNextContainer | undefined = undefined; flowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) endFlowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) returnFlowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) @@ -4173,10 +4171,10 @@ export class IndexSignatureDeclaration extends Node { - return this.ast.data.parameters?.nodes!; // TODO: remove `!` + return this.ast.data.parameters.nodes; } set parameters(value) { - this.ast.data.parameters = value?.ast; + this.ast.data.parameters = value.ast; } get type(): TypeNode { return this.ast.data.type?.node!; @@ -4197,7 +4195,7 @@ export class IndexSignatureDeclaration extends Node | undefined = undefined; typeParameters: AstNodeArray | undefined = undefined; - parameters: AstNodeArray | undefined = undefined; + parameters: AstNodeArray = undefined!; type: AstTypeNode | undefined = undefined; typeArguments: AstNodeArray | undefined = undefined; // quick info jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) locals: SymbolTable | undefined = undefined; - nextContainer: NextContainer | undefined = undefined; + nextContainer: AstNextContainer | undefined = undefined; } /** @internal */ @@ -4253,18 +4251,18 @@ export class ClassStaticBlockDeclaration extends Node | undefined { return this.ast.data.modifiers?.nodes; } set modifiers(value) { this.ast.data.modifiers = value?.ast; } + get body(): Block { + return this.ast.data.body.node; + } + set body(value) { + this.ast.data.body = value.ast; + } get jsDoc(): JSDocArray | undefined { return this.ast.data.jsDoc; } @@ -4272,7 +4270,7 @@ export class ClassStaticBlockDeclaration extends Node | undefined = undefined; // initialized by parser (grammar error) jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) locals: SymbolTable | undefined = undefined; - nextContainer: NextContainer | undefined = undefined; + nextContainer: AstNextContainer | undefined = undefined; endFlowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) returnFlowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) @@ -4343,10 +4341,10 @@ export class ImportTypeAssertionContainer extends Node { - return this.ast.data.parameters?.nodes!; // TODO: remove `!` + return this.ast.data.parameters.nodes; } set parameters(value) { - this.ast.data.parameters = value?.ast; + this.ast.data.parameters = value.ast; } get type(): TypeNode { - return this.ast.data.type?.node; + return this.ast.data.type.node; } set type(value) { - this.ast.data.type = value?.ast; + this.ast.data.type = value.ast; } get typeArguments(): NodeArray | undefined { return this.ast.data.typeArguments?.nodes; @@ -4493,7 +4491,7 @@ export class FunctionTypeNode extends Node | undefined = undefined; - parameters: AstNodeArray | undefined = undefined; + parameters: AstNodeArray = undefined!; type: AstTypeNode = undefined!; typeArguments: AstNodeArray | undefined = undefined; // quick info modifiers: AstNodeArray | undefined = undefined; // initialized by parser (grammar error) jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) locals: SymbolTable | undefined = undefined; - nextContainer: NextContainer | undefined = undefined; + nextContainer: AstNextContainer | undefined = undefined; } /** @internal */ @@ -4555,16 +4553,16 @@ export class ConstructorTypeNode extends Node { - return this.ast.data.parameters?.nodes!; // TODO: remove `!` + return this.ast.data.parameters.nodes; } set parameters(value) { - this.ast.data.parameters = value?.ast; + this.ast.data.parameters = value.ast; } get type(): TypeNode { - return this.ast.data.type?.node; + return this.ast.data.type.node; } set type(value) { - this.ast.data.type = value?.ast; + this.ast.data.type = value.ast; } get typeArguments(): NodeArray | undefined { return this.ast.data.typeArguments?.nodes; @@ -4579,7 +4577,7 @@ export class ConstructorTypeNode extends Node | undefined = undefined; typeParameters: AstNodeArray | undefined = undefined; - parameters: AstNodeArray | undefined = undefined; + parameters: AstNodeArray = undefined!; type: AstTypeNode = undefined!; typeArguments: AstNodeArray | undefined = undefined; // quick info jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) locals: SymbolTable | undefined = undefined; - nextContainer: NextContainer | undefined = undefined; + nextContainer: AstNextContainer | undefined = undefined; } /** @internal */ @@ -4626,10 +4624,10 @@ export class TypeReferenceNode extends Node | undefined { return this.ast.data.typeArguments?.nodes; @@ -4665,10 +4663,10 @@ export class TypePredicateNode extends Node | undefined { return this.ast.data.typeArguments?.nodes; @@ -4719,13 +4717,13 @@ export class TypeLiteralNode extends Node { - return this.ast.data.members?.nodes!; - } // TODO: remove '!' + return this.ast.data.members.nodes; + } set members(value) { - this.ast.data.members = value?.ast; + this.ast.data.members = value.ast; } get symbol(): ts.Symbol { - return this.ast.data.symbol!; // TODO: remove `!` + return this.ast.data.symbol; } set symbol(value) { this.ast.data.symbol = value; @@ -4740,8 +4738,8 @@ export class TypeLiteralNode extends Node | undefined = undefined; - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + members: AstNodeArray = undefined!; + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) } @@ -4752,10 +4750,10 @@ export class ArrayTypeNode extends Node { - return this.ast.data.elements?.nodes!; - } // TODO: remove '!' + return this.ast.data.elements.nodes; + } set elements(value: NodeArray) { - this.ast.data.elements = value?.ast; + this.ast.data.elements = value.ast; } } /** @internal */ export class AstTupleTypeNodeData extends AstTypeScriptNodeData { - elements: AstNodeArray | undefined = undefined; + elements: AstNodeArray = undefined!; } /** @internal */ @@ -4798,10 +4796,10 @@ export class NamedTupleMember extends Node declare _typeNodeBrand: any; get type(): TypeNode { - return this.ast.data.type?.node; + return this.ast.data.type.node; } set type(value) { - this.ast.data.type = value?.ast; + this.ast.data.type = value.ast; } } @@ -4892,16 +4890,16 @@ export class UnionTypeNode extends Node { - return this.ast.data.types?.nodes!; - } // TODO: remove '!' + return this.ast.data.types.nodes; + } set types(value) { - this.ast.data.types = value?.ast; + this.ast.data.types = value.ast; } } /** @internal */ export class AstUnionTypeNodeData extends AstTypeScriptNodeData { - types: AstNodeArray | undefined = undefined; + types: AstNodeArray = undefined!; } /** @internal */ @@ -4911,16 +4909,16 @@ export class IntersectionTypeNode extends Node { - return this.ast.data.types?.nodes!; - } // TODO: remove '!' + return this.ast.data.types.nodes; + } set types(value) { - this.ast.data.types = value?.ast; + this.ast.data.types = value.ast; } } /** @internal */ export class AstIntersectionTypeNodeData extends AstTypeScriptNodeData { - types: AstNodeArray | undefined = undefined; + types: AstNodeArray = undefined!; } /** @internal */ @@ -4931,28 +4929,28 @@ export class ConditionalTypeNode extends Node | undefined = undefined; - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) locals: SymbolTable | undefined = undefined; - nextContainer: NextContainer | undefined = undefined; + nextContainer: AstNextContainer | undefined = undefined; } /** @internal */ @@ -5159,10 +5157,10 @@ export class LiteralTypeNode extends Node { - return this.ast.data.templateSpans?.nodes!; - } // TODO: remove '!' + return this.ast.data.templateSpans.nodes; + } set templateSpans(value) { - this.ast.data.templateSpans = value?.ast; + this.ast.data.templateSpans = value.ast; } } /** @internal */ export class AstTemplateLiteralTypeNodeData extends AstTypeScriptNodeData { head: AstTemplateHead = undefined!; - templateSpans: AstNodeArray | undefined = undefined; + templateSpans: AstNodeArray = undefined!; } /** @internal */ @@ -5222,16 +5220,16 @@ export class TemplateLiteralTypeSpan extends Node { - return this.ast.data.colonToken?.node; + get colonToken(): ColonToken { + return this.ast.data.colonToken.node; } set colonToken(value) { - this.ast.data.colonToken = value?.ast; + this.ast.data.colonToken = value.ast; } get whenFalse(): Expression { - return this.ast.data.whenFalse?.node; + return this.ast.data.whenFalse.node; } set whenFalse(value) { - this.ast.data.whenFalse = value?.ast; + this.ast.data.whenFalse = value.ast; } } @@ -5727,10 +5725,10 @@ export class FunctionExpression extends Node { - return this.ast.data.parameters?.nodes!; // TODO: remove `!` + return this.ast.data.parameters.nodes; } set parameters(value) { - this.ast.data.parameters = value?.ast; + this.ast.data.parameters = value.ast; } get type(): TypeNode | undefined { return this.ast.data.type?.node; @@ -5739,10 +5737,10 @@ export class FunctionExpression extends Node | undefined = undefined; - parameters: AstNodeArray | undefined = undefined; + parameters: AstNodeArray = undefined!; type: AstTypeNode | undefined = undefined; body: AstFunctionBody = undefined!; /** @internal */ typeArguments: AstNodeArray | undefined = undefined; // Used for quick info, replaces typeParameters for instantiated signatures jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) locals: SymbolTable | undefined = undefined; - nextContainer: NextContainer | undefined = undefined; + nextContainer: AstNextContainer | undefined = undefined; flowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) endFlowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) returnFlowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) @@ -5856,10 +5854,10 @@ export class ArrowFunction extends Node | undefined { return this.ast.data.typeParameters?.nodes; @@ -5868,10 +5866,10 @@ export class ArrowFunction extends Node { - return this.ast.data.parameters?.nodes!; // TODO: remove `!` + return this.ast.data.parameters.nodes; } set parameters(value) { - this.ast.data.parameters = value?.ast; + this.ast.data.parameters = value.ast; } get type(): TypeNode | undefined { return this.ast.data.type?.node; @@ -5880,10 +5878,10 @@ export class ArrowFunction extends Node | undefined { return this.ast.data.typeArguments?.nodes; @@ -5898,7 +5896,7 @@ export class ArrowFunction extends Node | undefined = undefined; equalsGreaterThanToken: AstEqualsGreaterThanToken = undefined!; typeParameters: AstNodeArray | undefined = undefined; - parameters: AstNodeArray | undefined = undefined; + parameters: AstNodeArray = undefined!; type: AstTypeNode | undefined = undefined; body: AstConciseBody = undefined!; typeArguments: AstNodeArray | undefined = undefined; jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) locals: SymbolTable | undefined = undefined; - nextContainer: NextContainer | undefined = undefined; + nextContainer: AstNextContainer | undefined = undefined; flowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) endFlowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) returnFlowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) @@ -6064,7 +6062,7 @@ export class StringLiteral extends Token | undefined; - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) override computeTransformFlags(_: AstNode): TransformFlags { @@ -6137,7 +6135,7 @@ export class NoSubstitutionTemplateLiteral extends Token { - return this.ast.data.templateSpans?.nodes!; // TODO: remove `!` + return this.ast.data.templateSpans.nodes; } set templateSpans(value) { - this.ast.data.templateSpans = value?.ast; + this.ast.data.templateSpans = value.ast; } } /** @internal */ export class AstTemplateExpressionData extends AstData { head: AstTemplateHead = undefined!; - templateSpans: AstNodeArray | undefined = undefined; + templateSpans: AstNodeArray = undefined!; override computeTransformFlags(_: AstNode): TransformFlags { return propagateChildFlags(this.head) | @@ -6500,16 +6498,16 @@ export class TemplateSpan extends Node { - return this.ast.data.elements?.nodes!; - } // TODO: remove '!' + return this.ast.data.elements.nodes; + } set elements(value: NodeArray) { - this.ast.data.elements = value?.ast; + this.ast.data.elements = value.ast; } get multiLine(): boolean | undefined { return this.ast.data.multiLine; @@ -6597,7 +6595,7 @@ export class ArrayLiteralExpression extends Node | undefined = undefined; + elements: AstNodeArray = undefined!; multiLine: boolean | undefined = undefined; override computeTransformFlags(_: AstNode): TransformFlags { @@ -6619,10 +6617,10 @@ export class SpreadElement extends Node { - return this.ast.data.properties?.nodes!; - } // TODO: remove '!' + return this.ast.data.properties.nodes; + } set properties(value) { - this.ast.data.properties = value?.ast; + this.ast.data.properties = value.ast; } get multiLine(): boolean | undefined { return this.ast.data.multiLine; @@ -6689,7 +6687,7 @@ export class ObjectLiteralExpression extends Node | undefined = undefined; + properties: AstNodeArray = undefined!; multiLine: boolean | undefined = undefined; jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) override computeTransformFlags(_: AstNode): TransformFlags { @@ -6730,10 +6728,10 @@ export class PropertyAccessExpression extends Node { - return this.ast.data.arguments?.nodes!; // TODO: remove `!` + return this.ast.data.arguments.nodes; } set arguments(value) { - this.ast.data.arguments = value?.ast; + this.ast.data.arguments = value.ast; } get symbol(): ts.Symbol { - return this.ast.data.symbol!; // TODO: remove `!` + return this.ast.data.symbol; } set symbol(value) { this.ast.data.symbol = value; @@ -7003,9 +7001,9 @@ export class AstCallExpressionData extends AstData { expression: AstLeftHandSideExpression = undefined!; questionDotToken: AstQuestionDotToken | undefined = undefined; typeArguments: AstNodeArray | undefined = undefined; - arguments: AstNodeArray | undefined = undefined; + arguments: AstNodeArray = undefined!; - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) override computeTransformFlags(node: AstNode): TransformFlags { @@ -7071,10 +7069,10 @@ export class ExpressionWithTypeArguments extends Node | undefined { return this.ast.data.typeArguments?.nodes; @@ -7109,10 +7107,10 @@ export class NewExpression extends Node | undefined { return this.ast.data.typeArguments?.nodes; @@ -7127,7 +7125,7 @@ export class NewExpression extends Node | undefined = undefined; arguments: AstNodeArray | undefined = undefined; - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) override computeTransformFlags(_: AstNode): TransformFlags { @@ -7180,10 +7178,10 @@ export class TaggedTemplateExpression extends Node | undefined { return this.ast.data.typeArguments?.nodes; @@ -7192,10 +7190,10 @@ export class TaggedTemplateExpression extends Node i declare _expressionBrand: any; get openingElement(): JsxOpeningElement { - return this.ast.data.openingElement?.node; + return this.ast.data.openingElement.node; } set openingElement(value: JsxOpeningElement) { - this.ast.data.openingElement = value?.ast; + this.ast.data.openingElement = value.ast; } get children(): NodeArray { return this.ast.data.children.nodes; } set children(value: NodeArray) { - this.ast.data.children = value?.ast; + this.ast.data.children = value.ast; } get closingElement(): JsxClosingElement { - return this.ast.data.closingElement?.node; + return this.ast.data.closingElement.node; } set closingElement(value: JsxClosingElement) { - this.ast.data.closingElement = value?.ast; + this.ast.data.closingElement = value.ast; } } @@ -7532,10 +7530,10 @@ export class JsxAttributes extends Node = undefined!; - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) override computeTransformFlags(_: AstNode): TransformFlags { @@ -7566,16 +7564,16 @@ export class JsxNamespacedName extends Node { return this.ast.data.children.nodes; } set children(value: NodeArray) { - this.ast.data.children = value?.ast; + this.ast.data.children = value.ast; } get closingFragment(): JsxClosingFragment { - return this.ast.data.closingFragment?.node; + return this.ast.data.closingFragment.node; } set closingFragment(value: JsxClosingFragment) { - this.ast.data.closingFragment = value?.ast; + this.ast.data.closingFragment = value.ast; } } @@ -7821,10 +7819,10 @@ export class JsxAttribute extends Node | undefined = undefined; jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) override computeTransformFlags(_: AstNode): TransformFlags { @@ -8140,10 +8138,10 @@ export class Block extends Node implements JSDoc declare _localsContainerBrand: any; get statements(): NodeArray { - return this.ast.data.statements?.nodes!; // TODO: remove `!` + return this.ast.data.statements.nodes; } set statements(value) { - this.ast.data.statements = value?.ast; + this.ast.data.statements = value.ast; } get multiLine(): boolean | undefined { return this.ast.data.multiLine; @@ -8167,18 +8165,18 @@ export class Block extends Node implements JSDoc return this.ast.data.nextContainer?.node; } set nextContainer(value) { - this.ast.data.nextContainer = value?.ast as NextContainer | undefined; + this.ast.data.nextContainer = value?.ast; } } /** @internal */ export class AstBlockData extends AstData { - statements: AstNodeArray | undefined = undefined; + statements: AstNodeArray = undefined!; multiLine: boolean | undefined = undefined; jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) locals: SymbolTable | undefined = undefined; - nextContainer: NextContainer | undefined = undefined; + nextContainer: AstNextContainer | undefined = undefined; override computeTransformFlags(_: AstNode): TransformFlags { return propagateChildrenFlags(this.statements); @@ -8200,10 +8198,10 @@ export class VariableStatement extends Node impl } get clauses(): NodeArray { - return this.ast.data.clauses?.nodes!; - } // TODO: remove '!' + return this.ast.data.clauses.nodes; + } set clauses(value) { - this.ast.data.clauses = value?.ast; + this.ast.data.clauses = value.ast; } get locals(): ts.SymbolTable | undefined { return this.ast.data.locals; @@ -8945,16 +8943,16 @@ export class CaseBlock extends Node impl return this.ast.data.nextContainer?.node; } set nextContainer(value) { - this.ast.data.nextContainer = value?.ast as NextContainer | undefined; + this.ast.data.nextContainer = value?.ast; } } /** @internal */ export class AstCaseBlockData extends AstData { - clauses: AstNodeArray | undefined = undefined; + clauses: AstNodeArray = undefined!; locals: SymbolTable | undefined = undefined; - nextContainer: NextContainer | undefined = undefined; + nextContainer: AstNextContainer | undefined = undefined; override computeTransformFlags(_: AstNode): TransformFlags { return propagateChildrenFlags(this.clauses); @@ -8975,16 +8973,16 @@ export class CaseClause extends Node i } get expression(): Expression { - return this.ast.data.expression?.node; + return this.ast.data.expression.node; } set expression(value) { - this.ast.data.expression = value?.ast; + this.ast.data.expression = value.ast; } get statements(): NodeArray { - return this.ast.data.statements?.nodes!; // TODO: remove `!` + return this.ast.data.statements.nodes; } set statements(value) { - this.ast.data.statements = value?.ast; + this.ast.data.statements = value.ast; } get fallthroughFlowNode(): ts.FlowNode | undefined { return this.ast.data.fallthroughFlowNode; @@ -9003,7 +9001,7 @@ export class CaseClause extends Node i /** @internal */ export class AstCaseClauseData extends AstData { expression: AstExpression = undefined!; - statements: AstNodeArray | undefined = undefined; + statements: AstNodeArray = undefined!; jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) fallthroughFlowNode?: FlowNode | undefined; @@ -9026,10 +9024,10 @@ export class DefaultClause extends Node { - return this.ast.data.statements?.nodes!; // TODO: remove `!` + return this.ast.data.statements.nodes; } set statements(value) { - this.ast.data.statements = value?.ast; + this.ast.data.statements = value.ast; } get fallthroughFlowNode(): ts.FlowNode | undefined { return this.ast.data.fallthroughFlowNode; @@ -9041,7 +9039,7 @@ export class DefaultClause extends Node | undefined = undefined; + statements: AstNodeArray = undefined!; fallthroughFlowNode?: FlowNode | undefined = undefined; @@ -9067,16 +9065,16 @@ export class LabeledStatement extends Node { - return this.ast.data.members?.nodes!; // TODO: remove `!` + return this.ast.data.members.nodes; } set members(value: NodeArray) { - this.ast.data.members = value?.ast; + this.ast.data.members = value.ast; } get jsDoc(): JSDocArray | undefined { return this.ast.data.jsDoc; @@ -9342,7 +9340,7 @@ export class ClassDeclaration extends Node | undefined = undefined; heritageClauses: AstNodeArray | undefined = undefined; - members: AstNodeArray | undefined = undefined; + members: AstNodeArray = undefined!; jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) override computeTransformFlags(_: AstNode): TransformFlags { @@ -9425,10 +9423,10 @@ export class ClassExpression extends Node { - return this.ast.data.members?.nodes!; // TODO: remove `!` + return this.ast.data.members.nodes; } set members(value) { - this.ast.data.members = value?.ast; + this.ast.data.members = value.ast; } get jsDoc(): JSDocArray | undefined { return this.ast.data.jsDoc; @@ -9437,7 +9435,7 @@ export class ClassExpression extends Node | undefined = undefined; heritageClauses: AstNodeArray | undefined = undefined; - members: AstNodeArray | undefined = undefined; + members: AstNodeArray = undefined!; jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) override computeTransformFlags(_: AstNode): TransformFlags { @@ -9506,10 +9504,10 @@ export class InterfaceDeclaration extends Node | undefined { return this.ast.data.typeParameters?.nodes; @@ -9524,10 +9522,10 @@ export class InterfaceDeclaration extends Node { - return this.ast.data.members?.nodes!; - } // TODO: remove '!' + return this.ast.data.members.nodes; + } set members(value) { - this.ast.data.members = value?.ast; + this.ast.data.members = value.ast; } get jsDoc(): JSDocArray | undefined { return this.ast.data.jsDoc; @@ -9536,7 +9534,7 @@ export class InterfaceDeclaration extends Node | undefined = undefined; heritageClauses: AstNodeArray | undefined = undefined; - members: AstNodeArray | undefined = undefined; + members: AstNodeArray = undefined!; jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) } @@ -9580,17 +9578,17 @@ export class HeritageClause extends Node { - return this.ast.data.types?.nodes!; - } // TODO: remove '!' + return this.ast.data.types.nodes; + } set types(value) { - this.ast.data.types = value?.ast; + this.ast.data.types = value.ast; } } /** @internal */ export class AstHeritageClauseData extends AstData { token: SyntaxKind.ExtendsKeyword | SyntaxKind.ImplementsKeyword = undefined!; - types: AstNodeArray | undefined = undefined; + types: AstNodeArray = undefined!; override computeTransformFlags(_: AstNode): TransformFlags { switch (this.token) { @@ -9620,10 +9618,10 @@ export class TypeAliasDeclaration extends Node | undefined { return this.ast.data.typeParameters?.nodes; @@ -9632,10 +9630,10 @@ export class TypeAliasDeclaration extends Node { - return this.ast.data.members?.nodes!; - } // TODO: remove '!' + return this.ast.data.members.nodes; + } set members(value) { - this.ast.data.members = value?.ast; + this.ast.data.members = value.ast; } get jsDoc(): JSDocArray | undefined { return this.ast.data.jsDoc; @@ -9716,7 +9714,7 @@ export class EnumDeclaration extends Node | undefined = undefined; name: AstIdentifier = undefined!; - members: AstNodeArray | undefined = undefined; + members: AstNodeArray = undefined!; jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) override computeTransformFlags(_: AstNode): TransformFlags { @@ -9764,10 +9762,10 @@ export class EnumMember extends Node i } get name(): PropertyName { - return this.ast.data.name?.node; + return this.ast.data.name.node; } set name(value) { - this.ast.data.name = value?.ast; + this.ast.data.name = value.ast; } get initializer(): Expression | undefined { return this.ast.data.initializer?.node; @@ -9782,7 +9780,7 @@ export class EnumMember extends Node i this.ast.data.jsDoc = value; } get symbol(): ts.Symbol { - return this.ast.data.symbol!; // TODO: remove `!` + return this.ast.data.symbol; } set symbol(value) { this.ast.data.symbol = value; @@ -9801,7 +9799,7 @@ export class AstEnumMemberData extends AstData { initializer: AstExpression | undefined = undefined; jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) override computeTransformFlags(_: AstNode): TransformFlags { @@ -9850,10 +9848,10 @@ export class ModuleDeclaration extends Node { - return this.ast.data.statements?.nodes!; // TODO: remove `!` + return this.ast.data.statements.nodes; } set statements(value) { - this.ast.data.statements = value?.ast; + this.ast.data.statements = value.ast; } get jsDoc(): JSDocArray | undefined { return this.ast.data.jsDoc; @@ -10000,7 +9998,7 @@ export class ModuleBlock extends Node | undefined = undefined; + statements: AstNodeArray = undefined!; jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) override computeTransformFlags(_: AstNode): TransformFlags { @@ -10038,10 +10036,10 @@ export class ImportEqualsDeclaration extends Node { - return this.ast.data.elements?.nodes!; // TODO: remove `!` + return this.ast.data.elements.nodes; } set elements(value) { - this.ast.data.elements = value?.ast; + this.ast.data.elements = value.ast; } get multiLine(): boolean | undefined { return this.ast.data.multiLine; @@ -10402,8 +10400,8 @@ export class ImportAttributes extends Node | undefined = undefined; + token: SyntaxKind.WithKeyword | SyntaxKind.AssertKeyword = SyntaxKind.WithKeyword; + elements: AstNodeArray = undefined!; multiLine: boolean | undefined = undefined; override computeTransformFlags(_: AstNode): TransformFlags { @@ -10425,13 +10423,13 @@ export class NamespaceImport extends Node | undefined { return this.ast.data.modifiers?.nodes; @@ -10532,7 +10530,7 @@ export class NamespaceExportDeclaration extends Node | undefined = undefined; // initialized by parser (grammar error) name: AstIdentifier = undefined!; jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) override computeTransformFlags(_: AstNode): TransformFlags { @@ -10618,7 +10616,7 @@ export class ExportDeclaration extends Node { - return this.ast.data.elements?.nodes!; - } // TODO: remove '!' + return this.ast.data.elements.nodes; + } set elements(value) { - this.ast.data.elements = value?.ast; + this.ast.data.elements = value.ast; } } /** @internal */ export class AstNamedExportsData extends AstData { - elements: AstNodeArray | undefined = undefined; + elements: AstNodeArray = undefined!; override computeTransformFlags(_: AstNode): TransformFlags { let transformFlags = propagateChildrenFlags(this.elements); @@ -10732,10 +10730,10 @@ export class ImportSpecifier extends Node { - return this.ast.data.parameters?.nodes!; // TODO: remove `!` + return this.ast.data.parameters.nodes; } set parameters(value) { - this.ast.data.parameters = value?.ast; + this.ast.data.parameters = value.ast; } get type(): TypeNode | undefined { return this.ast.data.type?.node; @@ -11138,7 +11136,7 @@ export class JSDocFunctionType extends Node | undefined = undefined; - parameters: AstNodeArray | undefined = undefined; + parameters: AstNodeArray = undefined!; type: AstTypeNode | undefined = undefined; typeArguments: AstNodeArray | undefined = undefined; // quick info jsDoc: JSDocArray | undefined = undefined; // initialized by parser (JSDocContainer) - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) locals: SymbolTable | undefined = undefined; - nextContainer: NextContainer | undefined = undefined; + nextContainer: AstNextContainer | undefined = undefined; } /** @internal */ @@ -11184,10 +11182,10 @@ export class JSDocVariadicType extends Node | undefined { const comment = this.ast.data.comment; @@ -11629,13 +11627,13 @@ export class JSDocEnumTag extends BaseJSDocTag implements ts.JSDocThisTag { declare readonly ast: AstJSDocThisTag; get typeExpression(): JSDocTypeExpression { - return this.ast.data.typeExpression?.node; + return this.ast.data.typeExpression.node; } set typeExpression(value) { - this.ast.data.typeExpression = value?.ast; + this.ast.data.typeExpression = value.ast; } } @@ -11696,17 +11694,17 @@ export class JSDocTemplateTag extends BaseJSDocTag { - return this.ast.data.typeParameters?.nodes!; // TODO: remove `!` + return this.ast.data.typeParameters.nodes; } set typeParameters(value) { - this.ast.data.typeParameters = value?.ast; + this.ast.data.typeParameters = value.ast; } } /** @internal */ export class AstJSDocTemplateTagData extends AstJSDocTagData { constraint: AstJSDocTypeExpression | undefined = undefined; - typeParameters: AstNodeArray | undefined = undefined; + typeParameters: AstNodeArray = undefined!; } /** @internal */ @@ -11745,10 +11743,10 @@ export class AstJSDocReturnTagData extends AstJSDocTagData { export class JSDocTypeTag extends BaseJSDocTag implements ts.JSDocTypeTag { declare readonly ast: AstJSDocTypeTag; get typeExpression(): JSDocTypeExpression { - return this.ast.data.typeExpression?.node; + return this.ast.data.typeExpression.node; } set typeExpression(value) { - this.ast.data.typeExpression = value?.ast; + this.ast.data.typeExpression = value.ast; } } @@ -11789,7 +11787,7 @@ export class JSDocTypedefTag extends BaseJSDocTag | undefined = undefined; isArrayType = false; - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) } @@ -12184,10 +12182,10 @@ export class AstJSDocTypeLiteralData extends AstData { export class JSDocSatisfiesTag extends BaseJSDocTag implements ts.JSDocSatisfiesTag { declare readonly ast: AstJSDocSatisfiesTag; get typeExpression(): JSDocTypeExpression { - return this.ast.data.typeExpression?.node; + return this.ast.data.typeExpression.node; } set typeExpression(value) { - this.ast.data.typeExpression = value?.ast; + this.ast.data.typeExpression = value.ast; } } @@ -12214,10 +12212,10 @@ export class JSDocImportTag extends BaseJSDocTag) { - this.ast.data.elements = value?.ast; + this.ast.data.elements = value.ast; } } @@ -12446,16 +12444,16 @@ export class SyntheticReferenceExpression extends Node i declare _localsContainerBrand: any; get statements(): NodeArray { - return this.ast.data.statements?.nodes!; // TODO: remove `!` + return this.ast.data.statements.nodes; } set statements(value) { - this.ast.data.statements = value?.ast; + this.ast.data.statements = value.ast; } get endOfFileToken(): EndOfFileToken { - return this.ast.data.endOfFileToken?.node; + return this.ast.data.endOfFileToken.node; } set endOfFileToken(value) { - this.ast.data.endOfFileToken = value?.ast; + this.ast.data.endOfFileToken = value.ast; } get fileName(): string { return this.ast.data.fileName; @@ -12664,9 +12662,8 @@ export class SourceFile extends Node i set version(value) { this.ast.data.version = value; } - get symbol(): ts.Symbol { - return this.ast.data.declaration.symbol!; // TODO: remove `!` + return this.ast.data.declaration.symbol; } set symbol(value) { this.ast.data.declaration.symbol = value; @@ -12821,7 +12818,7 @@ export class SourceFile extends Node i return this.ast.data.nextContainer?.node; } set nextContainer(value) { - this.ast.data.nextContainer = value?.ast as NextContainer | undefined; + this.ast.data.nextContainer = value?.ast; } get extendedSourceFiles(): string[] | undefined { @@ -13029,14 +13026,14 @@ export class SourceFile extends Node i /** @internal */ export class AstDeclarationData { - symbol: Symbol | undefined = undefined; // initialized by binder (Declaration) + symbol: Symbol = undefined!; // initialized by binder (Declaration) localSymbol: Symbol | undefined = undefined; // initialized by binder (Declaration) } /** @internal */ export class AstSourceFileData extends AstData { declaration: AstDeclarationData = new AstDeclarationData(); - statements: AstNodeArray | undefined = undefined; + statements: AstNodeArray = undefined!; endOfFileToken: AstEndOfFileToken = undefined!; text = ""; fileName = ""; @@ -13049,7 +13046,7 @@ export class AstSourceFileData extends AstData { isDeclarationFile = false; hasNoDefaultLib = false; locals: SymbolTable | undefined = undefined; - nextContainer: NextContainer | undefined = undefined; + nextContainer: AstNextContainer | undefined = undefined; endFlowNode: FlowNode | undefined = undefined; // initialized by checker (FlowContainer) nodeCount = 0; identifierCount = 0; diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 2f3fb9e8a7f..091e5410ed4 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -1895,6 +1895,7 @@ export interface ParameterDeclaration extends NamedDeclaration, JSDocContainer { readonly parent: SignatureDeclaration; readonly modifiers?: NodeArray | undefined; readonly dotDotDotToken?: DotDotDotToken | undefined; // Present on rest parameter + // TODO(rbuckton): `name` can be undefined for JSDoc signature parameters readonly name: BindingName; // Declared parameter name. readonly questionToken?: QuestionToken | undefined; // Present on optional parameter readonly type?: TypeNode | undefined; // Optional type annotation