From 475f11782ed97cedf76930c7a4b101d56c6d7a33 Mon Sep 17 00:00:00 2001 From: Sam Vervaeck Date: Mon, 1 Jun 2020 20:10:01 +0200 Subject: [PATCH] Swap code generator for AST definitions --- src/ast-spec.ts | 105 +- src/ast-spec.txt | 559 -- src/ast.d.ts | 8343 ------------------------------ src/ast.js | 4795 ----------------- src/ast.ts | 2937 +++++++++++ treegen/Makefile | 11 - treegen/package-lock.json | 5 - treegen/package.json | 29 - treegen/snippets/ast-after.d.ts | 0 treegen/snippets/ast-after.js | 0 treegen/snippets/ast-before.d.ts | 28 - treegen/snippets/ast-before.js | 114 - treegen/src/ast.ts | 75 - treegen/src/cli.ts | 36 - treegen/src/index.ts | 528 -- treegen/src/parser.d.ts | 29 - treegen/src/parser.pegjs | 255 - treegen/src/util.ts | 57 - treegen/tsconfig.json | 12 - 19 files changed, 3025 insertions(+), 14893 deletions(-) delete mode 100644 src/ast-spec.txt delete mode 100644 src/ast.d.ts delete mode 100644 src/ast.js create mode 100644 src/ast.ts delete mode 100644 treegen/Makefile delete mode 100644 treegen/package-lock.json delete mode 100644 treegen/package.json delete mode 100644 treegen/snippets/ast-after.d.ts delete mode 100644 treegen/snippets/ast-after.js delete mode 100644 treegen/snippets/ast-before.d.ts delete mode 100644 treegen/snippets/ast-before.js delete mode 100644 treegen/src/ast.ts delete mode 100755 treegen/src/cli.ts delete mode 100644 treegen/src/index.ts delete mode 100644 treegen/src/parser.d.ts delete mode 100644 treegen/src/parser.pegjs delete mode 100644 treegen/src/util.ts delete mode 100644 treegen/tsconfig.json diff --git a/src/ast-spec.ts b/src/ast-spec.ts index fe99552fc..ad910db1d 100644 --- a/src/ast-spec.ts +++ b/src/ast-spec.ts @@ -1,11 +1,82 @@ +import { Type } from "./types" +import { TextSpan } from "./text" import { Value } from "./evaluator" import { Package } from "./package" +import { Diagnostic } from "./diagnostics"; -export class Syntax { +let nextNodeId = 1; + +type SyntaxKind = number; + +export type ResolveSyntaxKind = Extract; + +export abstract class Syntax { + + public id: number; + + public type?: Type; + + public errors: Diagnostic[] = []; + + public abstract kind: SyntaxKind; + + public abstract parentNode: Syntax | null = null; + + public abstract getChildNodes(): IterableIterator; + + constructor(public span: TextSpan | null = null) { + this.id = nextNodeId++; + } + + *preorder() { + const stack: Syntax[] = [ this as unknown as Syntax ] ; + while (stack.length > 0) { + const node = stack.pop()!; + yield node + for (const childNode of node.getChildNodes()) { + stack.push(childNode); + } + } + } + + mayContainKind(kind: SyntaxKind) { + // TODO + return true; + } + + getParentOfKind(kind: SyntaxKind) { + let currNode = this.parentNode; + while (currNode !== null) { + if (currNode.kind === kind) { + return currNode; + } + currNode = currNode.parentNode; + } + return null; + } + + *findAllChildrenOfKind(kind: K): IterableIterator> { + for (const node of this.preorder()) { + if (!node.mayContainKind(kind)) { + break; + } + if (node.kind === kind) { + yield node as ResolveSyntaxKind; + } + } + } } +export function setParents(node: Syntax, parentNode: Syntax | null = null) { + // NOTE We cast to any here because TypeScript does not like this complex assignment + node.parentNode = parentNode as any; + for (const child of node.getChildNodes()) { + setParents(child, node) + } +} + export interface EndOfFile extends BoltToken, JSToken {} export interface Token {} @@ -15,12 +86,12 @@ export interface ReturnStatement {} // Bolt language AST definitions -export interface BoltSyntax {} +export interface BoltSyntax extends Syntax {} export interface BoltToken extends Token, BoltSyntax {} export interface BoltStringLiteral extends BoltToken { - value: String, + value: string, } export interface BoltIntegerLiteral extends BoltToken { @@ -30,17 +101,17 @@ export interface BoltIntegerLiteral extends BoltToken { export interface BoltSymbol extends BoltToken {} export interface BoltIdentifier extends BoltSymbol { - text: String, + text: string, } export interface BoltOperatorLike extends BoltSymbol {} export interface BoltOperator extends BoltSymbol { - text: String, + text: string, } export interface BoltAssignment extends BoltToken { - operator: String | null, + operator: string | null, } export interface BoltComma extends BoltToken {} @@ -83,7 +154,7 @@ export interface BoltTraitKeyword extends BoltToken, BoltKeyword {} export interface BoltImplKeyword extends BoltToken, BoltKeyword {} export interface BoltPunctuated extends BoltToken { - text: String, + text: string, } export interface BoltParenthesized extends BoltPunctuated {} @@ -262,7 +333,7 @@ export interface BoltDeclaration extends BoltSyntax, BoltSourceElement {} export interface BoltTypeDeclaration extends BoltSyntax, BoltSourceElement {} -enum BoltModifiers { +export enum BoltModifiers { IsMutable = 0x1, IsPublic = 0x2, } @@ -279,7 +350,7 @@ export interface BoltFunctionBodyElement extends FunctionBodyElement {} export interface BoltFunctionDeclaration extends BoltFunctionBodyElement, BoltDeclaration, BoltDeclarationLike, BoltTraitOrImplElement { modifiers: BoltModifiers, - target: String, + target: string, name: BoltSymbol, params: BoltParameter[], returnType: BoltTypeExpression | null, @@ -315,7 +386,7 @@ export interface BoltPlainExportSymbol extends BoltExportSymbol { } export interface BoltExportDirective extends BoltSourceElement { - file: String, + file: string, symbols: BoltExportSymbol[] | null, } @@ -362,21 +433,21 @@ export interface BoltSourceElement {} export interface BoltMacroCall extends BoltRecordMember, BoltSourceElement, BoltTraitOrImplElement, BoltFunctionBodyElement { name: BoltIdentifier, - text: String, + text: string, } // JavaScript AST definitions -export interface JSSyntax {} +export interface JSSyntax extends Syntax {} export interface JSToken extends JSSyntax, Token {} export interface JSIdentifier extends JSToken { - text: String, + text: string, } export interface JSString extends JSToken { - value: String, + value: string, } export interface JSInteger extends JSToken { @@ -400,7 +471,7 @@ export interface JSForKeyword extends JSToken {} export interface JSOperatorLike {} export interface JSOperator extends JSToken { - text: String, + text: string, } export interface JSCloseBrace extends JSToken {} @@ -478,7 +549,7 @@ export interface JSLiteralExpression extends JSExpression { } export interface JSReferenceExpression extends JSExpression { - name: String, + name: string, } export interface JSSourceElement {} @@ -523,7 +594,7 @@ export interface JSParameter extends JSSyntax { export interface JSDeclaration extends JSSyntax, JSSourceElement {} -enum JSDeclarationModifiers { +export enum JSDeclarationModifiers { IsExported = 0x1, } diff --git a/src/ast-spec.txt b/src/ast-spec.txt deleted file mode 100644 index 3e5128849..000000000 --- a/src/ast-spec.txt +++ /dev/null @@ -1,559 +0,0 @@ - -node EndOfFile > BoltToken, JSToken; -node Token; -node SourceFile; -node FunctionBodyElement; -node ReturnStatement; - -// Bolt language AST definitions - -interface BoltSyntax; - -node BoltToken > Token, BoltSyntax; - -node BoltStringLiteral > BoltToken { - value: String, -} - -node BoltIntegerLiteral > BoltToken { - value: Int, -} - -node BoltSymbol > BoltToken; - -node BoltIdentifier > BoltSymbol { - text: String, -} - -node BoltOperatorLike > BoltSymbol; - -node BoltOperator > BoltSymbol { - text: String, -} - -node BoltAssignment > BoltToken { - operator: Option, -} - -node BoltComma > BoltToken; -node BoltSemi > BoltToken; -node BoltColon > BoltToken; -node BoltColonColon > BoltToken; -node BoltDot > BoltToken; -node BoltDotDot > BoltToken; -node BoltRArrow > BoltToken; -node BoltRArrowAlt > BoltToken; -node BoltLArrow > BoltToken; -node BoltEqSign > BoltToken; - -node BoltGtSign > BoltToken, BoltOperatorLike; -node BoltExMark > BoltToken, BoltOperatorLike; -node BoltLtSign > BoltToken, BoltOperatorLike; -node BoltVBar > BoltToken, BoltOperatorLike; - -node BoltKeyword; - -node BoltWhereKeyword > BoltToken, BoltKeyword; -node BoltQuoteKeyword > BoltToken, BoltKeyword; -node BoltFnKeyword > BoltToken, BoltKeyword; -node BoltForeignKeyword > BoltToken, BoltKeyword; -node BoltForKeyword > BoltToken, BoltKeyword; -node BoltLetKeyword > BoltToken, BoltKeyword; -node BoltReturnKeyword > BoltToken, BoltKeyword; -node BoltLoopKeyword > BoltToken, BoltKeyword; -node BoltYieldKeyword > BoltToken, BoltKeyword; -node BoltMatchKeyword > BoltToken, BoltKeyword; -node BoltImportKeyword > BoltToken, BoltKeyword; -node BoltExportKeyword > BoltToken, BoltKeyword; -node BoltPubKeyword > BoltToken, BoltKeyword; -node BoltModKeyword > BoltToken, BoltKeyword; -node BoltMutKeyword > BoltToken, BoltKeyword; -node BoltEnumKeyword > BoltToken, BoltKeyword; -node BoltStructKeyword > BoltToken, BoltKeyword; -node BoltTypeKeyword > BoltToken, BoltKeyword; -node BoltTraitKeyword > BoltToken, BoltKeyword; -node BoltImplKeyword > BoltToken, BoltKeyword; - -node BoltPunctuated > BoltToken { - text: String, -} - -node BoltParenthesized > BoltPunctuated; -node BoltBraced > BoltPunctuated; -node BoltBracketed > BoltPunctuated; - -node BoltSourceFile > BoltSyntax, SourceFile { - elements: Vec, - pkg: Package, -} - -node BoltQualName > BoltSyntax { - isAbsolute: bool, - modulePath: Vec, - name: BoltSymbol, -} - -node BoltTypeExpression > BoltSyntax; - -node BoltTypeOfExpression > BoltTypeExpression { - expression: BoltExpression, -} - -node BoltReferenceTypeExpression > BoltTypeExpression { - name: BoltQualName, - typeArgs: Option>, -} - -node BoltFunctionTypeExpression > BoltTypeExpression { - params: Vec, - returnType: Option, -} - -node BoltLiftedTypeExpression > BoltTypeExpression { - expression: BoltExpression, -} - -node BoltTypeParameter > BoltSyntax { - index: usize, - name: BoltIdentifier, - typeExpr: Option, - defaultType: Option, -} - -node BoltPattern > BoltSyntax; - -node BoltBindPattern > BoltPattern { - name: BoltIdentifier, -} - -node BoltTypePattern > BoltPattern { - typeExpr: BoltTypeExpression, - nestedPattern: BoltPattern, -} - -node BoltExpressionPattern > BoltPattern { - expression: BoltExpression, -} - -node BoltTuplePatternElement > BoltSyntax { - index: usize, - pattern: BoltPattern, -} - -node BoltTuplePattern > BoltPattern { - elements: Vec, -} - -node BoltRecordFieldPattern > BoltSyntax { - isRest: bool, - name: Option, - pattern: Option, -} - -node BoltRecordPattern > BoltPattern { - name: BoltTypeExpression, - fields: Vec, -} - -node BoltExpression > BoltSyntax; - -node BoltQuoteExpression > BoltExpression { - tokens: Vec, -} - -node BoltTupleExpression > BoltExpression { - elements: Vec, -} - -node BoltReferenceExpression > BoltExpression { - name: BoltQualName, -} - -node BoltMemberExpression > BoltExpression { - expression: BoltExpression, - path: Vec, -} - -node BoltFunctionExpression > BoltExpression { - params: Vec, - returnType: Option, - body: Vec, -} - -node BoltCallExpression > BoltExpression { - operator: BoltExpression, - operands: Vec, -} - -node BoltYieldExpression > BoltExpression { - value: BoltExpression, -} - -node BoltMatchArm > BoltSyntax { - pattern: BoltPattern, - body: BoltExpression, -} - -node BoltMatchExpression > BoltExpression { - value: BoltExpression, - arms: Vec, -} - -node BoltCase > BoltSyntax { - test: BoltExpression, - result: BoltExpression, -} - -node BoltCaseExpression > BoltExpression { - cases: Vec, -} - -node BoltBlockExpression > BoltExpression { - elements: Vec, -} - -node BoltConstantExpression > BoltExpression { - value: BoltValue, -} - -node BoltStatement > BoltSyntax, BoltFunctionBodyElement, BoltSourceElement; - -node BoltReturnStatement > ReturnStatement, BoltStatement { - value: Option, -} - -node BoltConditionalCase > BoltSyntax { - test: Option, - body: Vec, -} - -node BoltConditionalStatement > BoltStatement { - cases: Vec, -} - -node BoltResumeStatement > BoltStatement { - value: BoltExpression, -} - -node BoltExpressionStatement > BoltStatement { - expression: BoltExpression, -} - -node BoltLoopStatement > BoltStatement { - elements: Vec, -} - -node BoltParameter > BoltSyntax { - index: usize, - bindings: BoltPattern, - typeExpr: Option, - defaultValue: Option, -} - -node BoltDeclaration > BoltSyntax, BoltSourceElement; - -node BoltTypeDeclaration > BoltSyntax, BoltSourceElement; - -enum BoltModifiers { - IsMutable = 0x1, - IsPublic = 0x2, -} - -node BoltModule > BoltSyntax, BoltSourceElement { - modifiers: BoltModifiers, - name: Vec, - elements: Vec, -} - -node BoltDeclarationLike; - -node BoltFunctionBodyElement > FunctionBodyElement; - -node BoltFunctionDeclaration > BoltFunctionBodyElement, BoltDeclaration, BoltDeclarationLike, BoltTraitOrImplElement { - modifiers: BoltModifiers, - target: String, - name: BoltSymbol, - params: Vec, - returnType: Option, - typeParams: Option>, - body: Vec, -} - -node BoltVariableDeclaration > BoltFunctionBodyElement, BoltDeclaration, BoltDeclarationLike { - modifiers: BoltModifiers, - bindings: BoltPattern, - typeExpr: Option, - value: Option, -} - -node BoltImportSymbol > BoltSyntax; - -node BoltPlainImportSymbol > BoltImportSymbol { - remote: BoltQualName, - local: BoltSymbol, -} - -node BoltImportDirective > BoltSyntax, BoltSourceElement { - modifiers: BoltModifiers, - file: BoltStringLiteral, - symbols: Option>, -} - -node BoltExportSymbol > BoltSyntax; - -node BoltPlainExportSymbol > BoltExportSymbol { - local: BoltQualName, - remote: BoltSymbol, -} - -node BoltExportDirective > BoltSourceElement { - file: String, - symbols: Option>, -} - -node BoltTraitOrImplElement; - -node BoltTraitDeclaration > BoltDeclarationLike, BoltTypeDeclaration { - modifiers: BoltModifiers, - typeParams: Option>, - name: BoltIdentifier, - typeBoundExpr: Option, - elements: Option>, -} - -node BoltImplDeclaration > BoltTypeDeclaration, BoltDeclarationLike { - modifiers: BoltModifiers, - typeParams: Option>, - name: BoltIdentifier, - traitTypeExpr: Option, - elements: Vec, -} - -node BoltTypeAliasDeclaration > BoltDeclarationLike, BoltTypeDeclaration, BoltTraitOrImplElement { - modifiers: BoltModifiers, - name: BoltIdentifier, - typeParams: Option>, - typeExpr: BoltTypeExpression, -} - -node BoltRecordMember > BoltSyntax; - -node BoltRecordField > BoltRecordMember { - name: BoltIdentifier, - typeExpr: BoltTypeExpression, -} - -node BoltRecordDeclaration > BoltDeclaration, BoltTypeDeclaration, BoltDeclarationLike { - modifiers: BoltModifiers, - name: BoltIdentifier, - typeParms: Option>, - members: Option>, -} - -node BoltSourceElement; - -node BoltMacroCall > BoltRecordMember, BoltSourceElement, BoltTraitOrImplElement, BoltFunctionBodyElement { - name: BoltIdentifier, - text: String, -} - -// JavaScript AST definitions - -node JSSyntax; - -node JSToken > JSSyntax, Token; - -node JSIdentifier > JSToken { - text: String, -} - -node JSString > JSToken { - value: String, -} - -node JSInteger > JSToken { - value: Int, -} - -node JSFromKeyword > JSToken; -node JSReturnKeyword > JSToken; -node JSTryKeyword > JSToken; -node JSFinallyKeyword > JSToken; -node JSCatchKeyword > JSToken; -node JSImportKeyword > JSToken; -node JSAsKeyword > JSToken; -node JSConstKeyword > JSToken; -node JSLetKeyword > JSToken; -node JSExportKeyword > JSToken; -node JSFunctionKeyword > JSToken; -node JSWhileKeyword > JSToken; -node JSForKeyword > JSToken; - -node JSOperatorLike; - -node JSOperator > JSToken { - text: String, -} - -node JSCloseBrace > JSToken; -node JSCloseBracket > JSToken; -node JSCloseParen > JSToken; -node JSOpenBrace > JSToken; -node JSOpenBracket > JSToken; -node JSOpenParen > JSToken; -node JSSemi > JSToken; -node JSComma > JSToken; -node JSDot > JSToken; -node JSDotDotDot > JSToken; -node JSMulOp > JSToken, JSOperatorLike; -node JSAddOp > JSToken, JSOperatorLike; -node JSDivOp > JSToken, JSOperatorLike; -node JSSubOp > JSToken, JSOperatorLike; -node JSLtOp > JSToken, JSOperatorLike; -node JSGtOp > JSToken, JSOperatorLike; -node JSBOrOp > JSToken, JSOperatorLike; -node JSBXorOp > JSToken, JSOperatorLike; -node JSBAndOp > JSToken, JSOperatorLike; -node JSBNotOp > JSToken, JSOperatorLike; -node JSNotOp > JSToken, JSOperatorLike; - -node JSPattern > JSSyntax; - -node JSBindPattern > JSPattern { - name: JSIdentifier, -} - -node JSExpression > JSSyntax; - -node JSConstantExpression > JSExpression { - value: BoltValue, -} - -node JSMemberExpression > JSExpression { - value: JSExpression, - property: JSIdentifier, -} - -node JSCallExpression > JSExpression { - operator: JSExpression, - operands: Vec, -} - -node JSBinaryExpression > JSExpression { - left: JSExpression, - operator: JSOperator, - right: JSExpression, -} - -node JSUnaryExpression > JSExpression { - operator: JSOperator, - operand: JSExpression -} - -node JSNewExpression > JSExpression { - target: JSExpression, - args: Vec, -} - -node JSSequenceExpression > JSExpression { - expressions: Vec, -} - -node JSConditionalExpression > JSExpression { - test: JSExpression, - consequent: JSExpression, - alternate: JSExpression, -} - -node JSLiteralExpression > JSExpression { - value: JSValue, -} - -node JSReferenceExpression > JSExpression { - name: String, -} - -node JSSourceElement; - -node JSFunctionBodyElement > FunctionBodyElement; - -node JSStatement > JSSyntax, JSSourceElement, JSFunctionBodyElement; - -node JSCatchBlock > JSSyntax { - bindings: Option, - elements: Vec, -} - -node JSTryCatchStatement > JSStatement { - tryBlock: Vec, - catchBlock: Option, - finalBlock: Option>, -} - -node JSExpressionStatement > JSStatement { - expression: JSExpression, -} - -node JSConditionalCase > JSSyntax { - test: Option, - body: Vec, -} - -node JSConditionalStatement > JSStatement { - cases: Vec, -} - -node JSReturnStatement > ReturnStatement, JSStatement { - value: Option, -} - -node JSParameter > JSSyntax { - index: usize, - bindings: JSPattern, - defaultValue: Option, -} - -node JSDeclaration > JSSyntax, JSSourceElement; - -enum JSDeclarationModifiers { - IsExported = 0x1, -} - -node JSImportBinding > JSSyntax; - -node JSImportStarBinding > JSImportBinding { - local: JSIdentifier, -} - -node JSImportAsBinding > JSImportBinding { - remote: JSIdentifier, - local: Option, -} - -// By exception, we alloww 'import ..'-statements to appear in foreign function bodies -node JSImportDeclaration > JSDeclaration, JSFunctionBodyElement { - bindings: Vec, - filename: JSString, -} - -node JSFunctionDeclaration > JSDeclaration, JSFunctionBodyElement { - modifiers: JSDeclarationModifiers, - name: JSIdentifier, - params: Vec, - body: Vec, -} - -node JSArrowFunctionDeclaration > JSDeclaration, JSFunctionBodyElement { - name: JSIdentifier, - params: Vec, - body: JSExpression, -} - -node JSLetDeclaration > JSDeclaration, JSFunctionBodyElement { - bindings: JSPattern, - value: Option, -} - -node JSSourceFile > JSSyntax, SourceFile { - elements: Vec, -} diff --git a/src/ast.d.ts b/src/ast.d.ts deleted file mode 100644 index 8dc0d4144..000000000 --- a/src/ast.d.ts +++ /dev/null @@ -1,8343 +0,0 @@ - -import { TypeRef } from "./types" -import { Diagnostic } from "./diagnostics" -import { Package } from "./common" -import { TextSpan } from "./text" - -export function setParents(node: Syntax): void; - -export type SyntaxRange = [Syntax, Syntax]; - -export function isSyntax(value: any): value is Syntax; - -interface SyntaxBase { - id: number; - kind: SyntaxKind; - type?: TypeRef; - errors: Diagnostic[] - parentNode: Syntax | null; - span: TextSpan | null; - visit(visitors: NodeVisitor[]): void; - preorder(): IterableIterator; - getParentOfKind(kind: K1): ResolveSyntaxKind | null; - getChildNodes(): IterableIterator, - findAllChildrenOfKind(kind: K1): IterableIterator>; -} - -export type ResolveSyntaxKind = Extract; - - -export class NodeVisitor { - public visit(node: Syntax): void; - protected visitEndOfFile?(node: EndOfFile): void; - protected visitBoltStringLiteral?(node: BoltStringLiteral): void; - protected visitBoltIntegerLiteral?(node: BoltIntegerLiteral): void; - protected visitBoltIdentifier?(node: BoltIdentifier): void; - protected visitBoltOperator?(node: BoltOperator): void; - protected visitBoltAssignment?(node: BoltAssignment): void; - protected visitBoltComma?(node: BoltComma): void; - protected visitBoltSemi?(node: BoltSemi): void; - protected visitBoltColon?(node: BoltColon): void; - protected visitBoltColonColon?(node: BoltColonColon): void; - protected visitBoltDot?(node: BoltDot): void; - protected visitBoltDotDot?(node: BoltDotDot): void; - protected visitBoltRArrow?(node: BoltRArrow): void; - protected visitBoltRArrowAlt?(node: BoltRArrowAlt): void; - protected visitBoltLArrow?(node: BoltLArrow): void; - protected visitBoltEqSign?(node: BoltEqSign): void; - protected visitBoltGtSign?(node: BoltGtSign): void; - protected visitBoltExMark?(node: BoltExMark): void; - protected visitBoltLtSign?(node: BoltLtSign): void; - protected visitBoltVBar?(node: BoltVBar): void; - protected visitBoltWhereKeyword?(node: BoltWhereKeyword): void; - protected visitBoltQuoteKeyword?(node: BoltQuoteKeyword): void; - protected visitBoltFnKeyword?(node: BoltFnKeyword): void; - protected visitBoltForeignKeyword?(node: BoltForeignKeyword): void; - protected visitBoltForKeyword?(node: BoltForKeyword): void; - protected visitBoltLetKeyword?(node: BoltLetKeyword): void; - protected visitBoltReturnKeyword?(node: BoltReturnKeyword): void; - protected visitBoltLoopKeyword?(node: BoltLoopKeyword): void; - protected visitBoltYieldKeyword?(node: BoltYieldKeyword): void; - protected visitBoltMatchKeyword?(node: BoltMatchKeyword): void; - protected visitBoltImportKeyword?(node: BoltImportKeyword): void; - protected visitBoltExportKeyword?(node: BoltExportKeyword): void; - protected visitBoltPubKeyword?(node: BoltPubKeyword): void; - protected visitBoltModKeyword?(node: BoltModKeyword): void; - protected visitBoltMutKeyword?(node: BoltMutKeyword): void; - protected visitBoltEnumKeyword?(node: BoltEnumKeyword): void; - protected visitBoltStructKeyword?(node: BoltStructKeyword): void; - protected visitBoltTypeKeyword?(node: BoltTypeKeyword): void; - protected visitBoltTraitKeyword?(node: BoltTraitKeyword): void; - protected visitBoltImplKeyword?(node: BoltImplKeyword): void; - protected visitBoltParenthesized?(node: BoltParenthesized): void; - protected visitBoltBraced?(node: BoltBraced): void; - protected visitBoltBracketed?(node: BoltBracketed): void; - protected visitBoltSourceFile?(node: BoltSourceFile): void; - protected visitBoltQualName?(node: BoltQualName): void; - protected visitBoltTypeOfExpression?(node: BoltTypeOfExpression): void; - protected visitBoltReferenceTypeExpression?(node: BoltReferenceTypeExpression): void; - protected visitBoltFunctionTypeExpression?(node: BoltFunctionTypeExpression): void; - protected visitBoltLiftedTypeExpression?(node: BoltLiftedTypeExpression): void; - protected visitBoltTypeParameter?(node: BoltTypeParameter): void; - protected visitBoltBindPattern?(node: BoltBindPattern): void; - protected visitBoltTypePattern?(node: BoltTypePattern): void; - protected visitBoltExpressionPattern?(node: BoltExpressionPattern): void; - protected visitBoltTuplePatternElement?(node: BoltTuplePatternElement): void; - protected visitBoltTuplePattern?(node: BoltTuplePattern): void; - protected visitBoltRecordFieldPattern?(node: BoltRecordFieldPattern): void; - protected visitBoltRecordPattern?(node: BoltRecordPattern): void; - protected visitBoltQuoteExpression?(node: BoltQuoteExpression): void; - protected visitBoltTupleExpression?(node: BoltTupleExpression): void; - protected visitBoltReferenceExpression?(node: BoltReferenceExpression): void; - protected visitBoltMemberExpression?(node: BoltMemberExpression): void; - protected visitBoltFunctionExpression?(node: BoltFunctionExpression): void; - protected visitBoltCallExpression?(node: BoltCallExpression): void; - protected visitBoltYieldExpression?(node: BoltYieldExpression): void; - protected visitBoltMatchArm?(node: BoltMatchArm): void; - protected visitBoltMatchExpression?(node: BoltMatchExpression): void; - protected visitBoltCase?(node: BoltCase): void; - protected visitBoltCaseExpression?(node: BoltCaseExpression): void; - protected visitBoltBlockExpression?(node: BoltBlockExpression): void; - protected visitBoltConstantExpression?(node: BoltConstantExpression): void; - protected visitBoltReturnStatement?(node: BoltReturnStatement): void; - protected visitBoltConditionalCase?(node: BoltConditionalCase): void; - protected visitBoltConditionalStatement?(node: BoltConditionalStatement): void; - protected visitBoltResumeStatement?(node: BoltResumeStatement): void; - protected visitBoltExpressionStatement?(node: BoltExpressionStatement): void; - protected visitBoltParameter?(node: BoltParameter): void; - protected visitBoltModule?(node: BoltModule): void; - protected visitBoltFunctionDeclaration?(node: BoltFunctionDeclaration): void; - protected visitBoltVariableDeclaration?(node: BoltVariableDeclaration): void; - protected visitBoltPlainImportSymbol?(node: BoltPlainImportSymbol): void; - protected visitBoltImportDirective?(node: BoltImportDirective): void; - protected visitBoltExportSymbol?(node: BoltExportSymbol): void; - protected visitBoltPlainExportSymbol?(node: BoltPlainExportSymbol): void; - protected visitBoltExportDirective?(node: BoltExportDirective): void; - protected visitBoltTraitDeclaration?(node: BoltTraitDeclaration): void; - protected visitBoltImplDeclaration?(node: BoltImplDeclaration): void; - protected visitBoltTypeAliasDeclaration?(node: BoltTypeAliasDeclaration): void; - protected visitBoltRecordField?(node: BoltRecordField): void; - protected visitBoltRecordDeclaration?(node: BoltRecordDeclaration): void; - protected visitBoltMacroCall?(node: BoltMacroCall): void; - protected visitJSIdentifier?(node: JSIdentifier): void; - protected visitJSString?(node: JSString): void; - protected visitJSInteger?(node: JSInteger): void; - protected visitJSFromKeyword?(node: JSFromKeyword): void; - protected visitJSReturnKeyword?(node: JSReturnKeyword): void; - protected visitJSTryKeyword?(node: JSTryKeyword): void; - protected visitJSFinallyKeyword?(node: JSFinallyKeyword): void; - protected visitJSCatchKeyword?(node: JSCatchKeyword): void; - protected visitJSImportKeyword?(node: JSImportKeyword): void; - protected visitJSAsKeyword?(node: JSAsKeyword): void; - protected visitJSConstKeyword?(node: JSConstKeyword): void; - protected visitJSLetKeyword?(node: JSLetKeyword): void; - protected visitJSExportKeyword?(node: JSExportKeyword): void; - protected visitJSFunctionKeyword?(node: JSFunctionKeyword): void; - protected visitJSWhileKeyword?(node: JSWhileKeyword): void; - protected visitJSForKeyword?(node: JSForKeyword): void; - protected visitJSOperator?(node: JSOperator): void; - protected visitJSCloseBrace?(node: JSCloseBrace): void; - protected visitJSCloseBracket?(node: JSCloseBracket): void; - protected visitJSCloseParen?(node: JSCloseParen): void; - protected visitJSOpenBrace?(node: JSOpenBrace): void; - protected visitJSOpenBracket?(node: JSOpenBracket): void; - protected visitJSOpenParen?(node: JSOpenParen): void; - protected visitJSSemi?(node: JSSemi): void; - protected visitJSComma?(node: JSComma): void; - protected visitJSDot?(node: JSDot): void; - protected visitJSDotDotDot?(node: JSDotDotDot): void; - protected visitJSMulOp?(node: JSMulOp): void; - protected visitJSAddOp?(node: JSAddOp): void; - protected visitJSDivOp?(node: JSDivOp): void; - protected visitJSSubOp?(node: JSSubOp): void; - protected visitJSLtOp?(node: JSLtOp): void; - protected visitJSGtOp?(node: JSGtOp): void; - protected visitJSBOrOp?(node: JSBOrOp): void; - protected visitJSBXorOp?(node: JSBXorOp): void; - protected visitJSBAndOp?(node: JSBAndOp): void; - protected visitJSBNotOp?(node: JSBNotOp): void; - protected visitJSNotOp?(node: JSNotOp): void; - protected visitJSBindPattern?(node: JSBindPattern): void; - protected visitJSConstantExpression?(node: JSConstantExpression): void; - protected visitJSMemberExpression?(node: JSMemberExpression): void; - protected visitJSCallExpression?(node: JSCallExpression): void; - protected visitJSBinaryExpression?(node: JSBinaryExpression): void; - protected visitJSUnaryExpression?(node: JSUnaryExpression): void; - protected visitJSNewExpression?(node: JSNewExpression): void; - protected visitJSSequenceExpression?(node: JSSequenceExpression): void; - protected visitJSConditionalExpression?(node: JSConditionalExpression): void; - protected visitJSLiteralExpression?(node: JSLiteralExpression): void; - protected visitJSReferenceExpression?(node: JSReferenceExpression): void; - protected visitJSCatchBlock?(node: JSCatchBlock): void; - protected visitJSTryCatchStatement?(node: JSTryCatchStatement): void; - protected visitJSExpressionStatement?(node: JSExpressionStatement): void; - protected visitJSConditionalCase?(node: JSConditionalCase): void; - protected visitJSConditionalStatement?(node: JSConditionalStatement): void; - protected visitJSReturnStatement?(node: JSReturnStatement): void; - protected visitJSParameter?(node: JSParameter): void; - protected visitJSImportStarBinding?(node: JSImportStarBinding): void; - protected visitJSImportAsBinding?(node: JSImportAsBinding): void; - protected visitJSImportDeclaration?(node: JSImportDeclaration): void; - protected visitJSFunctionDeclaration?(node: JSFunctionDeclaration): void; - protected visitJSArrowFunctionDeclaration?(node: JSArrowFunctionDeclaration): void; - protected visitJSLetDeclaration?(node: JSLetDeclaration): void; - protected visitJSSourceFile?(node: JSSourceFile): void; -} - - -export const enum SyntaxKind { - EndOfFile = 0, - BoltStringLiteral = 7, - BoltIntegerLiteral = 8, - BoltIdentifier = 10, - BoltOperator = 12, - BoltAssignment = 13, - BoltComma = 14, - BoltSemi = 15, - BoltColon = 16, - BoltColonColon = 17, - BoltDot = 18, - BoltDotDot = 19, - BoltRArrow = 20, - BoltRArrowAlt = 21, - BoltLArrow = 22, - BoltEqSign = 23, - BoltGtSign = 24, - BoltExMark = 25, - BoltLtSign = 26, - BoltVBar = 27, - BoltWhereKeyword = 29, - BoltQuoteKeyword = 30, - BoltFnKeyword = 31, - BoltForeignKeyword = 32, - BoltForKeyword = 33, - BoltLetKeyword = 34, - BoltReturnKeyword = 35, - BoltLoopKeyword = 36, - BoltYieldKeyword = 37, - BoltMatchKeyword = 38, - BoltImportKeyword = 39, - BoltExportKeyword = 40, - BoltPubKeyword = 41, - BoltModKeyword = 42, - BoltMutKeyword = 43, - BoltEnumKeyword = 44, - BoltStructKeyword = 45, - BoltTypeKeyword = 46, - BoltTraitKeyword = 47, - BoltImplKeyword = 48, - BoltParenthesized = 50, - BoltBraced = 51, - BoltBracketed = 52, - BoltSourceFile = 53, - BoltQualName = 54, - BoltTypeOfExpression = 56, - BoltReferenceTypeExpression = 57, - BoltFunctionTypeExpression = 58, - BoltLiftedTypeExpression = 59, - BoltTypeParameter = 60, - BoltBindPattern = 62, - BoltTypePattern = 63, - BoltExpressionPattern = 64, - BoltTuplePatternElement = 65, - BoltTuplePattern = 66, - BoltRecordFieldPattern = 67, - BoltRecordPattern = 68, - BoltQuoteExpression = 70, - BoltTupleExpression = 71, - BoltReferenceExpression = 72, - BoltMemberExpression = 73, - BoltFunctionExpression = 74, - BoltCallExpression = 75, - BoltYieldExpression = 76, - BoltMatchArm = 77, - BoltMatchExpression = 78, - BoltCase = 79, - BoltCaseExpression = 80, - BoltBlockExpression = 81, - BoltConstantExpression = 82, - BoltReturnStatement = 84, - BoltConditionalCase = 85, - BoltConditionalStatement = 86, - BoltResumeStatement = 87, - BoltExpressionStatement = 88, - BoltParameter = 89, - BoltModule = 93, - BoltFunctionDeclaration = 96, - BoltVariableDeclaration = 97, - BoltPlainImportSymbol = 99, - BoltImportDirective = 100, - BoltExportSymbol = 101, - BoltPlainExportSymbol = 102, - BoltExportDirective = 103, - BoltTraitDeclaration = 105, - BoltImplDeclaration = 106, - BoltTypeAliasDeclaration = 107, - BoltRecordField = 109, - BoltRecordDeclaration = 110, - BoltMacroCall = 112, - JSIdentifier = 115, - JSString = 116, - JSInteger = 117, - JSFromKeyword = 118, - JSReturnKeyword = 119, - JSTryKeyword = 120, - JSFinallyKeyword = 121, - JSCatchKeyword = 122, - JSImportKeyword = 123, - JSAsKeyword = 124, - JSConstKeyword = 125, - JSLetKeyword = 126, - JSExportKeyword = 127, - JSFunctionKeyword = 128, - JSWhileKeyword = 129, - JSForKeyword = 130, - JSOperator = 132, - JSCloseBrace = 133, - JSCloseBracket = 134, - JSCloseParen = 135, - JSOpenBrace = 136, - JSOpenBracket = 137, - JSOpenParen = 138, - JSSemi = 139, - JSComma = 140, - JSDot = 141, - JSDotDotDot = 142, - JSMulOp = 143, - JSAddOp = 144, - JSDivOp = 145, - JSSubOp = 146, - JSLtOp = 147, - JSGtOp = 148, - JSBOrOp = 149, - JSBXorOp = 150, - JSBAndOp = 151, - JSBNotOp = 152, - JSNotOp = 153, - JSBindPattern = 155, - JSConstantExpression = 157, - JSMemberExpression = 158, - JSCallExpression = 159, - JSBinaryExpression = 160, - JSUnaryExpression = 161, - JSNewExpression = 162, - JSSequenceExpression = 163, - JSConditionalExpression = 164, - JSLiteralExpression = 165, - JSReferenceExpression = 166, - JSCatchBlock = 170, - JSTryCatchStatement = 171, - JSExpressionStatement = 172, - JSConditionalCase = 173, - JSConditionalStatement = 174, - JSReturnStatement = 175, - JSParameter = 176, - JSImportStarBinding = 180, - JSImportAsBinding = 181, - JSImportDeclaration = 182, - JSFunctionDeclaration = 183, - JSArrowFunctionDeclaration = 184, - JSLetDeclaration = 185, - JSSourceFile = 186, -} - -export interface EndOfFile extends SyntaxBase { - kind: SyntaxKind.EndOfFile; - parentNode: EndOfFileParent; - getChildNodes(): IterableIterator -} - -export type EndOfFileParent -= BoltQuoteExpression -| never - -export type EndOfFileAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type EndOfFileChild -= never - -export type Token - = EndOfFile - | JSIdentifier - | JSString - | JSInteger - | JSFromKeyword - | JSReturnKeyword - | JSTryKeyword - | JSFinallyKeyword - | JSCatchKeyword - | JSImportKeyword - | JSAsKeyword - | JSConstKeyword - | JSLetKeyword - | JSExportKeyword - | JSFunctionKeyword - | JSWhileKeyword - | JSForKeyword - | JSOperator - | JSCloseBrace - | JSCloseBracket - | JSCloseParen - | JSOpenBrace - | JSOpenBracket - | JSOpenParen - | JSSemi - | JSComma - | JSDot - | JSDotDotDot - | JSMulOp - | JSAddOp - | JSDivOp - | JSSubOp - | JSLtOp - | JSGtOp - | JSBOrOp - | JSBXorOp - | JSBAndOp - | JSBNotOp - | JSNotOp - | BoltStringLiteral - | BoltIntegerLiteral - | BoltAssignment - | BoltComma - | BoltSemi - | BoltColon - | BoltColonColon - | BoltDot - | BoltDotDot - | BoltRArrow - | BoltRArrowAlt - | BoltLArrow - | BoltEqSign - | BoltGtSign - | BoltExMark - | BoltLtSign - | BoltVBar - | BoltWhereKeyword - | BoltQuoteKeyword - | BoltFnKeyword - | BoltForeignKeyword - | BoltForKeyword - | BoltLetKeyword - | BoltReturnKeyword - | BoltLoopKeyword - | BoltYieldKeyword - | BoltMatchKeyword - | BoltImportKeyword - | BoltExportKeyword - | BoltPubKeyword - | BoltModKeyword - | BoltMutKeyword - | BoltEnumKeyword - | BoltStructKeyword - | BoltTypeKeyword - | BoltTraitKeyword - | BoltImplKeyword - | BoltParenthesized - | BoltBraced - | BoltBracketed - | BoltIdentifier - | BoltOperator - - -export type SourceFile - = BoltSourceFile - | JSSourceFile - - -export type FunctionBodyElement - = JSFunctionDeclaration - | JSArrowFunctionDeclaration - | JSLetDeclaration - | JSExpressionStatement - | JSConditionalStatement - | JSReturnStatement - | BoltFunctionDeclaration - | BoltVariableDeclaration - | BoltMacroCall - | BoltReturnStatement - | BoltConditionalStatement - | BoltResumeStatement - | BoltExpressionStatement - - -export type ReturnStatement - = BoltReturnStatement - | JSReturnStatement - - -export type BoltSyntax - = BoltSourceFile - | BoltQualName - | BoltTypeParameter - | BoltTuplePatternElement - | BoltRecordFieldPattern - | BoltMatchArm - | BoltCase - | BoltConditionalCase - | BoltParameter - | BoltModule - | BoltExportSymbol - | BoltRecordField - | BoltMacroCall - | BoltPlainImportSymbol - | BoltTraitDeclaration - | BoltImplDeclaration - | BoltTypeAliasDeclaration - | BoltRecordDeclaration - | BoltFunctionDeclaration - | BoltVariableDeclaration - | BoltReturnStatement - | BoltConditionalStatement - | BoltResumeStatement - | BoltExpressionStatement - | BoltQuoteExpression - | BoltTupleExpression - | BoltReferenceExpression - | BoltMemberExpression - | BoltFunctionExpression - | BoltCallExpression - | BoltYieldExpression - | BoltMatchExpression - | BoltCaseExpression - | BoltBlockExpression - | BoltConstantExpression - | BoltBindPattern - | BoltTypePattern - | BoltExpressionPattern - | BoltTuplePattern - | BoltRecordPattern - | BoltTypeOfExpression - | BoltReferenceTypeExpression - | BoltFunctionTypeExpression - | BoltLiftedTypeExpression - | EndOfFile - | BoltStringLiteral - | BoltIntegerLiteral - | BoltAssignment - | BoltComma - | BoltSemi - | BoltColon - | BoltColonColon - | BoltDot - | BoltDotDot - | BoltRArrow - | BoltRArrowAlt - | BoltLArrow - | BoltEqSign - | BoltGtSign - | BoltExMark - | BoltLtSign - | BoltVBar - | BoltWhereKeyword - | BoltQuoteKeyword - | BoltFnKeyword - | BoltForeignKeyword - | BoltForKeyword - | BoltLetKeyword - | BoltReturnKeyword - | BoltLoopKeyword - | BoltYieldKeyword - | BoltMatchKeyword - | BoltImportKeyword - | BoltExportKeyword - | BoltPubKeyword - | BoltModKeyword - | BoltMutKeyword - | BoltEnumKeyword - | BoltStructKeyword - | BoltTypeKeyword - | BoltTraitKeyword - | BoltImplKeyword - | BoltParenthesized - | BoltBraced - | BoltBracketed - | BoltIdentifier - | BoltOperator - - -export type BoltToken - = EndOfFile - | BoltStringLiteral - | BoltIntegerLiteral - | BoltAssignment - | BoltComma - | BoltSemi - | BoltColon - | BoltColonColon - | BoltDot - | BoltDotDot - | BoltRArrow - | BoltRArrowAlt - | BoltLArrow - | BoltEqSign - | BoltGtSign - | BoltExMark - | BoltLtSign - | BoltVBar - | BoltWhereKeyword - | BoltQuoteKeyword - | BoltFnKeyword - | BoltForeignKeyword - | BoltForKeyword - | BoltLetKeyword - | BoltReturnKeyword - | BoltLoopKeyword - | BoltYieldKeyword - | BoltMatchKeyword - | BoltImportKeyword - | BoltExportKeyword - | BoltPubKeyword - | BoltModKeyword - | BoltMutKeyword - | BoltEnumKeyword - | BoltStructKeyword - | BoltTypeKeyword - | BoltTraitKeyword - | BoltImplKeyword - | BoltParenthesized - | BoltBraced - | BoltBracketed - | BoltIdentifier - | BoltOperator - - -export interface BoltStringLiteral extends SyntaxBase { - kind: SyntaxKind.BoltStringLiteral; - value: string; - parentNode: BoltStringLiteralParent; - getChildNodes(): IterableIterator -} - -export type BoltStringLiteralParent -= BoltQuoteExpression -| never - -export type BoltStringLiteralAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltStringLiteralChild -= never - -export interface BoltIntegerLiteral extends SyntaxBase { - kind: SyntaxKind.BoltIntegerLiteral; - value: bigint; - parentNode: BoltIntegerLiteralParent; - getChildNodes(): IterableIterator -} - -export type BoltIntegerLiteralParent -= BoltQuoteExpression -| never - -export type BoltIntegerLiteralAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltIntegerLiteralChild -= never - -export type BoltSymbol - = BoltIdentifier - | BoltOperator - | BoltGtSign - | BoltExMark - | BoltLtSign - | BoltVBar - - -export interface BoltIdentifier extends SyntaxBase { - kind: SyntaxKind.BoltIdentifier; - text: string; - parentNode: BoltIdentifierParent; - getChildNodes(): IterableIterator -} - -export type BoltIdentifierParent -= BoltQualName -| BoltQuoteExpression -| BoltFunctionDeclaration -| BoltPlainImportSymbol -| BoltPlainExportSymbol -| never - -export type BoltIdentifierAnyParent -= BoltQualName -| BoltQuoteExpression -| BoltFunctionDeclaration -| BoltPlainImportSymbol -| BoltPlainExportSymbol -| BoltImportDirective -| BoltSourceFile -| BoltModule -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltIdentifierChild -= never - -export type BoltOperatorLike - = BoltGtSign - | BoltExMark - | BoltLtSign - | BoltVBar - - -export interface BoltOperator extends SyntaxBase { - kind: SyntaxKind.BoltOperator; - text: string; - parentNode: BoltOperatorParent; - getChildNodes(): IterableIterator -} - -export type BoltOperatorParent -= BoltQualName -| BoltQuoteExpression -| BoltFunctionDeclaration -| BoltPlainImportSymbol -| BoltPlainExportSymbol -| never - -export type BoltOperatorAnyParent -= BoltQualName -| BoltQuoteExpression -| BoltFunctionDeclaration -| BoltPlainImportSymbol -| BoltPlainExportSymbol -| BoltImportDirective -| BoltSourceFile -| BoltModule -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltOperatorChild -= never - -export interface BoltAssignment extends SyntaxBase { - kind: SyntaxKind.BoltAssignment; - operator: string | null; - parentNode: BoltAssignmentParent; - getChildNodes(): IterableIterator -} - -export type BoltAssignmentParent -= BoltQuoteExpression -| never - -export type BoltAssignmentAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltAssignmentChild -= never - -export interface BoltComma extends SyntaxBase { - kind: SyntaxKind.BoltComma; - parentNode: BoltCommaParent; - getChildNodes(): IterableIterator -} - -export type BoltCommaParent -= BoltQuoteExpression -| never - -export type BoltCommaAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltCommaChild -= never - -export interface BoltSemi extends SyntaxBase { - kind: SyntaxKind.BoltSemi; - parentNode: BoltSemiParent; - getChildNodes(): IterableIterator -} - -export type BoltSemiParent -= BoltQuoteExpression -| never - -export type BoltSemiAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltSemiChild -= never - -export interface BoltColon extends SyntaxBase { - kind: SyntaxKind.BoltColon; - parentNode: BoltColonParent; - getChildNodes(): IterableIterator -} - -export type BoltColonParent -= BoltQuoteExpression -| never - -export type BoltColonAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltColonChild -= never - -export interface BoltColonColon extends SyntaxBase { - kind: SyntaxKind.BoltColonColon; - parentNode: BoltColonColonParent; - getChildNodes(): IterableIterator -} - -export type BoltColonColonParent -= BoltQuoteExpression -| never - -export type BoltColonColonAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltColonColonChild -= never - -export interface BoltDot extends SyntaxBase { - kind: SyntaxKind.BoltDot; - parentNode: BoltDotParent; - getChildNodes(): IterableIterator -} - -export type BoltDotParent -= BoltQuoteExpression -| never - -export type BoltDotAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltDotChild -= never - -export interface BoltDotDot extends SyntaxBase { - kind: SyntaxKind.BoltDotDot; - parentNode: BoltDotDotParent; - getChildNodes(): IterableIterator -} - -export type BoltDotDotParent -= BoltQuoteExpression -| never - -export type BoltDotDotAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltDotDotChild -= never - -export interface BoltRArrow extends SyntaxBase { - kind: SyntaxKind.BoltRArrow; - parentNode: BoltRArrowParent; - getChildNodes(): IterableIterator -} - -export type BoltRArrowParent -= BoltQuoteExpression -| never - -export type BoltRArrowAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltRArrowChild -= never - -export interface BoltRArrowAlt extends SyntaxBase { - kind: SyntaxKind.BoltRArrowAlt; - parentNode: BoltRArrowAltParent; - getChildNodes(): IterableIterator -} - -export type BoltRArrowAltParent -= BoltQuoteExpression -| never - -export type BoltRArrowAltAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltRArrowAltChild -= never - -export interface BoltLArrow extends SyntaxBase { - kind: SyntaxKind.BoltLArrow; - parentNode: BoltLArrowParent; - getChildNodes(): IterableIterator -} - -export type BoltLArrowParent -= BoltQuoteExpression -| never - -export type BoltLArrowAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltLArrowChild -= never - -export interface BoltEqSign extends SyntaxBase { - kind: SyntaxKind.BoltEqSign; - parentNode: BoltEqSignParent; - getChildNodes(): IterableIterator -} - -export type BoltEqSignParent -= BoltQuoteExpression -| never - -export type BoltEqSignAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltEqSignChild -= never - -export interface BoltGtSign extends SyntaxBase { - kind: SyntaxKind.BoltGtSign; - parentNode: BoltGtSignParent; - getChildNodes(): IterableIterator -} - -export type BoltGtSignParent -= BoltQualName -| BoltQuoteExpression -| BoltFunctionDeclaration -| BoltPlainImportSymbol -| BoltPlainExportSymbol -| never - -export type BoltGtSignAnyParent -= BoltQualName -| BoltQuoteExpression -| BoltFunctionDeclaration -| BoltPlainImportSymbol -| BoltPlainExportSymbol -| BoltImportDirective -| BoltSourceFile -| BoltModule -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltGtSignChild -= never - -export interface BoltExMark extends SyntaxBase { - kind: SyntaxKind.BoltExMark; - parentNode: BoltExMarkParent; - getChildNodes(): IterableIterator -} - -export type BoltExMarkParent -= BoltQualName -| BoltQuoteExpression -| BoltFunctionDeclaration -| BoltPlainImportSymbol -| BoltPlainExportSymbol -| never - -export type BoltExMarkAnyParent -= BoltQualName -| BoltQuoteExpression -| BoltFunctionDeclaration -| BoltPlainImportSymbol -| BoltPlainExportSymbol -| BoltImportDirective -| BoltSourceFile -| BoltModule -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltExMarkChild -= never - -export interface BoltLtSign extends SyntaxBase { - kind: SyntaxKind.BoltLtSign; - parentNode: BoltLtSignParent; - getChildNodes(): IterableIterator -} - -export type BoltLtSignParent -= BoltQualName -| BoltQuoteExpression -| BoltFunctionDeclaration -| BoltPlainImportSymbol -| BoltPlainExportSymbol -| never - -export type BoltLtSignAnyParent -= BoltQualName -| BoltQuoteExpression -| BoltFunctionDeclaration -| BoltPlainImportSymbol -| BoltPlainExportSymbol -| BoltImportDirective -| BoltSourceFile -| BoltModule -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltLtSignChild -= never - -export interface BoltVBar extends SyntaxBase { - kind: SyntaxKind.BoltVBar; - parentNode: BoltVBarParent; - getChildNodes(): IterableIterator -} - -export type BoltVBarParent -= BoltQualName -| BoltQuoteExpression -| BoltFunctionDeclaration -| BoltPlainImportSymbol -| BoltPlainExportSymbol -| never - -export type BoltVBarAnyParent -= BoltQualName -| BoltQuoteExpression -| BoltFunctionDeclaration -| BoltPlainImportSymbol -| BoltPlainExportSymbol -| BoltImportDirective -| BoltSourceFile -| BoltModule -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltVBarChild -= never - -export type BoltKeyword - = BoltWhereKeyword - | BoltQuoteKeyword - | BoltFnKeyword - | BoltForeignKeyword - | BoltForKeyword - | BoltLetKeyword - | BoltReturnKeyword - | BoltLoopKeyword - | BoltYieldKeyword - | BoltMatchKeyword - | BoltImportKeyword - | BoltExportKeyword - | BoltPubKeyword - | BoltModKeyword - | BoltMutKeyword - | BoltEnumKeyword - | BoltStructKeyword - | BoltTypeKeyword - | BoltTraitKeyword - | BoltImplKeyword - - -export interface BoltWhereKeyword extends SyntaxBase { - kind: SyntaxKind.BoltWhereKeyword; - parentNode: BoltWhereKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltWhereKeywordParent -= BoltQuoteExpression -| never - -export type BoltWhereKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltWhereKeywordChild -= never - -export interface BoltQuoteKeyword extends SyntaxBase { - kind: SyntaxKind.BoltQuoteKeyword; - parentNode: BoltQuoteKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltQuoteKeywordParent -= BoltQuoteExpression -| never - -export type BoltQuoteKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltQuoteKeywordChild -= never - -export interface BoltFnKeyword extends SyntaxBase { - kind: SyntaxKind.BoltFnKeyword; - parentNode: BoltFnKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltFnKeywordParent -= BoltQuoteExpression -| never - -export type BoltFnKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltFnKeywordChild -= never - -export interface BoltForeignKeyword extends SyntaxBase { - kind: SyntaxKind.BoltForeignKeyword; - parentNode: BoltForeignKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltForeignKeywordParent -= BoltQuoteExpression -| never - -export type BoltForeignKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltForeignKeywordChild -= never - -export interface BoltForKeyword extends SyntaxBase { - kind: SyntaxKind.BoltForKeyword; - parentNode: BoltForKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltForKeywordParent -= BoltQuoteExpression -| never - -export type BoltForKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltForKeywordChild -= never - -export interface BoltLetKeyword extends SyntaxBase { - kind: SyntaxKind.BoltLetKeyword; - parentNode: BoltLetKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltLetKeywordParent -= BoltQuoteExpression -| never - -export type BoltLetKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltLetKeywordChild -= never - -export interface BoltReturnKeyword extends SyntaxBase { - kind: SyntaxKind.BoltReturnKeyword; - parentNode: BoltReturnKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltReturnKeywordParent -= BoltQuoteExpression -| never - -export type BoltReturnKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltReturnKeywordChild -= never - -export interface BoltLoopKeyword extends SyntaxBase { - kind: SyntaxKind.BoltLoopKeyword; - parentNode: BoltLoopKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltLoopKeywordParent -= BoltQuoteExpression -| never - -export type BoltLoopKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltLoopKeywordChild -= never - -export interface BoltYieldKeyword extends SyntaxBase { - kind: SyntaxKind.BoltYieldKeyword; - parentNode: BoltYieldKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltYieldKeywordParent -= BoltQuoteExpression -| never - -export type BoltYieldKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltYieldKeywordChild -= never - -export interface BoltMatchKeyword extends SyntaxBase { - kind: SyntaxKind.BoltMatchKeyword; - parentNode: BoltMatchKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltMatchKeywordParent -= BoltQuoteExpression -| never - -export type BoltMatchKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltMatchKeywordChild -= never - -export interface BoltImportKeyword extends SyntaxBase { - kind: SyntaxKind.BoltImportKeyword; - parentNode: BoltImportKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltImportKeywordParent -= BoltQuoteExpression -| never - -export type BoltImportKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltImportKeywordChild -= never - -export interface BoltExportKeyword extends SyntaxBase { - kind: SyntaxKind.BoltExportKeyword; - parentNode: BoltExportKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltExportKeywordParent -= BoltQuoteExpression -| never - -export type BoltExportKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltExportKeywordChild -= never - -export interface BoltPubKeyword extends SyntaxBase { - kind: SyntaxKind.BoltPubKeyword; - parentNode: BoltPubKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltPubKeywordParent -= BoltQuoteExpression -| never - -export type BoltPubKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltPubKeywordChild -= never - -export interface BoltModKeyword extends SyntaxBase { - kind: SyntaxKind.BoltModKeyword; - parentNode: BoltModKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltModKeywordParent -= BoltQuoteExpression -| never - -export type BoltModKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltModKeywordChild -= never - -export interface BoltMutKeyword extends SyntaxBase { - kind: SyntaxKind.BoltMutKeyword; - parentNode: BoltMutKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltMutKeywordParent -= BoltQuoteExpression -| never - -export type BoltMutKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltMutKeywordChild -= never - -export interface BoltEnumKeyword extends SyntaxBase { - kind: SyntaxKind.BoltEnumKeyword; - parentNode: BoltEnumKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltEnumKeywordParent -= BoltQuoteExpression -| never - -export type BoltEnumKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltEnumKeywordChild -= never - -export interface BoltStructKeyword extends SyntaxBase { - kind: SyntaxKind.BoltStructKeyword; - parentNode: BoltStructKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltStructKeywordParent -= BoltQuoteExpression -| never - -export type BoltStructKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltStructKeywordChild -= never - -export interface BoltTypeKeyword extends SyntaxBase { - kind: SyntaxKind.BoltTypeKeyword; - parentNode: BoltTypeKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltTypeKeywordParent -= BoltQuoteExpression -| never - -export type BoltTypeKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltTypeKeywordChild -= never - -export interface BoltTraitKeyword extends SyntaxBase { - kind: SyntaxKind.BoltTraitKeyword; - parentNode: BoltTraitKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltTraitKeywordParent -= BoltQuoteExpression -| never - -export type BoltTraitKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltTraitKeywordChild -= never - -export interface BoltImplKeyword extends SyntaxBase { - kind: SyntaxKind.BoltImplKeyword; - parentNode: BoltImplKeywordParent; - getChildNodes(): IterableIterator -} - -export type BoltImplKeywordParent -= BoltQuoteExpression -| never - -export type BoltImplKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltImplKeywordChild -= never - -export type BoltPunctuated - = BoltParenthesized - | BoltBraced - | BoltBracketed - - -export interface BoltParenthesized extends SyntaxBase { - kind: SyntaxKind.BoltParenthesized; - text: string; - parentNode: BoltParenthesizedParent; - getChildNodes(): IterableIterator -} - -export type BoltParenthesizedParent -= BoltQuoteExpression -| never - -export type BoltParenthesizedAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltParenthesizedChild -= never - -export interface BoltBraced extends SyntaxBase { - kind: SyntaxKind.BoltBraced; - text: string; - parentNode: BoltBracedParent; - getChildNodes(): IterableIterator -} - -export type BoltBracedParent -= BoltQuoteExpression -| never - -export type BoltBracedAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltBracedChild -= never - -export interface BoltBracketed extends SyntaxBase { - kind: SyntaxKind.BoltBracketed; - text: string; - parentNode: BoltBracketedParent; - getChildNodes(): IterableIterator -} - -export type BoltBracketedParent -= BoltQuoteExpression -| never - -export type BoltBracketedAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltBracketedChild -= never - -export interface BoltSourceFile extends SyntaxBase { - kind: SyntaxKind.BoltSourceFile; - elements: BoltSourceElement[]; - pkg: Package; - parentNode: BoltSourceFileParent; - getChildNodes(): IterableIterator -} - -export type BoltSourceFileParent -= never - -export type BoltSourceFileAnyParent -= never - -export type BoltSourceFileChild -= never - -export interface BoltQualName extends SyntaxBase { - kind: SyntaxKind.BoltQualName; - isAbsolute: boolean; - modulePath: BoltIdentifier[]; - name: BoltSymbol; - parentNode: BoltQualNameParent; - getChildNodes(): IterableIterator -} - -export type BoltQualNameParent -= never - -export type BoltQualNameAnyParent -= never - -export type BoltQualNameChild -= never - -export type BoltTypeExpression - = BoltTypeOfExpression - | BoltReferenceTypeExpression - | BoltFunctionTypeExpression - | BoltLiftedTypeExpression - - -export interface BoltTypeOfExpression extends SyntaxBase { - kind: SyntaxKind.BoltTypeOfExpression; - expression: BoltExpression; - parentNode: BoltTypeOfExpressionParent; - getChildNodes(): IterableIterator -} - -export type BoltTypeOfExpressionParent -= BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltTypePattern -| BoltRecordPattern -| BoltFunctionExpression -| BoltParameter -| BoltFunctionDeclaration -| BoltVariableDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeAliasDeclaration -| BoltRecordField -| never - -export type BoltTypeOfExpressionAnyParent -= BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltTypePattern -| BoltRecordPattern -| BoltFunctionExpression -| BoltParameter -| BoltFunctionDeclaration -| BoltVariableDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| BoltSourceFile -| BoltModule -| BoltBlockExpression -| BoltConditionalCase -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltExpressionStatement -| BoltTuplePatternElement -| BoltRecordFieldPattern -| never - -export type BoltTypeOfExpressionChild -= never - -export interface BoltReferenceTypeExpression extends SyntaxBase { - kind: SyntaxKind.BoltReferenceTypeExpression; - name: BoltQualName; - typeArgs: BoltTypeExpression[] | null; - parentNode: BoltReferenceTypeExpressionParent; - getChildNodes(): IterableIterator -} - -export type BoltReferenceTypeExpressionParent -= BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltTypePattern -| BoltRecordPattern -| BoltFunctionExpression -| BoltParameter -| BoltFunctionDeclaration -| BoltVariableDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeAliasDeclaration -| BoltRecordField -| never - -export type BoltReferenceTypeExpressionAnyParent -= BoltFunctionTypeExpression -| BoltTypeParameter -| BoltTypePattern -| BoltRecordPattern -| BoltFunctionExpression -| BoltParameter -| BoltFunctionDeclaration -| BoltVariableDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| BoltSourceFile -| BoltModule -| BoltBlockExpression -| BoltConditionalCase -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltExpressionStatement -| BoltTuplePatternElement -| BoltRecordFieldPattern -| never - -export type BoltReferenceTypeExpressionChild -= never - -export interface BoltFunctionTypeExpression extends SyntaxBase { - kind: SyntaxKind.BoltFunctionTypeExpression; - params: BoltParameter[]; - returnType: BoltTypeExpression | null; - parentNode: BoltFunctionTypeExpressionParent; - getChildNodes(): IterableIterator -} - -export type BoltFunctionTypeExpressionParent -= BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltTypePattern -| BoltRecordPattern -| BoltFunctionExpression -| BoltParameter -| BoltFunctionDeclaration -| BoltVariableDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeAliasDeclaration -| BoltRecordField -| never - -export type BoltFunctionTypeExpressionAnyParent -= BoltReferenceTypeExpression -| BoltTypeParameter -| BoltTypePattern -| BoltRecordPattern -| BoltFunctionExpression -| BoltParameter -| BoltFunctionDeclaration -| BoltVariableDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| BoltSourceFile -| BoltModule -| BoltBlockExpression -| BoltConditionalCase -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltExpressionStatement -| BoltTuplePatternElement -| BoltRecordFieldPattern -| never - -export type BoltFunctionTypeExpressionChild -= never - -export interface BoltLiftedTypeExpression extends SyntaxBase { - kind: SyntaxKind.BoltLiftedTypeExpression; - expression: BoltExpression; - parentNode: BoltLiftedTypeExpressionParent; - getChildNodes(): IterableIterator -} - -export type BoltLiftedTypeExpressionParent -= BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltTypePattern -| BoltRecordPattern -| BoltFunctionExpression -| BoltParameter -| BoltFunctionDeclaration -| BoltVariableDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeAliasDeclaration -| BoltRecordField -| never - -export type BoltLiftedTypeExpressionAnyParent -= BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltTypePattern -| BoltRecordPattern -| BoltFunctionExpression -| BoltParameter -| BoltFunctionDeclaration -| BoltVariableDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| BoltSourceFile -| BoltModule -| BoltBlockExpression -| BoltConditionalCase -| BoltTypeOfExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltExpressionStatement -| BoltTuplePatternElement -| BoltRecordFieldPattern -| never - -export type BoltLiftedTypeExpressionChild -= never - -export interface BoltTypeParameter extends SyntaxBase { - kind: SyntaxKind.BoltTypeParameter; - index: number; - name: BoltIdentifier; - typeExpr: BoltTypeExpression | null; - defaultType: BoltTypeExpression | null; - parentNode: BoltTypeParameterParent; - getChildNodes(): IterableIterator -} - -export type BoltTypeParameterParent -= never - -export type BoltTypeParameterAnyParent -= never - -export type BoltTypeParameterChild -= never - -export type BoltPattern - = BoltBindPattern - | BoltTypePattern - | BoltExpressionPattern - | BoltTuplePattern - | BoltRecordPattern - - -export interface BoltBindPattern extends SyntaxBase { - kind: SyntaxKind.BoltBindPattern; - name: BoltIdentifier; - parentNode: BoltBindPatternParent; - getChildNodes(): IterableIterator -} - -export type BoltBindPatternParent -= BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltMatchArm -| BoltParameter -| BoltVariableDeclaration -| never - -export type BoltBindPatternAnyParent -= BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltMatchArm -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltExpressionStatement -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltBindPatternChild -= never - -export interface BoltTypePattern extends SyntaxBase { - kind: SyntaxKind.BoltTypePattern; - typeExpr: BoltTypeExpression; - nestedPattern: BoltPattern; - parentNode: BoltTypePatternParent; - getChildNodes(): IterableIterator -} - -export type BoltTypePatternParent -= BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltMatchArm -| BoltParameter -| BoltVariableDeclaration -| never - -export type BoltTypePatternAnyParent -= BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltMatchArm -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltExpressionStatement -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltTypePatternChild -= never - -export interface BoltExpressionPattern extends SyntaxBase { - kind: SyntaxKind.BoltExpressionPattern; - expression: BoltExpression; - parentNode: BoltExpressionPatternParent; - getChildNodes(): IterableIterator -} - -export type BoltExpressionPatternParent -= BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltMatchArm -| BoltParameter -| BoltVariableDeclaration -| never - -export type BoltExpressionPatternAnyParent -= BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltMatchArm -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltExpressionStatement -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltExpressionPatternChild -= never - -export interface BoltTuplePatternElement extends SyntaxBase { - kind: SyntaxKind.BoltTuplePatternElement; - index: number; - pattern: BoltPattern; - parentNode: BoltTuplePatternElementParent; - getChildNodes(): IterableIterator -} - -export type BoltTuplePatternElementParent -= never - -export type BoltTuplePatternElementAnyParent -= never - -export type BoltTuplePatternElementChild -= never - -export interface BoltTuplePattern extends SyntaxBase { - kind: SyntaxKind.BoltTuplePattern; - elements: BoltTuplePatternElement[]; - parentNode: BoltTuplePatternParent; - getChildNodes(): IterableIterator -} - -export type BoltTuplePatternParent -= BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltMatchArm -| BoltParameter -| BoltVariableDeclaration -| never - -export type BoltTuplePatternAnyParent -= BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltMatchArm -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltExpressionStatement -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltTuplePatternChild -= never - -export interface BoltRecordFieldPattern extends SyntaxBase { - kind: SyntaxKind.BoltRecordFieldPattern; - isRest: boolean; - name: BoltIdentifier | null; - pattern: BoltPattern | null; - parentNode: BoltRecordFieldPatternParent; - getChildNodes(): IterableIterator -} - -export type BoltRecordFieldPatternParent -= never - -export type BoltRecordFieldPatternAnyParent -= never - -export type BoltRecordFieldPatternChild -= never - -export interface BoltRecordPattern extends SyntaxBase { - kind: SyntaxKind.BoltRecordPattern; - name: BoltTypeExpression; - fields: BoltRecordFieldPattern[]; - parentNode: BoltRecordPatternParent; - getChildNodes(): IterableIterator -} - -export type BoltRecordPatternParent -= BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltMatchArm -| BoltParameter -| BoltVariableDeclaration -| never - -export type BoltRecordPatternAnyParent -= BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltMatchArm -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltExpressionStatement -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltRecordPatternChild -= never - -export type BoltExpression - = BoltQuoteExpression - | BoltTupleExpression - | BoltReferenceExpression - | BoltMemberExpression - | BoltFunctionExpression - | BoltCallExpression - | BoltYieldExpression - | BoltMatchExpression - | BoltCaseExpression - | BoltBlockExpression - | BoltConstantExpression - - -export interface BoltQuoteExpression extends SyntaxBase { - kind: SyntaxKind.BoltQuoteExpression; - tokens: (Token | BoltExpression)[]; - parentNode: BoltQuoteExpressionParent; - getChildNodes(): IterableIterator -} - -export type BoltQuoteExpressionParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| never - -export type BoltQuoteExpressionAnyParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltQuoteExpressionChild -= never - -export interface BoltTupleExpression extends SyntaxBase { - kind: SyntaxKind.BoltTupleExpression; - elements: BoltExpression[]; - parentNode: BoltTupleExpressionParent; - getChildNodes(): IterableIterator -} - -export type BoltTupleExpressionParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| never - -export type BoltTupleExpressionAnyParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltTupleExpressionChild -= never - -export interface BoltReferenceExpression extends SyntaxBase { - kind: SyntaxKind.BoltReferenceExpression; - name: BoltQualName; - parentNode: BoltReferenceExpressionParent; - getChildNodes(): IterableIterator -} - -export type BoltReferenceExpressionParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| never - -export type BoltReferenceExpressionAnyParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltReferenceExpressionChild -= never - -export interface BoltMemberExpression extends SyntaxBase { - kind: SyntaxKind.BoltMemberExpression; - expression: BoltExpression; - path: BoltIdentifier[]; - parentNode: BoltMemberExpressionParent; - getChildNodes(): IterableIterator -} - -export type BoltMemberExpressionParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| never - -export type BoltMemberExpressionAnyParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltMemberExpressionChild -= never - -export interface BoltFunctionExpression extends SyntaxBase { - kind: SyntaxKind.BoltFunctionExpression; - params: BoltParameter[]; - returnType: BoltTypeExpression | null; - body: BoltFunctionBodyElement[]; - parentNode: BoltFunctionExpressionParent; - getChildNodes(): IterableIterator -} - -export type BoltFunctionExpressionParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| never - -export type BoltFunctionExpressionAnyParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltFunctionExpressionChild -= never - -export interface BoltCallExpression extends SyntaxBase { - kind: SyntaxKind.BoltCallExpression; - operator: BoltExpression; - operands: BoltExpression[]; - parentNode: BoltCallExpressionParent; - getChildNodes(): IterableIterator -} - -export type BoltCallExpressionParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| never - -export type BoltCallExpressionAnyParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltCallExpressionChild -= never - -export interface BoltYieldExpression extends SyntaxBase { - kind: SyntaxKind.BoltYieldExpression; - value: BoltExpression; - parentNode: BoltYieldExpressionParent; - getChildNodes(): IterableIterator -} - -export type BoltYieldExpressionParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| never - -export type BoltYieldExpressionAnyParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltYieldExpressionChild -= never - -export interface BoltMatchArm extends SyntaxBase { - kind: SyntaxKind.BoltMatchArm; - pattern: BoltPattern; - body: BoltExpression; - parentNode: BoltMatchArmParent; - getChildNodes(): IterableIterator -} - -export type BoltMatchArmParent -= never - -export type BoltMatchArmAnyParent -= never - -export type BoltMatchArmChild -= never - -export interface BoltMatchExpression extends SyntaxBase { - kind: SyntaxKind.BoltMatchExpression; - value: BoltExpression; - arms: BoltMatchArm[]; - parentNode: BoltMatchExpressionParent; - getChildNodes(): IterableIterator -} - -export type BoltMatchExpressionParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| never - -export type BoltMatchExpressionAnyParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltMatchExpressionChild -= never - -export interface BoltCase extends SyntaxBase { - kind: SyntaxKind.BoltCase; - test: BoltExpression; - result: BoltExpression; - parentNode: BoltCaseParent; - getChildNodes(): IterableIterator -} - -export type BoltCaseParent -= never - -export type BoltCaseAnyParent -= never - -export type BoltCaseChild -= never - -export interface BoltCaseExpression extends SyntaxBase { - kind: SyntaxKind.BoltCaseExpression; - cases: BoltCase[]; - parentNode: BoltCaseExpressionParent; - getChildNodes(): IterableIterator -} - -export type BoltCaseExpressionParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| never - -export type BoltCaseExpressionAnyParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltCaseExpressionChild -= never - -export interface BoltBlockExpression extends SyntaxBase { - kind: SyntaxKind.BoltBlockExpression; - elements: BoltFunctionBodyElement[]; - parentNode: BoltBlockExpressionParent; - getChildNodes(): IterableIterator -} - -export type BoltBlockExpressionParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| never - -export type BoltBlockExpressionAnyParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltBlockExpressionChild -= never - -export interface BoltConstantExpression extends SyntaxBase { - kind: SyntaxKind.BoltConstantExpression; - value: BoltValue; - parentNode: BoltConstantExpressionParent; - getChildNodes(): IterableIterator -} - -export type BoltConstantExpressionParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| never - -export type BoltConstantExpressionAnyParent -= BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltConstantExpressionChild -= never - -export type BoltStatement - = BoltReturnStatement - | BoltConditionalStatement - | BoltResumeStatement - | BoltExpressionStatement - - -export interface BoltReturnStatement extends SyntaxBase { - kind: SyntaxKind.BoltReturnStatement; - value: BoltExpression | null; - parentNode: BoltReturnStatementParent; - getChildNodes(): IterableIterator -} - -export type BoltReturnStatementParent -= BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltModule -| BoltFunctionDeclaration -| never - -export type BoltReturnStatementAnyParent -= BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltReturnStatementChild -= never - -export interface BoltConditionalCase extends SyntaxBase { - kind: SyntaxKind.BoltConditionalCase; - test: BoltExpression | null; - body: BoltFunctionBodyElement[]; - parentNode: BoltConditionalCaseParent; - getChildNodes(): IterableIterator -} - -export type BoltConditionalCaseParent -= never - -export type BoltConditionalCaseAnyParent -= never - -export type BoltConditionalCaseChild -= never - -export interface BoltConditionalStatement extends SyntaxBase { - kind: SyntaxKind.BoltConditionalStatement; - cases: BoltConditionalCase[]; - parentNode: BoltConditionalStatementParent; - getChildNodes(): IterableIterator -} - -export type BoltConditionalStatementParent -= BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltModule -| BoltFunctionDeclaration -| never - -export type BoltConditionalStatementAnyParent -= BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltConditionalStatementChild -= never - -export interface BoltResumeStatement extends SyntaxBase { - kind: SyntaxKind.BoltResumeStatement; - value: BoltExpression; - parentNode: BoltResumeStatementParent; - getChildNodes(): IterableIterator -} - -export type BoltResumeStatementParent -= BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltModule -| BoltFunctionDeclaration -| never - -export type BoltResumeStatementAnyParent -= BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltResumeStatementChild -= never - -export interface BoltExpressionStatement extends SyntaxBase { - kind: SyntaxKind.BoltExpressionStatement; - expression: BoltExpression; - parentNode: BoltExpressionStatementParent; - getChildNodes(): IterableIterator -} - -export type BoltExpressionStatementParent -= BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltModule -| BoltFunctionDeclaration -| never - -export type BoltExpressionStatementAnyParent -= BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltParameter -| BoltVariableDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltExpressionStatementChild -= never - -export interface BoltParameter extends SyntaxBase { - kind: SyntaxKind.BoltParameter; - index: number; - bindings: BoltPattern; - typeExpr: BoltTypeExpression | null; - defaultValue: BoltExpression | null; - parentNode: BoltParameterParent; - getChildNodes(): IterableIterator -} - -export type BoltParameterParent -= never - -export type BoltParameterAnyParent -= never - -export type BoltParameterChild -= never - -export type BoltDeclaration - = BoltFunctionDeclaration - | BoltVariableDeclaration - | BoltRecordDeclaration - - -export type BoltTypeDeclaration - = BoltTraitDeclaration - | BoltImplDeclaration - | BoltTypeAliasDeclaration - | BoltRecordDeclaration - - -export const enum BoltModifiers { - IsMutable = 1,IsPublic = 2,} - -export interface BoltModule extends SyntaxBase { - kind: SyntaxKind.BoltModule; - modifiers: BoltModifiers; - name: BoltIdentifier[]; - elements: BoltSourceElement[]; - parentNode: BoltModuleParent; - getChildNodes(): IterableIterator -} - -export type BoltModuleParent -= BoltSourceFile -| BoltModule -| never - -export type BoltModuleAnyParent -= BoltSourceFile -| never - -export type BoltModuleChild -= never - -export type BoltDeclarationLike - = BoltFunctionDeclaration - | BoltVariableDeclaration - | BoltTraitDeclaration - | BoltImplDeclaration - | BoltTypeAliasDeclaration - | BoltRecordDeclaration - - -export type BoltFunctionBodyElement - = BoltFunctionDeclaration - | BoltVariableDeclaration - | BoltMacroCall - | BoltReturnStatement - | BoltConditionalStatement - | BoltResumeStatement - | BoltExpressionStatement - - -export interface BoltFunctionDeclaration extends SyntaxBase { - kind: SyntaxKind.BoltFunctionDeclaration; - modifiers: BoltModifiers; - target: string; - name: BoltSymbol; - params: BoltParameter[]; - returnType: BoltTypeExpression | null; - typeParams: BoltTypeParameter[] | null; - body: BoltFunctionBodyElement[]; - parentNode: BoltFunctionDeclarationParent; - getChildNodes(): IterableIterator -} - -export type BoltFunctionDeclarationParent -= BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| never - -export type BoltFunctionDeclarationAnyParent -= BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltModule -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltFunctionDeclarationChild -= never - -export interface BoltVariableDeclaration extends SyntaxBase { - kind: SyntaxKind.BoltVariableDeclaration; - modifiers: BoltModifiers; - bindings: BoltPattern; - typeExpr: BoltTypeExpression | null; - value: BoltExpression | null; - parentNode: BoltVariableDeclarationParent; - getChildNodes(): IterableIterator -} - -export type BoltVariableDeclarationParent -= BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| never - -export type BoltVariableDeclarationAnyParent -= BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type BoltVariableDeclarationChild -= never - -export type BoltImportSymbol - = BoltPlainImportSymbol - - -export interface BoltPlainImportSymbol extends SyntaxBase { - kind: SyntaxKind.BoltPlainImportSymbol; - remote: BoltQualName; - local: BoltSymbol; - parentNode: BoltPlainImportSymbolParent; - getChildNodes(): IterableIterator -} - -export type BoltPlainImportSymbolParent -= BoltImportDirective -| never - -export type BoltPlainImportSymbolAnyParent -= BoltImportDirective -| BoltSourceFile -| BoltModule -| never - -export type BoltPlainImportSymbolChild -= never - -export interface BoltImportDirective extends SyntaxBase { - kind: SyntaxKind.BoltImportDirective; - modifiers: BoltModifiers; - file: BoltStringLiteral; - symbols: BoltImportSymbol[] | null; - parentNode: BoltImportDirectiveParent; - getChildNodes(): IterableIterator -} - -export type BoltImportDirectiveParent -= BoltSourceFile -| BoltModule -| never - -export type BoltImportDirectiveAnyParent -= BoltSourceFile -| BoltModule -| never - -export type BoltImportDirectiveChild -= never - -export interface BoltExportSymbol extends SyntaxBase { - kind: SyntaxKind.BoltExportSymbol; - parentNode: BoltExportSymbolParent; - getChildNodes(): IterableIterator -} - -export type BoltExportSymbolParent -= never - -export type BoltExportSymbolAnyParent -= never - -export type BoltExportSymbolChild -= never - -export interface BoltPlainExportSymbol extends SyntaxBase { - kind: SyntaxKind.BoltPlainExportSymbol; - local: BoltQualName; - remote: BoltSymbol; - parentNode: BoltPlainExportSymbolParent; - getChildNodes(): IterableIterator -} - -export type BoltPlainExportSymbolParent -= never - -export type BoltPlainExportSymbolAnyParent -= never - -export type BoltPlainExportSymbolChild -= never - -export interface BoltExportDirective extends SyntaxBase { - kind: SyntaxKind.BoltExportDirective; - file: string; - symbols: BoltExportSymbol[] | null; - parentNode: BoltExportDirectiveParent; - getChildNodes(): IterableIterator -} - -export type BoltExportDirectiveParent -= BoltSourceFile -| BoltModule -| never - -export type BoltExportDirectiveAnyParent -= BoltSourceFile -| BoltModule -| never - -export type BoltExportDirectiveChild -= never - -export type BoltTraitOrImplElement - = BoltFunctionDeclaration - | BoltTypeAliasDeclaration - | BoltMacroCall - - -export interface BoltTraitDeclaration extends SyntaxBase { - kind: SyntaxKind.BoltTraitDeclaration; - modifiers: BoltModifiers; - typeParams: BoltTypeParameter[] | null; - name: BoltIdentifier; - typeBoundExpr: BoltTypeExpression | null; - elements: BoltDeclaration[] | null; - parentNode: BoltTraitDeclarationParent; - getChildNodes(): IterableIterator -} - -export type BoltTraitDeclarationParent -= BoltSourceFile -| BoltModule -| never - -export type BoltTraitDeclarationAnyParent -= BoltSourceFile -| BoltModule -| never - -export type BoltTraitDeclarationChild -= never - -export interface BoltImplDeclaration extends SyntaxBase { - kind: SyntaxKind.BoltImplDeclaration; - modifiers: BoltModifiers; - typeParams: BoltTypeParameter[] | null; - name: BoltIdentifier; - traitTypeExpr: BoltTypeExpression | null; - elements: BoltDeclaration[]; - parentNode: BoltImplDeclarationParent; - getChildNodes(): IterableIterator -} - -export type BoltImplDeclarationParent -= BoltSourceFile -| BoltModule -| never - -export type BoltImplDeclarationAnyParent -= BoltSourceFile -| BoltModule -| never - -export type BoltImplDeclarationChild -= never - -export interface BoltTypeAliasDeclaration extends SyntaxBase { - kind: SyntaxKind.BoltTypeAliasDeclaration; - modifiers: BoltModifiers; - name: BoltIdentifier; - typeParams: BoltTypeParameter[] | null; - typeExpr: BoltTypeExpression; - parentNode: BoltTypeAliasDeclarationParent; - getChildNodes(): IterableIterator -} - -export type BoltTypeAliasDeclarationParent -= BoltSourceFile -| BoltModule -| never - -export type BoltTypeAliasDeclarationAnyParent -= BoltSourceFile -| BoltModule -| never - -export type BoltTypeAliasDeclarationChild -= never - -export type BoltRecordMember - = BoltRecordField - | BoltMacroCall - - -export interface BoltRecordField extends SyntaxBase { - kind: SyntaxKind.BoltRecordField; - name: BoltIdentifier; - typeExpr: BoltTypeExpression; - parentNode: BoltRecordFieldParent; - getChildNodes(): IterableIterator -} - -export type BoltRecordFieldParent -= BoltRecordDeclaration -| never - -export type BoltRecordFieldAnyParent -= BoltRecordDeclaration -| BoltSourceFile -| BoltModule -| BoltTraitDeclaration -| BoltImplDeclaration -| never - -export type BoltRecordFieldChild -= never - -export interface BoltRecordDeclaration extends SyntaxBase { - kind: SyntaxKind.BoltRecordDeclaration; - modifiers: BoltModifiers; - name: BoltIdentifier; - typeParms: BoltTypeParameter[] | null; - members: BoltRecordMember[] | null; - parentNode: BoltRecordDeclarationParent; - getChildNodes(): IterableIterator -} - -export type BoltRecordDeclarationParent -= BoltSourceFile -| BoltModule -| BoltTraitDeclaration -| BoltImplDeclaration -| never - -export type BoltRecordDeclarationAnyParent -= BoltSourceFile -| BoltModule -| BoltTraitDeclaration -| BoltImplDeclaration -| never - -export type BoltRecordDeclarationChild -= never - -export type BoltSourceElement - = BoltModule - | BoltImportDirective - | BoltExportDirective - | BoltMacroCall - | BoltTraitDeclaration - | BoltImplDeclaration - | BoltTypeAliasDeclaration - | BoltRecordDeclaration - | BoltFunctionDeclaration - | BoltVariableDeclaration - | BoltReturnStatement - | BoltConditionalStatement - | BoltResumeStatement - | BoltExpressionStatement - - -export interface BoltMacroCall extends SyntaxBase { - kind: SyntaxKind.BoltMacroCall; - name: BoltIdentifier; - text: string; - parentNode: BoltMacroCallParent; - getChildNodes(): IterableIterator -} - -export type BoltMacroCallParent -= BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltModule -| BoltFunctionDeclaration -| BoltRecordDeclaration -| never - -export type BoltMacroCallAnyParent -= BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltConditionalCase -| BoltModule -| BoltFunctionDeclaration -| BoltRecordDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| never - -export type BoltMacroCallChild -= never - -export type JSSyntax - = JSCatchBlock - | JSTryCatchStatement - | JSConditionalCase - | JSParameter - | JSSourceFile - | JSImportStarBinding - | JSImportAsBinding - | JSImportDeclaration - | JSFunctionDeclaration - | JSArrowFunctionDeclaration - | JSLetDeclaration - | JSExpressionStatement - | JSConditionalStatement - | JSReturnStatement - | JSConstantExpression - | JSMemberExpression - | JSCallExpression - | JSBinaryExpression - | JSUnaryExpression - | JSNewExpression - | JSSequenceExpression - | JSConditionalExpression - | JSLiteralExpression - | JSReferenceExpression - | JSBindPattern - | EndOfFile - | JSIdentifier - | JSString - | JSInteger - | JSFromKeyword - | JSReturnKeyword - | JSTryKeyword - | JSFinallyKeyword - | JSCatchKeyword - | JSImportKeyword - | JSAsKeyword - | JSConstKeyword - | JSLetKeyword - | JSExportKeyword - | JSFunctionKeyword - | JSWhileKeyword - | JSForKeyword - | JSOperator - | JSCloseBrace - | JSCloseBracket - | JSCloseParen - | JSOpenBrace - | JSOpenBracket - | JSOpenParen - | JSSemi - | JSComma - | JSDot - | JSDotDotDot - | JSMulOp - | JSAddOp - | JSDivOp - | JSSubOp - | JSLtOp - | JSGtOp - | JSBOrOp - | JSBXorOp - | JSBAndOp - | JSBNotOp - | JSNotOp - - -export type JSToken - = EndOfFile - | JSIdentifier - | JSString - | JSInteger - | JSFromKeyword - | JSReturnKeyword - | JSTryKeyword - | JSFinallyKeyword - | JSCatchKeyword - | JSImportKeyword - | JSAsKeyword - | JSConstKeyword - | JSLetKeyword - | JSExportKeyword - | JSFunctionKeyword - | JSWhileKeyword - | JSForKeyword - | JSOperator - | JSCloseBrace - | JSCloseBracket - | JSCloseParen - | JSOpenBrace - | JSOpenBracket - | JSOpenParen - | JSSemi - | JSComma - | JSDot - | JSDotDotDot - | JSMulOp - | JSAddOp - | JSDivOp - | JSSubOp - | JSLtOp - | JSGtOp - | JSBOrOp - | JSBXorOp - | JSBAndOp - | JSBNotOp - | JSNotOp - - -export interface JSIdentifier extends SyntaxBase { - kind: SyntaxKind.JSIdentifier; - text: string; - parentNode: JSIdentifierParent; - getChildNodes(): IterableIterator -} - -export type JSIdentifierParent -= BoltQuoteExpression -| never - -export type JSIdentifierAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSIdentifierChild -= never - -export interface JSString extends SyntaxBase { - kind: SyntaxKind.JSString; - value: string; - parentNode: JSStringParent; - getChildNodes(): IterableIterator -} - -export type JSStringParent -= BoltQuoteExpression -| never - -export type JSStringAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSStringChild -= never - -export interface JSInteger extends SyntaxBase { - kind: SyntaxKind.JSInteger; - value: bigint; - parentNode: JSIntegerParent; - getChildNodes(): IterableIterator -} - -export type JSIntegerParent -= BoltQuoteExpression -| never - -export type JSIntegerAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSIntegerChild -= never - -export interface JSFromKeyword extends SyntaxBase { - kind: SyntaxKind.JSFromKeyword; - parentNode: JSFromKeywordParent; - getChildNodes(): IterableIterator -} - -export type JSFromKeywordParent -= BoltQuoteExpression -| never - -export type JSFromKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSFromKeywordChild -= never - -export interface JSReturnKeyword extends SyntaxBase { - kind: SyntaxKind.JSReturnKeyword; - parentNode: JSReturnKeywordParent; - getChildNodes(): IterableIterator -} - -export type JSReturnKeywordParent -= BoltQuoteExpression -| never - -export type JSReturnKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSReturnKeywordChild -= never - -export interface JSTryKeyword extends SyntaxBase { - kind: SyntaxKind.JSTryKeyword; - parentNode: JSTryKeywordParent; - getChildNodes(): IterableIterator -} - -export type JSTryKeywordParent -= BoltQuoteExpression -| never - -export type JSTryKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSTryKeywordChild -= never - -export interface JSFinallyKeyword extends SyntaxBase { - kind: SyntaxKind.JSFinallyKeyword; - parentNode: JSFinallyKeywordParent; - getChildNodes(): IterableIterator -} - -export type JSFinallyKeywordParent -= BoltQuoteExpression -| never - -export type JSFinallyKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSFinallyKeywordChild -= never - -export interface JSCatchKeyword extends SyntaxBase { - kind: SyntaxKind.JSCatchKeyword; - parentNode: JSCatchKeywordParent; - getChildNodes(): IterableIterator -} - -export type JSCatchKeywordParent -= BoltQuoteExpression -| never - -export type JSCatchKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSCatchKeywordChild -= never - -export interface JSImportKeyword extends SyntaxBase { - kind: SyntaxKind.JSImportKeyword; - parentNode: JSImportKeywordParent; - getChildNodes(): IterableIterator -} - -export type JSImportKeywordParent -= BoltQuoteExpression -| never - -export type JSImportKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSImportKeywordChild -= never - -export interface JSAsKeyword extends SyntaxBase { - kind: SyntaxKind.JSAsKeyword; - parentNode: JSAsKeywordParent; - getChildNodes(): IterableIterator -} - -export type JSAsKeywordParent -= BoltQuoteExpression -| never - -export type JSAsKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSAsKeywordChild -= never - -export interface JSConstKeyword extends SyntaxBase { - kind: SyntaxKind.JSConstKeyword; - parentNode: JSConstKeywordParent; - getChildNodes(): IterableIterator -} - -export type JSConstKeywordParent -= BoltQuoteExpression -| never - -export type JSConstKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSConstKeywordChild -= never - -export interface JSLetKeyword extends SyntaxBase { - kind: SyntaxKind.JSLetKeyword; - parentNode: JSLetKeywordParent; - getChildNodes(): IterableIterator -} - -export type JSLetKeywordParent -= BoltQuoteExpression -| never - -export type JSLetKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSLetKeywordChild -= never - -export interface JSExportKeyword extends SyntaxBase { - kind: SyntaxKind.JSExportKeyword; - parentNode: JSExportKeywordParent; - getChildNodes(): IterableIterator -} - -export type JSExportKeywordParent -= BoltQuoteExpression -| never - -export type JSExportKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSExportKeywordChild -= never - -export interface JSFunctionKeyword extends SyntaxBase { - kind: SyntaxKind.JSFunctionKeyword; - parentNode: JSFunctionKeywordParent; - getChildNodes(): IterableIterator -} - -export type JSFunctionKeywordParent -= BoltQuoteExpression -| never - -export type JSFunctionKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSFunctionKeywordChild -= never - -export interface JSWhileKeyword extends SyntaxBase { - kind: SyntaxKind.JSWhileKeyword; - parentNode: JSWhileKeywordParent; - getChildNodes(): IterableIterator -} - -export type JSWhileKeywordParent -= BoltQuoteExpression -| never - -export type JSWhileKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSWhileKeywordChild -= never - -export interface JSForKeyword extends SyntaxBase { - kind: SyntaxKind.JSForKeyword; - parentNode: JSForKeywordParent; - getChildNodes(): IterableIterator -} - -export type JSForKeywordParent -= BoltQuoteExpression -| never - -export type JSForKeywordAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSForKeywordChild -= never - -export type JSOperatorLike - = JSMulOp - | JSAddOp - | JSDivOp - | JSSubOp - | JSLtOp - | JSGtOp - | JSBOrOp - | JSBXorOp - | JSBAndOp - | JSBNotOp - | JSNotOp - - -export interface JSOperator extends SyntaxBase { - kind: SyntaxKind.JSOperator; - text: string; - parentNode: JSOperatorParent; - getChildNodes(): IterableIterator -} - -export type JSOperatorParent -= BoltQuoteExpression -| never - -export type JSOperatorAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSOperatorChild -= never - -export interface JSCloseBrace extends SyntaxBase { - kind: SyntaxKind.JSCloseBrace; - parentNode: JSCloseBraceParent; - getChildNodes(): IterableIterator -} - -export type JSCloseBraceParent -= BoltQuoteExpression -| never - -export type JSCloseBraceAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSCloseBraceChild -= never - -export interface JSCloseBracket extends SyntaxBase { - kind: SyntaxKind.JSCloseBracket; - parentNode: JSCloseBracketParent; - getChildNodes(): IterableIterator -} - -export type JSCloseBracketParent -= BoltQuoteExpression -| never - -export type JSCloseBracketAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSCloseBracketChild -= never - -export interface JSCloseParen extends SyntaxBase { - kind: SyntaxKind.JSCloseParen; - parentNode: JSCloseParenParent; - getChildNodes(): IterableIterator -} - -export type JSCloseParenParent -= BoltQuoteExpression -| never - -export type JSCloseParenAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSCloseParenChild -= never - -export interface JSOpenBrace extends SyntaxBase { - kind: SyntaxKind.JSOpenBrace; - parentNode: JSOpenBraceParent; - getChildNodes(): IterableIterator -} - -export type JSOpenBraceParent -= BoltQuoteExpression -| never - -export type JSOpenBraceAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSOpenBraceChild -= never - -export interface JSOpenBracket extends SyntaxBase { - kind: SyntaxKind.JSOpenBracket; - parentNode: JSOpenBracketParent; - getChildNodes(): IterableIterator -} - -export type JSOpenBracketParent -= BoltQuoteExpression -| never - -export type JSOpenBracketAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSOpenBracketChild -= never - -export interface JSOpenParen extends SyntaxBase { - kind: SyntaxKind.JSOpenParen; - parentNode: JSOpenParenParent; - getChildNodes(): IterableIterator -} - -export type JSOpenParenParent -= BoltQuoteExpression -| never - -export type JSOpenParenAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSOpenParenChild -= never - -export interface JSSemi extends SyntaxBase { - kind: SyntaxKind.JSSemi; - parentNode: JSSemiParent; - getChildNodes(): IterableIterator -} - -export type JSSemiParent -= BoltQuoteExpression -| never - -export type JSSemiAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSSemiChild -= never - -export interface JSComma extends SyntaxBase { - kind: SyntaxKind.JSComma; - parentNode: JSCommaParent; - getChildNodes(): IterableIterator -} - -export type JSCommaParent -= BoltQuoteExpression -| never - -export type JSCommaAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSCommaChild -= never - -export interface JSDot extends SyntaxBase { - kind: SyntaxKind.JSDot; - parentNode: JSDotParent; - getChildNodes(): IterableIterator -} - -export type JSDotParent -= BoltQuoteExpression -| never - -export type JSDotAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSDotChild -= never - -export interface JSDotDotDot extends SyntaxBase { - kind: SyntaxKind.JSDotDotDot; - parentNode: JSDotDotDotParent; - getChildNodes(): IterableIterator -} - -export type JSDotDotDotParent -= BoltQuoteExpression -| never - -export type JSDotDotDotAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSDotDotDotChild -= never - -export interface JSMulOp extends SyntaxBase { - kind: SyntaxKind.JSMulOp; - parentNode: JSMulOpParent; - getChildNodes(): IterableIterator -} - -export type JSMulOpParent -= BoltQuoteExpression -| never - -export type JSMulOpAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSMulOpChild -= never - -export interface JSAddOp extends SyntaxBase { - kind: SyntaxKind.JSAddOp; - parentNode: JSAddOpParent; - getChildNodes(): IterableIterator -} - -export type JSAddOpParent -= BoltQuoteExpression -| never - -export type JSAddOpAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSAddOpChild -= never - -export interface JSDivOp extends SyntaxBase { - kind: SyntaxKind.JSDivOp; - parentNode: JSDivOpParent; - getChildNodes(): IterableIterator -} - -export type JSDivOpParent -= BoltQuoteExpression -| never - -export type JSDivOpAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSDivOpChild -= never - -export interface JSSubOp extends SyntaxBase { - kind: SyntaxKind.JSSubOp; - parentNode: JSSubOpParent; - getChildNodes(): IterableIterator -} - -export type JSSubOpParent -= BoltQuoteExpression -| never - -export type JSSubOpAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSSubOpChild -= never - -export interface JSLtOp extends SyntaxBase { - kind: SyntaxKind.JSLtOp; - parentNode: JSLtOpParent; - getChildNodes(): IterableIterator -} - -export type JSLtOpParent -= BoltQuoteExpression -| never - -export type JSLtOpAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSLtOpChild -= never - -export interface JSGtOp extends SyntaxBase { - kind: SyntaxKind.JSGtOp; - parentNode: JSGtOpParent; - getChildNodes(): IterableIterator -} - -export type JSGtOpParent -= BoltQuoteExpression -| never - -export type JSGtOpAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSGtOpChild -= never - -export interface JSBOrOp extends SyntaxBase { - kind: SyntaxKind.JSBOrOp; - parentNode: JSBOrOpParent; - getChildNodes(): IterableIterator -} - -export type JSBOrOpParent -= BoltQuoteExpression -| never - -export type JSBOrOpAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSBOrOpChild -= never - -export interface JSBXorOp extends SyntaxBase { - kind: SyntaxKind.JSBXorOp; - parentNode: JSBXorOpParent; - getChildNodes(): IterableIterator -} - -export type JSBXorOpParent -= BoltQuoteExpression -| never - -export type JSBXorOpAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSBXorOpChild -= never - -export interface JSBAndOp extends SyntaxBase { - kind: SyntaxKind.JSBAndOp; - parentNode: JSBAndOpParent; - getChildNodes(): IterableIterator -} - -export type JSBAndOpParent -= BoltQuoteExpression -| never - -export type JSBAndOpAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSBAndOpChild -= never - -export interface JSBNotOp extends SyntaxBase { - kind: SyntaxKind.JSBNotOp; - parentNode: JSBNotOpParent; - getChildNodes(): IterableIterator -} - -export type JSBNotOpParent -= BoltQuoteExpression -| never - -export type JSBNotOpAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSBNotOpChild -= never - -export interface JSNotOp extends SyntaxBase { - kind: SyntaxKind.JSNotOp; - parentNode: JSNotOpParent; - getChildNodes(): IterableIterator -} - -export type JSNotOpParent -= BoltQuoteExpression -| never - -export type JSNotOpAnyParent -= BoltQuoteExpression -| BoltTypeOfExpression -| BoltLiftedTypeExpression -| BoltExpressionPattern -| BoltTupleExpression -| BoltMemberExpression -| BoltCallExpression -| BoltYieldExpression -| BoltMatchArm -| BoltMatchExpression -| BoltCase -| BoltReturnStatement -| BoltConditionalCase -| BoltResumeStatement -| BoltExpressionStatement -| BoltParameter -| BoltVariableDeclaration -| BoltSourceFile -| BoltFunctionExpression -| BoltBlockExpression -| BoltModule -| BoltFunctionDeclaration -| BoltTraitDeclaration -| BoltImplDeclaration -| BoltTypePattern -| BoltTuplePatternElement -| BoltRecordFieldPattern -| BoltReferenceTypeExpression -| BoltFunctionTypeExpression -| BoltTypeParameter -| BoltRecordPattern -| BoltTypeAliasDeclaration -| BoltRecordField -| BoltRecordDeclaration -| never - -export type JSNotOpChild -= never - -export type JSPattern - = JSBindPattern - - -export interface JSBindPattern extends SyntaxBase { - kind: SyntaxKind.JSBindPattern; - name: JSIdentifier; - parentNode: JSBindPatternParent; - getChildNodes(): IterableIterator -} - -export type JSBindPatternParent -= JSCatchBlock -| JSParameter -| JSLetDeclaration -| never - -export type JSBindPatternAnyParent -= JSCatchBlock -| JSParameter -| JSLetDeclaration -| JSTryCatchStatement -| JSConditionalCase -| JSSourceFile -| never - -export type JSBindPatternChild -= never - -export type JSExpression - = JSConstantExpression - | JSMemberExpression - | JSCallExpression - | JSBinaryExpression - | JSUnaryExpression - | JSNewExpression - | JSSequenceExpression - | JSConditionalExpression - | JSLiteralExpression - | JSReferenceExpression - - -export interface JSConstantExpression extends SyntaxBase { - kind: SyntaxKind.JSConstantExpression; - value: BoltValue; - parentNode: JSConstantExpressionParent; - getChildNodes(): IterableIterator -} - -export type JSConstantExpressionParent -= JSMemberExpression -| JSCallExpression -| JSBinaryExpression -| JSUnaryExpression -| JSNewExpression -| JSSequenceExpression -| JSConditionalExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| never - -export type JSConstantExpressionAnyParent -= JSMemberExpression -| JSCallExpression -| JSBinaryExpression -| JSUnaryExpression -| JSNewExpression -| JSSequenceExpression -| JSConditionalExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| JSCatchBlock -| JSTryCatchStatement -| JSSourceFile -| JSFunctionDeclaration -| never - -export type JSConstantExpressionChild -= never - -export interface JSMemberExpression extends SyntaxBase { - kind: SyntaxKind.JSMemberExpression; - value: JSExpression; - property: JSIdentifier; - parentNode: JSMemberExpressionParent; - getChildNodes(): IterableIterator -} - -export type JSMemberExpressionParent -= JSMemberExpression -| JSCallExpression -| JSBinaryExpression -| JSUnaryExpression -| JSNewExpression -| JSSequenceExpression -| JSConditionalExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| never - -export type JSMemberExpressionAnyParent -= JSCallExpression -| JSBinaryExpression -| JSUnaryExpression -| JSNewExpression -| JSSequenceExpression -| JSConditionalExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| JSCatchBlock -| JSTryCatchStatement -| JSSourceFile -| JSFunctionDeclaration -| never - -export type JSMemberExpressionChild -= never - -export interface JSCallExpression extends SyntaxBase { - kind: SyntaxKind.JSCallExpression; - operator: JSExpression; - operands: JSExpression[]; - parentNode: JSCallExpressionParent; - getChildNodes(): IterableIterator -} - -export type JSCallExpressionParent -= JSMemberExpression -| JSCallExpression -| JSBinaryExpression -| JSUnaryExpression -| JSNewExpression -| JSSequenceExpression -| JSConditionalExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| never - -export type JSCallExpressionAnyParent -= JSMemberExpression -| JSBinaryExpression -| JSUnaryExpression -| JSNewExpression -| JSSequenceExpression -| JSConditionalExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| JSCatchBlock -| JSTryCatchStatement -| JSSourceFile -| JSFunctionDeclaration -| never - -export type JSCallExpressionChild -= never - -export interface JSBinaryExpression extends SyntaxBase { - kind: SyntaxKind.JSBinaryExpression; - left: JSExpression; - operator: JSOperator; - right: JSExpression; - parentNode: JSBinaryExpressionParent; - getChildNodes(): IterableIterator -} - -export type JSBinaryExpressionParent -= JSMemberExpression -| JSCallExpression -| JSBinaryExpression -| JSUnaryExpression -| JSNewExpression -| JSSequenceExpression -| JSConditionalExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| never - -export type JSBinaryExpressionAnyParent -= JSMemberExpression -| JSCallExpression -| JSUnaryExpression -| JSNewExpression -| JSSequenceExpression -| JSConditionalExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| JSCatchBlock -| JSTryCatchStatement -| JSSourceFile -| JSFunctionDeclaration -| never - -export type JSBinaryExpressionChild -= never - -export interface JSUnaryExpression extends SyntaxBase { - kind: SyntaxKind.JSUnaryExpression; - operator: JSOperator; - operand: JSExpression; - parentNode: JSUnaryExpressionParent; - getChildNodes(): IterableIterator -} - -export type JSUnaryExpressionParent -= JSMemberExpression -| JSCallExpression -| JSBinaryExpression -| JSUnaryExpression -| JSNewExpression -| JSSequenceExpression -| JSConditionalExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| never - -export type JSUnaryExpressionAnyParent -= JSMemberExpression -| JSCallExpression -| JSBinaryExpression -| JSNewExpression -| JSSequenceExpression -| JSConditionalExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| JSCatchBlock -| JSTryCatchStatement -| JSSourceFile -| JSFunctionDeclaration -| never - -export type JSUnaryExpressionChild -= never - -export interface JSNewExpression extends SyntaxBase { - kind: SyntaxKind.JSNewExpression; - target: JSExpression; - args: JSExpression[]; - parentNode: JSNewExpressionParent; - getChildNodes(): IterableIterator -} - -export type JSNewExpressionParent -= JSMemberExpression -| JSCallExpression -| JSBinaryExpression -| JSUnaryExpression -| JSNewExpression -| JSSequenceExpression -| JSConditionalExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| never - -export type JSNewExpressionAnyParent -= JSMemberExpression -| JSCallExpression -| JSBinaryExpression -| JSUnaryExpression -| JSSequenceExpression -| JSConditionalExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| JSCatchBlock -| JSTryCatchStatement -| JSSourceFile -| JSFunctionDeclaration -| never - -export type JSNewExpressionChild -= never - -export interface JSSequenceExpression extends SyntaxBase { - kind: SyntaxKind.JSSequenceExpression; - expressions: JSExpression[]; - parentNode: JSSequenceExpressionParent; - getChildNodes(): IterableIterator -} - -export type JSSequenceExpressionParent -= JSMemberExpression -| JSCallExpression -| JSBinaryExpression -| JSUnaryExpression -| JSNewExpression -| JSSequenceExpression -| JSConditionalExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| never - -export type JSSequenceExpressionAnyParent -= JSMemberExpression -| JSCallExpression -| JSBinaryExpression -| JSUnaryExpression -| JSNewExpression -| JSConditionalExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| JSCatchBlock -| JSTryCatchStatement -| JSSourceFile -| JSFunctionDeclaration -| never - -export type JSSequenceExpressionChild -= never - -export interface JSConditionalExpression extends SyntaxBase { - kind: SyntaxKind.JSConditionalExpression; - test: JSExpression; - consequent: JSExpression; - alternate: JSExpression; - parentNode: JSConditionalExpressionParent; - getChildNodes(): IterableIterator -} - -export type JSConditionalExpressionParent -= JSMemberExpression -| JSCallExpression -| JSBinaryExpression -| JSUnaryExpression -| JSNewExpression -| JSSequenceExpression -| JSConditionalExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| never - -export type JSConditionalExpressionAnyParent -= JSMemberExpression -| JSCallExpression -| JSBinaryExpression -| JSUnaryExpression -| JSNewExpression -| JSSequenceExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| JSCatchBlock -| JSTryCatchStatement -| JSSourceFile -| JSFunctionDeclaration -| never - -export type JSConditionalExpressionChild -= never - -export interface JSLiteralExpression extends SyntaxBase { - kind: SyntaxKind.JSLiteralExpression; - value: JSValue; - parentNode: JSLiteralExpressionParent; - getChildNodes(): IterableIterator -} - -export type JSLiteralExpressionParent -= JSMemberExpression -| JSCallExpression -| JSBinaryExpression -| JSUnaryExpression -| JSNewExpression -| JSSequenceExpression -| JSConditionalExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| never - -export type JSLiteralExpressionAnyParent -= JSMemberExpression -| JSCallExpression -| JSBinaryExpression -| JSUnaryExpression -| JSNewExpression -| JSSequenceExpression -| JSConditionalExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| JSCatchBlock -| JSTryCatchStatement -| JSSourceFile -| JSFunctionDeclaration -| never - -export type JSLiteralExpressionChild -= never - -export interface JSReferenceExpression extends SyntaxBase { - kind: SyntaxKind.JSReferenceExpression; - name: string; - parentNode: JSReferenceExpressionParent; - getChildNodes(): IterableIterator -} - -export type JSReferenceExpressionParent -= JSMemberExpression -| JSCallExpression -| JSBinaryExpression -| JSUnaryExpression -| JSNewExpression -| JSSequenceExpression -| JSConditionalExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| never - -export type JSReferenceExpressionAnyParent -= JSMemberExpression -| JSCallExpression -| JSBinaryExpression -| JSUnaryExpression -| JSNewExpression -| JSSequenceExpression -| JSConditionalExpression -| JSExpressionStatement -| JSConditionalCase -| JSReturnStatement -| JSParameter -| JSArrowFunctionDeclaration -| JSLetDeclaration -| JSCatchBlock -| JSTryCatchStatement -| JSSourceFile -| JSFunctionDeclaration -| never - -export type JSReferenceExpressionChild -= never - -export type JSSourceElement - = JSImportDeclaration - | JSFunctionDeclaration - | JSArrowFunctionDeclaration - | JSLetDeclaration - | JSExpressionStatement - | JSConditionalStatement - | JSReturnStatement - - -export type JSFunctionBodyElement - = JSFunctionDeclaration - | JSArrowFunctionDeclaration - | JSLetDeclaration - | JSExpressionStatement - | JSConditionalStatement - | JSReturnStatement - - -export type JSStatement - = JSExpressionStatement - | JSConditionalStatement - | JSReturnStatement - - -export interface JSCatchBlock extends SyntaxBase { - kind: SyntaxKind.JSCatchBlock; - bindings: JSPattern | null; - elements: JSSourceElement[]; - parentNode: JSCatchBlockParent; - getChildNodes(): IterableIterator -} - -export type JSCatchBlockParent -= never - -export type JSCatchBlockAnyParent -= never - -export type JSCatchBlockChild -= never - -export interface JSTryCatchStatement extends SyntaxBase { - kind: SyntaxKind.JSTryCatchStatement; - tryBlock: JSSourceElement[]; - catchBlock: JSCatchBlock | null; - finalBlock: JSSourceElement[] | null; - parentNode: JSTryCatchStatementParent; - getChildNodes(): IterableIterator -} - -export type JSTryCatchStatementParent -= never - -export type JSTryCatchStatementAnyParent -= never - -export type JSTryCatchStatementChild -= never - -export interface JSExpressionStatement extends SyntaxBase { - kind: SyntaxKind.JSExpressionStatement; - expression: JSExpression; - parentNode: JSExpressionStatementParent; - getChildNodes(): IterableIterator -} - -export type JSExpressionStatementParent -= JSCatchBlock -| JSTryCatchStatement -| JSConditionalCase -| JSFunctionDeclaration -| JSSourceFile -| never - -export type JSExpressionStatementAnyParent -= JSCatchBlock -| JSTryCatchStatement -| JSConditionalCase -| JSFunctionDeclaration -| JSSourceFile -| never - -export type JSExpressionStatementChild -= never - -export interface JSConditionalCase extends SyntaxBase { - kind: SyntaxKind.JSConditionalCase; - test: JSExpression | null; - body: JSFunctionBodyElement[]; - parentNode: JSConditionalCaseParent; - getChildNodes(): IterableIterator -} - -export type JSConditionalCaseParent -= never - -export type JSConditionalCaseAnyParent -= never - -export type JSConditionalCaseChild -= never - -export interface JSConditionalStatement extends SyntaxBase { - kind: SyntaxKind.JSConditionalStatement; - cases: JSConditionalCase[]; - parentNode: JSConditionalStatementParent; - getChildNodes(): IterableIterator -} - -export type JSConditionalStatementParent -= JSCatchBlock -| JSTryCatchStatement -| JSConditionalCase -| JSFunctionDeclaration -| JSSourceFile -| never - -export type JSConditionalStatementAnyParent -= JSCatchBlock -| JSTryCatchStatement -| JSConditionalCase -| JSFunctionDeclaration -| JSSourceFile -| never - -export type JSConditionalStatementChild -= never - -export interface JSReturnStatement extends SyntaxBase { - kind: SyntaxKind.JSReturnStatement; - value: JSExpression | null; - parentNode: JSReturnStatementParent; - getChildNodes(): IterableIterator -} - -export type JSReturnStatementParent -= JSCatchBlock -| JSTryCatchStatement -| JSConditionalCase -| JSFunctionDeclaration -| JSSourceFile -| never - -export type JSReturnStatementAnyParent -= JSCatchBlock -| JSTryCatchStatement -| JSConditionalCase -| JSFunctionDeclaration -| JSSourceFile -| never - -export type JSReturnStatementChild -= never - -export interface JSParameter extends SyntaxBase { - kind: SyntaxKind.JSParameter; - index: number; - bindings: JSPattern; - defaultValue: JSExpression | null; - parentNode: JSParameterParent; - getChildNodes(): IterableIterator -} - -export type JSParameterParent -= never - -export type JSParameterAnyParent -= never - -export type JSParameterChild -= never - -export type JSDeclaration - = JSImportDeclaration - | JSFunctionDeclaration - | JSArrowFunctionDeclaration - | JSLetDeclaration - - -export const enum JSDeclarationModifiers { - IsExported = 1,} - -export type JSImportBinding - = JSImportStarBinding - | JSImportAsBinding - - -export interface JSImportStarBinding extends SyntaxBase { - kind: SyntaxKind.JSImportStarBinding; - local: JSIdentifier; - parentNode: JSImportStarBindingParent; - getChildNodes(): IterableIterator -} - -export type JSImportStarBindingParent -= JSImportDeclaration -| never - -export type JSImportStarBindingAnyParent -= JSImportDeclaration -| JSCatchBlock -| JSTryCatchStatement -| JSSourceFile -| never - -export type JSImportStarBindingChild -= never - -export interface JSImportAsBinding extends SyntaxBase { - kind: SyntaxKind.JSImportAsBinding; - remote: JSIdentifier; - local: JSIdentifier | null; - parentNode: JSImportAsBindingParent; - getChildNodes(): IterableIterator -} - -export type JSImportAsBindingParent -= JSImportDeclaration -| never - -export type JSImportAsBindingAnyParent -= JSImportDeclaration -| JSCatchBlock -| JSTryCatchStatement -| JSSourceFile -| never - -export type JSImportAsBindingChild -= never - -export interface JSImportDeclaration extends SyntaxBase { - kind: SyntaxKind.JSImportDeclaration; - bindings: JSImportBinding[]; - filename: JSString; - parentNode: JSImportDeclarationParent; - getChildNodes(): IterableIterator -} - -export type JSImportDeclarationParent -= JSCatchBlock -| JSTryCatchStatement -| JSSourceFile -| never - -export type JSImportDeclarationAnyParent -= JSCatchBlock -| JSTryCatchStatement -| JSSourceFile -| never - -export type JSImportDeclarationChild -= never - -export interface JSFunctionDeclaration extends SyntaxBase { - kind: SyntaxKind.JSFunctionDeclaration; - modifiers: JSDeclarationModifiers; - name: JSIdentifier; - params: JSParameter[]; - body: JSStatement[]; - parentNode: JSFunctionDeclarationParent; - getChildNodes(): IterableIterator -} - -export type JSFunctionDeclarationParent -= JSCatchBlock -| JSTryCatchStatement -| JSConditionalCase -| JSSourceFile -| never - -export type JSFunctionDeclarationAnyParent -= JSCatchBlock -| JSTryCatchStatement -| JSConditionalCase -| JSSourceFile -| never - -export type JSFunctionDeclarationChild -= never - -export interface JSArrowFunctionDeclaration extends SyntaxBase { - kind: SyntaxKind.JSArrowFunctionDeclaration; - name: JSIdentifier; - params: JSParameter[]; - body: JSExpression; - parentNode: JSArrowFunctionDeclarationParent; - getChildNodes(): IterableIterator -} - -export type JSArrowFunctionDeclarationParent -= JSCatchBlock -| JSTryCatchStatement -| JSConditionalCase -| JSSourceFile -| never - -export type JSArrowFunctionDeclarationAnyParent -= JSCatchBlock -| JSTryCatchStatement -| JSConditionalCase -| JSSourceFile -| never - -export type JSArrowFunctionDeclarationChild -= never - -export interface JSLetDeclaration extends SyntaxBase { - kind: SyntaxKind.JSLetDeclaration; - bindings: JSPattern; - value: JSExpression | null; - parentNode: JSLetDeclarationParent; - getChildNodes(): IterableIterator -} - -export type JSLetDeclarationParent -= JSCatchBlock -| JSTryCatchStatement -| JSConditionalCase -| JSSourceFile -| never - -export type JSLetDeclarationAnyParent -= JSCatchBlock -| JSTryCatchStatement -| JSConditionalCase -| JSSourceFile -| never - -export type JSLetDeclarationChild -= never - -export interface JSSourceFile extends SyntaxBase { - kind: SyntaxKind.JSSourceFile; - elements: JSSourceElement[]; - parentNode: JSSourceFileParent; - getChildNodes(): IterableIterator -} - -export type JSSourceFileParent -= never - -export type JSSourceFileAnyParent -= never - -export type JSSourceFileChild -= never - -export type Syntax - = EndOfFile - | BoltStringLiteral - | BoltIntegerLiteral - | BoltIdentifier - | BoltOperator - | BoltAssignment - | BoltComma - | BoltSemi - | BoltColon - | BoltColonColon - | BoltDot - | BoltDotDot - | BoltRArrow - | BoltRArrowAlt - | BoltLArrow - | BoltEqSign - | BoltGtSign - | BoltExMark - | BoltLtSign - | BoltVBar - | BoltWhereKeyword - | BoltQuoteKeyword - | BoltFnKeyword - | BoltForeignKeyword - | BoltForKeyword - | BoltLetKeyword - | BoltReturnKeyword - | BoltLoopKeyword - | BoltYieldKeyword - | BoltMatchKeyword - | BoltImportKeyword - | BoltExportKeyword - | BoltPubKeyword - | BoltModKeyword - | BoltMutKeyword - | BoltEnumKeyword - | BoltStructKeyword - | BoltTypeKeyword - | BoltTraitKeyword - | BoltImplKeyword - | BoltParenthesized - | BoltBraced - | BoltBracketed - | BoltSourceFile - | BoltQualName - | BoltTypeOfExpression - | BoltReferenceTypeExpression - | BoltFunctionTypeExpression - | BoltLiftedTypeExpression - | BoltTypeParameter - | BoltBindPattern - | BoltTypePattern - | BoltExpressionPattern - | BoltTuplePatternElement - | BoltTuplePattern - | BoltRecordFieldPattern - | BoltRecordPattern - | BoltQuoteExpression - | BoltTupleExpression - | BoltReferenceExpression - | BoltMemberExpression - | BoltFunctionExpression - | BoltCallExpression - | BoltYieldExpression - | BoltMatchArm - | BoltMatchExpression - | BoltCase - | BoltCaseExpression - | BoltBlockExpression - | BoltConstantExpression - | BoltReturnStatement - | BoltConditionalCase - | BoltConditionalStatement - | BoltResumeStatement - | BoltExpressionStatement - | BoltParameter - | BoltModule - | BoltFunctionDeclaration - | BoltVariableDeclaration - | BoltPlainImportSymbol - | BoltImportDirective - | BoltExportSymbol - | BoltPlainExportSymbol - | BoltExportDirective - | BoltTraitDeclaration - | BoltImplDeclaration - | BoltTypeAliasDeclaration - | BoltRecordField - | BoltRecordDeclaration - | BoltMacroCall - | JSIdentifier - | JSString - | JSInteger - | JSFromKeyword - | JSReturnKeyword - | JSTryKeyword - | JSFinallyKeyword - | JSCatchKeyword - | JSImportKeyword - | JSAsKeyword - | JSConstKeyword - | JSLetKeyword - | JSExportKeyword - | JSFunctionKeyword - | JSWhileKeyword - | JSForKeyword - | JSOperator - | JSCloseBrace - | JSCloseBracket - | JSCloseParen - | JSOpenBrace - | JSOpenBracket - | JSOpenParen - | JSSemi - | JSComma - | JSDot - | JSDotDotDot - | JSMulOp - | JSAddOp - | JSDivOp - | JSSubOp - | JSLtOp - | JSGtOp - | JSBOrOp - | JSBXorOp - | JSBAndOp - | JSBNotOp - | JSNotOp - | JSBindPattern - | JSConstantExpression - | JSMemberExpression - | JSCallExpression - | JSBinaryExpression - | JSUnaryExpression - | JSNewExpression - | JSSequenceExpression - | JSConditionalExpression - | JSLiteralExpression - | JSReferenceExpression - | JSCatchBlock - | JSTryCatchStatement - | JSExpressionStatement - | JSConditionalCase - | JSConditionalStatement - | JSReturnStatement - | JSParameter - | JSImportStarBinding - | JSImportAsBinding - | JSImportDeclaration - | JSFunctionDeclaration - | JSArrowFunctionDeclaration - | JSLetDeclaration - | JSSourceFile - - -export function kindToString(kind: SyntaxKind): string; - -export function createEndOfFile(span?: TextSpan | null): EndOfFile; -export function createBoltStringLiteral(value: string, span?: TextSpan | null): BoltStringLiteral; -export function createBoltIntegerLiteral(value: bigint, span?: TextSpan | null): BoltIntegerLiteral; -export function createBoltIdentifier(text: string, span?: TextSpan | null): BoltIdentifier; -export function createBoltOperator(text: string, span?: TextSpan | null): BoltOperator; -export function createBoltAssignment(operator: string | null, span?: TextSpan | null): BoltAssignment; -export function createBoltComma(span?: TextSpan | null): BoltComma; -export function createBoltSemi(span?: TextSpan | null): BoltSemi; -export function createBoltColon(span?: TextSpan | null): BoltColon; -export function createBoltColonColon(span?: TextSpan | null): BoltColonColon; -export function createBoltDot(span?: TextSpan | null): BoltDot; -export function createBoltDotDot(span?: TextSpan | null): BoltDotDot; -export function createBoltRArrow(span?: TextSpan | null): BoltRArrow; -export function createBoltRArrowAlt(span?: TextSpan | null): BoltRArrowAlt; -export function createBoltLArrow(span?: TextSpan | null): BoltLArrow; -export function createBoltEqSign(span?: TextSpan | null): BoltEqSign; -export function createBoltGtSign(span?: TextSpan | null): BoltGtSign; -export function createBoltExMark(span?: TextSpan | null): BoltExMark; -export function createBoltLtSign(span?: TextSpan | null): BoltLtSign; -export function createBoltVBar(span?: TextSpan | null): BoltVBar; -export function createBoltWhereKeyword(span?: TextSpan | null): BoltWhereKeyword; -export function createBoltQuoteKeyword(span?: TextSpan | null): BoltQuoteKeyword; -export function createBoltFnKeyword(span?: TextSpan | null): BoltFnKeyword; -export function createBoltForeignKeyword(span?: TextSpan | null): BoltForeignKeyword; -export function createBoltForKeyword(span?: TextSpan | null): BoltForKeyword; -export function createBoltLetKeyword(span?: TextSpan | null): BoltLetKeyword; -export function createBoltReturnKeyword(span?: TextSpan | null): BoltReturnKeyword; -export function createBoltLoopKeyword(span?: TextSpan | null): BoltLoopKeyword; -export function createBoltYieldKeyword(span?: TextSpan | null): BoltYieldKeyword; -export function createBoltMatchKeyword(span?: TextSpan | null): BoltMatchKeyword; -export function createBoltImportKeyword(span?: TextSpan | null): BoltImportKeyword; -export function createBoltExportKeyword(span?: TextSpan | null): BoltExportKeyword; -export function createBoltPubKeyword(span?: TextSpan | null): BoltPubKeyword; -export function createBoltModKeyword(span?: TextSpan | null): BoltModKeyword; -export function createBoltMutKeyword(span?: TextSpan | null): BoltMutKeyword; -export function createBoltEnumKeyword(span?: TextSpan | null): BoltEnumKeyword; -export function createBoltStructKeyword(span?: TextSpan | null): BoltStructKeyword; -export function createBoltTypeKeyword(span?: TextSpan | null): BoltTypeKeyword; -export function createBoltTraitKeyword(span?: TextSpan | null): BoltTraitKeyword; -export function createBoltImplKeyword(span?: TextSpan | null): BoltImplKeyword; -export function createBoltParenthesized(text: string, span?: TextSpan | null): BoltParenthesized; -export function createBoltBraced(text: string, span?: TextSpan | null): BoltBraced; -export function createBoltBracketed(text: string, span?: TextSpan | null): BoltBracketed; -export function createBoltSourceFile(elements: BoltSourceElement[], pkg: Package, span?: TextSpan | null): BoltSourceFile; -export function createBoltQualName(isAbsolute: boolean, modulePath: BoltIdentifier[], name: BoltSymbol, span?: TextSpan | null): BoltQualName; -export function createBoltTypeOfExpression(expression: BoltExpression, span?: TextSpan | null): BoltTypeOfExpression; -export function createBoltReferenceTypeExpression(name: BoltQualName, typeArgs: BoltTypeExpression[] | null, span?: TextSpan | null): BoltReferenceTypeExpression; -export function createBoltFunctionTypeExpression(params: BoltParameter[], returnType: BoltTypeExpression | null, span?: TextSpan | null): BoltFunctionTypeExpression; -export function createBoltLiftedTypeExpression(expression: BoltExpression, span?: TextSpan | null): BoltLiftedTypeExpression; -export function createBoltTypeParameter(index: number, name: BoltIdentifier, typeExpr: BoltTypeExpression | null, defaultType: BoltTypeExpression | null, span?: TextSpan | null): BoltTypeParameter; -export function createBoltBindPattern(name: BoltIdentifier, span?: TextSpan | null): BoltBindPattern; -export function createBoltTypePattern(typeExpr: BoltTypeExpression, nestedPattern: BoltPattern, span?: TextSpan | null): BoltTypePattern; -export function createBoltExpressionPattern(expression: BoltExpression, span?: TextSpan | null): BoltExpressionPattern; -export function createBoltTuplePatternElement(index: number, pattern: BoltPattern, span?: TextSpan | null): BoltTuplePatternElement; -export function createBoltTuplePattern(elements: BoltTuplePatternElement[], span?: TextSpan | null): BoltTuplePattern; -export function createBoltRecordFieldPattern(isRest: boolean, name: BoltIdentifier | null, pattern: BoltPattern | null, span?: TextSpan | null): BoltRecordFieldPattern; -export function createBoltRecordPattern(name: BoltTypeExpression, fields: BoltRecordFieldPattern[], span?: TextSpan | null): BoltRecordPattern; -export function createBoltQuoteExpression(tokens: (Token | BoltExpression)[], span?: TextSpan | null): BoltQuoteExpression; -export function createBoltTupleExpression(elements: BoltExpression[], span?: TextSpan | null): BoltTupleExpression; -export function createBoltReferenceExpression(name: BoltQualName, span?: TextSpan | null): BoltReferenceExpression; -export function createBoltMemberExpression(expression: BoltExpression, path: BoltIdentifier[], span?: TextSpan | null): BoltMemberExpression; -export function createBoltFunctionExpression(params: BoltParameter[], returnType: BoltTypeExpression | null, body: BoltFunctionBodyElement[], span?: TextSpan | null): BoltFunctionExpression; -export function createBoltCallExpression(operator: BoltExpression, operands: BoltExpression[], span?: TextSpan | null): BoltCallExpression; -export function createBoltYieldExpression(value: BoltExpression, span?: TextSpan | null): BoltYieldExpression; -export function createBoltMatchArm(pattern: BoltPattern, body: BoltExpression, span?: TextSpan | null): BoltMatchArm; -export function createBoltMatchExpression(value: BoltExpression, arms: BoltMatchArm[], span?: TextSpan | null): BoltMatchExpression; -export function createBoltCase(test: BoltExpression, result: BoltExpression, span?: TextSpan | null): BoltCase; -export function createBoltCaseExpression(cases: BoltCase[], span?: TextSpan | null): BoltCaseExpression; -export function createBoltBlockExpression(elements: BoltFunctionBodyElement[], span?: TextSpan | null): BoltBlockExpression; -export function createBoltConstantExpression(value: BoltValue, span?: TextSpan | null): BoltConstantExpression; -export function createBoltReturnStatement(value: BoltExpression | null, span?: TextSpan | null): BoltReturnStatement; -export function createBoltConditionalCase(test: BoltExpression | null, body: BoltFunctionBodyElement[], span?: TextSpan | null): BoltConditionalCase; -export function createBoltConditionalStatement(cases: BoltConditionalCase[], span?: TextSpan | null): BoltConditionalStatement; -export function createBoltResumeStatement(value: BoltExpression, span?: TextSpan | null): BoltResumeStatement; -export function createBoltExpressionStatement(expression: BoltExpression, span?: TextSpan | null): BoltExpressionStatement; -export function createBoltParameter(index: number, bindings: BoltPattern, typeExpr: BoltTypeExpression | null, defaultValue: BoltExpression | null, span?: TextSpan | null): BoltParameter; -export function createBoltModule(modifiers: BoltModifiers, name: BoltIdentifier[], elements: BoltSourceElement[], span?: TextSpan | null): BoltModule; -export function createBoltFunctionDeclaration(modifiers: BoltModifiers, target: string, name: BoltSymbol, params: BoltParameter[], returnType: BoltTypeExpression | null, typeParams: BoltTypeParameter[] | null, body: BoltFunctionBodyElement[], span?: TextSpan | null): BoltFunctionDeclaration; -export function createBoltVariableDeclaration(modifiers: BoltModifiers, bindings: BoltPattern, typeExpr: BoltTypeExpression | null, value: BoltExpression | null, span?: TextSpan | null): BoltVariableDeclaration; -export function createBoltPlainImportSymbol(remote: BoltQualName, local: BoltSymbol, span?: TextSpan | null): BoltPlainImportSymbol; -export function createBoltImportDirective(modifiers: BoltModifiers, file: BoltStringLiteral, symbols: BoltImportSymbol[] | null, span?: TextSpan | null): BoltImportDirective; -export function createBoltExportSymbol(span?: TextSpan | null): BoltExportSymbol; -export function createBoltPlainExportSymbol(local: BoltQualName, remote: BoltSymbol, span?: TextSpan | null): BoltPlainExportSymbol; -export function createBoltExportDirective(file: string, symbols: BoltExportSymbol[] | null, span?: TextSpan | null): BoltExportDirective; -export function createBoltTraitDeclaration(modifiers: BoltModifiers, typeParams: BoltTypeParameter[] | null, name: BoltIdentifier, typeBoundExpr: BoltTypeExpression | null, elements: BoltDeclaration[] | null, span?: TextSpan | null): BoltTraitDeclaration; -export function createBoltImplDeclaration(modifiers: BoltModifiers, typeParams: BoltTypeParameter[] | null, name: BoltIdentifier, traitTypeExpr: BoltTypeExpression | null, elements: BoltDeclaration[], span?: TextSpan | null): BoltImplDeclaration; -export function createBoltTypeAliasDeclaration(modifiers: BoltModifiers, name: BoltIdentifier, typeParams: BoltTypeParameter[] | null, typeExpr: BoltTypeExpression, span?: TextSpan | null): BoltTypeAliasDeclaration; -export function createBoltRecordField(name: BoltIdentifier, typeExpr: BoltTypeExpression, span?: TextSpan | null): BoltRecordField; -export function createBoltRecordDeclaration(modifiers: BoltModifiers, name: BoltIdentifier, typeParms: BoltTypeParameter[] | null, members: BoltRecordMember[] | null, span?: TextSpan | null): BoltRecordDeclaration; -export function createBoltMacroCall(name: BoltIdentifier, text: string, span?: TextSpan | null): BoltMacroCall; -export function createJSIdentifier(text: string, span?: TextSpan | null): JSIdentifier; -export function createJSString(value: string, span?: TextSpan | null): JSString; -export function createJSInteger(value: bigint, span?: TextSpan | null): JSInteger; -export function createJSFromKeyword(span?: TextSpan | null): JSFromKeyword; -export function createJSReturnKeyword(span?: TextSpan | null): JSReturnKeyword; -export function createJSTryKeyword(span?: TextSpan | null): JSTryKeyword; -export function createJSFinallyKeyword(span?: TextSpan | null): JSFinallyKeyword; -export function createJSCatchKeyword(span?: TextSpan | null): JSCatchKeyword; -export function createJSImportKeyword(span?: TextSpan | null): JSImportKeyword; -export function createJSAsKeyword(span?: TextSpan | null): JSAsKeyword; -export function createJSConstKeyword(span?: TextSpan | null): JSConstKeyword; -export function createJSLetKeyword(span?: TextSpan | null): JSLetKeyword; -export function createJSExportKeyword(span?: TextSpan | null): JSExportKeyword; -export function createJSFunctionKeyword(span?: TextSpan | null): JSFunctionKeyword; -export function createJSWhileKeyword(span?: TextSpan | null): JSWhileKeyword; -export function createJSForKeyword(span?: TextSpan | null): JSForKeyword; -export function createJSOperator(text: string, span?: TextSpan | null): JSOperator; -export function createJSCloseBrace(span?: TextSpan | null): JSCloseBrace; -export function createJSCloseBracket(span?: TextSpan | null): JSCloseBracket; -export function createJSCloseParen(span?: TextSpan | null): JSCloseParen; -export function createJSOpenBrace(span?: TextSpan | null): JSOpenBrace; -export function createJSOpenBracket(span?: TextSpan | null): JSOpenBracket; -export function createJSOpenParen(span?: TextSpan | null): JSOpenParen; -export function createJSSemi(span?: TextSpan | null): JSSemi; -export function createJSComma(span?: TextSpan | null): JSComma; -export function createJSDot(span?: TextSpan | null): JSDot; -export function createJSDotDotDot(span?: TextSpan | null): JSDotDotDot; -export function createJSMulOp(span?: TextSpan | null): JSMulOp; -export function createJSAddOp(span?: TextSpan | null): JSAddOp; -export function createJSDivOp(span?: TextSpan | null): JSDivOp; -export function createJSSubOp(span?: TextSpan | null): JSSubOp; -export function createJSLtOp(span?: TextSpan | null): JSLtOp; -export function createJSGtOp(span?: TextSpan | null): JSGtOp; -export function createJSBOrOp(span?: TextSpan | null): JSBOrOp; -export function createJSBXorOp(span?: TextSpan | null): JSBXorOp; -export function createJSBAndOp(span?: TextSpan | null): JSBAndOp; -export function createJSBNotOp(span?: TextSpan | null): JSBNotOp; -export function createJSNotOp(span?: TextSpan | null): JSNotOp; -export function createJSBindPattern(name: JSIdentifier, span?: TextSpan | null): JSBindPattern; -export function createJSConstantExpression(value: BoltValue, span?: TextSpan | null): JSConstantExpression; -export function createJSMemberExpression(value: JSExpression, property: JSIdentifier, span?: TextSpan | null): JSMemberExpression; -export function createJSCallExpression(operator: JSExpression, operands: JSExpression[], span?: TextSpan | null): JSCallExpression; -export function createJSBinaryExpression(left: JSExpression, operator: JSOperator, right: JSExpression, span?: TextSpan | null): JSBinaryExpression; -export function createJSUnaryExpression(operator: JSOperator, operand: JSExpression, span?: TextSpan | null): JSUnaryExpression; -export function createJSNewExpression(target: JSExpression, args: JSExpression[], span?: TextSpan | null): JSNewExpression; -export function createJSSequenceExpression(expressions: JSExpression[], span?: TextSpan | null): JSSequenceExpression; -export function createJSConditionalExpression(test: JSExpression, consequent: JSExpression, alternate: JSExpression, span?: TextSpan | null): JSConditionalExpression; -export function createJSLiteralExpression(value: JSValue, span?: TextSpan | null): JSLiteralExpression; -export function createJSReferenceExpression(name: string, span?: TextSpan | null): JSReferenceExpression; -export function createJSCatchBlock(bindings: JSPattern | null, elements: JSSourceElement[], span?: TextSpan | null): JSCatchBlock; -export function createJSTryCatchStatement(tryBlock: JSSourceElement[], catchBlock: JSCatchBlock | null, finalBlock: JSSourceElement[] | null, span?: TextSpan | null): JSTryCatchStatement; -export function createJSExpressionStatement(expression: JSExpression, span?: TextSpan | null): JSExpressionStatement; -export function createJSConditionalCase(test: JSExpression | null, body: JSFunctionBodyElement[], span?: TextSpan | null): JSConditionalCase; -export function createJSConditionalStatement(cases: JSConditionalCase[], span?: TextSpan | null): JSConditionalStatement; -export function createJSReturnStatement(value: JSExpression | null, span?: TextSpan | null): JSReturnStatement; -export function createJSParameter(index: number, bindings: JSPattern, defaultValue: JSExpression | null, span?: TextSpan | null): JSParameter; -export function createJSImportStarBinding(local: JSIdentifier, span?: TextSpan | null): JSImportStarBinding; -export function createJSImportAsBinding(remote: JSIdentifier, local: JSIdentifier | null, span?: TextSpan | null): JSImportAsBinding; -export function createJSImportDeclaration(bindings: JSImportBinding[], filename: JSString, span?: TextSpan | null): JSImportDeclaration; -export function createJSFunctionDeclaration(modifiers: JSDeclarationModifiers, name: JSIdentifier, params: JSParameter[], body: JSStatement[], span?: TextSpan | null): JSFunctionDeclaration; -export function createJSArrowFunctionDeclaration(name: JSIdentifier, params: JSParameter[], body: JSExpression, span?: TextSpan | null): JSArrowFunctionDeclaration; -export function createJSLetDeclaration(bindings: JSPattern, value: JSExpression | null, span?: TextSpan | null): JSLetDeclaration; -export function createJSSourceFile(elements: JSSourceElement[], span?: TextSpan | null): JSSourceFile; - -export function isEndOfFile(value: any): value is EndOfFile; -export function isToken(value: any): value is Token; -export function isSourceFile(value: any): value is SourceFile; -export function isFunctionBodyElement(value: any): value is FunctionBodyElement; -export function isReturnStatement(value: any): value is ReturnStatement; -export function isBoltSyntax(value: any): value is BoltSyntax; -export function isBoltToken(value: any): value is BoltToken; -export function isBoltStringLiteral(value: any): value is BoltStringLiteral; -export function isBoltIntegerLiteral(value: any): value is BoltIntegerLiteral; -export function isBoltSymbol(value: any): value is BoltSymbol; -export function isBoltIdentifier(value: any): value is BoltIdentifier; -export function isBoltOperatorLike(value: any): value is BoltOperatorLike; -export function isBoltOperator(value: any): value is BoltOperator; -export function isBoltAssignment(value: any): value is BoltAssignment; -export function isBoltComma(value: any): value is BoltComma; -export function isBoltSemi(value: any): value is BoltSemi; -export function isBoltColon(value: any): value is BoltColon; -export function isBoltColonColon(value: any): value is BoltColonColon; -export function isBoltDot(value: any): value is BoltDot; -export function isBoltDotDot(value: any): value is BoltDotDot; -export function isBoltRArrow(value: any): value is BoltRArrow; -export function isBoltRArrowAlt(value: any): value is BoltRArrowAlt; -export function isBoltLArrow(value: any): value is BoltLArrow; -export function isBoltEqSign(value: any): value is BoltEqSign; -export function isBoltGtSign(value: any): value is BoltGtSign; -export function isBoltExMark(value: any): value is BoltExMark; -export function isBoltLtSign(value: any): value is BoltLtSign; -export function isBoltVBar(value: any): value is BoltVBar; -export function isBoltKeyword(value: any): value is BoltKeyword; -export function isBoltWhereKeyword(value: any): value is BoltWhereKeyword; -export function isBoltQuoteKeyword(value: any): value is BoltQuoteKeyword; -export function isBoltFnKeyword(value: any): value is BoltFnKeyword; -export function isBoltForeignKeyword(value: any): value is BoltForeignKeyword; -export function isBoltForKeyword(value: any): value is BoltForKeyword; -export function isBoltLetKeyword(value: any): value is BoltLetKeyword; -export function isBoltReturnKeyword(value: any): value is BoltReturnKeyword; -export function isBoltLoopKeyword(value: any): value is BoltLoopKeyword; -export function isBoltYieldKeyword(value: any): value is BoltYieldKeyword; -export function isBoltMatchKeyword(value: any): value is BoltMatchKeyword; -export function isBoltImportKeyword(value: any): value is BoltImportKeyword; -export function isBoltExportKeyword(value: any): value is BoltExportKeyword; -export function isBoltPubKeyword(value: any): value is BoltPubKeyword; -export function isBoltModKeyword(value: any): value is BoltModKeyword; -export function isBoltMutKeyword(value: any): value is BoltMutKeyword; -export function isBoltEnumKeyword(value: any): value is BoltEnumKeyword; -export function isBoltStructKeyword(value: any): value is BoltStructKeyword; -export function isBoltTypeKeyword(value: any): value is BoltTypeKeyword; -export function isBoltTraitKeyword(value: any): value is BoltTraitKeyword; -export function isBoltImplKeyword(value: any): value is BoltImplKeyword; -export function isBoltPunctuated(value: any): value is BoltPunctuated; -export function isBoltParenthesized(value: any): value is BoltParenthesized; -export function isBoltBraced(value: any): value is BoltBraced; -export function isBoltBracketed(value: any): value is BoltBracketed; -export function isBoltSourceFile(value: any): value is BoltSourceFile; -export function isBoltQualName(value: any): value is BoltQualName; -export function isBoltTypeExpression(value: any): value is BoltTypeExpression; -export function isBoltTypeOfExpression(value: any): value is BoltTypeOfExpression; -export function isBoltReferenceTypeExpression(value: any): value is BoltReferenceTypeExpression; -export function isBoltFunctionTypeExpression(value: any): value is BoltFunctionTypeExpression; -export function isBoltLiftedTypeExpression(value: any): value is BoltLiftedTypeExpression; -export function isBoltTypeParameter(value: any): value is BoltTypeParameter; -export function isBoltPattern(value: any): value is BoltPattern; -export function isBoltBindPattern(value: any): value is BoltBindPattern; -export function isBoltTypePattern(value: any): value is BoltTypePattern; -export function isBoltExpressionPattern(value: any): value is BoltExpressionPattern; -export function isBoltTuplePatternElement(value: any): value is BoltTuplePatternElement; -export function isBoltTuplePattern(value: any): value is BoltTuplePattern; -export function isBoltRecordFieldPattern(value: any): value is BoltRecordFieldPattern; -export function isBoltRecordPattern(value: any): value is BoltRecordPattern; -export function isBoltExpression(value: any): value is BoltExpression; -export function isBoltQuoteExpression(value: any): value is BoltQuoteExpression; -export function isBoltTupleExpression(value: any): value is BoltTupleExpression; -export function isBoltReferenceExpression(value: any): value is BoltReferenceExpression; -export function isBoltMemberExpression(value: any): value is BoltMemberExpression; -export function isBoltFunctionExpression(value: any): value is BoltFunctionExpression; -export function isBoltCallExpression(value: any): value is BoltCallExpression; -export function isBoltYieldExpression(value: any): value is BoltYieldExpression; -export function isBoltMatchArm(value: any): value is BoltMatchArm; -export function isBoltMatchExpression(value: any): value is BoltMatchExpression; -export function isBoltCase(value: any): value is BoltCase; -export function isBoltCaseExpression(value: any): value is BoltCaseExpression; -export function isBoltBlockExpression(value: any): value is BoltBlockExpression; -export function isBoltConstantExpression(value: any): value is BoltConstantExpression; -export function isBoltStatement(value: any): value is BoltStatement; -export function isBoltReturnStatement(value: any): value is BoltReturnStatement; -export function isBoltConditionalCase(value: any): value is BoltConditionalCase; -export function isBoltConditionalStatement(value: any): value is BoltConditionalStatement; -export function isBoltResumeStatement(value: any): value is BoltResumeStatement; -export function isBoltExpressionStatement(value: any): value is BoltExpressionStatement; -export function isBoltParameter(value: any): value is BoltParameter; -export function isBoltDeclaration(value: any): value is BoltDeclaration; -export function isBoltTypeDeclaration(value: any): value is BoltTypeDeclaration; -export function isBoltModule(value: any): value is BoltModule; -export function isBoltDeclarationLike(value: any): value is BoltDeclarationLike; -export function isBoltFunctionBodyElement(value: any): value is BoltFunctionBodyElement; -export function isBoltFunctionDeclaration(value: any): value is BoltFunctionDeclaration; -export function isBoltVariableDeclaration(value: any): value is BoltVariableDeclaration; -export function isBoltImportSymbol(value: any): value is BoltImportSymbol; -export function isBoltPlainImportSymbol(value: any): value is BoltPlainImportSymbol; -export function isBoltImportDirective(value: any): value is BoltImportDirective; -export function isBoltExportSymbol(value: any): value is BoltExportSymbol; -export function isBoltPlainExportSymbol(value: any): value is BoltPlainExportSymbol; -export function isBoltExportDirective(value: any): value is BoltExportDirective; -export function isBoltTraitOrImplElement(value: any): value is BoltTraitOrImplElement; -export function isBoltTraitDeclaration(value: any): value is BoltTraitDeclaration; -export function isBoltImplDeclaration(value: any): value is BoltImplDeclaration; -export function isBoltTypeAliasDeclaration(value: any): value is BoltTypeAliasDeclaration; -export function isBoltRecordMember(value: any): value is BoltRecordMember; -export function isBoltRecordField(value: any): value is BoltRecordField; -export function isBoltRecordDeclaration(value: any): value is BoltRecordDeclaration; -export function isBoltSourceElement(value: any): value is BoltSourceElement; -export function isBoltMacroCall(value: any): value is BoltMacroCall; -export function isJSSyntax(value: any): value is JSSyntax; -export function isJSToken(value: any): value is JSToken; -export function isJSIdentifier(value: any): value is JSIdentifier; -export function isJSString(value: any): value is JSString; -export function isJSInteger(value: any): value is JSInteger; -export function isJSFromKeyword(value: any): value is JSFromKeyword; -export function isJSReturnKeyword(value: any): value is JSReturnKeyword; -export function isJSTryKeyword(value: any): value is JSTryKeyword; -export function isJSFinallyKeyword(value: any): value is JSFinallyKeyword; -export function isJSCatchKeyword(value: any): value is JSCatchKeyword; -export function isJSImportKeyword(value: any): value is JSImportKeyword; -export function isJSAsKeyword(value: any): value is JSAsKeyword; -export function isJSConstKeyword(value: any): value is JSConstKeyword; -export function isJSLetKeyword(value: any): value is JSLetKeyword; -export function isJSExportKeyword(value: any): value is JSExportKeyword; -export function isJSFunctionKeyword(value: any): value is JSFunctionKeyword; -export function isJSWhileKeyword(value: any): value is JSWhileKeyword; -export function isJSForKeyword(value: any): value is JSForKeyword; -export function isJSOperatorLike(value: any): value is JSOperatorLike; -export function isJSOperator(value: any): value is JSOperator; -export function isJSCloseBrace(value: any): value is JSCloseBrace; -export function isJSCloseBracket(value: any): value is JSCloseBracket; -export function isJSCloseParen(value: any): value is JSCloseParen; -export function isJSOpenBrace(value: any): value is JSOpenBrace; -export function isJSOpenBracket(value: any): value is JSOpenBracket; -export function isJSOpenParen(value: any): value is JSOpenParen; -export function isJSSemi(value: any): value is JSSemi; -export function isJSComma(value: any): value is JSComma; -export function isJSDot(value: any): value is JSDot; -export function isJSDotDotDot(value: any): value is JSDotDotDot; -export function isJSMulOp(value: any): value is JSMulOp; -export function isJSAddOp(value: any): value is JSAddOp; -export function isJSDivOp(value: any): value is JSDivOp; -export function isJSSubOp(value: any): value is JSSubOp; -export function isJSLtOp(value: any): value is JSLtOp; -export function isJSGtOp(value: any): value is JSGtOp; -export function isJSBOrOp(value: any): value is JSBOrOp; -export function isJSBXorOp(value: any): value is JSBXorOp; -export function isJSBAndOp(value: any): value is JSBAndOp; -export function isJSBNotOp(value: any): value is JSBNotOp; -export function isJSNotOp(value: any): value is JSNotOp; -export function isJSPattern(value: any): value is JSPattern; -export function isJSBindPattern(value: any): value is JSBindPattern; -export function isJSExpression(value: any): value is JSExpression; -export function isJSConstantExpression(value: any): value is JSConstantExpression; -export function isJSMemberExpression(value: any): value is JSMemberExpression; -export function isJSCallExpression(value: any): value is JSCallExpression; -export function isJSBinaryExpression(value: any): value is JSBinaryExpression; -export function isJSUnaryExpression(value: any): value is JSUnaryExpression; -export function isJSNewExpression(value: any): value is JSNewExpression; -export function isJSSequenceExpression(value: any): value is JSSequenceExpression; -export function isJSConditionalExpression(value: any): value is JSConditionalExpression; -export function isJSLiteralExpression(value: any): value is JSLiteralExpression; -export function isJSReferenceExpression(value: any): value is JSReferenceExpression; -export function isJSSourceElement(value: any): value is JSSourceElement; -export function isJSFunctionBodyElement(value: any): value is JSFunctionBodyElement; -export function isJSStatement(value: any): value is JSStatement; -export function isJSCatchBlock(value: any): value is JSCatchBlock; -export function isJSTryCatchStatement(value: any): value is JSTryCatchStatement; -export function isJSExpressionStatement(value: any): value is JSExpressionStatement; -export function isJSConditionalCase(value: any): value is JSConditionalCase; -export function isJSConditionalStatement(value: any): value is JSConditionalStatement; -export function isJSReturnStatement(value: any): value is JSReturnStatement; -export function isJSParameter(value: any): value is JSParameter; -export function isJSDeclaration(value: any): value is JSDeclaration; -export function isJSImportBinding(value: any): value is JSImportBinding; -export function isJSImportStarBinding(value: any): value is JSImportStarBinding; -export function isJSImportAsBinding(value: any): value is JSImportAsBinding; -export function isJSImportDeclaration(value: any): value is JSImportDeclaration; -export function isJSFunctionDeclaration(value: any): value is JSFunctionDeclaration; -export function isJSArrowFunctionDeclaration(value: any): value is JSArrowFunctionDeclaration; -export function isJSLetDeclaration(value: any): value is JSLetDeclaration; -export function isJSSourceFile(value: any): value is JSSourceFile; diff --git a/src/ast.js b/src/ast.js deleted file mode 100644 index fc80cd35a..000000000 --- a/src/ast.js +++ /dev/null @@ -1,4795 +0,0 @@ - -export class NodeVisitor { - visit(node) { - for (const child of node.preorder()) { - const key = `visit${kindToString(child.kind)}`; - if (this[key] !== undefined) { - this[key](child); - } - } - } -} - -let nextNodeId = 1; - -class SyntaxBase { - - constructor(span) { - this.id = nextNodeId++; - this.errors = []; - this.span = span; - } - - *getChildNodes() { - for (const key of Object.keys(this)) { - if (key === 'span' || key === 'parentNode' || key === 'type') { - continue - } - const value = this[key]; - if (Array.isArray(value)) { - for (const element of value) { - if (isSyntax(element)) { - yield element; - } - } - } else { - if (isSyntax(value)) { - yield value; - } - } - } - } - - visit(visitors) { - const stack = [this]; - while (stack.length > 0) { - const node = stack.pop(); - const kindName = kindToString(node.kind); - const kindNamesToVisit = [kindName, ...NODE_TYPES[kindName].parents]; - for (const visitor of visitors) { - for (const kindName of kindNamesToVisit) { - const key = `visit${kindName}` - if (visitor[key] !== undefined) { - visitor[key](node); - } - } - } - for (const childNode of node.getChildNodes()) { - stack.push(childNode); - } - } - } - - *preorder() { - const stack = [this]; - while (stack.length > 0) { - const node = stack.pop(); - yield node - for (const childNode of node.getChildNodes()) { - stack.push(childNode); - } - } - } - - mayContainKind(kind) { - // TODO - return true; - } - - getParentOfKind(kind) { - let currNode = this.parentNode; - while (currNode !== null) { - if (currNode.kind === kind) { - return currNode; - } - currNode = currNode.parentNode; - } - return null; - } - - *findAllChildrenOfKind(kind) { - for (const node of this.preorder()) { - if (!node.mayContainKind(kind)) { - break; - } - if (node.kind === kind) { - yield node - } - } - } - -} - -export function isSyntax(value) { - return typeof value === 'object' - && value !== null - && value.__NODE_TYPE !== undefined; -} - -export function setParents(node, parentNode = null) { - node.parentNode = parentNode; - for (const child of node.getChildNodes()) { - setParents(child, node) - } -} -class EndOfFile extends SyntaxBase { - - static kind = 0; - - static parents = [ - "BoltToken", - "JSToken", - "JSSyntax", - "Token", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltStringLiteral extends SyntaxBase { - - static kind = 7; - - static parents = [ - "BoltToken", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - value, - span = null, - ) { - super(span); - this.value = value; - this.span = span - } - -} -class BoltIntegerLiteral extends SyntaxBase { - - static kind = 8; - - static parents = [ - "BoltToken", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - value, - span = null, - ) { - super(span); - this.value = value; - this.span = span - } - -} -class BoltIdentifier extends SyntaxBase { - - static kind = 10; - - static parents = [ - "BoltSymbol", - "BoltToken", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - text, - span = null, - ) { - super(span); - this.text = text; - this.span = span - } - -} -class BoltOperator extends SyntaxBase { - - static kind = 12; - - static parents = [ - "BoltSymbol", - "BoltToken", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - text, - span = null, - ) { - super(span); - this.text = text; - this.span = span - } - -} -class BoltAssignment extends SyntaxBase { - - static kind = 13; - - static parents = [ - "BoltToken", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - operator, - span = null, - ) { - super(span); - this.operator = operator; - this.span = span - } - -} -class BoltComma extends SyntaxBase { - - static kind = 14; - - static parents = [ - "BoltToken", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltSemi extends SyntaxBase { - - static kind = 15; - - static parents = [ - "BoltToken", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltColon extends SyntaxBase { - - static kind = 16; - - static parents = [ - "BoltToken", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltColonColon extends SyntaxBase { - - static kind = 17; - - static parents = [ - "BoltToken", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltDot extends SyntaxBase { - - static kind = 18; - - static parents = [ - "BoltToken", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltDotDot extends SyntaxBase { - - static kind = 19; - - static parents = [ - "BoltToken", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltRArrow extends SyntaxBase { - - static kind = 20; - - static parents = [ - "BoltToken", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltRArrowAlt extends SyntaxBase { - - static kind = 21; - - static parents = [ - "BoltToken", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltLArrow extends SyntaxBase { - - static kind = 22; - - static parents = [ - "BoltToken", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltEqSign extends SyntaxBase { - - static kind = 23; - - static parents = [ - "BoltToken", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltGtSign extends SyntaxBase { - - static kind = 24; - - static parents = [ - "BoltToken", - "BoltOperatorLike", - "BoltSymbol", - "BoltToken", - "Token", - "BoltSyntax", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltExMark extends SyntaxBase { - - static kind = 25; - - static parents = [ - "BoltToken", - "BoltOperatorLike", - "BoltSymbol", - "BoltToken", - "Token", - "BoltSyntax", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltLtSign extends SyntaxBase { - - static kind = 26; - - static parents = [ - "BoltToken", - "BoltOperatorLike", - "BoltSymbol", - "BoltToken", - "Token", - "BoltSyntax", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltVBar extends SyntaxBase { - - static kind = 27; - - static parents = [ - "BoltToken", - "BoltOperatorLike", - "BoltSymbol", - "BoltToken", - "Token", - "BoltSyntax", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltWhereKeyword extends SyntaxBase { - - static kind = 29; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltQuoteKeyword extends SyntaxBase { - - static kind = 30; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltFnKeyword extends SyntaxBase { - - static kind = 31; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltForeignKeyword extends SyntaxBase { - - static kind = 32; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltForKeyword extends SyntaxBase { - - static kind = 33; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltLetKeyword extends SyntaxBase { - - static kind = 34; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltReturnKeyword extends SyntaxBase { - - static kind = 35; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltLoopKeyword extends SyntaxBase { - - static kind = 36; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltYieldKeyword extends SyntaxBase { - - static kind = 37; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltMatchKeyword extends SyntaxBase { - - static kind = 38; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltImportKeyword extends SyntaxBase { - - static kind = 39; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltExportKeyword extends SyntaxBase { - - static kind = 40; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltPubKeyword extends SyntaxBase { - - static kind = 41; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltModKeyword extends SyntaxBase { - - static kind = 42; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltMutKeyword extends SyntaxBase { - - static kind = 43; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltEnumKeyword extends SyntaxBase { - - static kind = 44; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltStructKeyword extends SyntaxBase { - - static kind = 45; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltTypeKeyword extends SyntaxBase { - - static kind = 46; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltTraitKeyword extends SyntaxBase { - - static kind = 47; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltImplKeyword extends SyntaxBase { - - static kind = 48; - - static parents = [ - "BoltToken", - "BoltKeyword", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltParenthesized extends SyntaxBase { - - static kind = 50; - - static parents = [ - "BoltPunctuated", - "BoltToken", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - text, - span = null, - ) { - super(span); - this.text = text; - this.span = span - } - -} -class BoltBraced extends SyntaxBase { - - static kind = 51; - - static parents = [ - "BoltPunctuated", - "BoltToken", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - text, - span = null, - ) { - super(span); - this.text = text; - this.span = span - } - -} -class BoltBracketed extends SyntaxBase { - - static kind = 52; - - static parents = [ - "BoltPunctuated", - "BoltToken", - "Token", - "BoltSyntax", - "Syntax" - ]; - - constructor( - text, - span = null, - ) { - super(span); - this.text = text; - this.span = span - } - -} -class BoltSourceFile extends SyntaxBase { - - static kind = 53; - - static parents = [ - "BoltSyntax", - "SourceFile", - "Syntax" - ]; - - constructor( - elements, - pkg, - span = null, - ) { - super(span); - this.elements = elements; - this.pkg = pkg; - this.span = span - } - -} -class BoltQualName extends SyntaxBase { - - static kind = 54; - - static parents = [ - "BoltSyntax", - "Syntax" - ]; - - constructor( - isAbsolute, - modulePath, - name, - span = null, - ) { - super(span); - this.isAbsolute = isAbsolute; - this.modulePath = modulePath; - this.name = name; - this.span = span - } - -} -class BoltTypeOfExpression extends SyntaxBase { - - static kind = 56; - - static parents = [ - "BoltTypeExpression", - "BoltSyntax", - "Syntax" - ]; - - constructor( - expression, - span = null, - ) { - super(span); - this.expression = expression; - this.span = span - } - -} -class BoltReferenceTypeExpression extends SyntaxBase { - - static kind = 57; - - static parents = [ - "BoltTypeExpression", - "BoltSyntax", - "Syntax" - ]; - - constructor( - name, - typeArgs, - span = null, - ) { - super(span); - this.name = name; - this.typeArgs = typeArgs; - this.span = span - } - -} -class BoltFunctionTypeExpression extends SyntaxBase { - - static kind = 58; - - static parents = [ - "BoltTypeExpression", - "BoltSyntax", - "Syntax" - ]; - - constructor( - params, - returnType, - span = null, - ) { - super(span); - this.params = params; - this.returnType = returnType; - this.span = span - } - -} -class BoltLiftedTypeExpression extends SyntaxBase { - - static kind = 59; - - static parents = [ - "BoltTypeExpression", - "BoltSyntax", - "Syntax" - ]; - - constructor( - expression, - span = null, - ) { - super(span); - this.expression = expression; - this.span = span - } - -} -class BoltTypeParameter extends SyntaxBase { - - static kind = 60; - - static parents = [ - "BoltSyntax", - "Syntax" - ]; - - constructor( - index, - name, - typeExpr, - defaultType, - span = null, - ) { - super(span); - this.index = index; - this.name = name; - this.typeExpr = typeExpr; - this.defaultType = defaultType; - this.span = span - } - -} -class BoltBindPattern extends SyntaxBase { - - static kind = 62; - - static parents = [ - "BoltPattern", - "BoltSyntax", - "Syntax" - ]; - - constructor( - name, - span = null, - ) { - super(span); - this.name = name; - this.span = span - } - -} -class BoltTypePattern extends SyntaxBase { - - static kind = 63; - - static parents = [ - "BoltPattern", - "BoltSyntax", - "Syntax" - ]; - - constructor( - typeExpr, - nestedPattern, - span = null, - ) { - super(span); - this.typeExpr = typeExpr; - this.nestedPattern = nestedPattern; - this.span = span - } - -} -class BoltExpressionPattern extends SyntaxBase { - - static kind = 64; - - static parents = [ - "BoltPattern", - "BoltSyntax", - "Syntax" - ]; - - constructor( - expression, - span = null, - ) { - super(span); - this.expression = expression; - this.span = span - } - -} -class BoltTuplePatternElement extends SyntaxBase { - - static kind = 65; - - static parents = [ - "BoltSyntax", - "Syntax" - ]; - - constructor( - index, - pattern, - span = null, - ) { - super(span); - this.index = index; - this.pattern = pattern; - this.span = span - } - -} -class BoltTuplePattern extends SyntaxBase { - - static kind = 66; - - static parents = [ - "BoltPattern", - "BoltSyntax", - "Syntax" - ]; - - constructor( - elements, - span = null, - ) { - super(span); - this.elements = elements; - this.span = span - } - -} -class BoltRecordFieldPattern extends SyntaxBase { - - static kind = 67; - - static parents = [ - "BoltSyntax", - "Syntax" - ]; - - constructor( - isRest, - name, - pattern, - span = null, - ) { - super(span); - this.isRest = isRest; - this.name = name; - this.pattern = pattern; - this.span = span - } - -} -class BoltRecordPattern extends SyntaxBase { - - static kind = 68; - - static parents = [ - "BoltPattern", - "BoltSyntax", - "Syntax" - ]; - - constructor( - name, - fields, - span = null, - ) { - super(span); - this.name = name; - this.fields = fields; - this.span = span - } - -} -class BoltQuoteExpression extends SyntaxBase { - - static kind = 70; - - static parents = [ - "BoltExpression", - "BoltSyntax", - "Syntax" - ]; - - constructor( - tokens, - span = null, - ) { - super(span); - this.tokens = tokens; - this.span = span - } - -} -class BoltTupleExpression extends SyntaxBase { - - static kind = 71; - - static parents = [ - "BoltExpression", - "BoltSyntax", - "Syntax" - ]; - - constructor( - elements, - span = null, - ) { - super(span); - this.elements = elements; - this.span = span - } - -} -class BoltReferenceExpression extends SyntaxBase { - - static kind = 72; - - static parents = [ - "BoltExpression", - "BoltSyntax", - "Syntax" - ]; - - constructor( - name, - span = null, - ) { - super(span); - this.name = name; - this.span = span - } - -} -class BoltMemberExpression extends SyntaxBase { - - static kind = 73; - - static parents = [ - "BoltExpression", - "BoltSyntax", - "Syntax" - ]; - - constructor( - expression, - path, - span = null, - ) { - super(span); - this.expression = expression; - this.path = path; - this.span = span - } - -} -class BoltFunctionExpression extends SyntaxBase { - - static kind = 74; - - static parents = [ - "BoltExpression", - "BoltSyntax", - "Syntax" - ]; - - constructor( - params, - returnType, - body, - span = null, - ) { - super(span); - this.params = params; - this.returnType = returnType; - this.body = body; - this.span = span - } - -} -class BoltCallExpression extends SyntaxBase { - - static kind = 75; - - static parents = [ - "BoltExpression", - "BoltSyntax", - "Syntax" - ]; - - constructor( - operator, - operands, - span = null, - ) { - super(span); - this.operator = operator; - this.operands = operands; - this.span = span - } - -} -class BoltYieldExpression extends SyntaxBase { - - static kind = 76; - - static parents = [ - "BoltExpression", - "BoltSyntax", - "Syntax" - ]; - - constructor( - value, - span = null, - ) { - super(span); - this.value = value; - this.span = span - } - -} -class BoltMatchArm extends SyntaxBase { - - static kind = 77; - - static parents = [ - "BoltSyntax", - "Syntax" - ]; - - constructor( - pattern, - body, - span = null, - ) { - super(span); - this.pattern = pattern; - this.body = body; - this.span = span - } - -} -class BoltMatchExpression extends SyntaxBase { - - static kind = 78; - - static parents = [ - "BoltExpression", - "BoltSyntax", - "Syntax" - ]; - - constructor( - value, - arms, - span = null, - ) { - super(span); - this.value = value; - this.arms = arms; - this.span = span - } - -} -class BoltCase extends SyntaxBase { - - static kind = 79; - - static parents = [ - "BoltSyntax", - "Syntax" - ]; - - constructor( - test, - result, - span = null, - ) { - super(span); - this.test = test; - this.result = result; - this.span = span - } - -} -class BoltCaseExpression extends SyntaxBase { - - static kind = 80; - - static parents = [ - "BoltExpression", - "BoltSyntax", - "Syntax" - ]; - - constructor( - cases, - span = null, - ) { - super(span); - this.cases = cases; - this.span = span - } - -} -class BoltBlockExpression extends SyntaxBase { - - static kind = 81; - - static parents = [ - "BoltExpression", - "BoltSyntax", - "Syntax" - ]; - - constructor( - elements, - span = null, - ) { - super(span); - this.elements = elements; - this.span = span - } - -} -class BoltConstantExpression extends SyntaxBase { - - static kind = 82; - - static parents = [ - "BoltExpression", - "BoltSyntax", - "Syntax" - ]; - - constructor( - value, - span = null, - ) { - super(span); - this.value = value; - this.span = span - } - -} -class BoltReturnStatement extends SyntaxBase { - - static kind = 84; - - static parents = [ - "ReturnStatement", - "BoltStatement", - "BoltSyntax", - "BoltFunctionBodyElement", - "BoltSourceElement", - "FunctionBodyElement", - "Syntax" - ]; - - constructor( - value, - span = null, - ) { - super(span); - this.value = value; - this.span = span - } - -} -class BoltConditionalCase extends SyntaxBase { - - static kind = 85; - - static parents = [ - "BoltSyntax", - "Syntax" - ]; - - constructor( - test, - body, - span = null, - ) { - super(span); - this.test = test; - this.body = body; - this.span = span - } - -} -class BoltConditionalStatement extends SyntaxBase { - - static kind = 86; - - static parents = [ - "BoltStatement", - "BoltSyntax", - "BoltFunctionBodyElement", - "BoltSourceElement", - "FunctionBodyElement", - "Syntax" - ]; - - constructor( - cases, - span = null, - ) { - super(span); - this.cases = cases; - this.span = span - } - -} -class BoltResumeStatement extends SyntaxBase { - - static kind = 87; - - static parents = [ - "BoltStatement", - "BoltSyntax", - "BoltFunctionBodyElement", - "BoltSourceElement", - "FunctionBodyElement", - "Syntax" - ]; - - constructor( - value, - span = null, - ) { - super(span); - this.value = value; - this.span = span - } - -} -class BoltExpressionStatement extends SyntaxBase { - - static kind = 88; - - static parents = [ - "BoltStatement", - "BoltSyntax", - "BoltFunctionBodyElement", - "BoltSourceElement", - "FunctionBodyElement", - "Syntax" - ]; - - constructor( - expression, - span = null, - ) { - super(span); - this.expression = expression; - this.span = span - } - -} -class BoltParameter extends SyntaxBase { - - static kind = 89; - - static parents = [ - "BoltSyntax", - "Syntax" - ]; - - constructor( - index, - bindings, - typeExpr, - defaultValue, - span = null, - ) { - super(span); - this.index = index; - this.bindings = bindings; - this.typeExpr = typeExpr; - this.defaultValue = defaultValue; - this.span = span - } - -} -class BoltModule extends SyntaxBase { - - static kind = 93; - - static parents = [ - "BoltSyntax", - "BoltSourceElement", - "Syntax" - ]; - - constructor( - modifiers, - name, - elements, - span = null, - ) { - super(span); - this.modifiers = modifiers; - this.name = name; - this.elements = elements; - this.span = span - } - -} -class BoltFunctionDeclaration extends SyntaxBase { - - static kind = 96; - - static parents = [ - "BoltFunctionBodyElement", - "BoltDeclaration", - "BoltDeclarationLike", - "BoltTraitOrImplElement", - "BoltSyntax", - "BoltSourceElement", - "FunctionBodyElement", - "Syntax" - ]; - - constructor( - modifiers, - target, - name, - params, - returnType, - typeParams, - body, - span = null, - ) { - super(span); - this.modifiers = modifiers; - this.target = target; - this.name = name; - this.params = params; - this.returnType = returnType; - this.typeParams = typeParams; - this.body = body; - this.span = span - } - -} -class BoltVariableDeclaration extends SyntaxBase { - - static kind = 97; - - static parents = [ - "BoltFunctionBodyElement", - "BoltDeclaration", - "BoltDeclarationLike", - "BoltSyntax", - "BoltSourceElement", - "FunctionBodyElement", - "Syntax" - ]; - - constructor( - modifiers, - bindings, - typeExpr, - value, - span = null, - ) { - super(span); - this.modifiers = modifiers; - this.bindings = bindings; - this.typeExpr = typeExpr; - this.value = value; - this.span = span - } - -} -class BoltPlainImportSymbol extends SyntaxBase { - - static kind = 99; - - static parents = [ - "BoltImportSymbol", - "BoltSyntax", - "Syntax" - ]; - - constructor( - remote, - local, - span = null, - ) { - super(span); - this.remote = remote; - this.local = local; - this.span = span - } - -} -class BoltImportDirective extends SyntaxBase { - - static kind = 100; - - static parents = [ - "BoltSourceElement", - "Syntax" - ]; - - constructor( - modifiers, - file, - symbols, - span = null, - ) { - super(span); - this.modifiers = modifiers; - this.file = file; - this.symbols = symbols; - this.span = span - } - -} -class BoltExportSymbol extends SyntaxBase { - - static kind = 101; - - static parents = [ - "BoltSyntax", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class BoltPlainExportSymbol extends SyntaxBase { - - static kind = 102; - - static parents = [ - "Syntax" - ]; - - constructor( - local, - remote, - span = null, - ) { - super(span); - this.local = local; - this.remote = remote; - this.span = span - } - -} -class BoltExportDirective extends SyntaxBase { - - static kind = 103; - - static parents = [ - "BoltSourceElement", - "Syntax" - ]; - - constructor( - file, - symbols, - span = null, - ) { - super(span); - this.file = file; - this.symbols = symbols; - this.span = span - } - -} -class BoltTraitDeclaration extends SyntaxBase { - - static kind = 105; - - static parents = [ - "BoltDeclarationLike", - "BoltTypeDeclaration", - "BoltSyntax", - "BoltSourceElement", - "Syntax" - ]; - - constructor( - modifiers, - typeParams, - name, - typeBoundExpr, - elements, - span = null, - ) { - super(span); - this.modifiers = modifiers; - this.typeParams = typeParams; - this.name = name; - this.typeBoundExpr = typeBoundExpr; - this.elements = elements; - this.span = span - } - -} -class BoltImplDeclaration extends SyntaxBase { - - static kind = 106; - - static parents = [ - "BoltTypeDeclaration", - "BoltDeclarationLike", - "BoltSyntax", - "BoltSourceElement", - "Syntax" - ]; - - constructor( - modifiers, - typeParams, - name, - traitTypeExpr, - elements, - span = null, - ) { - super(span); - this.modifiers = modifiers; - this.typeParams = typeParams; - this.name = name; - this.traitTypeExpr = traitTypeExpr; - this.elements = elements; - this.span = span - } - -} -class BoltTypeAliasDeclaration extends SyntaxBase { - - static kind = 107; - - static parents = [ - "BoltDeclarationLike", - "BoltTypeDeclaration", - "BoltTraitOrImplElement", - "BoltSyntax", - "BoltSourceElement", - "Syntax" - ]; - - constructor( - modifiers, - name, - typeParams, - typeExpr, - span = null, - ) { - super(span); - this.modifiers = modifiers; - this.name = name; - this.typeParams = typeParams; - this.typeExpr = typeExpr; - this.span = span - } - -} -class BoltRecordField extends SyntaxBase { - - static kind = 109; - - static parents = [ - "BoltRecordMember", - "BoltSyntax", - "Syntax" - ]; - - constructor( - name, - typeExpr, - span = null, - ) { - super(span); - this.name = name; - this.typeExpr = typeExpr; - this.span = span - } - -} -class BoltRecordDeclaration extends SyntaxBase { - - static kind = 110; - - static parents = [ - "BoltDeclaration", - "BoltTypeDeclaration", - "BoltDeclarationLike", - "BoltSyntax", - "BoltSourceElement", - "BoltSyntax", - "BoltSourceElement", - "Syntax" - ]; - - constructor( - modifiers, - name, - typeParms, - members, - span = null, - ) { - super(span); - this.modifiers = modifiers; - this.name = name; - this.typeParms = typeParms; - this.members = members; - this.span = span - } - -} -class BoltMacroCall extends SyntaxBase { - - static kind = 112; - - static parents = [ - "BoltRecordMember", - "BoltSourceElement", - "BoltTraitOrImplElement", - "BoltFunctionBodyElement", - "FunctionBodyElement", - "BoltSyntax", - "Syntax" - ]; - - constructor( - name, - text, - span = null, - ) { - super(span); - this.name = name; - this.text = text; - this.span = span - } - -} -class JSIdentifier extends SyntaxBase { - - static kind = 115; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - text, - span = null, - ) { - super(span); - this.text = text; - this.span = span - } - -} -class JSString extends SyntaxBase { - - static kind = 116; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - value, - span = null, - ) { - super(span); - this.value = value; - this.span = span - } - -} -class JSInteger extends SyntaxBase { - - static kind = 117; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - value, - span = null, - ) { - super(span); - this.value = value; - this.span = span - } - -} -class JSFromKeyword extends SyntaxBase { - - static kind = 118; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSReturnKeyword extends SyntaxBase { - - static kind = 119; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSTryKeyword extends SyntaxBase { - - static kind = 120; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSFinallyKeyword extends SyntaxBase { - - static kind = 121; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSCatchKeyword extends SyntaxBase { - - static kind = 122; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSImportKeyword extends SyntaxBase { - - static kind = 123; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSAsKeyword extends SyntaxBase { - - static kind = 124; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSConstKeyword extends SyntaxBase { - - static kind = 125; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSLetKeyword extends SyntaxBase { - - static kind = 126; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSExportKeyword extends SyntaxBase { - - static kind = 127; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSFunctionKeyword extends SyntaxBase { - - static kind = 128; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSWhileKeyword extends SyntaxBase { - - static kind = 129; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSForKeyword extends SyntaxBase { - - static kind = 130; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSOperator extends SyntaxBase { - - static kind = 132; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - text, - span = null, - ) { - super(span); - this.text = text; - this.span = span - } - -} -class JSCloseBrace extends SyntaxBase { - - static kind = 133; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSCloseBracket extends SyntaxBase { - - static kind = 134; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSCloseParen extends SyntaxBase { - - static kind = 135; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSOpenBrace extends SyntaxBase { - - static kind = 136; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSOpenBracket extends SyntaxBase { - - static kind = 137; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSOpenParen extends SyntaxBase { - - static kind = 138; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSSemi extends SyntaxBase { - - static kind = 139; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSComma extends SyntaxBase { - - static kind = 140; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSDot extends SyntaxBase { - - static kind = 141; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSDotDotDot extends SyntaxBase { - - static kind = 142; - - static parents = [ - "JSToken", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSMulOp extends SyntaxBase { - - static kind = 143; - - static parents = [ - "JSToken", - "JSOperatorLike", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSAddOp extends SyntaxBase { - - static kind = 144; - - static parents = [ - "JSToken", - "JSOperatorLike", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSDivOp extends SyntaxBase { - - static kind = 145; - - static parents = [ - "JSToken", - "JSOperatorLike", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSSubOp extends SyntaxBase { - - static kind = 146; - - static parents = [ - "JSToken", - "JSOperatorLike", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSLtOp extends SyntaxBase { - - static kind = 147; - - static parents = [ - "JSToken", - "JSOperatorLike", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSGtOp extends SyntaxBase { - - static kind = 148; - - static parents = [ - "JSToken", - "JSOperatorLike", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSBOrOp extends SyntaxBase { - - static kind = 149; - - static parents = [ - "JSToken", - "JSOperatorLike", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSBXorOp extends SyntaxBase { - - static kind = 150; - - static parents = [ - "JSToken", - "JSOperatorLike", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSBAndOp extends SyntaxBase { - - static kind = 151; - - static parents = [ - "JSToken", - "JSOperatorLike", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSBNotOp extends SyntaxBase { - - static kind = 152; - - static parents = [ - "JSToken", - "JSOperatorLike", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSNotOp extends SyntaxBase { - - static kind = 153; - - static parents = [ - "JSToken", - "JSOperatorLike", - "JSSyntax", - "Token", - "Syntax" - ]; - - constructor( - span = null, - ) { - super(span); - this.span = span - } - -} -class JSBindPattern extends SyntaxBase { - - static kind = 155; - - static parents = [ - "JSPattern", - "JSSyntax", - "Syntax" - ]; - - constructor( - name, - span = null, - ) { - super(span); - this.name = name; - this.span = span - } - -} -class JSConstantExpression extends SyntaxBase { - - static kind = 157; - - static parents = [ - "JSExpression", - "JSSyntax", - "Syntax" - ]; - - constructor( - value, - span = null, - ) { - super(span); - this.value = value; - this.span = span - } - -} -class JSMemberExpression extends SyntaxBase { - - static kind = 158; - - static parents = [ - "JSExpression", - "JSSyntax", - "Syntax" - ]; - - constructor( - value, - property, - span = null, - ) { - super(span); - this.value = value; - this.property = property; - this.span = span - } - -} -class JSCallExpression extends SyntaxBase { - - static kind = 159; - - static parents = [ - "JSExpression", - "JSSyntax", - "Syntax" - ]; - - constructor( - operator, - operands, - span = null, - ) { - super(span); - this.operator = operator; - this.operands = operands; - this.span = span - } - -} -class JSBinaryExpression extends SyntaxBase { - - static kind = 160; - - static parents = [ - "JSExpression", - "JSSyntax", - "Syntax" - ]; - - constructor( - left, - operator, - right, - span = null, - ) { - super(span); - this.left = left; - this.operator = operator; - this.right = right; - this.span = span - } - -} -class JSUnaryExpression extends SyntaxBase { - - static kind = 161; - - static parents = [ - "JSExpression", - "JSSyntax", - "Syntax" - ]; - - constructor( - operator, - operand, - span = null, - ) { - super(span); - this.operator = operator; - this.operand = operand; - this.span = span - } - -} -class JSNewExpression extends SyntaxBase { - - static kind = 162; - - static parents = [ - "JSExpression", - "JSSyntax", - "Syntax" - ]; - - constructor( - target, - args, - span = null, - ) { - super(span); - this.target = target; - this.args = args; - this.span = span - } - -} -class JSSequenceExpression extends SyntaxBase { - - static kind = 163; - - static parents = [ - "JSExpression", - "JSSyntax", - "Syntax" - ]; - - constructor( - expressions, - span = null, - ) { - super(span); - this.expressions = expressions; - this.span = span - } - -} -class JSConditionalExpression extends SyntaxBase { - - static kind = 164; - - static parents = [ - "JSExpression", - "JSSyntax", - "Syntax" - ]; - - constructor( - test, - consequent, - alternate, - span = null, - ) { - super(span); - this.test = test; - this.consequent = consequent; - this.alternate = alternate; - this.span = span - } - -} -class JSLiteralExpression extends SyntaxBase { - - static kind = 165; - - static parents = [ - "JSExpression", - "JSSyntax", - "Syntax" - ]; - - constructor( - value, - span = null, - ) { - super(span); - this.value = value; - this.span = span - } - -} -class JSReferenceExpression extends SyntaxBase { - - static kind = 166; - - static parents = [ - "JSExpression", - "JSSyntax", - "Syntax" - ]; - - constructor( - name, - span = null, - ) { - super(span); - this.name = name; - this.span = span - } - -} -class JSCatchBlock extends SyntaxBase { - - static kind = 170; - - static parents = [ - "JSSyntax", - "Syntax" - ]; - - constructor( - bindings, - elements, - span = null, - ) { - super(span); - this.bindings = bindings; - this.elements = elements; - this.span = span - } - -} -class JSTryCatchStatement extends SyntaxBase { - - static kind = 171; - - static parents = [ - "JSSyntax", - "Syntax" - ]; - - constructor( - tryBlock, - catchBlock, - finalBlock, - span = null, - ) { - super(span); - this.tryBlock = tryBlock; - this.catchBlock = catchBlock; - this.finalBlock = finalBlock; - this.span = span - } - -} -class JSExpressionStatement extends SyntaxBase { - - static kind = 172; - - static parents = [ - "JSStatement", - "JSSyntax", - "JSSourceElement", - "JSFunctionBodyElement", - "FunctionBodyElement", - "Syntax" - ]; - - constructor( - expression, - span = null, - ) { - super(span); - this.expression = expression; - this.span = span - } - -} -class JSConditionalCase extends SyntaxBase { - - static kind = 173; - - static parents = [ - "JSSyntax", - "Syntax" - ]; - - constructor( - test, - body, - span = null, - ) { - super(span); - this.test = test; - this.body = body; - this.span = span - } - -} -class JSConditionalStatement extends SyntaxBase { - - static kind = 174; - - static parents = [ - "JSStatement", - "JSSyntax", - "JSSourceElement", - "JSFunctionBodyElement", - "FunctionBodyElement", - "Syntax" - ]; - - constructor( - cases, - span = null, - ) { - super(span); - this.cases = cases; - this.span = span - } - -} -class JSReturnStatement extends SyntaxBase { - - static kind = 175; - - static parents = [ - "ReturnStatement", - "JSStatement", - "JSSyntax", - "JSSourceElement", - "JSFunctionBodyElement", - "FunctionBodyElement", - "Syntax" - ]; - - constructor( - value, - span = null, - ) { - super(span); - this.value = value; - this.span = span - } - -} -class JSParameter extends SyntaxBase { - - static kind = 176; - - static parents = [ - "JSSyntax", - "Syntax" - ]; - - constructor( - index, - bindings, - defaultValue, - span = null, - ) { - super(span); - this.index = index; - this.bindings = bindings; - this.defaultValue = defaultValue; - this.span = span - } - -} -class JSImportStarBinding extends SyntaxBase { - - static kind = 180; - - static parents = [ - "JSImportBinding", - "JSSyntax", - "Syntax" - ]; - - constructor( - local, - span = null, - ) { - super(span); - this.local = local; - this.span = span - } - -} -class JSImportAsBinding extends SyntaxBase { - - static kind = 181; - - static parents = [ - "JSImportBinding", - "JSSyntax", - "Syntax" - ]; - - constructor( - remote, - local, - span = null, - ) { - super(span); - this.remote = remote; - this.local = local; - this.span = span - } - -} -class JSImportDeclaration extends SyntaxBase { - - static kind = 182; - - static parents = [ - "JSDeclaration", - "JSSyntax", - "JSSourceElement", - "Syntax" - ]; - - constructor( - bindings, - filename, - span = null, - ) { - super(span); - this.bindings = bindings; - this.filename = filename; - this.span = span - } - -} -class JSFunctionDeclaration extends SyntaxBase { - - static kind = 183; - - static parents = [ - "JSDeclaration", - "JSFunctionBodyElement", - "FunctionBodyElement", - "JSSyntax", - "JSSourceElement", - "Syntax" - ]; - - constructor( - modifiers, - name, - params, - body, - span = null, - ) { - super(span); - this.modifiers = modifiers; - this.name = name; - this.params = params; - this.body = body; - this.span = span - } - -} -class JSArrowFunctionDeclaration extends SyntaxBase { - - static kind = 184; - - static parents = [ - "JSDeclaration", - "JSFunctionBodyElement", - "FunctionBodyElement", - "JSSyntax", - "JSSourceElement", - "Syntax" - ]; - - constructor( - name, - params, - body, - span = null, - ) { - super(span); - this.name = name; - this.params = params; - this.body = body; - this.span = span - } - -} -class JSLetDeclaration extends SyntaxBase { - - static kind = 185; - - static parents = [ - "JSDeclaration", - "JSFunctionBodyElement", - "FunctionBodyElement", - "JSSyntax", - "JSSourceElement", - "Syntax" - ]; - - constructor( - bindings, - value, - span = null, - ) { - super(span); - this.bindings = bindings; - this.value = value; - this.span = span - } - -} -class JSSourceFile extends SyntaxBase { - - static kind = 186; - - static parents = [ - "JSSyntax", - "SourceFile", - "Syntax" - ]; - - constructor( - elements, - span = null, - ) { - super(span); - this.elements = elements; - this.span = span - } - -} -const NODE_CLASSES = { - EndOfFile, - BoltStringLiteral, - BoltIntegerLiteral, - BoltIdentifier, - BoltOperator, - BoltAssignment, - BoltComma, - BoltSemi, - BoltColon, - BoltColonColon, - BoltDot, - BoltDotDot, - BoltRArrow, - BoltRArrowAlt, - BoltLArrow, - BoltEqSign, - BoltGtSign, - BoltExMark, - BoltLtSign, - BoltVBar, - BoltWhereKeyword, - BoltQuoteKeyword, - BoltFnKeyword, - BoltForeignKeyword, - BoltForKeyword, - BoltLetKeyword, - BoltReturnKeyword, - BoltLoopKeyword, - BoltYieldKeyword, - BoltMatchKeyword, - BoltImportKeyword, - BoltExportKeyword, - BoltPubKeyword, - BoltModKeyword, - BoltMutKeyword, - BoltEnumKeyword, - BoltStructKeyword, - BoltTypeKeyword, - BoltTraitKeyword, - BoltImplKeyword, - BoltParenthesized, - BoltBraced, - BoltBracketed, - BoltSourceFile, - BoltQualName, - BoltTypeOfExpression, - BoltReferenceTypeExpression, - BoltFunctionTypeExpression, - BoltLiftedTypeExpression, - BoltTypeParameter, - BoltBindPattern, - BoltTypePattern, - BoltExpressionPattern, - BoltTuplePatternElement, - BoltTuplePattern, - BoltRecordFieldPattern, - BoltRecordPattern, - BoltQuoteExpression, - BoltTupleExpression, - BoltReferenceExpression, - BoltMemberExpression, - BoltFunctionExpression, - BoltCallExpression, - BoltYieldExpression, - BoltMatchArm, - BoltMatchExpression, - BoltCase, - BoltCaseExpression, - BoltBlockExpression, - BoltConstantExpression, - BoltReturnStatement, - BoltConditionalCase, - BoltConditionalStatement, - BoltResumeStatement, - BoltExpressionStatement, - BoltParameter, - BoltModule, - BoltFunctionDeclaration, - BoltVariableDeclaration, - BoltPlainImportSymbol, - BoltImportDirective, - BoltExportSymbol, - BoltPlainExportSymbol, - BoltExportDirective, - BoltTraitDeclaration, - BoltImplDeclaration, - BoltTypeAliasDeclaration, - BoltRecordField, - BoltRecordDeclaration, - BoltMacroCall, - JSIdentifier, - JSString, - JSInteger, - JSFromKeyword, - JSReturnKeyword, - JSTryKeyword, - JSFinallyKeyword, - JSCatchKeyword, - JSImportKeyword, - JSAsKeyword, - JSConstKeyword, - JSLetKeyword, - JSExportKeyword, - JSFunctionKeyword, - JSWhileKeyword, - JSForKeyword, - JSOperator, - JSCloseBrace, - JSCloseBracket, - JSCloseParen, - JSOpenBrace, - JSOpenBracket, - JSOpenParen, - JSSemi, - JSComma, - JSDot, - JSDotDotDot, - JSMulOp, - JSAddOp, - JSDivOp, - JSSubOp, - JSLtOp, - JSGtOp, - JSBOrOp, - JSBXorOp, - JSBAndOp, - JSBNotOp, - JSNotOp, - JSBindPattern, - JSConstantExpression, - JSMemberExpression, - JSCallExpression, - JSBinaryExpression, - JSUnaryExpression, - JSNewExpression, - JSSequenceExpression, - JSConditionalExpression, - JSLiteralExpression, - JSReferenceExpression, - JSCatchBlock, - JSTryCatchStatement, - JSExpressionStatement, - JSConditionalCase, - JSConditionalStatement, - JSReturnStatement, - JSParameter, - JSImportStarBinding, - JSImportAsBinding, - JSImportDeclaration, - JSFunctionDeclaration, - JSArrowFunctionDeclaration, - JSLetDeclaration, - JSSourceFile, -} - -export function kindToString (kind) { - switch (kind) { - case 0: return 'EndOfFile'; - case 7: return 'BoltStringLiteral'; - case 8: return 'BoltIntegerLiteral'; - case 10: return 'BoltIdentifier'; - case 12: return 'BoltOperator'; - case 13: return 'BoltAssignment'; - case 14: return 'BoltComma'; - case 15: return 'BoltSemi'; - case 16: return 'BoltColon'; - case 17: return 'BoltColonColon'; - case 18: return 'BoltDot'; - case 19: return 'BoltDotDot'; - case 20: return 'BoltRArrow'; - case 21: return 'BoltRArrowAlt'; - case 22: return 'BoltLArrow'; - case 23: return 'BoltEqSign'; - case 24: return 'BoltGtSign'; - case 25: return 'BoltExMark'; - case 26: return 'BoltLtSign'; - case 27: return 'BoltVBar'; - case 29: return 'BoltWhereKeyword'; - case 30: return 'BoltQuoteKeyword'; - case 31: return 'BoltFnKeyword'; - case 32: return 'BoltForeignKeyword'; - case 33: return 'BoltForKeyword'; - case 34: return 'BoltLetKeyword'; - case 35: return 'BoltReturnKeyword'; - case 36: return 'BoltLoopKeyword'; - case 37: return 'BoltYieldKeyword'; - case 38: return 'BoltMatchKeyword'; - case 39: return 'BoltImportKeyword'; - case 40: return 'BoltExportKeyword'; - case 41: return 'BoltPubKeyword'; - case 42: return 'BoltModKeyword'; - case 43: return 'BoltMutKeyword'; - case 44: return 'BoltEnumKeyword'; - case 45: return 'BoltStructKeyword'; - case 46: return 'BoltTypeKeyword'; - case 47: return 'BoltTraitKeyword'; - case 48: return 'BoltImplKeyword'; - case 50: return 'BoltParenthesized'; - case 51: return 'BoltBraced'; - case 52: return 'BoltBracketed'; - case 53: return 'BoltSourceFile'; - case 54: return 'BoltQualName'; - case 56: return 'BoltTypeOfExpression'; - case 57: return 'BoltReferenceTypeExpression'; - case 58: return 'BoltFunctionTypeExpression'; - case 59: return 'BoltLiftedTypeExpression'; - case 60: return 'BoltTypeParameter'; - case 62: return 'BoltBindPattern'; - case 63: return 'BoltTypePattern'; - case 64: return 'BoltExpressionPattern'; - case 65: return 'BoltTuplePatternElement'; - case 66: return 'BoltTuplePattern'; - case 67: return 'BoltRecordFieldPattern'; - case 68: return 'BoltRecordPattern'; - case 70: return 'BoltQuoteExpression'; - case 71: return 'BoltTupleExpression'; - case 72: return 'BoltReferenceExpression'; - case 73: return 'BoltMemberExpression'; - case 74: return 'BoltFunctionExpression'; - case 75: return 'BoltCallExpression'; - case 76: return 'BoltYieldExpression'; - case 77: return 'BoltMatchArm'; - case 78: return 'BoltMatchExpression'; - case 79: return 'BoltCase'; - case 80: return 'BoltCaseExpression'; - case 81: return 'BoltBlockExpression'; - case 82: return 'BoltConstantExpression'; - case 84: return 'BoltReturnStatement'; - case 85: return 'BoltConditionalCase'; - case 86: return 'BoltConditionalStatement'; - case 87: return 'BoltResumeStatement'; - case 88: return 'BoltExpressionStatement'; - case 89: return 'BoltParameter'; - case 93: return 'BoltModule'; - case 96: return 'BoltFunctionDeclaration'; - case 97: return 'BoltVariableDeclaration'; - case 99: return 'BoltPlainImportSymbol'; - case 100: return 'BoltImportDirective'; - case 101: return 'BoltExportSymbol'; - case 102: return 'BoltPlainExportSymbol'; - case 103: return 'BoltExportDirective'; - case 105: return 'BoltTraitDeclaration'; - case 106: return 'BoltImplDeclaration'; - case 107: return 'BoltTypeAliasDeclaration'; - case 109: return 'BoltRecordField'; - case 110: return 'BoltRecordDeclaration'; - case 112: return 'BoltMacroCall'; - case 115: return 'JSIdentifier'; - case 116: return 'JSString'; - case 117: return 'JSInteger'; - case 118: return 'JSFromKeyword'; - case 119: return 'JSReturnKeyword'; - case 120: return 'JSTryKeyword'; - case 121: return 'JSFinallyKeyword'; - case 122: return 'JSCatchKeyword'; - case 123: return 'JSImportKeyword'; - case 124: return 'JSAsKeyword'; - case 125: return 'JSConstKeyword'; - case 126: return 'JSLetKeyword'; - case 127: return 'JSExportKeyword'; - case 128: return 'JSFunctionKeyword'; - case 129: return 'JSWhileKeyword'; - case 130: return 'JSForKeyword'; - case 132: return 'JSOperator'; - case 133: return 'JSCloseBrace'; - case 134: return 'JSCloseBracket'; - case 135: return 'JSCloseParen'; - case 136: return 'JSOpenBrace'; - case 137: return 'JSOpenBracket'; - case 138: return 'JSOpenParen'; - case 139: return 'JSSemi'; - case 140: return 'JSComma'; - case 141: return 'JSDot'; - case 142: return 'JSDotDotDot'; - case 143: return 'JSMulOp'; - case 144: return 'JSAddOp'; - case 145: return 'JSDivOp'; - case 146: return 'JSSubOp'; - case 147: return 'JSLtOp'; - case 148: return 'JSGtOp'; - case 149: return 'JSBOrOp'; - case 150: return 'JSBXorOp'; - case 151: return 'JSBAndOp'; - case 152: return 'JSBNotOp'; - case 153: return 'JSNotOp'; - case 155: return 'JSBindPattern'; - case 157: return 'JSConstantExpression'; - case 158: return 'JSMemberExpression'; - case 159: return 'JSCallExpression'; - case 160: return 'JSBinaryExpression'; - case 161: return 'JSUnaryExpression'; - case 162: return 'JSNewExpression'; - case 163: return 'JSSequenceExpression'; - case 164: return 'JSConditionalExpression'; - case 165: return 'JSLiteralExpression'; - case 166: return 'JSReferenceExpression'; - case 170: return 'JSCatchBlock'; - case 171: return 'JSTryCatchStatement'; - case 172: return 'JSExpressionStatement'; - case 173: return 'JSConditionalCase'; - case 174: return 'JSConditionalStatement'; - case 175: return 'JSReturnStatement'; - case 176: return 'JSParameter'; - case 180: return 'JSImportStarBinding'; - case 181: return 'JSImportAsBinding'; - case 182: return 'JSImportDeclaration'; - case 183: return 'JSFunctionDeclaration'; - case 184: return 'JSArrowFunctionDeclaration'; - case 185: return 'JSLetDeclaration'; - case 186: return 'JSSourceFile'; - } -} - -export function isEndOfFile(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 0; -} -export function isToken(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 0 || value.kind === 115 || value.kind === 116 || value.kind === 117 || value.kind === 118 || value.kind === 119 || value.kind === 120 || value.kind === 121 || value.kind === 122 || value.kind === 123 || value.kind === 124 || value.kind === 125 || value.kind === 126 || value.kind === 127 || value.kind === 128 || value.kind === 129 || value.kind === 130 || value.kind === 132 || value.kind === 133 || value.kind === 134 || value.kind === 135 || value.kind === 136 || value.kind === 137 || value.kind === 138 || value.kind === 139 || value.kind === 140 || value.kind === 141 || value.kind === 142 || value.kind === 143 || value.kind === 144 || value.kind === 145 || value.kind === 146 || value.kind === 147 || value.kind === 148 || value.kind === 149 || value.kind === 150 || value.kind === 151 || value.kind === 152 || value.kind === 153 || value.kind === 0 || value.kind === 7 || value.kind === 8 || value.kind === 13 || value.kind === 14 || value.kind === 15 || value.kind === 16 || value.kind === 17 || value.kind === 18 || value.kind === 19 || value.kind === 20 || value.kind === 21 || value.kind === 22 || value.kind === 23 || value.kind === 24 || value.kind === 25 || value.kind === 26 || value.kind === 27 || value.kind === 29 || value.kind === 30 || value.kind === 31 || value.kind === 32 || value.kind === 33 || value.kind === 34 || value.kind === 35 || value.kind === 36 || value.kind === 37 || value.kind === 38 || value.kind === 39 || value.kind === 40 || value.kind === 41 || value.kind === 42 || value.kind === 43 || value.kind === 44 || value.kind === 45 || value.kind === 46 || value.kind === 47 || value.kind === 48 || value.kind === 50 || value.kind === 51 || value.kind === 52 || value.kind === 10 || value.kind === 12 || value.kind === 24 || value.kind === 25 || value.kind === 26 || value.kind === 27 -} -export function isSourceFile(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 53 || value.kind === 186 -} -export function isFunctionBodyElement(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 183 || value.kind === 184 || value.kind === 185 || value.kind === 172 || value.kind === 174 || value.kind === 175 || value.kind === 96 || value.kind === 97 || value.kind === 112 || value.kind === 84 || value.kind === 86 || value.kind === 87 || value.kind === 88 -} -export function isReturnStatement(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 84 || value.kind === 175 -} -export function isBoltSyntax(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 53 || value.kind === 54 || value.kind === 60 || value.kind === 65 || value.kind === 67 || value.kind === 77 || value.kind === 79 || value.kind === 85 || value.kind === 89 || value.kind === 93 || value.kind === 101 || value.kind === 109 || value.kind === 112 || value.kind === 99 || value.kind === 105 || value.kind === 106 || value.kind === 107 || value.kind === 110 || value.kind === 96 || value.kind === 97 || value.kind === 110 || value.kind === 84 || value.kind === 86 || value.kind === 87 || value.kind === 88 || value.kind === 70 || value.kind === 71 || value.kind === 72 || value.kind === 73 || value.kind === 74 || value.kind === 75 || value.kind === 76 || value.kind === 78 || value.kind === 80 || value.kind === 81 || value.kind === 82 || value.kind === 62 || value.kind === 63 || value.kind === 64 || value.kind === 66 || value.kind === 68 || value.kind === 56 || value.kind === 57 || value.kind === 58 || value.kind === 59 || value.kind === 0 || value.kind === 7 || value.kind === 8 || value.kind === 13 || value.kind === 14 || value.kind === 15 || value.kind === 16 || value.kind === 17 || value.kind === 18 || value.kind === 19 || value.kind === 20 || value.kind === 21 || value.kind === 22 || value.kind === 23 || value.kind === 24 || value.kind === 25 || value.kind === 26 || value.kind === 27 || value.kind === 29 || value.kind === 30 || value.kind === 31 || value.kind === 32 || value.kind === 33 || value.kind === 34 || value.kind === 35 || value.kind === 36 || value.kind === 37 || value.kind === 38 || value.kind === 39 || value.kind === 40 || value.kind === 41 || value.kind === 42 || value.kind === 43 || value.kind === 44 || value.kind === 45 || value.kind === 46 || value.kind === 47 || value.kind === 48 || value.kind === 50 || value.kind === 51 || value.kind === 52 || value.kind === 10 || value.kind === 12 || value.kind === 24 || value.kind === 25 || value.kind === 26 || value.kind === 27 -} -export function isBoltToken(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 0 || value.kind === 7 || value.kind === 8 || value.kind === 13 || value.kind === 14 || value.kind === 15 || value.kind === 16 || value.kind === 17 || value.kind === 18 || value.kind === 19 || value.kind === 20 || value.kind === 21 || value.kind === 22 || value.kind === 23 || value.kind === 24 || value.kind === 25 || value.kind === 26 || value.kind === 27 || value.kind === 29 || value.kind === 30 || value.kind === 31 || value.kind === 32 || value.kind === 33 || value.kind === 34 || value.kind === 35 || value.kind === 36 || value.kind === 37 || value.kind === 38 || value.kind === 39 || value.kind === 40 || value.kind === 41 || value.kind === 42 || value.kind === 43 || value.kind === 44 || value.kind === 45 || value.kind === 46 || value.kind === 47 || value.kind === 48 || value.kind === 50 || value.kind === 51 || value.kind === 52 || value.kind === 10 || value.kind === 12 || value.kind === 24 || value.kind === 25 || value.kind === 26 || value.kind === 27 -} -export function isBoltStringLiteral(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 7; -} -export function isBoltIntegerLiteral(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 8; -} -export function isBoltSymbol(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 10 || value.kind === 12 || value.kind === 24 || value.kind === 25 || value.kind === 26 || value.kind === 27 -} -export function isBoltIdentifier(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 10; -} -export function isBoltOperatorLike(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 24 || value.kind === 25 || value.kind === 26 || value.kind === 27 -} -export function isBoltOperator(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 12; -} -export function isBoltAssignment(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 13; -} -export function isBoltComma(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 14; -} -export function isBoltSemi(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 15; -} -export function isBoltColon(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 16; -} -export function isBoltColonColon(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 17; -} -export function isBoltDot(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 18; -} -export function isBoltDotDot(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 19; -} -export function isBoltRArrow(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 20; -} -export function isBoltRArrowAlt(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 21; -} -export function isBoltLArrow(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 22; -} -export function isBoltEqSign(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 23; -} -export function isBoltGtSign(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 24; -} -export function isBoltExMark(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 25; -} -export function isBoltLtSign(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 26; -} -export function isBoltVBar(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 27; -} -export function isBoltKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 29 || value.kind === 30 || value.kind === 31 || value.kind === 32 || value.kind === 33 || value.kind === 34 || value.kind === 35 || value.kind === 36 || value.kind === 37 || value.kind === 38 || value.kind === 39 || value.kind === 40 || value.kind === 41 || value.kind === 42 || value.kind === 43 || value.kind === 44 || value.kind === 45 || value.kind === 46 || value.kind === 47 || value.kind === 48 -} -export function isBoltWhereKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 29; -} -export function isBoltQuoteKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 30; -} -export function isBoltFnKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 31; -} -export function isBoltForeignKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 32; -} -export function isBoltForKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 33; -} -export function isBoltLetKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 34; -} -export function isBoltReturnKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 35; -} -export function isBoltLoopKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 36; -} -export function isBoltYieldKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 37; -} -export function isBoltMatchKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 38; -} -export function isBoltImportKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 39; -} -export function isBoltExportKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 40; -} -export function isBoltPubKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 41; -} -export function isBoltModKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 42; -} -export function isBoltMutKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 43; -} -export function isBoltEnumKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 44; -} -export function isBoltStructKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 45; -} -export function isBoltTypeKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 46; -} -export function isBoltTraitKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 47; -} -export function isBoltImplKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 48; -} -export function isBoltPunctuated(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 50 || value.kind === 51 || value.kind === 52 -} -export function isBoltParenthesized(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 50; -} -export function isBoltBraced(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 51; -} -export function isBoltBracketed(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 52; -} -export function isBoltSourceFile(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 53; -} -export function isBoltQualName(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 54; -} -export function isBoltTypeExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 56 || value.kind === 57 || value.kind === 58 || value.kind === 59 -} -export function isBoltTypeOfExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 56; -} -export function isBoltReferenceTypeExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 57; -} -export function isBoltFunctionTypeExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 58; -} -export function isBoltLiftedTypeExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 59; -} -export function isBoltTypeParameter(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 60; -} -export function isBoltPattern(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 62 || value.kind === 63 || value.kind === 64 || value.kind === 66 || value.kind === 68 -} -export function isBoltBindPattern(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 62; -} -export function isBoltTypePattern(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 63; -} -export function isBoltExpressionPattern(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 64; -} -export function isBoltTuplePatternElement(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 65; -} -export function isBoltTuplePattern(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 66; -} -export function isBoltRecordFieldPattern(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 67; -} -export function isBoltRecordPattern(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 68; -} -export function isBoltExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 70 || value.kind === 71 || value.kind === 72 || value.kind === 73 || value.kind === 74 || value.kind === 75 || value.kind === 76 || value.kind === 78 || value.kind === 80 || value.kind === 81 || value.kind === 82 -} -export function isBoltQuoteExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 70; -} -export function isBoltTupleExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 71; -} -export function isBoltReferenceExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 72; -} -export function isBoltMemberExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 73; -} -export function isBoltFunctionExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 74; -} -export function isBoltCallExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 75; -} -export function isBoltYieldExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 76; -} -export function isBoltMatchArm(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 77; -} -export function isBoltMatchExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 78; -} -export function isBoltCase(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 79; -} -export function isBoltCaseExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 80; -} -export function isBoltBlockExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 81; -} -export function isBoltConstantExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 82; -} -export function isBoltStatement(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 84 || value.kind === 86 || value.kind === 87 || value.kind === 88 -} -export function isBoltReturnStatement(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 84; -} -export function isBoltConditionalCase(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 85; -} -export function isBoltConditionalStatement(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 86; -} -export function isBoltResumeStatement(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 87; -} -export function isBoltExpressionStatement(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 88; -} -export function isBoltParameter(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 89; -} -export function isBoltDeclaration(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 96 || value.kind === 97 || value.kind === 110 -} -export function isBoltTypeDeclaration(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 105 || value.kind === 106 || value.kind === 107 || value.kind === 110 -} -export function isBoltModule(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 93; -} -export function isBoltDeclarationLike(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 96 || value.kind === 97 || value.kind === 105 || value.kind === 106 || value.kind === 107 || value.kind === 110 -} -export function isBoltFunctionBodyElement(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 96 || value.kind === 97 || value.kind === 112 || value.kind === 84 || value.kind === 86 || value.kind === 87 || value.kind === 88 -} -export function isBoltFunctionDeclaration(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 96; -} -export function isBoltVariableDeclaration(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 97; -} -export function isBoltImportSymbol(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 99 -} -export function isBoltPlainImportSymbol(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 99; -} -export function isBoltImportDirective(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 100; -} -export function isBoltExportSymbol(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 101; -} -export function isBoltPlainExportSymbol(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 102; -} -export function isBoltExportDirective(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 103; -} -export function isBoltTraitOrImplElement(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 96 || value.kind === 107 || value.kind === 112 -} -export function isBoltTraitDeclaration(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 105; -} -export function isBoltImplDeclaration(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 106; -} -export function isBoltTypeAliasDeclaration(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 107; -} -export function isBoltRecordMember(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 109 || value.kind === 112 -} -export function isBoltRecordField(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 109; -} -export function isBoltRecordDeclaration(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 110; -} -export function isBoltSourceElement(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 93 || value.kind === 100 || value.kind === 103 || value.kind === 112 || value.kind === 105 || value.kind === 106 || value.kind === 107 || value.kind === 110 || value.kind === 96 || value.kind === 97 || value.kind === 110 || value.kind === 84 || value.kind === 86 || value.kind === 87 || value.kind === 88 -} -export function isBoltMacroCall(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 112; -} -export function isJSSyntax(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 170 || value.kind === 171 || value.kind === 173 || value.kind === 176 || value.kind === 186 || value.kind === 180 || value.kind === 181 || value.kind === 182 || value.kind === 183 || value.kind === 184 || value.kind === 185 || value.kind === 172 || value.kind === 174 || value.kind === 175 || value.kind === 157 || value.kind === 158 || value.kind === 159 || value.kind === 160 || value.kind === 161 || value.kind === 162 || value.kind === 163 || value.kind === 164 || value.kind === 165 || value.kind === 166 || value.kind === 155 || value.kind === 0 || value.kind === 115 || value.kind === 116 || value.kind === 117 || value.kind === 118 || value.kind === 119 || value.kind === 120 || value.kind === 121 || value.kind === 122 || value.kind === 123 || value.kind === 124 || value.kind === 125 || value.kind === 126 || value.kind === 127 || value.kind === 128 || value.kind === 129 || value.kind === 130 || value.kind === 132 || value.kind === 133 || value.kind === 134 || value.kind === 135 || value.kind === 136 || value.kind === 137 || value.kind === 138 || value.kind === 139 || value.kind === 140 || value.kind === 141 || value.kind === 142 || value.kind === 143 || value.kind === 144 || value.kind === 145 || value.kind === 146 || value.kind === 147 || value.kind === 148 || value.kind === 149 || value.kind === 150 || value.kind === 151 || value.kind === 152 || value.kind === 153 -} -export function isJSToken(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 0 || value.kind === 115 || value.kind === 116 || value.kind === 117 || value.kind === 118 || value.kind === 119 || value.kind === 120 || value.kind === 121 || value.kind === 122 || value.kind === 123 || value.kind === 124 || value.kind === 125 || value.kind === 126 || value.kind === 127 || value.kind === 128 || value.kind === 129 || value.kind === 130 || value.kind === 132 || value.kind === 133 || value.kind === 134 || value.kind === 135 || value.kind === 136 || value.kind === 137 || value.kind === 138 || value.kind === 139 || value.kind === 140 || value.kind === 141 || value.kind === 142 || value.kind === 143 || value.kind === 144 || value.kind === 145 || value.kind === 146 || value.kind === 147 || value.kind === 148 || value.kind === 149 || value.kind === 150 || value.kind === 151 || value.kind === 152 || value.kind === 153 -} -export function isJSIdentifier(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 115; -} -export function isJSString(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 116; -} -export function isJSInteger(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 117; -} -export function isJSFromKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 118; -} -export function isJSReturnKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 119; -} -export function isJSTryKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 120; -} -export function isJSFinallyKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 121; -} -export function isJSCatchKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 122; -} -export function isJSImportKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 123; -} -export function isJSAsKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 124; -} -export function isJSConstKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 125; -} -export function isJSLetKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 126; -} -export function isJSExportKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 127; -} -export function isJSFunctionKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 128; -} -export function isJSWhileKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 129; -} -export function isJSForKeyword(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 130; -} -export function isJSOperatorLike(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 143 || value.kind === 144 || value.kind === 145 || value.kind === 146 || value.kind === 147 || value.kind === 148 || value.kind === 149 || value.kind === 150 || value.kind === 151 || value.kind === 152 || value.kind === 153 -} -export function isJSOperator(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 132; -} -export function isJSCloseBrace(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 133; -} -export function isJSCloseBracket(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 134; -} -export function isJSCloseParen(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 135; -} -export function isJSOpenBrace(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 136; -} -export function isJSOpenBracket(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 137; -} -export function isJSOpenParen(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 138; -} -export function isJSSemi(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 139; -} -export function isJSComma(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 140; -} -export function isJSDot(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 141; -} -export function isJSDotDotDot(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 142; -} -export function isJSMulOp(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 143; -} -export function isJSAddOp(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 144; -} -export function isJSDivOp(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 145; -} -export function isJSSubOp(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 146; -} -export function isJSLtOp(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 147; -} -export function isJSGtOp(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 148; -} -export function isJSBOrOp(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 149; -} -export function isJSBXorOp(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 150; -} -export function isJSBAndOp(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 151; -} -export function isJSBNotOp(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 152; -} -export function isJSNotOp(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 153; -} -export function isJSPattern(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 155 -} -export function isJSBindPattern(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 155; -} -export function isJSExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 157 || value.kind === 158 || value.kind === 159 || value.kind === 160 || value.kind === 161 || value.kind === 162 || value.kind === 163 || value.kind === 164 || value.kind === 165 || value.kind === 166 -} -export function isJSConstantExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 157; -} -export function isJSMemberExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 158; -} -export function isJSCallExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 159; -} -export function isJSBinaryExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 160; -} -export function isJSUnaryExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 161; -} -export function isJSNewExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 162; -} -export function isJSSequenceExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 163; -} -export function isJSConditionalExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 164; -} -export function isJSLiteralExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 165; -} -export function isJSReferenceExpression(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 166; -} -export function isJSSourceElement(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 182 || value.kind === 183 || value.kind === 184 || value.kind === 185 || value.kind === 172 || value.kind === 174 || value.kind === 175 -} -export function isJSFunctionBodyElement(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 183 || value.kind === 184 || value.kind === 185 || value.kind === 172 || value.kind === 174 || value.kind === 175 -} -export function isJSStatement(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 172 || value.kind === 174 || value.kind === 175 -} -export function isJSCatchBlock(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 170; -} -export function isJSTryCatchStatement(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 171; -} -export function isJSExpressionStatement(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 172; -} -export function isJSConditionalCase(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 173; -} -export function isJSConditionalStatement(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 174; -} -export function isJSReturnStatement(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 175; -} -export function isJSParameter(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 176; -} -export function isJSDeclaration(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 182 || value.kind === 183 || value.kind === 184 || value.kind === 185 -} -export function isJSImportBinding(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 180 || value.kind === 181 -} -export function isJSImportStarBinding(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 180; -} -export function isJSImportAsBinding(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 181; -} -export function isJSImportDeclaration(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 182; -} -export function isJSFunctionDeclaration(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 183; -} -export function isJSArrowFunctionDeclaration(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 184; -} -export function isJSLetDeclaration(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 185; -} -export function isJSSourceFile(value) { - if (!isSyntax(value)) { - return false; - } - return value.kind === 186; -} diff --git a/src/ast.ts b/src/ast.ts new file mode 100644 index 000000000..dd3d065a2 --- /dev/null +++ b/src/ast.ts @@ -0,0 +1,2937 @@ +import { Type } from "./types"; + +import { TextSpan } from "./text"; + +import { Value } from "./evaluator"; + +import { Package } from "./package"; + +import { Diagnostic } from "./diagnostics"; + +let nextNodeId = 1; + +export type ResolveSyntaxKind = Extract; + +export abstract class SyntaxBase { + public id: number; + public type?: Type; + public errors: Diagnostic[] = []; + public abstract kind: SyntaxKind; + public abstract parentNode: Syntax | null = null; + public abstract getChildNodes(): IterableIterator; + constructor(public span: TextSpan | null = null) { + this.id = nextNodeId++; + } + *preorder() { + const stack: Syntax[] = [this as unknown as Syntax]; + while (stack.length > 0) { + const node = stack.pop()!; + yield node; + for (const childNode of node.getChildNodes()) { + stack.push(childNode); + } + } + } + mayContainKind(kind: SyntaxKind) { + // TODO + return true; + } + getParentOfKind(kind: SyntaxKind) { + let currNode = this.parentNode; + while (currNode !== null) { + if (currNode.kind === kind) { + return currNode; + } + currNode = currNode.parentNode; + } + return null; + } + *findAllChildrenOfKind(kind: K): IterableIterator> { + for (const node of this.preorder()) { + if (!node.mayContainKind(kind)) { + break; + } + if (node.kind === kind) { + yield node as ResolveSyntaxKind; + } + } + } +} + +export function setParents(node: Syntax, parentNode: Syntax | null = null) { + // NOTE We cast to any here because TypeScript does not like this complex assignment + node.parentNode = parentNode as any; + for (const child of node.getChildNodes()) { + setParents(child, node); + } +} + +export enum BoltModifiers { + IsMutable = 0x1, + IsPublic = 0x2 +} + +export enum JSDeclarationModifiers { + IsExported = 0x1 +} + + + +export class EndOfFile extends SyntaxBase { + parentNode: null | EndOfFileParent = null; + kind: SyntaxKind.EndOfFile = SyntaxKind.EndOfFile; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type EndOfFileParent = never; + +type EndOfFileChild = never; + +export type Token = JSNotOp | JSBNotOp | JSBAndOp | JSBXorOp | JSBOrOp | JSGtOp | JSLtOp | JSSubOp | JSDivOp | JSAddOp | JSMulOp | JSDotDotDot | JSDot | JSComma | JSSemi | JSOpenParen | JSOpenBracket | JSOpenBrace | JSCloseParen | JSCloseBracket | JSCloseBrace | JSOperator | JSForKeyword | JSWhileKeyword | JSFunctionKeyword | JSExportKeyword | JSLetKeyword | JSConstKeyword | JSAsKeyword | JSImportKeyword | JSCatchKeyword | JSFinallyKeyword | JSTryKeyword | JSReturnKeyword | JSFromKeyword | JSInteger | JSString | JSIdentifier | EndOfFile | BoltBracketed | BoltBraced | BoltParenthesized | BoltImplKeyword | BoltTraitKeyword | BoltTypeKeyword | BoltStructKeyword | BoltEnumKeyword | BoltMutKeyword | BoltModKeyword | BoltPubKeyword | BoltExportKeyword | BoltImportKeyword | BoltMatchKeyword | BoltYieldKeyword | BoltLoopKeyword | BoltReturnKeyword | BoltLetKeyword | BoltForKeyword | BoltForeignKeyword | BoltFnKeyword | BoltQuoteKeyword | BoltWhereKeyword | BoltVBar | BoltLtSign | BoltExMark | BoltGtSign | BoltEqSign | BoltLArrow | BoltRArrowAlt | BoltRArrow | BoltDotDot | BoltDot | BoltColonColon | BoltColon | BoltSemi | BoltComma | BoltAssignment | BoltOperator | BoltIdentifier | BoltIntegerLiteral | BoltStringLiteral; + +export type SourceFile = JSSourceFile | BoltSourceFile; + +export type FunctionBodyElement = JSLetDeclaration | JSArrowFunctionDeclaration | JSFunctionDeclaration | JSImportDeclaration | JSReturnStatement | JSConditionalStatement | JSExpressionStatement | JSTryCatchStatement | BoltMacroCall | BoltVariableDeclaration | BoltFunctionDeclaration | BoltLoopStatement | BoltExpressionStatement | BoltResumeStatement | BoltConditionalStatement | BoltReturnStatement; + +export type ReturnStatement = JSReturnStatement | BoltReturnStatement; + +export type BoltSyntax = BoltMacroCall | BoltRecordField | BoltPlainExportSymbol | BoltImportDirective | BoltPlainImportSymbol | BoltModule | BoltRecordDeclaration | BoltTypeAliasDeclaration | BoltImplDeclaration | BoltTraitDeclaration | BoltVariableDeclaration | BoltFunctionDeclaration | BoltParameter | BoltConditionalCase | BoltLoopStatement | BoltExpressionStatement | BoltResumeStatement | BoltConditionalStatement | BoltReturnStatement | BoltCase | BoltMatchArm | BoltConstantExpression | BoltBlockExpression | BoltCaseExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | BoltRecordFieldPattern | BoltTuplePatternElement | BoltRecordPattern | BoltTuplePattern | BoltExpressionPattern | BoltTypePattern | BoltBindPattern | BoltTypeParameter | BoltLiftedTypeExpression | BoltFunctionTypeExpression | BoltReferenceTypeExpression | BoltTypeOfExpression | BoltQualName | BoltSourceFile | BoltBracketed | BoltBraced | BoltParenthesized | BoltImplKeyword | BoltTraitKeyword | BoltTypeKeyword | BoltStructKeyword | BoltEnumKeyword | BoltMutKeyword | BoltModKeyword | BoltPubKeyword | BoltExportKeyword | BoltImportKeyword | BoltMatchKeyword | BoltYieldKeyword | BoltLoopKeyword | BoltReturnKeyword | BoltLetKeyword | BoltForKeyword | BoltForeignKeyword | BoltFnKeyword | BoltQuoteKeyword | BoltWhereKeyword | BoltVBar | BoltLtSign | BoltExMark | BoltGtSign | BoltEqSign | BoltLArrow | BoltRArrowAlt | BoltRArrow | BoltDotDot | BoltDot | BoltColonColon | BoltColon | BoltSemi | BoltComma | BoltAssignment | BoltOperator | BoltIdentifier | BoltIntegerLiteral | BoltStringLiteral | EndOfFile; + +export type BoltToken = BoltBracketed | BoltBraced | BoltParenthesized | BoltImplKeyword | BoltTraitKeyword | BoltTypeKeyword | BoltStructKeyword | BoltEnumKeyword | BoltMutKeyword | BoltModKeyword | BoltPubKeyword | BoltExportKeyword | BoltImportKeyword | BoltMatchKeyword | BoltYieldKeyword | BoltLoopKeyword | BoltReturnKeyword | BoltLetKeyword | BoltForKeyword | BoltForeignKeyword | BoltFnKeyword | BoltQuoteKeyword | BoltWhereKeyword | BoltVBar | BoltLtSign | BoltExMark | BoltGtSign | BoltEqSign | BoltLArrow | BoltRArrowAlt | BoltRArrow | BoltDotDot | BoltDot | BoltColonColon | BoltColon | BoltSemi | BoltComma | BoltAssignment | BoltOperator | BoltIdentifier | BoltIntegerLiteral | BoltStringLiteral | EndOfFile; + +export class BoltStringLiteral extends SyntaxBase { + parentNode: null | BoltStringLiteralParent = null; + kind: SyntaxKind.BoltStringLiteral = SyntaxKind.BoltStringLiteral; + constructor(public value: string, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltStringLiteralParent = BoltImportDirective | never; + +type BoltStringLiteralChild = never; + +export class BoltIntegerLiteral extends SyntaxBase { + parentNode: null | BoltIntegerLiteralParent = null; + kind: SyntaxKind.BoltIntegerLiteral = SyntaxKind.BoltIntegerLiteral; + constructor(public value: bigint, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltIntegerLiteralParent = never; + +type BoltIntegerLiteralChild = never; + +export type BoltSymbol = BoltOperator | BoltVBar | BoltLtSign | BoltExMark | BoltGtSign | BoltIdentifier; + +export class BoltIdentifier extends SyntaxBase { + parentNode: null | BoltIdentifierParent = null; + kind: SyntaxKind.BoltIdentifier = SyntaxKind.BoltIdentifier; + constructor(public text: string, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltIdentifierParent = BoltQualName | BoltTypeParameter | BoltBindPattern | BoltRecordFieldPattern | BoltMemberExpression | BoltPlainImportSymbol | BoltPlainExportSymbol | BoltRecordField | BoltFunctionDeclaration | BoltTraitDeclaration | BoltImplDeclaration | BoltTypeAliasDeclaration | BoltRecordDeclaration | BoltModule | BoltMacroCall | never; + +type BoltIdentifierChild = never; + +export type BoltOperatorLike = BoltVBar | BoltLtSign | BoltExMark | BoltGtSign; + +export class BoltOperator extends SyntaxBase { + parentNode: null | BoltOperatorParent = null; + kind: SyntaxKind.BoltOperator = SyntaxKind.BoltOperator; + constructor(public text: string, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltOperatorParent = BoltQualName | BoltPlainImportSymbol | BoltPlainExportSymbol | BoltFunctionDeclaration | never; + +type BoltOperatorChild = never; + +export class BoltAssignment extends SyntaxBase { + parentNode: null | BoltAssignmentParent = null; + kind: SyntaxKind.BoltAssignment = SyntaxKind.BoltAssignment; + constructor(public operator: string | null, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltAssignmentParent = never; + +type BoltAssignmentChild = never; + +export class BoltComma extends SyntaxBase { + parentNode: null | BoltCommaParent = null; + kind: SyntaxKind.BoltComma = SyntaxKind.BoltComma; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltCommaParent = never; + +type BoltCommaChild = never; + +export class BoltSemi extends SyntaxBase { + parentNode: null | BoltSemiParent = null; + kind: SyntaxKind.BoltSemi = SyntaxKind.BoltSemi; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltSemiParent = never; + +type BoltSemiChild = never; + +export class BoltColon extends SyntaxBase { + parentNode: null | BoltColonParent = null; + kind: SyntaxKind.BoltColon = SyntaxKind.BoltColon; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltColonParent = never; + +type BoltColonChild = never; + +export class BoltColonColon extends SyntaxBase { + parentNode: null | BoltColonColonParent = null; + kind: SyntaxKind.BoltColonColon = SyntaxKind.BoltColonColon; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltColonColonParent = never; + +type BoltColonColonChild = never; + +export class BoltDot extends SyntaxBase { + parentNode: null | BoltDotParent = null; + kind: SyntaxKind.BoltDot = SyntaxKind.BoltDot; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltDotParent = never; + +type BoltDotChild = never; + +export class BoltDotDot extends SyntaxBase { + parentNode: null | BoltDotDotParent = null; + kind: SyntaxKind.BoltDotDot = SyntaxKind.BoltDotDot; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltDotDotParent = never; + +type BoltDotDotChild = never; + +export class BoltRArrow extends SyntaxBase { + parentNode: null | BoltRArrowParent = null; + kind: SyntaxKind.BoltRArrow = SyntaxKind.BoltRArrow; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltRArrowParent = never; + +type BoltRArrowChild = never; + +export class BoltRArrowAlt extends SyntaxBase { + parentNode: null | BoltRArrowAltParent = null; + kind: SyntaxKind.BoltRArrowAlt = SyntaxKind.BoltRArrowAlt; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltRArrowAltParent = never; + +type BoltRArrowAltChild = never; + +export class BoltLArrow extends SyntaxBase { + parentNode: null | BoltLArrowParent = null; + kind: SyntaxKind.BoltLArrow = SyntaxKind.BoltLArrow; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltLArrowParent = never; + +type BoltLArrowChild = never; + +export class BoltEqSign extends SyntaxBase { + parentNode: null | BoltEqSignParent = null; + kind: SyntaxKind.BoltEqSign = SyntaxKind.BoltEqSign; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltEqSignParent = never; + +type BoltEqSignChild = never; + +export class BoltGtSign extends SyntaxBase { + parentNode: null | BoltGtSignParent = null; + kind: SyntaxKind.BoltGtSign = SyntaxKind.BoltGtSign; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltGtSignParent = BoltQualName | BoltPlainImportSymbol | BoltPlainExportSymbol | BoltFunctionDeclaration | never; + +type BoltGtSignChild = never; + +export class BoltExMark extends SyntaxBase { + parentNode: null | BoltExMarkParent = null; + kind: SyntaxKind.BoltExMark = SyntaxKind.BoltExMark; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltExMarkParent = BoltQualName | BoltPlainImportSymbol | BoltPlainExportSymbol | BoltFunctionDeclaration | never; + +type BoltExMarkChild = never; + +export class BoltLtSign extends SyntaxBase { + parentNode: null | BoltLtSignParent = null; + kind: SyntaxKind.BoltLtSign = SyntaxKind.BoltLtSign; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltLtSignParent = BoltQualName | BoltPlainImportSymbol | BoltPlainExportSymbol | BoltFunctionDeclaration | never; + +type BoltLtSignChild = never; + +export class BoltVBar extends SyntaxBase { + parentNode: null | BoltVBarParent = null; + kind: SyntaxKind.BoltVBar = SyntaxKind.BoltVBar; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltVBarParent = BoltQualName | BoltPlainImportSymbol | BoltPlainExportSymbol | BoltFunctionDeclaration | never; + +type BoltVBarChild = never; + +export type BoltKeyword = BoltImplKeyword | BoltTraitKeyword | BoltTypeKeyword | BoltStructKeyword | BoltEnumKeyword | BoltMutKeyword | BoltModKeyword | BoltPubKeyword | BoltExportKeyword | BoltImportKeyword | BoltMatchKeyword | BoltYieldKeyword | BoltLoopKeyword | BoltReturnKeyword | BoltLetKeyword | BoltForKeyword | BoltForeignKeyword | BoltFnKeyword | BoltQuoteKeyword | BoltWhereKeyword; + +export class BoltWhereKeyword extends SyntaxBase { + parentNode: null | BoltWhereKeywordParent = null; + kind: SyntaxKind.BoltWhereKeyword = SyntaxKind.BoltWhereKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltWhereKeywordParent = never; + +type BoltWhereKeywordChild = never; + +export class BoltQuoteKeyword extends SyntaxBase { + parentNode: null | BoltQuoteKeywordParent = null; + kind: SyntaxKind.BoltQuoteKeyword = SyntaxKind.BoltQuoteKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltQuoteKeywordParent = never; + +type BoltQuoteKeywordChild = never; + +export class BoltFnKeyword extends SyntaxBase { + parentNode: null | BoltFnKeywordParent = null; + kind: SyntaxKind.BoltFnKeyword = SyntaxKind.BoltFnKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltFnKeywordParent = never; + +type BoltFnKeywordChild = never; + +export class BoltForeignKeyword extends SyntaxBase { + parentNode: null | BoltForeignKeywordParent = null; + kind: SyntaxKind.BoltForeignKeyword = SyntaxKind.BoltForeignKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltForeignKeywordParent = never; + +type BoltForeignKeywordChild = never; + +export class BoltForKeyword extends SyntaxBase { + parentNode: null | BoltForKeywordParent = null; + kind: SyntaxKind.BoltForKeyword = SyntaxKind.BoltForKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltForKeywordParent = never; + +type BoltForKeywordChild = never; + +export class BoltLetKeyword extends SyntaxBase { + parentNode: null | BoltLetKeywordParent = null; + kind: SyntaxKind.BoltLetKeyword = SyntaxKind.BoltLetKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltLetKeywordParent = never; + +type BoltLetKeywordChild = never; + +export class BoltReturnKeyword extends SyntaxBase { + parentNode: null | BoltReturnKeywordParent = null; + kind: SyntaxKind.BoltReturnKeyword = SyntaxKind.BoltReturnKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltReturnKeywordParent = never; + +type BoltReturnKeywordChild = never; + +export class BoltLoopKeyword extends SyntaxBase { + parentNode: null | BoltLoopKeywordParent = null; + kind: SyntaxKind.BoltLoopKeyword = SyntaxKind.BoltLoopKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltLoopKeywordParent = never; + +type BoltLoopKeywordChild = never; + +export class BoltYieldKeyword extends SyntaxBase { + parentNode: null | BoltYieldKeywordParent = null; + kind: SyntaxKind.BoltYieldKeyword = SyntaxKind.BoltYieldKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltYieldKeywordParent = never; + +type BoltYieldKeywordChild = never; + +export class BoltMatchKeyword extends SyntaxBase { + parentNode: null | BoltMatchKeywordParent = null; + kind: SyntaxKind.BoltMatchKeyword = SyntaxKind.BoltMatchKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltMatchKeywordParent = never; + +type BoltMatchKeywordChild = never; + +export class BoltImportKeyword extends SyntaxBase { + parentNode: null | BoltImportKeywordParent = null; + kind: SyntaxKind.BoltImportKeyword = SyntaxKind.BoltImportKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltImportKeywordParent = never; + +type BoltImportKeywordChild = never; + +export class BoltExportKeyword extends SyntaxBase { + parentNode: null | BoltExportKeywordParent = null; + kind: SyntaxKind.BoltExportKeyword = SyntaxKind.BoltExportKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltExportKeywordParent = never; + +type BoltExportKeywordChild = never; + +export class BoltPubKeyword extends SyntaxBase { + parentNode: null | BoltPubKeywordParent = null; + kind: SyntaxKind.BoltPubKeyword = SyntaxKind.BoltPubKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltPubKeywordParent = never; + +type BoltPubKeywordChild = never; + +export class BoltModKeyword extends SyntaxBase { + parentNode: null | BoltModKeywordParent = null; + kind: SyntaxKind.BoltModKeyword = SyntaxKind.BoltModKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltModKeywordParent = never; + +type BoltModKeywordChild = never; + +export class BoltMutKeyword extends SyntaxBase { + parentNode: null | BoltMutKeywordParent = null; + kind: SyntaxKind.BoltMutKeyword = SyntaxKind.BoltMutKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltMutKeywordParent = never; + +type BoltMutKeywordChild = never; + +export class BoltEnumKeyword extends SyntaxBase { + parentNode: null | BoltEnumKeywordParent = null; + kind: SyntaxKind.BoltEnumKeyword = SyntaxKind.BoltEnumKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltEnumKeywordParent = never; + +type BoltEnumKeywordChild = never; + +export class BoltStructKeyword extends SyntaxBase { + parentNode: null | BoltStructKeywordParent = null; + kind: SyntaxKind.BoltStructKeyword = SyntaxKind.BoltStructKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltStructKeywordParent = never; + +type BoltStructKeywordChild = never; + +export class BoltTypeKeyword extends SyntaxBase { + parentNode: null | BoltTypeKeywordParent = null; + kind: SyntaxKind.BoltTypeKeyword = SyntaxKind.BoltTypeKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltTypeKeywordParent = never; + +type BoltTypeKeywordChild = never; + +export class BoltTraitKeyword extends SyntaxBase { + parentNode: null | BoltTraitKeywordParent = null; + kind: SyntaxKind.BoltTraitKeyword = SyntaxKind.BoltTraitKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltTraitKeywordParent = never; + +type BoltTraitKeywordChild = never; + +export class BoltImplKeyword extends SyntaxBase { + parentNode: null | BoltImplKeywordParent = null; + kind: SyntaxKind.BoltImplKeyword = SyntaxKind.BoltImplKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltImplKeywordParent = never; + +type BoltImplKeywordChild = never; + +export type BoltPunctuated = BoltBracketed | BoltBraced | BoltParenthesized; + +export class BoltParenthesized extends SyntaxBase { + parentNode: null | BoltParenthesizedParent = null; + kind: SyntaxKind.BoltParenthesized = SyntaxKind.BoltParenthesized; + constructor(public text: string, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltParenthesizedParent = never; + +type BoltParenthesizedChild = never; + +export class BoltBraced extends SyntaxBase { + parentNode: null | BoltBracedParent = null; + kind: SyntaxKind.BoltBraced = SyntaxKind.BoltBraced; + constructor(public text: string, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltBracedParent = never; + +type BoltBracedChild = never; + +export class BoltBracketed extends SyntaxBase { + parentNode: null | BoltBracketedParent = null; + kind: SyntaxKind.BoltBracketed = SyntaxKind.BoltBracketed; + constructor(public text: string, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltBracketedParent = never; + +type BoltBracketedChild = never; + +export class BoltSourceFile extends SyntaxBase { + parentNode: null | BoltSourceFileParent = null; + kind: SyntaxKind.BoltSourceFile = SyntaxKind.BoltSourceFile; + constructor(public elements: BoltSourceElement[], public pkg: Package, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { for (let element of this.elements) + yield element; } +} + +type BoltSourceFileParent = never; + +type BoltSourceFileChild = BoltMacroCall | BoltExportDirective | BoltImportDirective | BoltModule | BoltRecordDeclaration | BoltTypeAliasDeclaration | BoltImplDeclaration | BoltTraitDeclaration | BoltVariableDeclaration | BoltFunctionDeclaration | BoltLoopStatement | BoltExpressionStatement | BoltResumeStatement | BoltConditionalStatement | BoltReturnStatement | never; + +export class BoltQualName extends SyntaxBase { + parentNode: null | BoltQualNameParent = null; + kind: SyntaxKind.BoltQualName = SyntaxKind.BoltQualName; + constructor(public isAbsolute: boolean, public modulePath: BoltIdentifier[], public name: BoltSymbol, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { for (let element of this.modulePath) + yield element; yield this.name; } +} + +type BoltQualNameParent = BoltReferenceTypeExpression | BoltReferenceExpression | BoltPlainImportSymbol | BoltPlainExportSymbol | never; + +type BoltQualNameChild = BoltOperator | BoltVBar | BoltLtSign | BoltExMark | BoltGtSign | BoltIdentifier | never; + +export type BoltTypeExpression = BoltLiftedTypeExpression | BoltFunctionTypeExpression | BoltReferenceTypeExpression | BoltTypeOfExpression; + +export class BoltTypeOfExpression extends SyntaxBase { + parentNode: null | BoltTypeOfExpressionParent = null; + kind: SyntaxKind.BoltTypeOfExpression = SyntaxKind.BoltTypeOfExpression; + constructor(public expression: BoltExpression, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.expression; } +} + +type BoltTypeOfExpressionParent = BoltReferenceTypeExpression | BoltFunctionTypeExpression | BoltTypeParameter | BoltTypePattern | BoltRecordPattern | BoltFunctionExpression | BoltParameter | BoltRecordField | BoltFunctionDeclaration | BoltVariableDeclaration | BoltTraitDeclaration | BoltImplDeclaration | BoltTypeAliasDeclaration | never; + +type BoltTypeOfExpressionChild = BoltConstantExpression | BoltBlockExpression | BoltCaseExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | never; + +export class BoltReferenceTypeExpression extends SyntaxBase { + parentNode: null | BoltReferenceTypeExpressionParent = null; + kind: SyntaxKind.BoltReferenceTypeExpression = SyntaxKind.BoltReferenceTypeExpression; + constructor(public name: BoltQualName, public typeArgs: BoltTypeExpression[] | null, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.name; if (this.typeArgs !== null) + for (let element of this.typeArgs) + yield element; } +} + +type BoltReferenceTypeExpressionParent = BoltReferenceTypeExpression | BoltFunctionTypeExpression | BoltTypeParameter | BoltTypePattern | BoltRecordPattern | BoltFunctionExpression | BoltParameter | BoltRecordField | BoltFunctionDeclaration | BoltVariableDeclaration | BoltTraitDeclaration | BoltImplDeclaration | BoltTypeAliasDeclaration | never; + +type BoltReferenceTypeExpressionChild = BoltLiftedTypeExpression | BoltFunctionTypeExpression | BoltReferenceTypeExpression | BoltTypeOfExpression | BoltQualName | never; + +export class BoltFunctionTypeExpression extends SyntaxBase { + parentNode: null | BoltFunctionTypeExpressionParent = null; + kind: SyntaxKind.BoltFunctionTypeExpression = SyntaxKind.BoltFunctionTypeExpression; + constructor(public params: BoltParameter[], public returnType: BoltTypeExpression | null, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { for (let element of this.params) + yield element; if (this.returnType !== null) + yield this.returnType; } +} + +type BoltFunctionTypeExpressionParent = BoltReferenceTypeExpression | BoltFunctionTypeExpression | BoltTypeParameter | BoltTypePattern | BoltRecordPattern | BoltFunctionExpression | BoltParameter | BoltRecordField | BoltFunctionDeclaration | BoltVariableDeclaration | BoltTraitDeclaration | BoltImplDeclaration | BoltTypeAliasDeclaration | never; + +type BoltFunctionTypeExpressionChild = BoltLiftedTypeExpression | BoltFunctionTypeExpression | BoltReferenceTypeExpression | BoltTypeOfExpression | BoltParameter | never; + +export class BoltLiftedTypeExpression extends SyntaxBase { + parentNode: null | BoltLiftedTypeExpressionParent = null; + kind: SyntaxKind.BoltLiftedTypeExpression = SyntaxKind.BoltLiftedTypeExpression; + constructor(public expression: BoltExpression, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.expression; } +} + +type BoltLiftedTypeExpressionParent = BoltReferenceTypeExpression | BoltFunctionTypeExpression | BoltTypeParameter | BoltTypePattern | BoltRecordPattern | BoltFunctionExpression | BoltParameter | BoltRecordField | BoltFunctionDeclaration | BoltVariableDeclaration | BoltTraitDeclaration | BoltImplDeclaration | BoltTypeAliasDeclaration | never; + +type BoltLiftedTypeExpressionChild = BoltConstantExpression | BoltBlockExpression | BoltCaseExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | never; + +export class BoltTypeParameter extends SyntaxBase { + parentNode: null | BoltTypeParameterParent = null; + kind: SyntaxKind.BoltTypeParameter = SyntaxKind.BoltTypeParameter; + constructor(public index: number, public name: BoltIdentifier, public typeExpr: BoltTypeExpression | null, public defaultType: BoltTypeExpression | null, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.name; if (this.typeExpr !== null) + yield this.typeExpr; if (this.defaultType !== null) + yield this.defaultType; } +} + +type BoltTypeParameterParent = BoltFunctionDeclaration | BoltTraitDeclaration | BoltImplDeclaration | BoltTypeAliasDeclaration | BoltRecordDeclaration | never; + +type BoltTypeParameterChild = BoltLiftedTypeExpression | BoltFunctionTypeExpression | BoltReferenceTypeExpression | BoltTypeOfExpression | BoltIdentifier | never; + +export type BoltPattern = BoltRecordPattern | BoltTuplePattern | BoltExpressionPattern | BoltTypePattern | BoltBindPattern; + +export class BoltBindPattern extends SyntaxBase { + parentNode: null | BoltBindPatternParent = null; + kind: SyntaxKind.BoltBindPattern = SyntaxKind.BoltBindPattern; + constructor(public name: BoltIdentifier, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.name; } +} + +type BoltBindPatternParent = BoltTypePattern | BoltTuplePatternElement | BoltRecordFieldPattern | BoltMatchArm | BoltParameter | BoltVariableDeclaration | never; + +type BoltBindPatternChild = BoltIdentifier | never; + +export class BoltTypePattern extends SyntaxBase { + parentNode: null | BoltTypePatternParent = null; + kind: SyntaxKind.BoltTypePattern = SyntaxKind.BoltTypePattern; + constructor(public typeExpr: BoltTypeExpression, public nestedPattern: BoltPattern, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.typeExpr; yield this.nestedPattern; } +} + +type BoltTypePatternParent = BoltTypePattern | BoltTuplePatternElement | BoltRecordFieldPattern | BoltMatchArm | BoltParameter | BoltVariableDeclaration | never; + +type BoltTypePatternChild = BoltRecordPattern | BoltTuplePattern | BoltExpressionPattern | BoltTypePattern | BoltBindPattern | BoltLiftedTypeExpression | BoltFunctionTypeExpression | BoltReferenceTypeExpression | BoltTypeOfExpression | never; + +export class BoltExpressionPattern extends SyntaxBase { + parentNode: null | BoltExpressionPatternParent = null; + kind: SyntaxKind.BoltExpressionPattern = SyntaxKind.BoltExpressionPattern; + constructor(public expression: BoltExpression, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.expression; } +} + +type BoltExpressionPatternParent = BoltTypePattern | BoltTuplePatternElement | BoltRecordFieldPattern | BoltMatchArm | BoltParameter | BoltVariableDeclaration | never; + +type BoltExpressionPatternChild = BoltConstantExpression | BoltBlockExpression | BoltCaseExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | never; + +export class BoltTuplePatternElement extends SyntaxBase { + parentNode: null | BoltTuplePatternElementParent = null; + kind: SyntaxKind.BoltTuplePatternElement = SyntaxKind.BoltTuplePatternElement; + constructor(public index: number, public pattern: BoltPattern, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.pattern; } +} + +type BoltTuplePatternElementParent = BoltTuplePattern | never; + +type BoltTuplePatternElementChild = BoltRecordPattern | BoltTuplePattern | BoltExpressionPattern | BoltTypePattern | BoltBindPattern | never; + +export class BoltTuplePattern extends SyntaxBase { + parentNode: null | BoltTuplePatternParent = null; + kind: SyntaxKind.BoltTuplePattern = SyntaxKind.BoltTuplePattern; + constructor(public elements: BoltTuplePatternElement[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { for (let element of this.elements) + yield element; } +} + +type BoltTuplePatternParent = BoltTypePattern | BoltTuplePatternElement | BoltRecordFieldPattern | BoltMatchArm | BoltParameter | BoltVariableDeclaration | never; + +type BoltTuplePatternChild = BoltTuplePatternElement | never; + +export class BoltRecordFieldPattern extends SyntaxBase { + parentNode: null | BoltRecordFieldPatternParent = null; + kind: SyntaxKind.BoltRecordFieldPattern = SyntaxKind.BoltRecordFieldPattern; + constructor(public isRest: boolean, public name: BoltIdentifier | null, public pattern: BoltPattern | null, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { if (this.name !== null) + yield this.name; if (this.pattern !== null) + yield this.pattern; } +} + +type BoltRecordFieldPatternParent = BoltRecordPattern | never; + +type BoltRecordFieldPatternChild = BoltRecordPattern | BoltTuplePattern | BoltExpressionPattern | BoltTypePattern | BoltBindPattern | BoltIdentifier | never; + +export class BoltRecordPattern extends SyntaxBase { + parentNode: null | BoltRecordPatternParent = null; + kind: SyntaxKind.BoltRecordPattern = SyntaxKind.BoltRecordPattern; + constructor(public name: BoltTypeExpression, public fields: BoltRecordFieldPattern[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.name; for (let element of this.fields) + yield element; } +} + +type BoltRecordPatternParent = BoltTypePattern | BoltTuplePatternElement | BoltRecordFieldPattern | BoltMatchArm | BoltParameter | BoltVariableDeclaration | never; + +type BoltRecordPatternChild = BoltRecordFieldPattern | BoltLiftedTypeExpression | BoltFunctionTypeExpression | BoltReferenceTypeExpression | BoltTypeOfExpression | never; + +export type BoltExpression = BoltConstantExpression | BoltBlockExpression | BoltCaseExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression; + +export class BoltQuoteExpression extends SyntaxBase { + parentNode: null | BoltQuoteExpressionParent = null; + kind: SyntaxKind.BoltQuoteExpression = SyntaxKind.BoltQuoteExpression; + constructor(public tokens: (Token | BoltExpression)[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltQuoteExpressionParent = BoltTypeOfExpression | BoltLiftedTypeExpression | BoltExpressionPattern | BoltTupleExpression | BoltMemberExpression | BoltCallExpression | BoltYieldExpression | BoltMatchArm | BoltMatchExpression | BoltCase | BoltConditionalCase | BoltParameter | BoltReturnStatement | BoltResumeStatement | BoltExpressionStatement | BoltVariableDeclaration | never; + +type BoltQuoteExpressionChild = never; + +export class BoltTupleExpression extends SyntaxBase { + parentNode: null | BoltTupleExpressionParent = null; + kind: SyntaxKind.BoltTupleExpression = SyntaxKind.BoltTupleExpression; + constructor(public elements: BoltExpression[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { for (let element of this.elements) + yield element; } +} + +type BoltTupleExpressionParent = BoltTypeOfExpression | BoltLiftedTypeExpression | BoltExpressionPattern | BoltTupleExpression | BoltMemberExpression | BoltCallExpression | BoltYieldExpression | BoltMatchArm | BoltMatchExpression | BoltCase | BoltConditionalCase | BoltParameter | BoltReturnStatement | BoltResumeStatement | BoltExpressionStatement | BoltVariableDeclaration | never; + +type BoltTupleExpressionChild = BoltConstantExpression | BoltBlockExpression | BoltCaseExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | never; + +export class BoltReferenceExpression extends SyntaxBase { + parentNode: null | BoltReferenceExpressionParent = null; + kind: SyntaxKind.BoltReferenceExpression = SyntaxKind.BoltReferenceExpression; + constructor(public name: BoltQualName, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.name; } +} + +type BoltReferenceExpressionParent = BoltTypeOfExpression | BoltLiftedTypeExpression | BoltExpressionPattern | BoltTupleExpression | BoltMemberExpression | BoltCallExpression | BoltYieldExpression | BoltMatchArm | BoltMatchExpression | BoltCase | BoltConditionalCase | BoltParameter | BoltReturnStatement | BoltResumeStatement | BoltExpressionStatement | BoltVariableDeclaration | never; + +type BoltReferenceExpressionChild = BoltQualName | never; + +export class BoltMemberExpression extends SyntaxBase { + parentNode: null | BoltMemberExpressionParent = null; + kind: SyntaxKind.BoltMemberExpression = SyntaxKind.BoltMemberExpression; + constructor(public expression: BoltExpression, public path: BoltIdentifier[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.expression; for (let element of this.path) + yield element; } +} + +type BoltMemberExpressionParent = BoltTypeOfExpression | BoltLiftedTypeExpression | BoltExpressionPattern | BoltTupleExpression | BoltMemberExpression | BoltCallExpression | BoltYieldExpression | BoltMatchArm | BoltMatchExpression | BoltCase | BoltConditionalCase | BoltParameter | BoltReturnStatement | BoltResumeStatement | BoltExpressionStatement | BoltVariableDeclaration | never; + +type BoltMemberExpressionChild = BoltIdentifier | BoltConstantExpression | BoltBlockExpression | BoltCaseExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | never; + +export class BoltFunctionExpression extends SyntaxBase { + parentNode: null | BoltFunctionExpressionParent = null; + kind: SyntaxKind.BoltFunctionExpression = SyntaxKind.BoltFunctionExpression; + constructor(public params: BoltParameter[], public returnType: BoltTypeExpression | null, public body: BoltFunctionBodyElement[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { for (let element of this.params) + yield element; if (this.returnType !== null) + yield this.returnType; for (let element of this.body) + yield element; } +} + +type BoltFunctionExpressionParent = BoltTypeOfExpression | BoltLiftedTypeExpression | BoltExpressionPattern | BoltTupleExpression | BoltMemberExpression | BoltCallExpression | BoltYieldExpression | BoltMatchArm | BoltMatchExpression | BoltCase | BoltConditionalCase | BoltParameter | BoltReturnStatement | BoltResumeStatement | BoltExpressionStatement | BoltVariableDeclaration | never; + +type BoltFunctionExpressionChild = BoltMacroCall | BoltVariableDeclaration | BoltFunctionDeclaration | BoltLoopStatement | BoltExpressionStatement | BoltResumeStatement | BoltConditionalStatement | BoltReturnStatement | BoltLiftedTypeExpression | BoltFunctionTypeExpression | BoltReferenceTypeExpression | BoltTypeOfExpression | BoltParameter | never; + +export class BoltCallExpression extends SyntaxBase { + parentNode: null | BoltCallExpressionParent = null; + kind: SyntaxKind.BoltCallExpression = SyntaxKind.BoltCallExpression; + constructor(public operator: BoltExpression, public operands: BoltExpression[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.operator; for (let element of this.operands) + yield element; } +} + +type BoltCallExpressionParent = BoltTypeOfExpression | BoltLiftedTypeExpression | BoltExpressionPattern | BoltTupleExpression | BoltMemberExpression | BoltCallExpression | BoltYieldExpression | BoltMatchArm | BoltMatchExpression | BoltCase | BoltConditionalCase | BoltParameter | BoltReturnStatement | BoltResumeStatement | BoltExpressionStatement | BoltVariableDeclaration | never; + +type BoltCallExpressionChild = BoltConstantExpression | BoltBlockExpression | BoltCaseExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | never; + +export class BoltYieldExpression extends SyntaxBase { + parentNode: null | BoltYieldExpressionParent = null; + kind: SyntaxKind.BoltYieldExpression = SyntaxKind.BoltYieldExpression; + constructor(public value: BoltExpression, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.value; } +} + +type BoltYieldExpressionParent = BoltTypeOfExpression | BoltLiftedTypeExpression | BoltExpressionPattern | BoltTupleExpression | BoltMemberExpression | BoltCallExpression | BoltYieldExpression | BoltMatchArm | BoltMatchExpression | BoltCase | BoltConditionalCase | BoltParameter | BoltReturnStatement | BoltResumeStatement | BoltExpressionStatement | BoltVariableDeclaration | never; + +type BoltYieldExpressionChild = BoltConstantExpression | BoltBlockExpression | BoltCaseExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | never; + +export class BoltMatchArm extends SyntaxBase { + parentNode: null | BoltMatchArmParent = null; + kind: SyntaxKind.BoltMatchArm = SyntaxKind.BoltMatchArm; + constructor(public pattern: BoltPattern, public body: BoltExpression, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.pattern; yield this.body; } +} + +type BoltMatchArmParent = BoltMatchExpression | never; + +type BoltMatchArmChild = BoltConstantExpression | BoltBlockExpression | BoltCaseExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | BoltRecordPattern | BoltTuplePattern | BoltExpressionPattern | BoltTypePattern | BoltBindPattern | never; + +export class BoltMatchExpression extends SyntaxBase { + parentNode: null | BoltMatchExpressionParent = null; + kind: SyntaxKind.BoltMatchExpression = SyntaxKind.BoltMatchExpression; + constructor(public value: BoltExpression, public arms: BoltMatchArm[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.value; for (let element of this.arms) + yield element; } +} + +type BoltMatchExpressionParent = BoltTypeOfExpression | BoltLiftedTypeExpression | BoltExpressionPattern | BoltTupleExpression | BoltMemberExpression | BoltCallExpression | BoltYieldExpression | BoltMatchArm | BoltMatchExpression | BoltCase | BoltConditionalCase | BoltParameter | BoltReturnStatement | BoltResumeStatement | BoltExpressionStatement | BoltVariableDeclaration | never; + +type BoltMatchExpressionChild = BoltMatchArm | BoltConstantExpression | BoltBlockExpression | BoltCaseExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | never; + +export class BoltCase extends SyntaxBase { + parentNode: null | BoltCaseParent = null; + kind: SyntaxKind.BoltCase = SyntaxKind.BoltCase; + constructor(public test: BoltExpression, public result: BoltExpression, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.test; yield this.result; } +} + +type BoltCaseParent = BoltCaseExpression | never; + +type BoltCaseChild = BoltConstantExpression | BoltBlockExpression | BoltCaseExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | never; + +export class BoltCaseExpression extends SyntaxBase { + parentNode: null | BoltCaseExpressionParent = null; + kind: SyntaxKind.BoltCaseExpression = SyntaxKind.BoltCaseExpression; + constructor(public cases: BoltCase[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { for (let element of this.cases) + yield element; } +} + +type BoltCaseExpressionParent = BoltTypeOfExpression | BoltLiftedTypeExpression | BoltExpressionPattern | BoltTupleExpression | BoltMemberExpression | BoltCallExpression | BoltYieldExpression | BoltMatchArm | BoltMatchExpression | BoltCase | BoltConditionalCase | BoltParameter | BoltReturnStatement | BoltResumeStatement | BoltExpressionStatement | BoltVariableDeclaration | never; + +type BoltCaseExpressionChild = BoltCase | never; + +export class BoltBlockExpression extends SyntaxBase { + parentNode: null | BoltBlockExpressionParent = null; + kind: SyntaxKind.BoltBlockExpression = SyntaxKind.BoltBlockExpression; + constructor(public elements: BoltFunctionBodyElement[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { for (let element of this.elements) + yield element; } +} + +type BoltBlockExpressionParent = BoltTypeOfExpression | BoltLiftedTypeExpression | BoltExpressionPattern | BoltTupleExpression | BoltMemberExpression | BoltCallExpression | BoltYieldExpression | BoltMatchArm | BoltMatchExpression | BoltCase | BoltConditionalCase | BoltParameter | BoltReturnStatement | BoltResumeStatement | BoltExpressionStatement | BoltVariableDeclaration | never; + +type BoltBlockExpressionChild = BoltMacroCall | BoltVariableDeclaration | BoltFunctionDeclaration | BoltLoopStatement | BoltExpressionStatement | BoltResumeStatement | BoltConditionalStatement | BoltReturnStatement | never; + +export class BoltConstantExpression extends SyntaxBase { + parentNode: null | BoltConstantExpressionParent = null; + kind: SyntaxKind.BoltConstantExpression = SyntaxKind.BoltConstantExpression; + constructor(public value: Value, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type BoltConstantExpressionParent = BoltTypeOfExpression | BoltLiftedTypeExpression | BoltExpressionPattern | BoltTupleExpression | BoltMemberExpression | BoltCallExpression | BoltYieldExpression | BoltMatchArm | BoltMatchExpression | BoltCase | BoltConditionalCase | BoltParameter | BoltReturnStatement | BoltResumeStatement | BoltExpressionStatement | BoltVariableDeclaration | never; + +type BoltConstantExpressionChild = never; + +export type BoltStatement = BoltLoopStatement | BoltExpressionStatement | BoltResumeStatement | BoltConditionalStatement | BoltReturnStatement; + +export class BoltReturnStatement extends SyntaxBase { + parentNode: null | BoltReturnStatementParent = null; + kind: SyntaxKind.BoltReturnStatement = SyntaxKind.BoltReturnStatement; + constructor(public value: BoltExpression | null, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { if (this.value !== null) + yield this.value; } +} + +type BoltReturnStatementParent = BoltSourceFile | BoltFunctionExpression | BoltBlockExpression | BoltConditionalCase | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; + +type BoltReturnStatementChild = BoltConstantExpression | BoltBlockExpression | BoltCaseExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | never; + +export class BoltConditionalCase extends SyntaxBase { + parentNode: null | BoltConditionalCaseParent = null; + kind: SyntaxKind.BoltConditionalCase = SyntaxKind.BoltConditionalCase; + constructor(public test: BoltExpression | null, public body: BoltFunctionBodyElement[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { if (this.test !== null) + yield this.test; for (let element of this.body) + yield element; } +} + +type BoltConditionalCaseParent = BoltConditionalStatement | never; + +type BoltConditionalCaseChild = BoltMacroCall | BoltVariableDeclaration | BoltFunctionDeclaration | BoltLoopStatement | BoltExpressionStatement | BoltResumeStatement | BoltConditionalStatement | BoltReturnStatement | BoltConstantExpression | BoltBlockExpression | BoltCaseExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | never; + +export class BoltConditionalStatement extends SyntaxBase { + parentNode: null | BoltConditionalStatementParent = null; + kind: SyntaxKind.BoltConditionalStatement = SyntaxKind.BoltConditionalStatement; + constructor(public cases: BoltConditionalCase[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { for (let element of this.cases) + yield element; } +} + +type BoltConditionalStatementParent = BoltSourceFile | BoltFunctionExpression | BoltBlockExpression | BoltConditionalCase | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; + +type BoltConditionalStatementChild = BoltConditionalCase | never; + +export class BoltResumeStatement extends SyntaxBase { + parentNode: null | BoltResumeStatementParent = null; + kind: SyntaxKind.BoltResumeStatement = SyntaxKind.BoltResumeStatement; + constructor(public value: BoltExpression, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.value; } +} + +type BoltResumeStatementParent = BoltSourceFile | BoltFunctionExpression | BoltBlockExpression | BoltConditionalCase | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; + +type BoltResumeStatementChild = BoltConstantExpression | BoltBlockExpression | BoltCaseExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | never; + +export class BoltExpressionStatement extends SyntaxBase { + parentNode: null | BoltExpressionStatementParent = null; + kind: SyntaxKind.BoltExpressionStatement = SyntaxKind.BoltExpressionStatement; + constructor(public expression: BoltExpression, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.expression; } +} + +type BoltExpressionStatementParent = BoltSourceFile | BoltFunctionExpression | BoltBlockExpression | BoltConditionalCase | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; + +type BoltExpressionStatementChild = BoltConstantExpression | BoltBlockExpression | BoltCaseExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | never; + +export class BoltLoopStatement extends SyntaxBase { + parentNode: null | BoltLoopStatementParent = null; + kind: SyntaxKind.BoltLoopStatement = SyntaxKind.BoltLoopStatement; + constructor(public elements: BoltFunctionBodyElement[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { for (let element of this.elements) + yield element; } +} + +type BoltLoopStatementParent = BoltSourceFile | BoltFunctionExpression | BoltBlockExpression | BoltConditionalCase | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; + +type BoltLoopStatementChild = BoltMacroCall | BoltVariableDeclaration | BoltFunctionDeclaration | BoltLoopStatement | BoltExpressionStatement | BoltResumeStatement | BoltConditionalStatement | BoltReturnStatement | never; + +export class BoltParameter extends SyntaxBase { + parentNode: null | BoltParameterParent = null; + kind: SyntaxKind.BoltParameter = SyntaxKind.BoltParameter; + constructor(public index: number, public bindings: BoltPattern, public typeExpr: BoltTypeExpression | null, public defaultValue: BoltExpression | null, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.bindings; if (this.typeExpr !== null) + yield this.typeExpr; if (this.defaultValue !== null) + yield this.defaultValue; } +} + +type BoltParameterParent = BoltFunctionTypeExpression | BoltFunctionExpression | BoltFunctionDeclaration | never; + +type BoltParameterChild = BoltConstantExpression | BoltBlockExpression | BoltCaseExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | BoltLiftedTypeExpression | BoltFunctionTypeExpression | BoltReferenceTypeExpression | BoltTypeOfExpression | BoltRecordPattern | BoltTuplePattern | BoltExpressionPattern | BoltTypePattern | BoltBindPattern | never; + +export type BoltDeclaration = BoltRecordDeclaration | BoltVariableDeclaration | BoltFunctionDeclaration; + +export type BoltTypeDeclaration = BoltRecordDeclaration | BoltTypeAliasDeclaration | BoltImplDeclaration | BoltTraitDeclaration; + +export class BoltModule extends SyntaxBase { + parentNode: null | BoltModuleParent = null; + kind: SyntaxKind.BoltModule = SyntaxKind.BoltModule; + constructor(public modifiers: BoltModifiers, public name: BoltIdentifier[], public elements: BoltSourceElement[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { for (let element of this.name) + yield element; for (let element of this.elements) + yield element; } +} + +type BoltModuleParent = BoltSourceFile | BoltModule | never; + +type BoltModuleChild = BoltMacroCall | BoltExportDirective | BoltImportDirective | BoltModule | BoltRecordDeclaration | BoltTypeAliasDeclaration | BoltImplDeclaration | BoltTraitDeclaration | BoltVariableDeclaration | BoltFunctionDeclaration | BoltLoopStatement | BoltExpressionStatement | BoltResumeStatement | BoltConditionalStatement | BoltReturnStatement | BoltIdentifier | never; + +export type BoltDeclarationLike = BoltRecordDeclaration | BoltTypeAliasDeclaration | BoltImplDeclaration | BoltTraitDeclaration | BoltVariableDeclaration | BoltFunctionDeclaration; + +export type BoltFunctionBodyElement = BoltMacroCall | BoltVariableDeclaration | BoltFunctionDeclaration | BoltLoopStatement | BoltExpressionStatement | BoltResumeStatement | BoltConditionalStatement | BoltReturnStatement; + +export class BoltFunctionDeclaration extends SyntaxBase { + parentNode: null | BoltFunctionDeclarationParent = null; + kind: SyntaxKind.BoltFunctionDeclaration = SyntaxKind.BoltFunctionDeclaration; + constructor(public modifiers: BoltModifiers, public target: string, public name: BoltSymbol, public params: BoltParameter[], public returnType: BoltTypeExpression | null, public typeParams: BoltTypeParameter[] | null, public body: BoltFunctionBodyElement[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.name; for (let element of this.params) + yield element; if (this.returnType !== null) + yield this.returnType; if (this.typeParams !== null) + for (let element of this.typeParams) + yield element; for (let element of this.body) + yield element; } +} + +type BoltFunctionDeclarationParent = BoltSourceFile | BoltFunctionExpression | BoltBlockExpression | BoltConditionalCase | BoltLoopStatement | BoltFunctionDeclaration | BoltTraitDeclaration | BoltImplDeclaration | BoltModule | never; + +type BoltFunctionDeclarationChild = BoltMacroCall | BoltVariableDeclaration | BoltFunctionDeclaration | BoltLoopStatement | BoltExpressionStatement | BoltResumeStatement | BoltConditionalStatement | BoltReturnStatement | BoltTypeParameter | BoltLiftedTypeExpression | BoltFunctionTypeExpression | BoltReferenceTypeExpression | BoltTypeOfExpression | BoltParameter | BoltOperator | BoltVBar | BoltLtSign | BoltExMark | BoltGtSign | BoltIdentifier | never; + +export class BoltVariableDeclaration extends SyntaxBase { + parentNode: null | BoltVariableDeclarationParent = null; + kind: SyntaxKind.BoltVariableDeclaration = SyntaxKind.BoltVariableDeclaration; + constructor(public modifiers: BoltModifiers, public bindings: BoltPattern, public typeExpr: BoltTypeExpression | null, public value: BoltExpression | null, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.bindings; if (this.typeExpr !== null) + yield this.typeExpr; if (this.value !== null) + yield this.value; } +} + +type BoltVariableDeclarationParent = BoltSourceFile | BoltFunctionExpression | BoltBlockExpression | BoltConditionalCase | BoltLoopStatement | BoltFunctionDeclaration | BoltModule | never; + +type BoltVariableDeclarationChild = BoltConstantExpression | BoltBlockExpression | BoltCaseExpression | BoltMatchExpression | BoltYieldExpression | BoltCallExpression | BoltFunctionExpression | BoltMemberExpression | BoltReferenceExpression | BoltTupleExpression | BoltQuoteExpression | BoltLiftedTypeExpression | BoltFunctionTypeExpression | BoltReferenceTypeExpression | BoltTypeOfExpression | BoltRecordPattern | BoltTuplePattern | BoltExpressionPattern | BoltTypePattern | BoltBindPattern | never; + +export type BoltImportSymbol = BoltPlainImportSymbol; + +export class BoltPlainImportSymbol extends SyntaxBase { + parentNode: null | BoltPlainImportSymbolParent = null; + kind: SyntaxKind.BoltPlainImportSymbol = SyntaxKind.BoltPlainImportSymbol; + constructor(public remote: BoltQualName, public local: BoltSymbol, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.remote; yield this.local; } +} + +type BoltPlainImportSymbolParent = BoltImportDirective | never; + +type BoltPlainImportSymbolChild = BoltOperator | BoltVBar | BoltLtSign | BoltExMark | BoltGtSign | BoltIdentifier | BoltQualName | never; + +export class BoltImportDirective extends SyntaxBase { + parentNode: null | BoltImportDirectiveParent = null; + kind: SyntaxKind.BoltImportDirective = SyntaxKind.BoltImportDirective; + constructor(public modifiers: BoltModifiers, public file: BoltStringLiteral, public symbols: BoltImportSymbol[] | null, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.file; if (this.symbols !== null) + for (let element of this.symbols) + yield element; } +} + +type BoltImportDirectiveParent = BoltSourceFile | BoltModule | never; + +type BoltImportDirectiveChild = BoltPlainImportSymbol | BoltStringLiteral | never; + +export type BoltExportSymbol = BoltPlainExportSymbol; + +export class BoltPlainExportSymbol extends SyntaxBase { + parentNode: null | BoltPlainExportSymbolParent = null; + kind: SyntaxKind.BoltPlainExportSymbol = SyntaxKind.BoltPlainExportSymbol; + constructor(public local: BoltQualName, public remote: BoltSymbol, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.local; yield this.remote; } +} + +type BoltPlainExportSymbolParent = BoltExportDirective | never; + +type BoltPlainExportSymbolChild = BoltOperator | BoltVBar | BoltLtSign | BoltExMark | BoltGtSign | BoltIdentifier | BoltQualName | never; + +export class BoltExportDirective extends SyntaxBase { + parentNode: null | BoltExportDirectiveParent = null; + kind: SyntaxKind.BoltExportDirective = SyntaxKind.BoltExportDirective; + constructor(public file: string, public symbols: BoltExportSymbol[] | null, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { if (this.symbols !== null) + for (let element of this.symbols) + yield element; } +} + +type BoltExportDirectiveParent = BoltSourceFile | BoltModule | never; + +type BoltExportDirectiveChild = BoltPlainExportSymbol | never; + +export type BoltTraitOrImplElement = BoltMacroCall | BoltTypeAliasDeclaration | BoltFunctionDeclaration; + +export class BoltTraitDeclaration extends SyntaxBase { + parentNode: null | BoltTraitDeclarationParent = null; + kind: SyntaxKind.BoltTraitDeclaration = SyntaxKind.BoltTraitDeclaration; + constructor(public modifiers: BoltModifiers, public typeParams: BoltTypeParameter[] | null, public name: BoltIdentifier, public typeBoundExpr: BoltTypeExpression | null, public elements: BoltTraitOrImplElement[] | null, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { if (this.typeParams !== null) + for (let element of this.typeParams) + yield element; yield this.name; if (this.typeBoundExpr !== null) + yield this.typeBoundExpr; if (this.elements !== null) + for (let element of this.elements) + yield element; } +} + +type BoltTraitDeclarationParent = BoltSourceFile | BoltModule | never; + +type BoltTraitDeclarationChild = BoltMacroCall | BoltTypeAliasDeclaration | BoltFunctionDeclaration | BoltLiftedTypeExpression | BoltFunctionTypeExpression | BoltReferenceTypeExpression | BoltTypeOfExpression | BoltIdentifier | BoltTypeParameter | never; + +export class BoltImplDeclaration extends SyntaxBase { + parentNode: null | BoltImplDeclarationParent = null; + kind: SyntaxKind.BoltImplDeclaration = SyntaxKind.BoltImplDeclaration; + constructor(public modifiers: BoltModifiers, public typeParams: BoltTypeParameter[] | null, public name: BoltIdentifier, public traitTypeExpr: BoltTypeExpression | null, public elements: BoltTraitOrImplElement[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { if (this.typeParams !== null) + for (let element of this.typeParams) + yield element; yield this.name; if (this.traitTypeExpr !== null) + yield this.traitTypeExpr; for (let element of this.elements) + yield element; } +} + +type BoltImplDeclarationParent = BoltSourceFile | BoltModule | never; + +type BoltImplDeclarationChild = BoltMacroCall | BoltTypeAliasDeclaration | BoltFunctionDeclaration | BoltLiftedTypeExpression | BoltFunctionTypeExpression | BoltReferenceTypeExpression | BoltTypeOfExpression | BoltIdentifier | BoltTypeParameter | never; + +export class BoltTypeAliasDeclaration extends SyntaxBase { + parentNode: null | BoltTypeAliasDeclarationParent = null; + kind: SyntaxKind.BoltTypeAliasDeclaration = SyntaxKind.BoltTypeAliasDeclaration; + constructor(public modifiers: BoltModifiers, public name: BoltIdentifier, public typeParams: BoltTypeParameter[] | null, public typeExpr: BoltTypeExpression, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.name; if (this.typeParams !== null) + for (let element of this.typeParams) + yield element; yield this.typeExpr; } +} + +type BoltTypeAliasDeclarationParent = BoltSourceFile | BoltTraitDeclaration | BoltImplDeclaration | BoltModule | never; + +type BoltTypeAliasDeclarationChild = BoltLiftedTypeExpression | BoltFunctionTypeExpression | BoltReferenceTypeExpression | BoltTypeOfExpression | BoltTypeParameter | BoltIdentifier | never; + +export type BoltRecordMember = BoltMacroCall | BoltRecordField; + +export class BoltRecordField extends SyntaxBase { + parentNode: null | BoltRecordFieldParent = null; + kind: SyntaxKind.BoltRecordField = SyntaxKind.BoltRecordField; + constructor(public name: BoltIdentifier, public typeExpr: BoltTypeExpression, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.name; yield this.typeExpr; } +} + +type BoltRecordFieldParent = BoltRecordDeclaration | never; + +type BoltRecordFieldChild = BoltLiftedTypeExpression | BoltFunctionTypeExpression | BoltReferenceTypeExpression | BoltTypeOfExpression | BoltIdentifier | never; + +export class BoltRecordDeclaration extends SyntaxBase { + parentNode: null | BoltRecordDeclarationParent = null; + kind: SyntaxKind.BoltRecordDeclaration = SyntaxKind.BoltRecordDeclaration; + constructor(public modifiers: BoltModifiers, public name: BoltIdentifier, public typeParms: BoltTypeParameter[] | null, public members: BoltRecordMember[] | null, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.name; if (this.typeParms !== null) + for (let element of this.typeParms) + yield element; if (this.members !== null) + for (let element of this.members) + yield element; } +} + +type BoltRecordDeclarationParent = BoltSourceFile | BoltModule | never; + +type BoltRecordDeclarationChild = BoltMacroCall | BoltRecordField | BoltTypeParameter | BoltIdentifier | never; + +export type BoltSourceElement = BoltMacroCall | BoltExportDirective | BoltImportDirective | BoltModule | BoltRecordDeclaration | BoltTypeAliasDeclaration | BoltImplDeclaration | BoltTraitDeclaration | BoltVariableDeclaration | BoltFunctionDeclaration | BoltLoopStatement | BoltExpressionStatement | BoltResumeStatement | BoltConditionalStatement | BoltReturnStatement; + +export class BoltMacroCall extends SyntaxBase { + parentNode: null | BoltMacroCallParent = null; + kind: SyntaxKind.BoltMacroCall = SyntaxKind.BoltMacroCall; + constructor(public name: BoltIdentifier, public text: string, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.name; } +} + +type BoltMacroCallParent = BoltSourceFile | BoltFunctionExpression | BoltBlockExpression | BoltConditionalCase | BoltLoopStatement | BoltFunctionDeclaration | BoltTraitDeclaration | BoltImplDeclaration | BoltRecordDeclaration | BoltModule | never; + +type BoltMacroCallChild = BoltIdentifier | never; + +export type JSSyntax = JSSourceFile | JSImportAsBinding | JSImportStarBinding | JSLetDeclaration | JSArrowFunctionDeclaration | JSFunctionDeclaration | JSImportDeclaration | JSParameter | JSConditionalCase | JSCatchBlock | JSReturnStatement | JSConditionalStatement | JSExpressionStatement | JSTryCatchStatement | JSReferenceExpression | JSLiteralExpression | JSConditionalExpression | JSSequenceExpression | JSNewExpression | JSUnaryExpression | JSBinaryExpression | JSCallExpression | JSMemberExpression | JSConstantExpression | JSBindPattern | JSNotOp | JSBNotOp | JSBAndOp | JSBXorOp | JSBOrOp | JSGtOp | JSLtOp | JSSubOp | JSDivOp | JSAddOp | JSMulOp | JSDotDotDot | JSDot | JSComma | JSSemi | JSOpenParen | JSOpenBracket | JSOpenBrace | JSCloseParen | JSCloseBracket | JSCloseBrace | JSOperator | JSForKeyword | JSWhileKeyword | JSFunctionKeyword | JSExportKeyword | JSLetKeyword | JSConstKeyword | JSAsKeyword | JSImportKeyword | JSCatchKeyword | JSFinallyKeyword | JSTryKeyword | JSReturnKeyword | JSFromKeyword | JSInteger | JSString | JSIdentifier | EndOfFile; + +export type JSToken = JSNotOp | JSBNotOp | JSBAndOp | JSBXorOp | JSBOrOp | JSGtOp | JSLtOp | JSSubOp | JSDivOp | JSAddOp | JSMulOp | JSDotDotDot | JSDot | JSComma | JSSemi | JSOpenParen | JSOpenBracket | JSOpenBrace | JSCloseParen | JSCloseBracket | JSCloseBrace | JSOperator | JSForKeyword | JSWhileKeyword | JSFunctionKeyword | JSExportKeyword | JSLetKeyword | JSConstKeyword | JSAsKeyword | JSImportKeyword | JSCatchKeyword | JSFinallyKeyword | JSTryKeyword | JSReturnKeyword | JSFromKeyword | JSInteger | JSString | JSIdentifier | EndOfFile; + +export class JSIdentifier extends SyntaxBase { + parentNode: null | JSIdentifierParent = null; + kind: SyntaxKind.JSIdentifier = SyntaxKind.JSIdentifier; + constructor(public text: string, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSIdentifierParent = JSBindPattern | JSMemberExpression | JSImportStarBinding | JSImportAsBinding | JSFunctionDeclaration | JSArrowFunctionDeclaration | never; + +type JSIdentifierChild = never; + +export class JSString extends SyntaxBase { + parentNode: null | JSStringParent = null; + kind: SyntaxKind.JSString = SyntaxKind.JSString; + constructor(public value: string, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSStringParent = JSImportDeclaration | never; + +type JSStringChild = never; + +export class JSInteger extends SyntaxBase { + parentNode: null | JSIntegerParent = null; + kind: SyntaxKind.JSInteger = SyntaxKind.JSInteger; + constructor(public value: bigint, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSIntegerParent = never; + +type JSIntegerChild = never; + +export class JSFromKeyword extends SyntaxBase { + parentNode: null | JSFromKeywordParent = null; + kind: SyntaxKind.JSFromKeyword = SyntaxKind.JSFromKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSFromKeywordParent = never; + +type JSFromKeywordChild = never; + +export class JSReturnKeyword extends SyntaxBase { + parentNode: null | JSReturnKeywordParent = null; + kind: SyntaxKind.JSReturnKeyword = SyntaxKind.JSReturnKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSReturnKeywordParent = never; + +type JSReturnKeywordChild = never; + +export class JSTryKeyword extends SyntaxBase { + parentNode: null | JSTryKeywordParent = null; + kind: SyntaxKind.JSTryKeyword = SyntaxKind.JSTryKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSTryKeywordParent = never; + +type JSTryKeywordChild = never; + +export class JSFinallyKeyword extends SyntaxBase { + parentNode: null | JSFinallyKeywordParent = null; + kind: SyntaxKind.JSFinallyKeyword = SyntaxKind.JSFinallyKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSFinallyKeywordParent = never; + +type JSFinallyKeywordChild = never; + +export class JSCatchKeyword extends SyntaxBase { + parentNode: null | JSCatchKeywordParent = null; + kind: SyntaxKind.JSCatchKeyword = SyntaxKind.JSCatchKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSCatchKeywordParent = never; + +type JSCatchKeywordChild = never; + +export class JSImportKeyword extends SyntaxBase { + parentNode: null | JSImportKeywordParent = null; + kind: SyntaxKind.JSImportKeyword = SyntaxKind.JSImportKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSImportKeywordParent = never; + +type JSImportKeywordChild = never; + +export class JSAsKeyword extends SyntaxBase { + parentNode: null | JSAsKeywordParent = null; + kind: SyntaxKind.JSAsKeyword = SyntaxKind.JSAsKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSAsKeywordParent = never; + +type JSAsKeywordChild = never; + +export class JSConstKeyword extends SyntaxBase { + parentNode: null | JSConstKeywordParent = null; + kind: SyntaxKind.JSConstKeyword = SyntaxKind.JSConstKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSConstKeywordParent = never; + +type JSConstKeywordChild = never; + +export class JSLetKeyword extends SyntaxBase { + parentNode: null | JSLetKeywordParent = null; + kind: SyntaxKind.JSLetKeyword = SyntaxKind.JSLetKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSLetKeywordParent = never; + +type JSLetKeywordChild = never; + +export class JSExportKeyword extends SyntaxBase { + parentNode: null | JSExportKeywordParent = null; + kind: SyntaxKind.JSExportKeyword = SyntaxKind.JSExportKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSExportKeywordParent = never; + +type JSExportKeywordChild = never; + +export class JSFunctionKeyword extends SyntaxBase { + parentNode: null | JSFunctionKeywordParent = null; + kind: SyntaxKind.JSFunctionKeyword = SyntaxKind.JSFunctionKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSFunctionKeywordParent = never; + +type JSFunctionKeywordChild = never; + +export class JSWhileKeyword extends SyntaxBase { + parentNode: null | JSWhileKeywordParent = null; + kind: SyntaxKind.JSWhileKeyword = SyntaxKind.JSWhileKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSWhileKeywordParent = never; + +type JSWhileKeywordChild = never; + +export class JSForKeyword extends SyntaxBase { + parentNode: null | JSForKeywordParent = null; + kind: SyntaxKind.JSForKeyword = SyntaxKind.JSForKeyword; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSForKeywordParent = never; + +type JSForKeywordChild = never; + +export type JSOperatorLike = JSNotOp | JSBNotOp | JSBAndOp | JSBXorOp | JSBOrOp | JSGtOp | JSLtOp | JSSubOp | JSDivOp | JSAddOp | JSMulOp; + +export class JSOperator extends SyntaxBase { + parentNode: null | JSOperatorParent = null; + kind: SyntaxKind.JSOperator = SyntaxKind.JSOperator; + constructor(public text: string, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSOperatorParent = JSBinaryExpression | JSUnaryExpression | never; + +type JSOperatorChild = never; + +export class JSCloseBrace extends SyntaxBase { + parentNode: null | JSCloseBraceParent = null; + kind: SyntaxKind.JSCloseBrace = SyntaxKind.JSCloseBrace; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSCloseBraceParent = never; + +type JSCloseBraceChild = never; + +export class JSCloseBracket extends SyntaxBase { + parentNode: null | JSCloseBracketParent = null; + kind: SyntaxKind.JSCloseBracket = SyntaxKind.JSCloseBracket; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSCloseBracketParent = never; + +type JSCloseBracketChild = never; + +export class JSCloseParen extends SyntaxBase { + parentNode: null | JSCloseParenParent = null; + kind: SyntaxKind.JSCloseParen = SyntaxKind.JSCloseParen; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSCloseParenParent = never; + +type JSCloseParenChild = never; + +export class JSOpenBrace extends SyntaxBase { + parentNode: null | JSOpenBraceParent = null; + kind: SyntaxKind.JSOpenBrace = SyntaxKind.JSOpenBrace; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSOpenBraceParent = never; + +type JSOpenBraceChild = never; + +export class JSOpenBracket extends SyntaxBase { + parentNode: null | JSOpenBracketParent = null; + kind: SyntaxKind.JSOpenBracket = SyntaxKind.JSOpenBracket; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSOpenBracketParent = never; + +type JSOpenBracketChild = never; + +export class JSOpenParen extends SyntaxBase { + parentNode: null | JSOpenParenParent = null; + kind: SyntaxKind.JSOpenParen = SyntaxKind.JSOpenParen; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSOpenParenParent = never; + +type JSOpenParenChild = never; + +export class JSSemi extends SyntaxBase { + parentNode: null | JSSemiParent = null; + kind: SyntaxKind.JSSemi = SyntaxKind.JSSemi; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSSemiParent = never; + +type JSSemiChild = never; + +export class JSComma extends SyntaxBase { + parentNode: null | JSCommaParent = null; + kind: SyntaxKind.JSComma = SyntaxKind.JSComma; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSCommaParent = never; + +type JSCommaChild = never; + +export class JSDot extends SyntaxBase { + parentNode: null | JSDotParent = null; + kind: SyntaxKind.JSDot = SyntaxKind.JSDot; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSDotParent = never; + +type JSDotChild = never; + +export class JSDotDotDot extends SyntaxBase { + parentNode: null | JSDotDotDotParent = null; + kind: SyntaxKind.JSDotDotDot = SyntaxKind.JSDotDotDot; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSDotDotDotParent = never; + +type JSDotDotDotChild = never; + +export class JSMulOp extends SyntaxBase { + parentNode: null | JSMulOpParent = null; + kind: SyntaxKind.JSMulOp = SyntaxKind.JSMulOp; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSMulOpParent = never; + +type JSMulOpChild = never; + +export class JSAddOp extends SyntaxBase { + parentNode: null | JSAddOpParent = null; + kind: SyntaxKind.JSAddOp = SyntaxKind.JSAddOp; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSAddOpParent = never; + +type JSAddOpChild = never; + +export class JSDivOp extends SyntaxBase { + parentNode: null | JSDivOpParent = null; + kind: SyntaxKind.JSDivOp = SyntaxKind.JSDivOp; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSDivOpParent = never; + +type JSDivOpChild = never; + +export class JSSubOp extends SyntaxBase { + parentNode: null | JSSubOpParent = null; + kind: SyntaxKind.JSSubOp = SyntaxKind.JSSubOp; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSSubOpParent = never; + +type JSSubOpChild = never; + +export class JSLtOp extends SyntaxBase { + parentNode: null | JSLtOpParent = null; + kind: SyntaxKind.JSLtOp = SyntaxKind.JSLtOp; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSLtOpParent = never; + +type JSLtOpChild = never; + +export class JSGtOp extends SyntaxBase { + parentNode: null | JSGtOpParent = null; + kind: SyntaxKind.JSGtOp = SyntaxKind.JSGtOp; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSGtOpParent = never; + +type JSGtOpChild = never; + +export class JSBOrOp extends SyntaxBase { + parentNode: null | JSBOrOpParent = null; + kind: SyntaxKind.JSBOrOp = SyntaxKind.JSBOrOp; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSBOrOpParent = never; + +type JSBOrOpChild = never; + +export class JSBXorOp extends SyntaxBase { + parentNode: null | JSBXorOpParent = null; + kind: SyntaxKind.JSBXorOp = SyntaxKind.JSBXorOp; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSBXorOpParent = never; + +type JSBXorOpChild = never; + +export class JSBAndOp extends SyntaxBase { + parentNode: null | JSBAndOpParent = null; + kind: SyntaxKind.JSBAndOp = SyntaxKind.JSBAndOp; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSBAndOpParent = never; + +type JSBAndOpChild = never; + +export class JSBNotOp extends SyntaxBase { + parentNode: null | JSBNotOpParent = null; + kind: SyntaxKind.JSBNotOp = SyntaxKind.JSBNotOp; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSBNotOpParent = never; + +type JSBNotOpChild = never; + +export class JSNotOp extends SyntaxBase { + parentNode: null | JSNotOpParent = null; + kind: SyntaxKind.JSNotOp = SyntaxKind.JSNotOp; + constructor(span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSNotOpParent = never; + +type JSNotOpChild = never; + +export type JSPattern = JSBindPattern; + +export class JSBindPattern extends SyntaxBase { + parentNode: null | JSBindPatternParent = null; + kind: SyntaxKind.JSBindPattern = SyntaxKind.JSBindPattern; + constructor(public name: JSIdentifier, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.name; } +} + +type JSBindPatternParent = JSCatchBlock | JSParameter | JSLetDeclaration | never; + +type JSBindPatternChild = JSIdentifier | never; + +export type JSExpression = JSReferenceExpression | JSLiteralExpression | JSConditionalExpression | JSSequenceExpression | JSNewExpression | JSUnaryExpression | JSBinaryExpression | JSCallExpression | JSMemberExpression | JSConstantExpression; + +export class JSConstantExpression extends SyntaxBase { + parentNode: null | JSConstantExpressionParent = null; + kind: SyntaxKind.JSConstantExpression = SyntaxKind.JSConstantExpression; + constructor(public value: Value, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSConstantExpressionParent = JSMemberExpression | JSCallExpression | JSBinaryExpression | JSUnaryExpression | JSNewExpression | JSSequenceExpression | JSConditionalExpression | JSExpressionStatement | JSConditionalCase | JSReturnStatement | JSParameter | JSArrowFunctionDeclaration | JSLetDeclaration | never; + +type JSConstantExpressionChild = never; + +export class JSMemberExpression extends SyntaxBase { + parentNode: null | JSMemberExpressionParent = null; + kind: SyntaxKind.JSMemberExpression = SyntaxKind.JSMemberExpression; + constructor(public value: JSExpression, public property: JSIdentifier, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.value; yield this.property; } +} + +type JSMemberExpressionParent = JSMemberExpression | JSCallExpression | JSBinaryExpression | JSUnaryExpression | JSNewExpression | JSSequenceExpression | JSConditionalExpression | JSExpressionStatement | JSConditionalCase | JSReturnStatement | JSParameter | JSArrowFunctionDeclaration | JSLetDeclaration | never; + +type JSMemberExpressionChild = JSIdentifier | JSReferenceExpression | JSLiteralExpression | JSConditionalExpression | JSSequenceExpression | JSNewExpression | JSUnaryExpression | JSBinaryExpression | JSCallExpression | JSMemberExpression | JSConstantExpression | never; + +export class JSCallExpression extends SyntaxBase { + parentNode: null | JSCallExpressionParent = null; + kind: SyntaxKind.JSCallExpression = SyntaxKind.JSCallExpression; + constructor(public operator: JSExpression, public operands: JSExpression[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.operator; for (let element of this.operands) + yield element; } +} + +type JSCallExpressionParent = JSMemberExpression | JSCallExpression | JSBinaryExpression | JSUnaryExpression | JSNewExpression | JSSequenceExpression | JSConditionalExpression | JSExpressionStatement | JSConditionalCase | JSReturnStatement | JSParameter | JSArrowFunctionDeclaration | JSLetDeclaration | never; + +type JSCallExpressionChild = JSReferenceExpression | JSLiteralExpression | JSConditionalExpression | JSSequenceExpression | JSNewExpression | JSUnaryExpression | JSBinaryExpression | JSCallExpression | JSMemberExpression | JSConstantExpression | never; + +export class JSBinaryExpression extends SyntaxBase { + parentNode: null | JSBinaryExpressionParent = null; + kind: SyntaxKind.JSBinaryExpression = SyntaxKind.JSBinaryExpression; + constructor(public left: JSExpression, public operator: JSOperator, public right: JSExpression, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.left; yield this.operator; yield this.right; } +} + +type JSBinaryExpressionParent = JSMemberExpression | JSCallExpression | JSBinaryExpression | JSUnaryExpression | JSNewExpression | JSSequenceExpression | JSConditionalExpression | JSExpressionStatement | JSConditionalCase | JSReturnStatement | JSParameter | JSArrowFunctionDeclaration | JSLetDeclaration | never; + +type JSBinaryExpressionChild = JSReferenceExpression | JSLiteralExpression | JSConditionalExpression | JSSequenceExpression | JSNewExpression | JSUnaryExpression | JSBinaryExpression | JSCallExpression | JSMemberExpression | JSConstantExpression | JSOperator | never; + +export class JSUnaryExpression extends SyntaxBase { + parentNode: null | JSUnaryExpressionParent = null; + kind: SyntaxKind.JSUnaryExpression = SyntaxKind.JSUnaryExpression; + constructor(public operator: JSOperator, public operand: JSExpression, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.operator; yield this.operand; } +} + +type JSUnaryExpressionParent = JSMemberExpression | JSCallExpression | JSBinaryExpression | JSUnaryExpression | JSNewExpression | JSSequenceExpression | JSConditionalExpression | JSExpressionStatement | JSConditionalCase | JSReturnStatement | JSParameter | JSArrowFunctionDeclaration | JSLetDeclaration | never; + +type JSUnaryExpressionChild = JSReferenceExpression | JSLiteralExpression | JSConditionalExpression | JSSequenceExpression | JSNewExpression | JSUnaryExpression | JSBinaryExpression | JSCallExpression | JSMemberExpression | JSConstantExpression | JSOperator | never; + +export class JSNewExpression extends SyntaxBase { + parentNode: null | JSNewExpressionParent = null; + kind: SyntaxKind.JSNewExpression = SyntaxKind.JSNewExpression; + constructor(public target: JSExpression, public args: JSExpression[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.target; for (let element of this.args) + yield element; } +} + +type JSNewExpressionParent = JSMemberExpression | JSCallExpression | JSBinaryExpression | JSUnaryExpression | JSNewExpression | JSSequenceExpression | JSConditionalExpression | JSExpressionStatement | JSConditionalCase | JSReturnStatement | JSParameter | JSArrowFunctionDeclaration | JSLetDeclaration | never; + +type JSNewExpressionChild = JSReferenceExpression | JSLiteralExpression | JSConditionalExpression | JSSequenceExpression | JSNewExpression | JSUnaryExpression | JSBinaryExpression | JSCallExpression | JSMemberExpression | JSConstantExpression | never; + +export class JSSequenceExpression extends SyntaxBase { + parentNode: null | JSSequenceExpressionParent = null; + kind: SyntaxKind.JSSequenceExpression = SyntaxKind.JSSequenceExpression; + constructor(public expressions: JSExpression[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { for (let element of this.expressions) + yield element; } +} + +type JSSequenceExpressionParent = JSMemberExpression | JSCallExpression | JSBinaryExpression | JSUnaryExpression | JSNewExpression | JSSequenceExpression | JSConditionalExpression | JSExpressionStatement | JSConditionalCase | JSReturnStatement | JSParameter | JSArrowFunctionDeclaration | JSLetDeclaration | never; + +type JSSequenceExpressionChild = JSReferenceExpression | JSLiteralExpression | JSConditionalExpression | JSSequenceExpression | JSNewExpression | JSUnaryExpression | JSBinaryExpression | JSCallExpression | JSMemberExpression | JSConstantExpression | never; + +export class JSConditionalExpression extends SyntaxBase { + parentNode: null | JSConditionalExpressionParent = null; + kind: SyntaxKind.JSConditionalExpression = SyntaxKind.JSConditionalExpression; + constructor(public test: JSExpression, public consequent: JSExpression, public alternate: JSExpression, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.test; yield this.consequent; yield this.alternate; } +} + +type JSConditionalExpressionParent = JSMemberExpression | JSCallExpression | JSBinaryExpression | JSUnaryExpression | JSNewExpression | JSSequenceExpression | JSConditionalExpression | JSExpressionStatement | JSConditionalCase | JSReturnStatement | JSParameter | JSArrowFunctionDeclaration | JSLetDeclaration | never; + +type JSConditionalExpressionChild = JSReferenceExpression | JSLiteralExpression | JSConditionalExpression | JSSequenceExpression | JSNewExpression | JSUnaryExpression | JSBinaryExpression | JSCallExpression | JSMemberExpression | JSConstantExpression | never; + +export class JSLiteralExpression extends SyntaxBase { + parentNode: null | JSLiteralExpressionParent = null; + kind: SyntaxKind.JSLiteralExpression = SyntaxKind.JSLiteralExpression; + constructor(public value: Value, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSLiteralExpressionParent = JSMemberExpression | JSCallExpression | JSBinaryExpression | JSUnaryExpression | JSNewExpression | JSSequenceExpression | JSConditionalExpression | JSExpressionStatement | JSConditionalCase | JSReturnStatement | JSParameter | JSArrowFunctionDeclaration | JSLetDeclaration | never; + +type JSLiteralExpressionChild = never; + +export class JSReferenceExpression extends SyntaxBase { + parentNode: null | JSReferenceExpressionParent = null; + kind: SyntaxKind.JSReferenceExpression = SyntaxKind.JSReferenceExpression; + constructor(public name: string, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { } +} + +type JSReferenceExpressionParent = JSMemberExpression | JSCallExpression | JSBinaryExpression | JSUnaryExpression | JSNewExpression | JSSequenceExpression | JSConditionalExpression | JSExpressionStatement | JSConditionalCase | JSReturnStatement | JSParameter | JSArrowFunctionDeclaration | JSLetDeclaration | never; + +type JSReferenceExpressionChild = never; + +export type JSSourceElement = JSLetDeclaration | JSArrowFunctionDeclaration | JSFunctionDeclaration | JSImportDeclaration | JSReturnStatement | JSConditionalStatement | JSExpressionStatement | JSTryCatchStatement; + +export type JSFunctionBodyElement = JSLetDeclaration | JSArrowFunctionDeclaration | JSFunctionDeclaration | JSImportDeclaration | JSReturnStatement | JSConditionalStatement | JSExpressionStatement | JSTryCatchStatement; + +export type JSStatement = JSReturnStatement | JSConditionalStatement | JSExpressionStatement | JSTryCatchStatement; + +export class JSCatchBlock extends SyntaxBase { + parentNode: null | JSCatchBlockParent = null; + kind: SyntaxKind.JSCatchBlock = SyntaxKind.JSCatchBlock; + constructor(public bindings: JSPattern | null, public elements: JSSourceElement[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { if (this.bindings !== null) + yield this.bindings; for (let element of this.elements) + yield element; } +} + +type JSCatchBlockParent = JSTryCatchStatement | never; + +type JSCatchBlockChild = JSLetDeclaration | JSArrowFunctionDeclaration | JSFunctionDeclaration | JSImportDeclaration | JSReturnStatement | JSConditionalStatement | JSExpressionStatement | JSTryCatchStatement | JSBindPattern | never; + +export class JSTryCatchStatement extends SyntaxBase { + parentNode: null | JSTryCatchStatementParent = null; + kind: SyntaxKind.JSTryCatchStatement = SyntaxKind.JSTryCatchStatement; + constructor(public tryBlock: JSSourceElement[], public catchBlock: JSCatchBlock | null, public finalBlock: JSSourceElement[] | null, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { for (let element of this.tryBlock) + yield element; if (this.catchBlock !== null) + yield this.catchBlock; if (this.finalBlock !== null) + for (let element of this.finalBlock) + yield element; } +} + +type JSTryCatchStatementParent = JSCatchBlock | JSTryCatchStatement | JSConditionalCase | JSFunctionDeclaration | JSSourceFile | never; + +type JSTryCatchStatementChild = JSLetDeclaration | JSArrowFunctionDeclaration | JSFunctionDeclaration | JSImportDeclaration | JSReturnStatement | JSConditionalStatement | JSExpressionStatement | JSTryCatchStatement | JSCatchBlock | never; + +export class JSExpressionStatement extends SyntaxBase { + parentNode: null | JSExpressionStatementParent = null; + kind: SyntaxKind.JSExpressionStatement = SyntaxKind.JSExpressionStatement; + constructor(public expression: JSExpression, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.expression; } +} + +type JSExpressionStatementParent = JSCatchBlock | JSTryCatchStatement | JSConditionalCase | JSFunctionDeclaration | JSSourceFile | never; + +type JSExpressionStatementChild = JSReferenceExpression | JSLiteralExpression | JSConditionalExpression | JSSequenceExpression | JSNewExpression | JSUnaryExpression | JSBinaryExpression | JSCallExpression | JSMemberExpression | JSConstantExpression | never; + +export class JSConditionalCase extends SyntaxBase { + parentNode: null | JSConditionalCaseParent = null; + kind: SyntaxKind.JSConditionalCase = SyntaxKind.JSConditionalCase; + constructor(public test: JSExpression | null, public body: JSFunctionBodyElement[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { if (this.test !== null) + yield this.test; for (let element of this.body) + yield element; } +} + +type JSConditionalCaseParent = JSConditionalStatement | never; + +type JSConditionalCaseChild = JSLetDeclaration | JSArrowFunctionDeclaration | JSFunctionDeclaration | JSImportDeclaration | JSReturnStatement | JSConditionalStatement | JSExpressionStatement | JSTryCatchStatement | JSReferenceExpression | JSLiteralExpression | JSConditionalExpression | JSSequenceExpression | JSNewExpression | JSUnaryExpression | JSBinaryExpression | JSCallExpression | JSMemberExpression | JSConstantExpression | never; + +export class JSConditionalStatement extends SyntaxBase { + parentNode: null | JSConditionalStatementParent = null; + kind: SyntaxKind.JSConditionalStatement = SyntaxKind.JSConditionalStatement; + constructor(public cases: JSConditionalCase[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { for (let element of this.cases) + yield element; } +} + +type JSConditionalStatementParent = JSCatchBlock | JSTryCatchStatement | JSConditionalCase | JSFunctionDeclaration | JSSourceFile | never; + +type JSConditionalStatementChild = JSConditionalCase | never; + +export class JSReturnStatement extends SyntaxBase { + parentNode: null | JSReturnStatementParent = null; + kind: SyntaxKind.JSReturnStatement = SyntaxKind.JSReturnStatement; + constructor(public value: JSExpression | null, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { if (this.value !== null) + yield this.value; } +} + +type JSReturnStatementParent = JSCatchBlock | JSTryCatchStatement | JSConditionalCase | JSFunctionDeclaration | JSSourceFile | never; + +type JSReturnStatementChild = JSReferenceExpression | JSLiteralExpression | JSConditionalExpression | JSSequenceExpression | JSNewExpression | JSUnaryExpression | JSBinaryExpression | JSCallExpression | JSMemberExpression | JSConstantExpression | never; + +export class JSParameter extends SyntaxBase { + parentNode: null | JSParameterParent = null; + kind: SyntaxKind.JSParameter = SyntaxKind.JSParameter; + constructor(public index: number, public bindings: JSPattern, public defaultValue: JSExpression | null, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.bindings; if (this.defaultValue !== null) + yield this.defaultValue; } +} + +type JSParameterParent = JSFunctionDeclaration | JSArrowFunctionDeclaration | never; + +type JSParameterChild = JSReferenceExpression | JSLiteralExpression | JSConditionalExpression | JSSequenceExpression | JSNewExpression | JSUnaryExpression | JSBinaryExpression | JSCallExpression | JSMemberExpression | JSConstantExpression | JSBindPattern | never; + +export type JSDeclaration = JSLetDeclaration | JSArrowFunctionDeclaration | JSFunctionDeclaration | JSImportDeclaration; + +export type JSImportBinding = JSImportAsBinding | JSImportStarBinding; + +export class JSImportStarBinding extends SyntaxBase { + parentNode: null | JSImportStarBindingParent = null; + kind: SyntaxKind.JSImportStarBinding = SyntaxKind.JSImportStarBinding; + constructor(public local: JSIdentifier, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.local; } +} + +type JSImportStarBindingParent = JSImportDeclaration | never; + +type JSImportStarBindingChild = JSIdentifier | never; + +export class JSImportAsBinding extends SyntaxBase { + parentNode: null | JSImportAsBindingParent = null; + kind: SyntaxKind.JSImportAsBinding = SyntaxKind.JSImportAsBinding; + constructor(public remote: JSIdentifier, public local: JSIdentifier | null, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.remote; if (this.local !== null) + yield this.local; } +} + +type JSImportAsBindingParent = JSImportDeclaration | never; + +type JSImportAsBindingChild = JSIdentifier | never; + +export class JSImportDeclaration extends SyntaxBase { + parentNode: null | JSImportDeclarationParent = null; + kind: SyntaxKind.JSImportDeclaration = SyntaxKind.JSImportDeclaration; + constructor(public bindings: JSImportBinding[], public filename: JSString, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { for (let element of this.bindings) + yield element; yield this.filename; } +} + +type JSImportDeclarationParent = JSCatchBlock | JSTryCatchStatement | JSConditionalCase | JSSourceFile | never; + +type JSImportDeclarationChild = JSString | JSImportAsBinding | JSImportStarBinding | never; + +export class JSFunctionDeclaration extends SyntaxBase { + parentNode: null | JSFunctionDeclarationParent = null; + kind: SyntaxKind.JSFunctionDeclaration = SyntaxKind.JSFunctionDeclaration; + constructor(public modifiers: JSDeclarationModifiers, public name: JSIdentifier, public params: JSParameter[], public body: JSStatement[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.name; for (let element of this.params) + yield element; for (let element of this.body) + yield element; } +} + +type JSFunctionDeclarationParent = JSCatchBlock | JSTryCatchStatement | JSConditionalCase | JSSourceFile | never; + +type JSFunctionDeclarationChild = JSReturnStatement | JSConditionalStatement | JSExpressionStatement | JSTryCatchStatement | JSParameter | JSIdentifier | never; + +export class JSArrowFunctionDeclaration extends SyntaxBase { + parentNode: null | JSArrowFunctionDeclarationParent = null; + kind: SyntaxKind.JSArrowFunctionDeclaration = SyntaxKind.JSArrowFunctionDeclaration; + constructor(public name: JSIdentifier, public params: JSParameter[], public body: JSExpression, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.name; for (let element of this.params) + yield element; yield this.body; } +} + +type JSArrowFunctionDeclarationParent = JSCatchBlock | JSTryCatchStatement | JSConditionalCase | JSSourceFile | never; + +type JSArrowFunctionDeclarationChild = JSReferenceExpression | JSLiteralExpression | JSConditionalExpression | JSSequenceExpression | JSNewExpression | JSUnaryExpression | JSBinaryExpression | JSCallExpression | JSMemberExpression | JSConstantExpression | JSParameter | JSIdentifier | never; + +export class JSLetDeclaration extends SyntaxBase { + parentNode: null | JSLetDeclarationParent = null; + kind: SyntaxKind.JSLetDeclaration = SyntaxKind.JSLetDeclaration; + constructor(public bindings: JSPattern, public value: JSExpression | null, span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { yield this.bindings; if (this.value !== null) + yield this.value; } +} + +type JSLetDeclarationParent = JSCatchBlock | JSTryCatchStatement | JSConditionalCase | JSSourceFile | never; + +type JSLetDeclarationChild = JSReferenceExpression | JSLiteralExpression | JSConditionalExpression | JSSequenceExpression | JSNewExpression | JSUnaryExpression | JSBinaryExpression | JSCallExpression | JSMemberExpression | JSConstantExpression | JSBindPattern | never; + +export class JSSourceFile extends SyntaxBase { + parentNode: null | JSSourceFileParent = null; + kind: SyntaxKind.JSSourceFile = SyntaxKind.JSSourceFile; + constructor(public elements: JSSourceElement[], span: TextSpan | null = null) { super(span); } + *getChildNodes(): IterableIterator { for (let element of this.elements) + yield element; } +} + +type JSSourceFileParent = never; + +type JSSourceFileChild = JSLetDeclaration | JSArrowFunctionDeclaration | JSFunctionDeclaration | JSImportDeclaration | JSReturnStatement | JSConditionalStatement | JSExpressionStatement | JSTryCatchStatement | never; + +export function createEndOfFile(span: TextSpan | null = null): EndOfFile { return new EndOfFile(span); } + +export function createBoltStringLiteral(value: string, span: TextSpan | null = null): BoltStringLiteral { return new BoltStringLiteral(value, span); } + +export function createBoltIntegerLiteral(value: bigint, span: TextSpan | null = null): BoltIntegerLiteral { return new BoltIntegerLiteral(value, span); } + +export function createBoltIdentifier(text: string, span: TextSpan | null = null): BoltIdentifier { return new BoltIdentifier(text, span); } + +export function createBoltOperator(text: string, span: TextSpan | null = null): BoltOperator { return new BoltOperator(text, span); } + +export function createBoltAssignment(operator: string | null, span: TextSpan | null = null): BoltAssignment { return new BoltAssignment(operator, span); } + +export function createBoltComma(span: TextSpan | null = null): BoltComma { return new BoltComma(span); } + +export function createBoltSemi(span: TextSpan | null = null): BoltSemi { return new BoltSemi(span); } + +export function createBoltColon(span: TextSpan | null = null): BoltColon { return new BoltColon(span); } + +export function createBoltColonColon(span: TextSpan | null = null): BoltColonColon { return new BoltColonColon(span); } + +export function createBoltDot(span: TextSpan | null = null): BoltDot { return new BoltDot(span); } + +export function createBoltDotDot(span: TextSpan | null = null): BoltDotDot { return new BoltDotDot(span); } + +export function createBoltRArrow(span: TextSpan | null = null): BoltRArrow { return new BoltRArrow(span); } + +export function createBoltRArrowAlt(span: TextSpan | null = null): BoltRArrowAlt { return new BoltRArrowAlt(span); } + +export function createBoltLArrow(span: TextSpan | null = null): BoltLArrow { return new BoltLArrow(span); } + +export function createBoltEqSign(span: TextSpan | null = null): BoltEqSign { return new BoltEqSign(span); } + +export function createBoltGtSign(span: TextSpan | null = null): BoltGtSign { return new BoltGtSign(span); } + +export function createBoltExMark(span: TextSpan | null = null): BoltExMark { return new BoltExMark(span); } + +export function createBoltLtSign(span: TextSpan | null = null): BoltLtSign { return new BoltLtSign(span); } + +export function createBoltVBar(span: TextSpan | null = null): BoltVBar { return new BoltVBar(span); } + +export function createBoltWhereKeyword(span: TextSpan | null = null): BoltWhereKeyword { return new BoltWhereKeyword(span); } + +export function createBoltQuoteKeyword(span: TextSpan | null = null): BoltQuoteKeyword { return new BoltQuoteKeyword(span); } + +export function createBoltFnKeyword(span: TextSpan | null = null): BoltFnKeyword { return new BoltFnKeyword(span); } + +export function createBoltForeignKeyword(span: TextSpan | null = null): BoltForeignKeyword { return new BoltForeignKeyword(span); } + +export function createBoltForKeyword(span: TextSpan | null = null): BoltForKeyword { return new BoltForKeyword(span); } + +export function createBoltLetKeyword(span: TextSpan | null = null): BoltLetKeyword { return new BoltLetKeyword(span); } + +export function createBoltReturnKeyword(span: TextSpan | null = null): BoltReturnKeyword { return new BoltReturnKeyword(span); } + +export function createBoltLoopKeyword(span: TextSpan | null = null): BoltLoopKeyword { return new BoltLoopKeyword(span); } + +export function createBoltYieldKeyword(span: TextSpan | null = null): BoltYieldKeyword { return new BoltYieldKeyword(span); } + +export function createBoltMatchKeyword(span: TextSpan | null = null): BoltMatchKeyword { return new BoltMatchKeyword(span); } + +export function createBoltImportKeyword(span: TextSpan | null = null): BoltImportKeyword { return new BoltImportKeyword(span); } + +export function createBoltExportKeyword(span: TextSpan | null = null): BoltExportKeyword { return new BoltExportKeyword(span); } + +export function createBoltPubKeyword(span: TextSpan | null = null): BoltPubKeyword { return new BoltPubKeyword(span); } + +export function createBoltModKeyword(span: TextSpan | null = null): BoltModKeyword { return new BoltModKeyword(span); } + +export function createBoltMutKeyword(span: TextSpan | null = null): BoltMutKeyword { return new BoltMutKeyword(span); } + +export function createBoltEnumKeyword(span: TextSpan | null = null): BoltEnumKeyword { return new BoltEnumKeyword(span); } + +export function createBoltStructKeyword(span: TextSpan | null = null): BoltStructKeyword { return new BoltStructKeyword(span); } + +export function createBoltTypeKeyword(span: TextSpan | null = null): BoltTypeKeyword { return new BoltTypeKeyword(span); } + +export function createBoltTraitKeyword(span: TextSpan | null = null): BoltTraitKeyword { return new BoltTraitKeyword(span); } + +export function createBoltImplKeyword(span: TextSpan | null = null): BoltImplKeyword { return new BoltImplKeyword(span); } + +export function createBoltParenthesized(text: string, span: TextSpan | null = null): BoltParenthesized { return new BoltParenthesized(text, span); } + +export function createBoltBraced(text: string, span: TextSpan | null = null): BoltBraced { return new BoltBraced(text, span); } + +export function createBoltBracketed(text: string, span: TextSpan | null = null): BoltBracketed { return new BoltBracketed(text, span); } + +export function createBoltSourceFile(elements: BoltSourceElement[], pkg: Package, span: TextSpan | null = null): BoltSourceFile { return new BoltSourceFile(elements, pkg, span); } + +export function createBoltQualName(isAbsolute: boolean, modulePath: BoltIdentifier[], name: BoltSymbol, span: TextSpan | null = null): BoltQualName { return new BoltQualName(isAbsolute, modulePath, name, span); } + +export function createBoltTypeOfExpression(expression: BoltExpression, span: TextSpan | null = null): BoltTypeOfExpression { return new BoltTypeOfExpression(expression, span); } + +export function createBoltReferenceTypeExpression(name: BoltQualName, typeArgs: BoltTypeExpression[] | null, span: TextSpan | null = null): BoltReferenceTypeExpression { return new BoltReferenceTypeExpression(name, typeArgs, span); } + +export function createBoltFunctionTypeExpression(params: BoltParameter[], returnType: BoltTypeExpression | null, span: TextSpan | null = null): BoltFunctionTypeExpression { return new BoltFunctionTypeExpression(params, returnType, span); } + +export function createBoltLiftedTypeExpression(expression: BoltExpression, span: TextSpan | null = null): BoltLiftedTypeExpression { return new BoltLiftedTypeExpression(expression, span); } + +export function createBoltTypeParameter(index: number, name: BoltIdentifier, typeExpr: BoltTypeExpression | null, defaultType: BoltTypeExpression | null, span: TextSpan | null = null): BoltTypeParameter { return new BoltTypeParameter(index, name, typeExpr, defaultType, span); } + +export function createBoltBindPattern(name: BoltIdentifier, span: TextSpan | null = null): BoltBindPattern { return new BoltBindPattern(name, span); } + +export function createBoltTypePattern(typeExpr: BoltTypeExpression, nestedPattern: BoltPattern, span: TextSpan | null = null): BoltTypePattern { return new BoltTypePattern(typeExpr, nestedPattern, span); } + +export function createBoltExpressionPattern(expression: BoltExpression, span: TextSpan | null = null): BoltExpressionPattern { return new BoltExpressionPattern(expression, span); } + +export function createBoltTuplePatternElement(index: number, pattern: BoltPattern, span: TextSpan | null = null): BoltTuplePatternElement { return new BoltTuplePatternElement(index, pattern, span); } + +export function createBoltTuplePattern(elements: BoltTuplePatternElement[], span: TextSpan | null = null): BoltTuplePattern { return new BoltTuplePattern(elements, span); } + +export function createBoltRecordFieldPattern(isRest: boolean, name: BoltIdentifier | null, pattern: BoltPattern | null, span: TextSpan | null = null): BoltRecordFieldPattern { return new BoltRecordFieldPattern(isRest, name, pattern, span); } + +export function createBoltRecordPattern(name: BoltTypeExpression, fields: BoltRecordFieldPattern[], span: TextSpan | null = null): BoltRecordPattern { return new BoltRecordPattern(name, fields, span); } + +export function createBoltQuoteExpression(tokens: (Token | BoltExpression)[], span: TextSpan | null = null): BoltQuoteExpression { return new BoltQuoteExpression(tokens, span); } + +export function createBoltTupleExpression(elements: BoltExpression[], span: TextSpan | null = null): BoltTupleExpression { return new BoltTupleExpression(elements, span); } + +export function createBoltReferenceExpression(name: BoltQualName, span: TextSpan | null = null): BoltReferenceExpression { return new BoltReferenceExpression(name, span); } + +export function createBoltMemberExpression(expression: BoltExpression, path: BoltIdentifier[], span: TextSpan | null = null): BoltMemberExpression { return new BoltMemberExpression(expression, path, span); } + +export function createBoltFunctionExpression(params: BoltParameter[], returnType: BoltTypeExpression | null, body: BoltFunctionBodyElement[], span: TextSpan | null = null): BoltFunctionExpression { return new BoltFunctionExpression(params, returnType, body, span); } + +export function createBoltCallExpression(operator: BoltExpression, operands: BoltExpression[], span: TextSpan | null = null): BoltCallExpression { return new BoltCallExpression(operator, operands, span); } + +export function createBoltYieldExpression(value: BoltExpression, span: TextSpan | null = null): BoltYieldExpression { return new BoltYieldExpression(value, span); } + +export function createBoltMatchArm(pattern: BoltPattern, body: BoltExpression, span: TextSpan | null = null): BoltMatchArm { return new BoltMatchArm(pattern, body, span); } + +export function createBoltMatchExpression(value: BoltExpression, arms: BoltMatchArm[], span: TextSpan | null = null): BoltMatchExpression { return new BoltMatchExpression(value, arms, span); } + +export function createBoltCase(test: BoltExpression, result: BoltExpression, span: TextSpan | null = null): BoltCase { return new BoltCase(test, result, span); } + +export function createBoltCaseExpression(cases: BoltCase[], span: TextSpan | null = null): BoltCaseExpression { return new BoltCaseExpression(cases, span); } + +export function createBoltBlockExpression(elements: BoltFunctionBodyElement[], span: TextSpan | null = null): BoltBlockExpression { return new BoltBlockExpression(elements, span); } + +export function createBoltConstantExpression(value: Value, span: TextSpan | null = null): BoltConstantExpression { return new BoltConstantExpression(value, span); } + +export function createBoltReturnStatement(value: BoltExpression | null, span: TextSpan | null = null): BoltReturnStatement { return new BoltReturnStatement(value, span); } + +export function createBoltConditionalCase(test: BoltExpression | null, body: BoltFunctionBodyElement[], span: TextSpan | null = null): BoltConditionalCase { return new BoltConditionalCase(test, body, span); } + +export function createBoltConditionalStatement(cases: BoltConditionalCase[], span: TextSpan | null = null): BoltConditionalStatement { return new BoltConditionalStatement(cases, span); } + +export function createBoltResumeStatement(value: BoltExpression, span: TextSpan | null = null): BoltResumeStatement { return new BoltResumeStatement(value, span); } + +export function createBoltExpressionStatement(expression: BoltExpression, span: TextSpan | null = null): BoltExpressionStatement { return new BoltExpressionStatement(expression, span); } + +export function createBoltLoopStatement(elements: BoltFunctionBodyElement[], span: TextSpan | null = null): BoltLoopStatement { return new BoltLoopStatement(elements, span); } + +export function createBoltParameter(index: number, bindings: BoltPattern, typeExpr: BoltTypeExpression | null, defaultValue: BoltExpression | null, span: TextSpan | null = null): BoltParameter { return new BoltParameter(index, bindings, typeExpr, defaultValue, span); } + +export function createBoltModule(modifiers: BoltModifiers, name: BoltIdentifier[], elements: BoltSourceElement[], span: TextSpan | null = null): BoltModule { return new BoltModule(modifiers, name, elements, span); } + +export function createBoltFunctionDeclaration(modifiers: BoltModifiers, target: string, name: BoltSymbol, params: BoltParameter[], returnType: BoltTypeExpression | null, typeParams: BoltTypeParameter[] | null, body: BoltFunctionBodyElement[], span: TextSpan | null = null): BoltFunctionDeclaration { return new BoltFunctionDeclaration(modifiers, target, name, params, returnType, typeParams, body, span); } + +export function createBoltVariableDeclaration(modifiers: BoltModifiers, bindings: BoltPattern, typeExpr: BoltTypeExpression | null, value: BoltExpression | null, span: TextSpan | null = null): BoltVariableDeclaration { return new BoltVariableDeclaration(modifiers, bindings, typeExpr, value, span); } + +export function createBoltPlainImportSymbol(remote: BoltQualName, local: BoltSymbol, span: TextSpan | null = null): BoltPlainImportSymbol { return new BoltPlainImportSymbol(remote, local, span); } + +export function createBoltImportDirective(modifiers: BoltModifiers, file: BoltStringLiteral, symbols: BoltImportSymbol[] | null, span: TextSpan | null = null): BoltImportDirective { return new BoltImportDirective(modifiers, file, symbols, span); } + +export function createBoltPlainExportSymbol(local: BoltQualName, remote: BoltSymbol, span: TextSpan | null = null): BoltPlainExportSymbol { return new BoltPlainExportSymbol(local, remote, span); } + +export function createBoltExportDirective(file: string, symbols: BoltExportSymbol[] | null, span: TextSpan | null = null): BoltExportDirective { return new BoltExportDirective(file, symbols, span); } + +export function createBoltTraitDeclaration(modifiers: BoltModifiers, typeParams: BoltTypeParameter[] | null, name: BoltIdentifier, typeBoundExpr: BoltTypeExpression | null, elements: BoltTraitOrImplElement[] | null, span: TextSpan | null = null): BoltTraitDeclaration { return new BoltTraitDeclaration(modifiers, typeParams, name, typeBoundExpr, elements, span); } + +export function createBoltImplDeclaration(modifiers: BoltModifiers, typeParams: BoltTypeParameter[] | null, name: BoltIdentifier, traitTypeExpr: BoltTypeExpression | null, elements: BoltTraitOrImplElement[], span: TextSpan | null = null): BoltImplDeclaration { return new BoltImplDeclaration(modifiers, typeParams, name, traitTypeExpr, elements, span); } + +export function createBoltTypeAliasDeclaration(modifiers: BoltModifiers, name: BoltIdentifier, typeParams: BoltTypeParameter[] | null, typeExpr: BoltTypeExpression, span: TextSpan | null = null): BoltTypeAliasDeclaration { return new BoltTypeAliasDeclaration(modifiers, name, typeParams, typeExpr, span); } + +export function createBoltRecordField(name: BoltIdentifier, typeExpr: BoltTypeExpression, span: TextSpan | null = null): BoltRecordField { return new BoltRecordField(name, typeExpr, span); } + +export function createBoltRecordDeclaration(modifiers: BoltModifiers, name: BoltIdentifier, typeParms: BoltTypeParameter[] | null, members: BoltRecordMember[] | null, span: TextSpan | null = null): BoltRecordDeclaration { return new BoltRecordDeclaration(modifiers, name, typeParms, members, span); } + +export function createBoltMacroCall(name: BoltIdentifier, text: string, span: TextSpan | null = null): BoltMacroCall { return new BoltMacroCall(name, text, span); } + +export function createJSIdentifier(text: string, span: TextSpan | null = null): JSIdentifier { return new JSIdentifier(text, span); } + +export function createJSString(value: string, span: TextSpan | null = null): JSString { return new JSString(value, span); } + +export function createJSInteger(value: bigint, span: TextSpan | null = null): JSInteger { return new JSInteger(value, span); } + +export function createJSFromKeyword(span: TextSpan | null = null): JSFromKeyword { return new JSFromKeyword(span); } + +export function createJSReturnKeyword(span: TextSpan | null = null): JSReturnKeyword { return new JSReturnKeyword(span); } + +export function createJSTryKeyword(span: TextSpan | null = null): JSTryKeyword { return new JSTryKeyword(span); } + +export function createJSFinallyKeyword(span: TextSpan | null = null): JSFinallyKeyword { return new JSFinallyKeyword(span); } + +export function createJSCatchKeyword(span: TextSpan | null = null): JSCatchKeyword { return new JSCatchKeyword(span); } + +export function createJSImportKeyword(span: TextSpan | null = null): JSImportKeyword { return new JSImportKeyword(span); } + +export function createJSAsKeyword(span: TextSpan | null = null): JSAsKeyword { return new JSAsKeyword(span); } + +export function createJSConstKeyword(span: TextSpan | null = null): JSConstKeyword { return new JSConstKeyword(span); } + +export function createJSLetKeyword(span: TextSpan | null = null): JSLetKeyword { return new JSLetKeyword(span); } + +export function createJSExportKeyword(span: TextSpan | null = null): JSExportKeyword { return new JSExportKeyword(span); } + +export function createJSFunctionKeyword(span: TextSpan | null = null): JSFunctionKeyword { return new JSFunctionKeyword(span); } + +export function createJSWhileKeyword(span: TextSpan | null = null): JSWhileKeyword { return new JSWhileKeyword(span); } + +export function createJSForKeyword(span: TextSpan | null = null): JSForKeyword { return new JSForKeyword(span); } + +export function createJSOperator(text: string, span: TextSpan | null = null): JSOperator { return new JSOperator(text, span); } + +export function createJSCloseBrace(span: TextSpan | null = null): JSCloseBrace { return new JSCloseBrace(span); } + +export function createJSCloseBracket(span: TextSpan | null = null): JSCloseBracket { return new JSCloseBracket(span); } + +export function createJSCloseParen(span: TextSpan | null = null): JSCloseParen { return new JSCloseParen(span); } + +export function createJSOpenBrace(span: TextSpan | null = null): JSOpenBrace { return new JSOpenBrace(span); } + +export function createJSOpenBracket(span: TextSpan | null = null): JSOpenBracket { return new JSOpenBracket(span); } + +export function createJSOpenParen(span: TextSpan | null = null): JSOpenParen { return new JSOpenParen(span); } + +export function createJSSemi(span: TextSpan | null = null): JSSemi { return new JSSemi(span); } + +export function createJSComma(span: TextSpan | null = null): JSComma { return new JSComma(span); } + +export function createJSDot(span: TextSpan | null = null): JSDot { return new JSDot(span); } + +export function createJSDotDotDot(span: TextSpan | null = null): JSDotDotDot { return new JSDotDotDot(span); } + +export function createJSMulOp(span: TextSpan | null = null): JSMulOp { return new JSMulOp(span); } + +export function createJSAddOp(span: TextSpan | null = null): JSAddOp { return new JSAddOp(span); } + +export function createJSDivOp(span: TextSpan | null = null): JSDivOp { return new JSDivOp(span); } + +export function createJSSubOp(span: TextSpan | null = null): JSSubOp { return new JSSubOp(span); } + +export function createJSLtOp(span: TextSpan | null = null): JSLtOp { return new JSLtOp(span); } + +export function createJSGtOp(span: TextSpan | null = null): JSGtOp { return new JSGtOp(span); } + +export function createJSBOrOp(span: TextSpan | null = null): JSBOrOp { return new JSBOrOp(span); } + +export function createJSBXorOp(span: TextSpan | null = null): JSBXorOp { return new JSBXorOp(span); } + +export function createJSBAndOp(span: TextSpan | null = null): JSBAndOp { return new JSBAndOp(span); } + +export function createJSBNotOp(span: TextSpan | null = null): JSBNotOp { return new JSBNotOp(span); } + +export function createJSNotOp(span: TextSpan | null = null): JSNotOp { return new JSNotOp(span); } + +export function createJSBindPattern(name: JSIdentifier, span: TextSpan | null = null): JSBindPattern { return new JSBindPattern(name, span); } + +export function createJSConstantExpression(value: Value, span: TextSpan | null = null): JSConstantExpression { return new JSConstantExpression(value, span); } + +export function createJSMemberExpression(value: JSExpression, property: JSIdentifier, span: TextSpan | null = null): JSMemberExpression { return new JSMemberExpression(value, property, span); } + +export function createJSCallExpression(operator: JSExpression, operands: JSExpression[], span: TextSpan | null = null): JSCallExpression { return new JSCallExpression(operator, operands, span); } + +export function createJSBinaryExpression(left: JSExpression, operator: JSOperator, right: JSExpression, span: TextSpan | null = null): JSBinaryExpression { return new JSBinaryExpression(left, operator, right, span); } + +export function createJSUnaryExpression(operator: JSOperator, operand: JSExpression, span: TextSpan | null = null): JSUnaryExpression { return new JSUnaryExpression(operator, operand, span); } + +export function createJSNewExpression(target: JSExpression, args: JSExpression[], span: TextSpan | null = null): JSNewExpression { return new JSNewExpression(target, args, span); } + +export function createJSSequenceExpression(expressions: JSExpression[], span: TextSpan | null = null): JSSequenceExpression { return new JSSequenceExpression(expressions, span); } + +export function createJSConditionalExpression(test: JSExpression, consequent: JSExpression, alternate: JSExpression, span: TextSpan | null = null): JSConditionalExpression { return new JSConditionalExpression(test, consequent, alternate, span); } + +export function createJSLiteralExpression(value: Value, span: TextSpan | null = null): JSLiteralExpression { return new JSLiteralExpression(value, span); } + +export function createJSReferenceExpression(name: string, span: TextSpan | null = null): JSReferenceExpression { return new JSReferenceExpression(name, span); } + +export function createJSCatchBlock(bindings: JSPattern | null, elements: JSSourceElement[], span: TextSpan | null = null): JSCatchBlock { return new JSCatchBlock(bindings, elements, span); } + +export function createJSTryCatchStatement(tryBlock: JSSourceElement[], catchBlock: JSCatchBlock | null, finalBlock: JSSourceElement[] | null, span: TextSpan | null = null): JSTryCatchStatement { return new JSTryCatchStatement(tryBlock, catchBlock, finalBlock, span); } + +export function createJSExpressionStatement(expression: JSExpression, span: TextSpan | null = null): JSExpressionStatement { return new JSExpressionStatement(expression, span); } + +export function createJSConditionalCase(test: JSExpression | null, body: JSFunctionBodyElement[], span: TextSpan | null = null): JSConditionalCase { return new JSConditionalCase(test, body, span); } + +export function createJSConditionalStatement(cases: JSConditionalCase[], span: TextSpan | null = null): JSConditionalStatement { return new JSConditionalStatement(cases, span); } + +export function createJSReturnStatement(value: JSExpression | null, span: TextSpan | null = null): JSReturnStatement { return new JSReturnStatement(value, span); } + +export function createJSParameter(index: number, bindings: JSPattern, defaultValue: JSExpression | null, span: TextSpan | null = null): JSParameter { return new JSParameter(index, bindings, defaultValue, span); } + +export function createJSImportStarBinding(local: JSIdentifier, span: TextSpan | null = null): JSImportStarBinding { return new JSImportStarBinding(local, span); } + +export function createJSImportAsBinding(remote: JSIdentifier, local: JSIdentifier | null, span: TextSpan | null = null): JSImportAsBinding { return new JSImportAsBinding(remote, local, span); } + +export function createJSImportDeclaration(bindings: JSImportBinding[], filename: JSString, span: TextSpan | null = null): JSImportDeclaration { return new JSImportDeclaration(bindings, filename, span); } + +export function createJSFunctionDeclaration(modifiers: JSDeclarationModifiers, name: JSIdentifier, params: JSParameter[], body: JSStatement[], span: TextSpan | null = null): JSFunctionDeclaration { return new JSFunctionDeclaration(modifiers, name, params, body, span); } + +export function createJSArrowFunctionDeclaration(name: JSIdentifier, params: JSParameter[], body: JSExpression, span: TextSpan | null = null): JSArrowFunctionDeclaration { return new JSArrowFunctionDeclaration(name, params, body, span); } + +export function createJSLetDeclaration(bindings: JSPattern, value: JSExpression | null, span: TextSpan | null = null): JSLetDeclaration { return new JSLetDeclaration(bindings, value, span); } + +export function createJSSourceFile(elements: JSSourceElement[], span: TextSpan | null = null): JSSourceFile { return new JSSourceFile(elements, span); } + +export function isEndOfFile(value: any): value is EndOfFile { return value.kind === SyntaxKind.EndOfFile; } + +export function isToken(value: any): value is Token { return value.kind === SyntaxKind.JSNotOp || value.kind === SyntaxKind.JSBNotOp || value.kind === SyntaxKind.JSBAndOp || value.kind === SyntaxKind.JSBXorOp || value.kind === SyntaxKind.JSBOrOp || value.kind === SyntaxKind.JSGtOp || value.kind === SyntaxKind.JSLtOp || value.kind === SyntaxKind.JSSubOp || value.kind === SyntaxKind.JSDivOp || value.kind === SyntaxKind.JSAddOp || value.kind === SyntaxKind.JSMulOp || value.kind === SyntaxKind.JSDotDotDot || value.kind === SyntaxKind.JSDot || value.kind === SyntaxKind.JSComma || value.kind === SyntaxKind.JSSemi || value.kind === SyntaxKind.JSOpenParen || value.kind === SyntaxKind.JSOpenBracket || value.kind === SyntaxKind.JSOpenBrace || value.kind === SyntaxKind.JSCloseParen || value.kind === SyntaxKind.JSCloseBracket || value.kind === SyntaxKind.JSCloseBrace || value.kind === SyntaxKind.JSOperator || value.kind === SyntaxKind.JSForKeyword || value.kind === SyntaxKind.JSWhileKeyword || value.kind === SyntaxKind.JSFunctionKeyword || value.kind === SyntaxKind.JSExportKeyword || value.kind === SyntaxKind.JSLetKeyword || value.kind === SyntaxKind.JSConstKeyword || value.kind === SyntaxKind.JSAsKeyword || value.kind === SyntaxKind.JSImportKeyword || value.kind === SyntaxKind.JSCatchKeyword || value.kind === SyntaxKind.JSFinallyKeyword || value.kind === SyntaxKind.JSTryKeyword || value.kind === SyntaxKind.JSReturnKeyword || value.kind === SyntaxKind.JSFromKeyword || value.kind === SyntaxKind.JSInteger || value.kind === SyntaxKind.JSString || value.kind === SyntaxKind.JSIdentifier || value.kind === SyntaxKind.EndOfFile || value.kind === SyntaxKind.BoltBracketed || value.kind === SyntaxKind.BoltBraced || value.kind === SyntaxKind.BoltParenthesized || value.kind === SyntaxKind.BoltImplKeyword || value.kind === SyntaxKind.BoltTraitKeyword || value.kind === SyntaxKind.BoltTypeKeyword || value.kind === SyntaxKind.BoltStructKeyword || value.kind === SyntaxKind.BoltEnumKeyword || value.kind === SyntaxKind.BoltMutKeyword || value.kind === SyntaxKind.BoltModKeyword || value.kind === SyntaxKind.BoltPubKeyword || value.kind === SyntaxKind.BoltExportKeyword || value.kind === SyntaxKind.BoltImportKeyword || value.kind === SyntaxKind.BoltMatchKeyword || value.kind === SyntaxKind.BoltYieldKeyword || value.kind === SyntaxKind.BoltLoopKeyword || value.kind === SyntaxKind.BoltReturnKeyword || value.kind === SyntaxKind.BoltLetKeyword || value.kind === SyntaxKind.BoltForKeyword || value.kind === SyntaxKind.BoltForeignKeyword || value.kind === SyntaxKind.BoltFnKeyword || value.kind === SyntaxKind.BoltQuoteKeyword || value.kind === SyntaxKind.BoltWhereKeyword || value.kind === SyntaxKind.BoltVBar || value.kind === SyntaxKind.BoltLtSign || value.kind === SyntaxKind.BoltExMark || value.kind === SyntaxKind.BoltGtSign || value.kind === SyntaxKind.BoltEqSign || value.kind === SyntaxKind.BoltLArrow || value.kind === SyntaxKind.BoltRArrowAlt || value.kind === SyntaxKind.BoltRArrow || value.kind === SyntaxKind.BoltDotDot || value.kind === SyntaxKind.BoltDot || value.kind === SyntaxKind.BoltColonColon || value.kind === SyntaxKind.BoltColon || value.kind === SyntaxKind.BoltSemi || value.kind === SyntaxKind.BoltComma || value.kind === SyntaxKind.BoltAssignment || value.kind === SyntaxKind.BoltOperator || value.kind === SyntaxKind.BoltIdentifier || value.kind === SyntaxKind.BoltIntegerLiteral || value.kind === SyntaxKind.BoltStringLiteral; } + +export function isSourceFile(value: any): value is SourceFile { return value.kind === SyntaxKind.JSSourceFile || value.kind === SyntaxKind.BoltSourceFile; } + +export function isFunctionBodyElement(value: any): value is FunctionBodyElement { return value.kind === SyntaxKind.JSLetDeclaration || value.kind === SyntaxKind.JSArrowFunctionDeclaration || value.kind === SyntaxKind.JSFunctionDeclaration || value.kind === SyntaxKind.JSImportDeclaration || value.kind === SyntaxKind.JSReturnStatement || value.kind === SyntaxKind.JSConditionalStatement || value.kind === SyntaxKind.JSExpressionStatement || value.kind === SyntaxKind.JSTryCatchStatement || value.kind === SyntaxKind.BoltMacroCall || value.kind === SyntaxKind.BoltVariableDeclaration || value.kind === SyntaxKind.BoltFunctionDeclaration || value.kind === SyntaxKind.BoltLoopStatement || value.kind === SyntaxKind.BoltExpressionStatement || value.kind === SyntaxKind.BoltResumeStatement || value.kind === SyntaxKind.BoltConditionalStatement || value.kind === SyntaxKind.BoltReturnStatement; } + +export function isReturnStatement(value: any): value is ReturnStatement { return value.kind === SyntaxKind.JSReturnStatement || value.kind === SyntaxKind.BoltReturnStatement; } + +export function isBoltSyntax(value: any): value is BoltSyntax { return value.kind === SyntaxKind.BoltMacroCall || value.kind === SyntaxKind.BoltRecordField || value.kind === SyntaxKind.BoltPlainExportSymbol || value.kind === SyntaxKind.BoltImportDirective || value.kind === SyntaxKind.BoltPlainImportSymbol || value.kind === SyntaxKind.BoltModule || value.kind === SyntaxKind.BoltRecordDeclaration || value.kind === SyntaxKind.BoltTypeAliasDeclaration || value.kind === SyntaxKind.BoltImplDeclaration || value.kind === SyntaxKind.BoltTraitDeclaration || value.kind === SyntaxKind.BoltVariableDeclaration || value.kind === SyntaxKind.BoltFunctionDeclaration || value.kind === SyntaxKind.BoltParameter || value.kind === SyntaxKind.BoltConditionalCase || value.kind === SyntaxKind.BoltLoopStatement || value.kind === SyntaxKind.BoltExpressionStatement || value.kind === SyntaxKind.BoltResumeStatement || value.kind === SyntaxKind.BoltConditionalStatement || value.kind === SyntaxKind.BoltReturnStatement || value.kind === SyntaxKind.BoltCase || value.kind === SyntaxKind.BoltMatchArm || value.kind === SyntaxKind.BoltConstantExpression || value.kind === SyntaxKind.BoltBlockExpression || value.kind === SyntaxKind.BoltCaseExpression || value.kind === SyntaxKind.BoltMatchExpression || value.kind === SyntaxKind.BoltYieldExpression || value.kind === SyntaxKind.BoltCallExpression || value.kind === SyntaxKind.BoltFunctionExpression || value.kind === SyntaxKind.BoltMemberExpression || value.kind === SyntaxKind.BoltReferenceExpression || value.kind === SyntaxKind.BoltTupleExpression || value.kind === SyntaxKind.BoltQuoteExpression || value.kind === SyntaxKind.BoltRecordFieldPattern || value.kind === SyntaxKind.BoltTuplePatternElement || value.kind === SyntaxKind.BoltRecordPattern || value.kind === SyntaxKind.BoltTuplePattern || value.kind === SyntaxKind.BoltExpressionPattern || value.kind === SyntaxKind.BoltTypePattern || value.kind === SyntaxKind.BoltBindPattern || value.kind === SyntaxKind.BoltTypeParameter || value.kind === SyntaxKind.BoltLiftedTypeExpression || value.kind === SyntaxKind.BoltFunctionTypeExpression || value.kind === SyntaxKind.BoltReferenceTypeExpression || value.kind === SyntaxKind.BoltTypeOfExpression || value.kind === SyntaxKind.BoltQualName || value.kind === SyntaxKind.BoltSourceFile || value.kind === SyntaxKind.BoltBracketed || value.kind === SyntaxKind.BoltBraced || value.kind === SyntaxKind.BoltParenthesized || value.kind === SyntaxKind.BoltImplKeyword || value.kind === SyntaxKind.BoltTraitKeyword || value.kind === SyntaxKind.BoltTypeKeyword || value.kind === SyntaxKind.BoltStructKeyword || value.kind === SyntaxKind.BoltEnumKeyword || value.kind === SyntaxKind.BoltMutKeyword || value.kind === SyntaxKind.BoltModKeyword || value.kind === SyntaxKind.BoltPubKeyword || value.kind === SyntaxKind.BoltExportKeyword || value.kind === SyntaxKind.BoltImportKeyword || value.kind === SyntaxKind.BoltMatchKeyword || value.kind === SyntaxKind.BoltYieldKeyword || value.kind === SyntaxKind.BoltLoopKeyword || value.kind === SyntaxKind.BoltReturnKeyword || value.kind === SyntaxKind.BoltLetKeyword || value.kind === SyntaxKind.BoltForKeyword || value.kind === SyntaxKind.BoltForeignKeyword || value.kind === SyntaxKind.BoltFnKeyword || value.kind === SyntaxKind.BoltQuoteKeyword || value.kind === SyntaxKind.BoltWhereKeyword || value.kind === SyntaxKind.BoltVBar || value.kind === SyntaxKind.BoltLtSign || value.kind === SyntaxKind.BoltExMark || value.kind === SyntaxKind.BoltGtSign || value.kind === SyntaxKind.BoltEqSign || value.kind === SyntaxKind.BoltLArrow || value.kind === SyntaxKind.BoltRArrowAlt || value.kind === SyntaxKind.BoltRArrow || value.kind === SyntaxKind.BoltDotDot || value.kind === SyntaxKind.BoltDot || value.kind === SyntaxKind.BoltColonColon || value.kind === SyntaxKind.BoltColon || value.kind === SyntaxKind.BoltSemi || value.kind === SyntaxKind.BoltComma || value.kind === SyntaxKind.BoltAssignment || value.kind === SyntaxKind.BoltOperator || value.kind === SyntaxKind.BoltIdentifier || value.kind === SyntaxKind.BoltIntegerLiteral || value.kind === SyntaxKind.BoltStringLiteral || value.kind === SyntaxKind.EndOfFile; } + +export function isBoltToken(value: any): value is BoltToken { return value.kind === SyntaxKind.BoltBracketed || value.kind === SyntaxKind.BoltBraced || value.kind === SyntaxKind.BoltParenthesized || value.kind === SyntaxKind.BoltImplKeyword || value.kind === SyntaxKind.BoltTraitKeyword || value.kind === SyntaxKind.BoltTypeKeyword || value.kind === SyntaxKind.BoltStructKeyword || value.kind === SyntaxKind.BoltEnumKeyword || value.kind === SyntaxKind.BoltMutKeyword || value.kind === SyntaxKind.BoltModKeyword || value.kind === SyntaxKind.BoltPubKeyword || value.kind === SyntaxKind.BoltExportKeyword || value.kind === SyntaxKind.BoltImportKeyword || value.kind === SyntaxKind.BoltMatchKeyword || value.kind === SyntaxKind.BoltYieldKeyword || value.kind === SyntaxKind.BoltLoopKeyword || value.kind === SyntaxKind.BoltReturnKeyword || value.kind === SyntaxKind.BoltLetKeyword || value.kind === SyntaxKind.BoltForKeyword || value.kind === SyntaxKind.BoltForeignKeyword || value.kind === SyntaxKind.BoltFnKeyword || value.kind === SyntaxKind.BoltQuoteKeyword || value.kind === SyntaxKind.BoltWhereKeyword || value.kind === SyntaxKind.BoltVBar || value.kind === SyntaxKind.BoltLtSign || value.kind === SyntaxKind.BoltExMark || value.kind === SyntaxKind.BoltGtSign || value.kind === SyntaxKind.BoltEqSign || value.kind === SyntaxKind.BoltLArrow || value.kind === SyntaxKind.BoltRArrowAlt || value.kind === SyntaxKind.BoltRArrow || value.kind === SyntaxKind.BoltDotDot || value.kind === SyntaxKind.BoltDot || value.kind === SyntaxKind.BoltColonColon || value.kind === SyntaxKind.BoltColon || value.kind === SyntaxKind.BoltSemi || value.kind === SyntaxKind.BoltComma || value.kind === SyntaxKind.BoltAssignment || value.kind === SyntaxKind.BoltOperator || value.kind === SyntaxKind.BoltIdentifier || value.kind === SyntaxKind.BoltIntegerLiteral || value.kind === SyntaxKind.BoltStringLiteral || value.kind === SyntaxKind.EndOfFile; } + +export function isBoltStringLiteral(value: any): value is BoltStringLiteral { return value.kind === SyntaxKind.BoltStringLiteral; } + +export function isBoltIntegerLiteral(value: any): value is BoltIntegerLiteral { return value.kind === SyntaxKind.BoltIntegerLiteral; } + +export function isBoltSymbol(value: any): value is BoltSymbol { return value.kind === SyntaxKind.BoltOperator || value.kind === SyntaxKind.BoltVBar || value.kind === SyntaxKind.BoltLtSign || value.kind === SyntaxKind.BoltExMark || value.kind === SyntaxKind.BoltGtSign || value.kind === SyntaxKind.BoltIdentifier; } + +export function isBoltIdentifier(value: any): value is BoltIdentifier { return value.kind === SyntaxKind.BoltIdentifier; } + +export function isBoltOperatorLike(value: any): value is BoltOperatorLike { return value.kind === SyntaxKind.BoltVBar || value.kind === SyntaxKind.BoltLtSign || value.kind === SyntaxKind.BoltExMark || value.kind === SyntaxKind.BoltGtSign; } + +export function isBoltOperator(value: any): value is BoltOperator { return value.kind === SyntaxKind.BoltOperator; } + +export function isBoltAssignment(value: any): value is BoltAssignment { return value.kind === SyntaxKind.BoltAssignment; } + +export function isBoltComma(value: any): value is BoltComma { return value.kind === SyntaxKind.BoltComma; } + +export function isBoltSemi(value: any): value is BoltSemi { return value.kind === SyntaxKind.BoltSemi; } + +export function isBoltColon(value: any): value is BoltColon { return value.kind === SyntaxKind.BoltColon; } + +export function isBoltColonColon(value: any): value is BoltColonColon { return value.kind === SyntaxKind.BoltColonColon; } + +export function isBoltDot(value: any): value is BoltDot { return value.kind === SyntaxKind.BoltDot; } + +export function isBoltDotDot(value: any): value is BoltDotDot { return value.kind === SyntaxKind.BoltDotDot; } + +export function isBoltRArrow(value: any): value is BoltRArrow { return value.kind === SyntaxKind.BoltRArrow; } + +export function isBoltRArrowAlt(value: any): value is BoltRArrowAlt { return value.kind === SyntaxKind.BoltRArrowAlt; } + +export function isBoltLArrow(value: any): value is BoltLArrow { return value.kind === SyntaxKind.BoltLArrow; } + +export function isBoltEqSign(value: any): value is BoltEqSign { return value.kind === SyntaxKind.BoltEqSign; } + +export function isBoltGtSign(value: any): value is BoltGtSign { return value.kind === SyntaxKind.BoltGtSign; } + +export function isBoltExMark(value: any): value is BoltExMark { return value.kind === SyntaxKind.BoltExMark; } + +export function isBoltLtSign(value: any): value is BoltLtSign { return value.kind === SyntaxKind.BoltLtSign; } + +export function isBoltVBar(value: any): value is BoltVBar { return value.kind === SyntaxKind.BoltVBar; } + +export function isBoltKeyword(value: any): value is BoltKeyword { return value.kind === SyntaxKind.BoltImplKeyword || value.kind === SyntaxKind.BoltTraitKeyword || value.kind === SyntaxKind.BoltTypeKeyword || value.kind === SyntaxKind.BoltStructKeyword || value.kind === SyntaxKind.BoltEnumKeyword || value.kind === SyntaxKind.BoltMutKeyword || value.kind === SyntaxKind.BoltModKeyword || value.kind === SyntaxKind.BoltPubKeyword || value.kind === SyntaxKind.BoltExportKeyword || value.kind === SyntaxKind.BoltImportKeyword || value.kind === SyntaxKind.BoltMatchKeyword || value.kind === SyntaxKind.BoltYieldKeyword || value.kind === SyntaxKind.BoltLoopKeyword || value.kind === SyntaxKind.BoltReturnKeyword || value.kind === SyntaxKind.BoltLetKeyword || value.kind === SyntaxKind.BoltForKeyword || value.kind === SyntaxKind.BoltForeignKeyword || value.kind === SyntaxKind.BoltFnKeyword || value.kind === SyntaxKind.BoltQuoteKeyword || value.kind === SyntaxKind.BoltWhereKeyword; } + +export function isBoltWhereKeyword(value: any): value is BoltWhereKeyword { return value.kind === SyntaxKind.BoltWhereKeyword; } + +export function isBoltQuoteKeyword(value: any): value is BoltQuoteKeyword { return value.kind === SyntaxKind.BoltQuoteKeyword; } + +export function isBoltFnKeyword(value: any): value is BoltFnKeyword { return value.kind === SyntaxKind.BoltFnKeyword; } + +export function isBoltForeignKeyword(value: any): value is BoltForeignKeyword { return value.kind === SyntaxKind.BoltForeignKeyword; } + +export function isBoltForKeyword(value: any): value is BoltForKeyword { return value.kind === SyntaxKind.BoltForKeyword; } + +export function isBoltLetKeyword(value: any): value is BoltLetKeyword { return value.kind === SyntaxKind.BoltLetKeyword; } + +export function isBoltReturnKeyword(value: any): value is BoltReturnKeyword { return value.kind === SyntaxKind.BoltReturnKeyword; } + +export function isBoltLoopKeyword(value: any): value is BoltLoopKeyword { return value.kind === SyntaxKind.BoltLoopKeyword; } + +export function isBoltYieldKeyword(value: any): value is BoltYieldKeyword { return value.kind === SyntaxKind.BoltYieldKeyword; } + +export function isBoltMatchKeyword(value: any): value is BoltMatchKeyword { return value.kind === SyntaxKind.BoltMatchKeyword; } + +export function isBoltImportKeyword(value: any): value is BoltImportKeyword { return value.kind === SyntaxKind.BoltImportKeyword; } + +export function isBoltExportKeyword(value: any): value is BoltExportKeyword { return value.kind === SyntaxKind.BoltExportKeyword; } + +export function isBoltPubKeyword(value: any): value is BoltPubKeyword { return value.kind === SyntaxKind.BoltPubKeyword; } + +export function isBoltModKeyword(value: any): value is BoltModKeyword { return value.kind === SyntaxKind.BoltModKeyword; } + +export function isBoltMutKeyword(value: any): value is BoltMutKeyword { return value.kind === SyntaxKind.BoltMutKeyword; } + +export function isBoltEnumKeyword(value: any): value is BoltEnumKeyword { return value.kind === SyntaxKind.BoltEnumKeyword; } + +export function isBoltStructKeyword(value: any): value is BoltStructKeyword { return value.kind === SyntaxKind.BoltStructKeyword; } + +export function isBoltTypeKeyword(value: any): value is BoltTypeKeyword { return value.kind === SyntaxKind.BoltTypeKeyword; } + +export function isBoltTraitKeyword(value: any): value is BoltTraitKeyword { return value.kind === SyntaxKind.BoltTraitKeyword; } + +export function isBoltImplKeyword(value: any): value is BoltImplKeyword { return value.kind === SyntaxKind.BoltImplKeyword; } + +export function isBoltPunctuated(value: any): value is BoltPunctuated { return value.kind === SyntaxKind.BoltBracketed || value.kind === SyntaxKind.BoltBraced || value.kind === SyntaxKind.BoltParenthesized; } + +export function isBoltParenthesized(value: any): value is BoltParenthesized { return value.kind === SyntaxKind.BoltParenthesized; } + +export function isBoltBraced(value: any): value is BoltBraced { return value.kind === SyntaxKind.BoltBraced; } + +export function isBoltBracketed(value: any): value is BoltBracketed { return value.kind === SyntaxKind.BoltBracketed; } + +export function isBoltSourceFile(value: any): value is BoltSourceFile { return value.kind === SyntaxKind.BoltSourceFile; } + +export function isBoltQualName(value: any): value is BoltQualName { return value.kind === SyntaxKind.BoltQualName; } + +export function isBoltTypeExpression(value: any): value is BoltTypeExpression { return value.kind === SyntaxKind.BoltLiftedTypeExpression || value.kind === SyntaxKind.BoltFunctionTypeExpression || value.kind === SyntaxKind.BoltReferenceTypeExpression || value.kind === SyntaxKind.BoltTypeOfExpression; } + +export function isBoltTypeOfExpression(value: any): value is BoltTypeOfExpression { return value.kind === SyntaxKind.BoltTypeOfExpression; } + +export function isBoltReferenceTypeExpression(value: any): value is BoltReferenceTypeExpression { return value.kind === SyntaxKind.BoltReferenceTypeExpression; } + +export function isBoltFunctionTypeExpression(value: any): value is BoltFunctionTypeExpression { return value.kind === SyntaxKind.BoltFunctionTypeExpression; } + +export function isBoltLiftedTypeExpression(value: any): value is BoltLiftedTypeExpression { return value.kind === SyntaxKind.BoltLiftedTypeExpression; } + +export function isBoltTypeParameter(value: any): value is BoltTypeParameter { return value.kind === SyntaxKind.BoltTypeParameter; } + +export function isBoltPattern(value: any): value is BoltPattern { return value.kind === SyntaxKind.BoltRecordPattern || value.kind === SyntaxKind.BoltTuplePattern || value.kind === SyntaxKind.BoltExpressionPattern || value.kind === SyntaxKind.BoltTypePattern || value.kind === SyntaxKind.BoltBindPattern; } + +export function isBoltBindPattern(value: any): value is BoltBindPattern { return value.kind === SyntaxKind.BoltBindPattern; } + +export function isBoltTypePattern(value: any): value is BoltTypePattern { return value.kind === SyntaxKind.BoltTypePattern; } + +export function isBoltExpressionPattern(value: any): value is BoltExpressionPattern { return value.kind === SyntaxKind.BoltExpressionPattern; } + +export function isBoltTuplePatternElement(value: any): value is BoltTuplePatternElement { return value.kind === SyntaxKind.BoltTuplePatternElement; } + +export function isBoltTuplePattern(value: any): value is BoltTuplePattern { return value.kind === SyntaxKind.BoltTuplePattern; } + +export function isBoltRecordFieldPattern(value: any): value is BoltRecordFieldPattern { return value.kind === SyntaxKind.BoltRecordFieldPattern; } + +export function isBoltRecordPattern(value: any): value is BoltRecordPattern { return value.kind === SyntaxKind.BoltRecordPattern; } + +export function isBoltExpression(value: any): value is BoltExpression { return value.kind === SyntaxKind.BoltConstantExpression || value.kind === SyntaxKind.BoltBlockExpression || value.kind === SyntaxKind.BoltCaseExpression || value.kind === SyntaxKind.BoltMatchExpression || value.kind === SyntaxKind.BoltYieldExpression || value.kind === SyntaxKind.BoltCallExpression || value.kind === SyntaxKind.BoltFunctionExpression || value.kind === SyntaxKind.BoltMemberExpression || value.kind === SyntaxKind.BoltReferenceExpression || value.kind === SyntaxKind.BoltTupleExpression || value.kind === SyntaxKind.BoltQuoteExpression; } + +export function isBoltQuoteExpression(value: any): value is BoltQuoteExpression { return value.kind === SyntaxKind.BoltQuoteExpression; } + +export function isBoltTupleExpression(value: any): value is BoltTupleExpression { return value.kind === SyntaxKind.BoltTupleExpression; } + +export function isBoltReferenceExpression(value: any): value is BoltReferenceExpression { return value.kind === SyntaxKind.BoltReferenceExpression; } + +export function isBoltMemberExpression(value: any): value is BoltMemberExpression { return value.kind === SyntaxKind.BoltMemberExpression; } + +export function isBoltFunctionExpression(value: any): value is BoltFunctionExpression { return value.kind === SyntaxKind.BoltFunctionExpression; } + +export function isBoltCallExpression(value: any): value is BoltCallExpression { return value.kind === SyntaxKind.BoltCallExpression; } + +export function isBoltYieldExpression(value: any): value is BoltYieldExpression { return value.kind === SyntaxKind.BoltYieldExpression; } + +export function isBoltMatchArm(value: any): value is BoltMatchArm { return value.kind === SyntaxKind.BoltMatchArm; } + +export function isBoltMatchExpression(value: any): value is BoltMatchExpression { return value.kind === SyntaxKind.BoltMatchExpression; } + +export function isBoltCase(value: any): value is BoltCase { return value.kind === SyntaxKind.BoltCase; } + +export function isBoltCaseExpression(value: any): value is BoltCaseExpression { return value.kind === SyntaxKind.BoltCaseExpression; } + +export function isBoltBlockExpression(value: any): value is BoltBlockExpression { return value.kind === SyntaxKind.BoltBlockExpression; } + +export function isBoltConstantExpression(value: any): value is BoltConstantExpression { return value.kind === SyntaxKind.BoltConstantExpression; } + +export function isBoltStatement(value: any): value is BoltStatement { return value.kind === SyntaxKind.BoltLoopStatement || value.kind === SyntaxKind.BoltExpressionStatement || value.kind === SyntaxKind.BoltResumeStatement || value.kind === SyntaxKind.BoltConditionalStatement || value.kind === SyntaxKind.BoltReturnStatement; } + +export function isBoltReturnStatement(value: any): value is BoltReturnStatement { return value.kind === SyntaxKind.BoltReturnStatement; } + +export function isBoltConditionalCase(value: any): value is BoltConditionalCase { return value.kind === SyntaxKind.BoltConditionalCase; } + +export function isBoltConditionalStatement(value: any): value is BoltConditionalStatement { return value.kind === SyntaxKind.BoltConditionalStatement; } + +export function isBoltResumeStatement(value: any): value is BoltResumeStatement { return value.kind === SyntaxKind.BoltResumeStatement; } + +export function isBoltExpressionStatement(value: any): value is BoltExpressionStatement { return value.kind === SyntaxKind.BoltExpressionStatement; } + +export function isBoltLoopStatement(value: any): value is BoltLoopStatement { return value.kind === SyntaxKind.BoltLoopStatement; } + +export function isBoltParameter(value: any): value is BoltParameter { return value.kind === SyntaxKind.BoltParameter; } + +export function isBoltDeclaration(value: any): value is BoltDeclaration { return value.kind === SyntaxKind.BoltRecordDeclaration || value.kind === SyntaxKind.BoltVariableDeclaration || value.kind === SyntaxKind.BoltFunctionDeclaration; } + +export function isBoltTypeDeclaration(value: any): value is BoltTypeDeclaration { return value.kind === SyntaxKind.BoltRecordDeclaration || value.kind === SyntaxKind.BoltTypeAliasDeclaration || value.kind === SyntaxKind.BoltImplDeclaration || value.kind === SyntaxKind.BoltTraitDeclaration; } + +export function isBoltModule(value: any): value is BoltModule { return value.kind === SyntaxKind.BoltModule; } + +export function isBoltDeclarationLike(value: any): value is BoltDeclarationLike { return value.kind === SyntaxKind.BoltRecordDeclaration || value.kind === SyntaxKind.BoltTypeAliasDeclaration || value.kind === SyntaxKind.BoltImplDeclaration || value.kind === SyntaxKind.BoltTraitDeclaration || value.kind === SyntaxKind.BoltVariableDeclaration || value.kind === SyntaxKind.BoltFunctionDeclaration; } + +export function isBoltFunctionBodyElement(value: any): value is BoltFunctionBodyElement { return value.kind === SyntaxKind.BoltMacroCall || value.kind === SyntaxKind.BoltVariableDeclaration || value.kind === SyntaxKind.BoltFunctionDeclaration || value.kind === SyntaxKind.BoltLoopStatement || value.kind === SyntaxKind.BoltExpressionStatement || value.kind === SyntaxKind.BoltResumeStatement || value.kind === SyntaxKind.BoltConditionalStatement || value.kind === SyntaxKind.BoltReturnStatement; } + +export function isBoltFunctionDeclaration(value: any): value is BoltFunctionDeclaration { return value.kind === SyntaxKind.BoltFunctionDeclaration; } + +export function isBoltVariableDeclaration(value: any): value is BoltVariableDeclaration { return value.kind === SyntaxKind.BoltVariableDeclaration; } + +export function isBoltImportSymbol(value: any): value is BoltImportSymbol { return value.kind === SyntaxKind.BoltPlainImportSymbol; } + +export function isBoltPlainImportSymbol(value: any): value is BoltPlainImportSymbol { return value.kind === SyntaxKind.BoltPlainImportSymbol; } + +export function isBoltImportDirective(value: any): value is BoltImportDirective { return value.kind === SyntaxKind.BoltImportDirective; } + +export function isBoltExportSymbol(value: any): value is BoltExportSymbol { return value.kind === SyntaxKind.BoltPlainExportSymbol; } + +export function isBoltPlainExportSymbol(value: any): value is BoltPlainExportSymbol { return value.kind === SyntaxKind.BoltPlainExportSymbol; } + +export function isBoltExportDirective(value: any): value is BoltExportDirective { return value.kind === SyntaxKind.BoltExportDirective; } + +export function isBoltTraitOrImplElement(value: any): value is BoltTraitOrImplElement { return value.kind === SyntaxKind.BoltMacroCall || value.kind === SyntaxKind.BoltTypeAliasDeclaration || value.kind === SyntaxKind.BoltFunctionDeclaration; } + +export function isBoltTraitDeclaration(value: any): value is BoltTraitDeclaration { return value.kind === SyntaxKind.BoltTraitDeclaration; } + +export function isBoltImplDeclaration(value: any): value is BoltImplDeclaration { return value.kind === SyntaxKind.BoltImplDeclaration; } + +export function isBoltTypeAliasDeclaration(value: any): value is BoltTypeAliasDeclaration { return value.kind === SyntaxKind.BoltTypeAliasDeclaration; } + +export function isBoltRecordMember(value: any): value is BoltRecordMember { return value.kind === SyntaxKind.BoltMacroCall || value.kind === SyntaxKind.BoltRecordField; } + +export function isBoltRecordField(value: any): value is BoltRecordField { return value.kind === SyntaxKind.BoltRecordField; } + +export function isBoltRecordDeclaration(value: any): value is BoltRecordDeclaration { return value.kind === SyntaxKind.BoltRecordDeclaration; } + +export function isBoltSourceElement(value: any): value is BoltSourceElement { return value.kind === SyntaxKind.BoltMacroCall || value.kind === SyntaxKind.BoltExportDirective || value.kind === SyntaxKind.BoltImportDirective || value.kind === SyntaxKind.BoltModule || value.kind === SyntaxKind.BoltRecordDeclaration || value.kind === SyntaxKind.BoltTypeAliasDeclaration || value.kind === SyntaxKind.BoltImplDeclaration || value.kind === SyntaxKind.BoltTraitDeclaration || value.kind === SyntaxKind.BoltVariableDeclaration || value.kind === SyntaxKind.BoltFunctionDeclaration || value.kind === SyntaxKind.BoltLoopStatement || value.kind === SyntaxKind.BoltExpressionStatement || value.kind === SyntaxKind.BoltResumeStatement || value.kind === SyntaxKind.BoltConditionalStatement || value.kind === SyntaxKind.BoltReturnStatement; } + +export function isBoltMacroCall(value: any): value is BoltMacroCall { return value.kind === SyntaxKind.BoltMacroCall; } + +export function isJSSyntax(value: any): value is JSSyntax { return value.kind === SyntaxKind.JSSourceFile || value.kind === SyntaxKind.JSImportAsBinding || value.kind === SyntaxKind.JSImportStarBinding || value.kind === SyntaxKind.JSLetDeclaration || value.kind === SyntaxKind.JSArrowFunctionDeclaration || value.kind === SyntaxKind.JSFunctionDeclaration || value.kind === SyntaxKind.JSImportDeclaration || value.kind === SyntaxKind.JSParameter || value.kind === SyntaxKind.JSConditionalCase || value.kind === SyntaxKind.JSCatchBlock || value.kind === SyntaxKind.JSReturnStatement || value.kind === SyntaxKind.JSConditionalStatement || value.kind === SyntaxKind.JSExpressionStatement || value.kind === SyntaxKind.JSTryCatchStatement || value.kind === SyntaxKind.JSReferenceExpression || value.kind === SyntaxKind.JSLiteralExpression || value.kind === SyntaxKind.JSConditionalExpression || value.kind === SyntaxKind.JSSequenceExpression || value.kind === SyntaxKind.JSNewExpression || value.kind === SyntaxKind.JSUnaryExpression || value.kind === SyntaxKind.JSBinaryExpression || value.kind === SyntaxKind.JSCallExpression || value.kind === SyntaxKind.JSMemberExpression || value.kind === SyntaxKind.JSConstantExpression || value.kind === SyntaxKind.JSBindPattern || value.kind === SyntaxKind.JSNotOp || value.kind === SyntaxKind.JSBNotOp || value.kind === SyntaxKind.JSBAndOp || value.kind === SyntaxKind.JSBXorOp || value.kind === SyntaxKind.JSBOrOp || value.kind === SyntaxKind.JSGtOp || value.kind === SyntaxKind.JSLtOp || value.kind === SyntaxKind.JSSubOp || value.kind === SyntaxKind.JSDivOp || value.kind === SyntaxKind.JSAddOp || value.kind === SyntaxKind.JSMulOp || value.kind === SyntaxKind.JSDotDotDot || value.kind === SyntaxKind.JSDot || value.kind === SyntaxKind.JSComma || value.kind === SyntaxKind.JSSemi || value.kind === SyntaxKind.JSOpenParen || value.kind === SyntaxKind.JSOpenBracket || value.kind === SyntaxKind.JSOpenBrace || value.kind === SyntaxKind.JSCloseParen || value.kind === SyntaxKind.JSCloseBracket || value.kind === SyntaxKind.JSCloseBrace || value.kind === SyntaxKind.JSOperator || value.kind === SyntaxKind.JSForKeyword || value.kind === SyntaxKind.JSWhileKeyword || value.kind === SyntaxKind.JSFunctionKeyword || value.kind === SyntaxKind.JSExportKeyword || value.kind === SyntaxKind.JSLetKeyword || value.kind === SyntaxKind.JSConstKeyword || value.kind === SyntaxKind.JSAsKeyword || value.kind === SyntaxKind.JSImportKeyword || value.kind === SyntaxKind.JSCatchKeyword || value.kind === SyntaxKind.JSFinallyKeyword || value.kind === SyntaxKind.JSTryKeyword || value.kind === SyntaxKind.JSReturnKeyword || value.kind === SyntaxKind.JSFromKeyword || value.kind === SyntaxKind.JSInteger || value.kind === SyntaxKind.JSString || value.kind === SyntaxKind.JSIdentifier || value.kind === SyntaxKind.EndOfFile; } + +export function isJSToken(value: any): value is JSToken { return value.kind === SyntaxKind.JSNotOp || value.kind === SyntaxKind.JSBNotOp || value.kind === SyntaxKind.JSBAndOp || value.kind === SyntaxKind.JSBXorOp || value.kind === SyntaxKind.JSBOrOp || value.kind === SyntaxKind.JSGtOp || value.kind === SyntaxKind.JSLtOp || value.kind === SyntaxKind.JSSubOp || value.kind === SyntaxKind.JSDivOp || value.kind === SyntaxKind.JSAddOp || value.kind === SyntaxKind.JSMulOp || value.kind === SyntaxKind.JSDotDotDot || value.kind === SyntaxKind.JSDot || value.kind === SyntaxKind.JSComma || value.kind === SyntaxKind.JSSemi || value.kind === SyntaxKind.JSOpenParen || value.kind === SyntaxKind.JSOpenBracket || value.kind === SyntaxKind.JSOpenBrace || value.kind === SyntaxKind.JSCloseParen || value.kind === SyntaxKind.JSCloseBracket || value.kind === SyntaxKind.JSCloseBrace || value.kind === SyntaxKind.JSOperator || value.kind === SyntaxKind.JSForKeyword || value.kind === SyntaxKind.JSWhileKeyword || value.kind === SyntaxKind.JSFunctionKeyword || value.kind === SyntaxKind.JSExportKeyword || value.kind === SyntaxKind.JSLetKeyword || value.kind === SyntaxKind.JSConstKeyword || value.kind === SyntaxKind.JSAsKeyword || value.kind === SyntaxKind.JSImportKeyword || value.kind === SyntaxKind.JSCatchKeyword || value.kind === SyntaxKind.JSFinallyKeyword || value.kind === SyntaxKind.JSTryKeyword || value.kind === SyntaxKind.JSReturnKeyword || value.kind === SyntaxKind.JSFromKeyword || value.kind === SyntaxKind.JSInteger || value.kind === SyntaxKind.JSString || value.kind === SyntaxKind.JSIdentifier || value.kind === SyntaxKind.EndOfFile; } + +export function isJSIdentifier(value: any): value is JSIdentifier { return value.kind === SyntaxKind.JSIdentifier; } + +export function isJSString(value: any): value is JSString { return value.kind === SyntaxKind.JSString; } + +export function isJSInteger(value: any): value is JSInteger { return value.kind === SyntaxKind.JSInteger; } + +export function isJSFromKeyword(value: any): value is JSFromKeyword { return value.kind === SyntaxKind.JSFromKeyword; } + +export function isJSReturnKeyword(value: any): value is JSReturnKeyword { return value.kind === SyntaxKind.JSReturnKeyword; } + +export function isJSTryKeyword(value: any): value is JSTryKeyword { return value.kind === SyntaxKind.JSTryKeyword; } + +export function isJSFinallyKeyword(value: any): value is JSFinallyKeyword { return value.kind === SyntaxKind.JSFinallyKeyword; } + +export function isJSCatchKeyword(value: any): value is JSCatchKeyword { return value.kind === SyntaxKind.JSCatchKeyword; } + +export function isJSImportKeyword(value: any): value is JSImportKeyword { return value.kind === SyntaxKind.JSImportKeyword; } + +export function isJSAsKeyword(value: any): value is JSAsKeyword { return value.kind === SyntaxKind.JSAsKeyword; } + +export function isJSConstKeyword(value: any): value is JSConstKeyword { return value.kind === SyntaxKind.JSConstKeyword; } + +export function isJSLetKeyword(value: any): value is JSLetKeyword { return value.kind === SyntaxKind.JSLetKeyword; } + +export function isJSExportKeyword(value: any): value is JSExportKeyword { return value.kind === SyntaxKind.JSExportKeyword; } + +export function isJSFunctionKeyword(value: any): value is JSFunctionKeyword { return value.kind === SyntaxKind.JSFunctionKeyword; } + +export function isJSWhileKeyword(value: any): value is JSWhileKeyword { return value.kind === SyntaxKind.JSWhileKeyword; } + +export function isJSForKeyword(value: any): value is JSForKeyword { return value.kind === SyntaxKind.JSForKeyword; } + +export function isJSOperatorLike(value: any): value is JSOperatorLike { return value.kind === SyntaxKind.JSNotOp || value.kind === SyntaxKind.JSBNotOp || value.kind === SyntaxKind.JSBAndOp || value.kind === SyntaxKind.JSBXorOp || value.kind === SyntaxKind.JSBOrOp || value.kind === SyntaxKind.JSGtOp || value.kind === SyntaxKind.JSLtOp || value.kind === SyntaxKind.JSSubOp || value.kind === SyntaxKind.JSDivOp || value.kind === SyntaxKind.JSAddOp || value.kind === SyntaxKind.JSMulOp; } + +export function isJSOperator(value: any): value is JSOperator { return value.kind === SyntaxKind.JSOperator; } + +export function isJSCloseBrace(value: any): value is JSCloseBrace { return value.kind === SyntaxKind.JSCloseBrace; } + +export function isJSCloseBracket(value: any): value is JSCloseBracket { return value.kind === SyntaxKind.JSCloseBracket; } + +export function isJSCloseParen(value: any): value is JSCloseParen { return value.kind === SyntaxKind.JSCloseParen; } + +export function isJSOpenBrace(value: any): value is JSOpenBrace { return value.kind === SyntaxKind.JSOpenBrace; } + +export function isJSOpenBracket(value: any): value is JSOpenBracket { return value.kind === SyntaxKind.JSOpenBracket; } + +export function isJSOpenParen(value: any): value is JSOpenParen { return value.kind === SyntaxKind.JSOpenParen; } + +export function isJSSemi(value: any): value is JSSemi { return value.kind === SyntaxKind.JSSemi; } + +export function isJSComma(value: any): value is JSComma { return value.kind === SyntaxKind.JSComma; } + +export function isJSDot(value: any): value is JSDot { return value.kind === SyntaxKind.JSDot; } + +export function isJSDotDotDot(value: any): value is JSDotDotDot { return value.kind === SyntaxKind.JSDotDotDot; } + +export function isJSMulOp(value: any): value is JSMulOp { return value.kind === SyntaxKind.JSMulOp; } + +export function isJSAddOp(value: any): value is JSAddOp { return value.kind === SyntaxKind.JSAddOp; } + +export function isJSDivOp(value: any): value is JSDivOp { return value.kind === SyntaxKind.JSDivOp; } + +export function isJSSubOp(value: any): value is JSSubOp { return value.kind === SyntaxKind.JSSubOp; } + +export function isJSLtOp(value: any): value is JSLtOp { return value.kind === SyntaxKind.JSLtOp; } + +export function isJSGtOp(value: any): value is JSGtOp { return value.kind === SyntaxKind.JSGtOp; } + +export function isJSBOrOp(value: any): value is JSBOrOp { return value.kind === SyntaxKind.JSBOrOp; } + +export function isJSBXorOp(value: any): value is JSBXorOp { return value.kind === SyntaxKind.JSBXorOp; } + +export function isJSBAndOp(value: any): value is JSBAndOp { return value.kind === SyntaxKind.JSBAndOp; } + +export function isJSBNotOp(value: any): value is JSBNotOp { return value.kind === SyntaxKind.JSBNotOp; } + +export function isJSNotOp(value: any): value is JSNotOp { return value.kind === SyntaxKind.JSNotOp; } + +export function isJSPattern(value: any): value is JSPattern { return value.kind === SyntaxKind.JSBindPattern; } + +export function isJSBindPattern(value: any): value is JSBindPattern { return value.kind === SyntaxKind.JSBindPattern; } + +export function isJSExpression(value: any): value is JSExpression { return value.kind === SyntaxKind.JSReferenceExpression || value.kind === SyntaxKind.JSLiteralExpression || value.kind === SyntaxKind.JSConditionalExpression || value.kind === SyntaxKind.JSSequenceExpression || value.kind === SyntaxKind.JSNewExpression || value.kind === SyntaxKind.JSUnaryExpression || value.kind === SyntaxKind.JSBinaryExpression || value.kind === SyntaxKind.JSCallExpression || value.kind === SyntaxKind.JSMemberExpression || value.kind === SyntaxKind.JSConstantExpression; } + +export function isJSConstantExpression(value: any): value is JSConstantExpression { return value.kind === SyntaxKind.JSConstantExpression; } + +export function isJSMemberExpression(value: any): value is JSMemberExpression { return value.kind === SyntaxKind.JSMemberExpression; } + +export function isJSCallExpression(value: any): value is JSCallExpression { return value.kind === SyntaxKind.JSCallExpression; } + +export function isJSBinaryExpression(value: any): value is JSBinaryExpression { return value.kind === SyntaxKind.JSBinaryExpression; } + +export function isJSUnaryExpression(value: any): value is JSUnaryExpression { return value.kind === SyntaxKind.JSUnaryExpression; } + +export function isJSNewExpression(value: any): value is JSNewExpression { return value.kind === SyntaxKind.JSNewExpression; } + +export function isJSSequenceExpression(value: any): value is JSSequenceExpression { return value.kind === SyntaxKind.JSSequenceExpression; } + +export function isJSConditionalExpression(value: any): value is JSConditionalExpression { return value.kind === SyntaxKind.JSConditionalExpression; } + +export function isJSLiteralExpression(value: any): value is JSLiteralExpression { return value.kind === SyntaxKind.JSLiteralExpression; } + +export function isJSReferenceExpression(value: any): value is JSReferenceExpression { return value.kind === SyntaxKind.JSReferenceExpression; } + +export function isJSSourceElement(value: any): value is JSSourceElement { return value.kind === SyntaxKind.JSLetDeclaration || value.kind === SyntaxKind.JSArrowFunctionDeclaration || value.kind === SyntaxKind.JSFunctionDeclaration || value.kind === SyntaxKind.JSImportDeclaration || value.kind === SyntaxKind.JSReturnStatement || value.kind === SyntaxKind.JSConditionalStatement || value.kind === SyntaxKind.JSExpressionStatement || value.kind === SyntaxKind.JSTryCatchStatement; } + +export function isJSFunctionBodyElement(value: any): value is JSFunctionBodyElement { return value.kind === SyntaxKind.JSLetDeclaration || value.kind === SyntaxKind.JSArrowFunctionDeclaration || value.kind === SyntaxKind.JSFunctionDeclaration || value.kind === SyntaxKind.JSImportDeclaration || value.kind === SyntaxKind.JSReturnStatement || value.kind === SyntaxKind.JSConditionalStatement || value.kind === SyntaxKind.JSExpressionStatement || value.kind === SyntaxKind.JSTryCatchStatement; } + +export function isJSStatement(value: any): value is JSStatement { return value.kind === SyntaxKind.JSReturnStatement || value.kind === SyntaxKind.JSConditionalStatement || value.kind === SyntaxKind.JSExpressionStatement || value.kind === SyntaxKind.JSTryCatchStatement; } + +export function isJSCatchBlock(value: any): value is JSCatchBlock { return value.kind === SyntaxKind.JSCatchBlock; } + +export function isJSTryCatchStatement(value: any): value is JSTryCatchStatement { return value.kind === SyntaxKind.JSTryCatchStatement; } + +export function isJSExpressionStatement(value: any): value is JSExpressionStatement { return value.kind === SyntaxKind.JSExpressionStatement; } + +export function isJSConditionalCase(value: any): value is JSConditionalCase { return value.kind === SyntaxKind.JSConditionalCase; } + +export function isJSConditionalStatement(value: any): value is JSConditionalStatement { return value.kind === SyntaxKind.JSConditionalStatement; } + +export function isJSReturnStatement(value: any): value is JSReturnStatement { return value.kind === SyntaxKind.JSReturnStatement; } + +export function isJSParameter(value: any): value is JSParameter { return value.kind === SyntaxKind.JSParameter; } + +export function isJSDeclaration(value: any): value is JSDeclaration { return value.kind === SyntaxKind.JSLetDeclaration || value.kind === SyntaxKind.JSArrowFunctionDeclaration || value.kind === SyntaxKind.JSFunctionDeclaration || value.kind === SyntaxKind.JSImportDeclaration; } + +export function isJSImportBinding(value: any): value is JSImportBinding { return value.kind === SyntaxKind.JSImportAsBinding || value.kind === SyntaxKind.JSImportStarBinding; } + +export function isJSImportStarBinding(value: any): value is JSImportStarBinding { return value.kind === SyntaxKind.JSImportStarBinding; } + +export function isJSImportAsBinding(value: any): value is JSImportAsBinding { return value.kind === SyntaxKind.JSImportAsBinding; } + +export function isJSImportDeclaration(value: any): value is JSImportDeclaration { return value.kind === SyntaxKind.JSImportDeclaration; } + +export function isJSFunctionDeclaration(value: any): value is JSFunctionDeclaration { return value.kind === SyntaxKind.JSFunctionDeclaration; } + +export function isJSArrowFunctionDeclaration(value: any): value is JSArrowFunctionDeclaration { return value.kind === SyntaxKind.JSArrowFunctionDeclaration; } + +export function isJSLetDeclaration(value: any): value is JSLetDeclaration { return value.kind === SyntaxKind.JSLetDeclaration; } + +export function isJSSourceFile(value: any): value is JSSourceFile { return value.kind === SyntaxKind.JSSourceFile; } + +export function isSyntax(value: any): value is Syntax { return typeof value === "object" && value !== null && value instanceof SyntaxBase; } + +export class Visitor { + protected visitEndOfFile(node: EndOfFile): void { this.visitBoltToken(node); this.visitJSToken(node); } + protected visitToken(node: Token): void { } + protected visitSourceFile(node: SourceFile): void { } + protected visitFunctionBodyElement(node: FunctionBodyElement): void { } + protected visitReturnStatement(node: ReturnStatement): void { } + protected visitBoltSyntax(node: BoltSyntax): void { } + protected visitBoltToken(node: BoltToken): void { this.visitToken(node); this.visitBoltSyntax(node); } + protected visitBoltStringLiteral(node: BoltStringLiteral): void { this.visitBoltToken(node); } + protected visitBoltIntegerLiteral(node: BoltIntegerLiteral): void { this.visitBoltToken(node); } + protected visitBoltSymbol(node: BoltSymbol): void { this.visitBoltToken(node); } + protected visitBoltIdentifier(node: BoltIdentifier): void { this.visitBoltSymbol(node); } + protected visitBoltOperatorLike(node: BoltOperatorLike): void { this.visitBoltSymbol(node); } + protected visitBoltOperator(node: BoltOperator): void { this.visitBoltSymbol(node); } + protected visitBoltAssignment(node: BoltAssignment): void { this.visitBoltToken(node); } + protected visitBoltComma(node: BoltComma): void { this.visitBoltToken(node); } + protected visitBoltSemi(node: BoltSemi): void { this.visitBoltToken(node); } + protected visitBoltColon(node: BoltColon): void { this.visitBoltToken(node); } + protected visitBoltColonColon(node: BoltColonColon): void { this.visitBoltToken(node); } + protected visitBoltDot(node: BoltDot): void { this.visitBoltToken(node); } + protected visitBoltDotDot(node: BoltDotDot): void { this.visitBoltToken(node); } + protected visitBoltRArrow(node: BoltRArrow): void { this.visitBoltToken(node); } + protected visitBoltRArrowAlt(node: BoltRArrowAlt): void { this.visitBoltToken(node); } + protected visitBoltLArrow(node: BoltLArrow): void { this.visitBoltToken(node); } + protected visitBoltEqSign(node: BoltEqSign): void { this.visitBoltToken(node); } + protected visitBoltGtSign(node: BoltGtSign): void { this.visitBoltToken(node); this.visitBoltOperatorLike(node); } + protected visitBoltExMark(node: BoltExMark): void { this.visitBoltToken(node); this.visitBoltOperatorLike(node); } + protected visitBoltLtSign(node: BoltLtSign): void { this.visitBoltToken(node); this.visitBoltOperatorLike(node); } + protected visitBoltVBar(node: BoltVBar): void { this.visitBoltToken(node); this.visitBoltOperatorLike(node); } + protected visitBoltKeyword(node: BoltKeyword): void { } + protected visitBoltWhereKeyword(node: BoltWhereKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltQuoteKeyword(node: BoltQuoteKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltFnKeyword(node: BoltFnKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltForeignKeyword(node: BoltForeignKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltForKeyword(node: BoltForKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltLetKeyword(node: BoltLetKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltReturnKeyword(node: BoltReturnKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltLoopKeyword(node: BoltLoopKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltYieldKeyword(node: BoltYieldKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltMatchKeyword(node: BoltMatchKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltImportKeyword(node: BoltImportKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltExportKeyword(node: BoltExportKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltPubKeyword(node: BoltPubKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltModKeyword(node: BoltModKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltMutKeyword(node: BoltMutKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltEnumKeyword(node: BoltEnumKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltStructKeyword(node: BoltStructKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltTypeKeyword(node: BoltTypeKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltTraitKeyword(node: BoltTraitKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltImplKeyword(node: BoltImplKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); } + protected visitBoltPunctuated(node: BoltPunctuated): void { this.visitBoltToken(node); } + protected visitBoltParenthesized(node: BoltParenthesized): void { this.visitBoltPunctuated(node); } + protected visitBoltBraced(node: BoltBraced): void { this.visitBoltPunctuated(node); } + protected visitBoltBracketed(node: BoltBracketed): void { this.visitBoltPunctuated(node); } + protected visitBoltSourceFile(node: BoltSourceFile): void { this.visitBoltSyntax(node); this.visitSourceFile(node); } + protected visitBoltQualName(node: BoltQualName): void { this.visitBoltSyntax(node); } + protected visitBoltTypeExpression(node: BoltTypeExpression): void { this.visitBoltSyntax(node); } + protected visitBoltTypeOfExpression(node: BoltTypeOfExpression): void { this.visitBoltTypeExpression(node); } + protected visitBoltReferenceTypeExpression(node: BoltReferenceTypeExpression): void { this.visitBoltTypeExpression(node); } + protected visitBoltFunctionTypeExpression(node: BoltFunctionTypeExpression): void { this.visitBoltTypeExpression(node); } + protected visitBoltLiftedTypeExpression(node: BoltLiftedTypeExpression): void { this.visitBoltTypeExpression(node); } + protected visitBoltTypeParameter(node: BoltTypeParameter): void { this.visitBoltSyntax(node); } + protected visitBoltPattern(node: BoltPattern): void { this.visitBoltSyntax(node); } + protected visitBoltBindPattern(node: BoltBindPattern): void { this.visitBoltPattern(node); } + protected visitBoltTypePattern(node: BoltTypePattern): void { this.visitBoltPattern(node); } + protected visitBoltExpressionPattern(node: BoltExpressionPattern): void { this.visitBoltPattern(node); } + protected visitBoltTuplePatternElement(node: BoltTuplePatternElement): void { this.visitBoltSyntax(node); } + protected visitBoltTuplePattern(node: BoltTuplePattern): void { this.visitBoltPattern(node); } + protected visitBoltRecordFieldPattern(node: BoltRecordFieldPattern): void { this.visitBoltSyntax(node); } + protected visitBoltRecordPattern(node: BoltRecordPattern): void { this.visitBoltPattern(node); } + protected visitBoltExpression(node: BoltExpression): void { this.visitBoltSyntax(node); } + protected visitBoltQuoteExpression(node: BoltQuoteExpression): void { this.visitBoltExpression(node); } + protected visitBoltTupleExpression(node: BoltTupleExpression): void { this.visitBoltExpression(node); } + protected visitBoltReferenceExpression(node: BoltReferenceExpression): void { this.visitBoltExpression(node); } + protected visitBoltMemberExpression(node: BoltMemberExpression): void { this.visitBoltExpression(node); } + protected visitBoltFunctionExpression(node: BoltFunctionExpression): void { this.visitBoltExpression(node); } + protected visitBoltCallExpression(node: BoltCallExpression): void { this.visitBoltExpression(node); } + protected visitBoltYieldExpression(node: BoltYieldExpression): void { this.visitBoltExpression(node); } + protected visitBoltMatchArm(node: BoltMatchArm): void { this.visitBoltSyntax(node); } + protected visitBoltMatchExpression(node: BoltMatchExpression): void { this.visitBoltExpression(node); } + protected visitBoltCase(node: BoltCase): void { this.visitBoltSyntax(node); } + protected visitBoltCaseExpression(node: BoltCaseExpression): void { this.visitBoltExpression(node); } + protected visitBoltBlockExpression(node: BoltBlockExpression): void { this.visitBoltExpression(node); } + protected visitBoltConstantExpression(node: BoltConstantExpression): void { this.visitBoltExpression(node); } + protected visitBoltStatement(node: BoltStatement): void { this.visitBoltSyntax(node); this.visitBoltFunctionBodyElement(node); this.visitBoltSourceElement(node); } + protected visitBoltReturnStatement(node: BoltReturnStatement): void { this.visitReturnStatement(node); this.visitBoltStatement(node); } + protected visitBoltConditionalCase(node: BoltConditionalCase): void { this.visitBoltSyntax(node); } + protected visitBoltConditionalStatement(node: BoltConditionalStatement): void { this.visitBoltStatement(node); } + protected visitBoltResumeStatement(node: BoltResumeStatement): void { this.visitBoltStatement(node); } + protected visitBoltExpressionStatement(node: BoltExpressionStatement): void { this.visitBoltStatement(node); } + protected visitBoltLoopStatement(node: BoltLoopStatement): void { this.visitBoltStatement(node); } + protected visitBoltParameter(node: BoltParameter): void { this.visitBoltSyntax(node); } + protected visitBoltDeclaration(node: BoltDeclaration): void { this.visitBoltSyntax(node); this.visitBoltSourceElement(node); } + protected visitBoltTypeDeclaration(node: BoltTypeDeclaration): void { this.visitBoltSyntax(node); this.visitBoltSourceElement(node); } + protected visitBoltModule(node: BoltModule): void { this.visitBoltSyntax(node); this.visitBoltSourceElement(node); } + protected visitBoltDeclarationLike(node: BoltDeclarationLike): void { } + protected visitBoltFunctionBodyElement(node: BoltFunctionBodyElement): void { this.visitFunctionBodyElement(node); } + protected visitBoltFunctionDeclaration(node: BoltFunctionDeclaration): void { this.visitBoltFunctionBodyElement(node); this.visitBoltDeclaration(node); this.visitBoltDeclarationLike(node); this.visitBoltTraitOrImplElement(node); } + protected visitBoltVariableDeclaration(node: BoltVariableDeclaration): void { this.visitBoltFunctionBodyElement(node); this.visitBoltDeclaration(node); this.visitBoltDeclarationLike(node); } + protected visitBoltImportSymbol(node: BoltImportSymbol): void { this.visitBoltSyntax(node); } + protected visitBoltPlainImportSymbol(node: BoltPlainImportSymbol): void { this.visitBoltImportSymbol(node); } + protected visitBoltImportDirective(node: BoltImportDirective): void { this.visitBoltSyntax(node); this.visitBoltSourceElement(node); } + protected visitBoltExportSymbol(node: BoltExportSymbol): void { this.visitBoltSyntax(node); } + protected visitBoltPlainExportSymbol(node: BoltPlainExportSymbol): void { this.visitBoltExportSymbol(node); } + protected visitBoltExportDirective(node: BoltExportDirective): void { this.visitBoltSourceElement(node); } + protected visitBoltTraitOrImplElement(node: BoltTraitOrImplElement): void { } + protected visitBoltTraitDeclaration(node: BoltTraitDeclaration): void { this.visitBoltDeclarationLike(node); this.visitBoltTypeDeclaration(node); } + protected visitBoltImplDeclaration(node: BoltImplDeclaration): void { this.visitBoltTypeDeclaration(node); this.visitBoltDeclarationLike(node); } + protected visitBoltTypeAliasDeclaration(node: BoltTypeAliasDeclaration): void { this.visitBoltDeclarationLike(node); this.visitBoltTypeDeclaration(node); this.visitBoltTraitOrImplElement(node); } + protected visitBoltRecordMember(node: BoltRecordMember): void { this.visitBoltSyntax(node); } + protected visitBoltRecordField(node: BoltRecordField): void { this.visitBoltRecordMember(node); } + protected visitBoltRecordDeclaration(node: BoltRecordDeclaration): void { this.visitBoltDeclaration(node); this.visitBoltTypeDeclaration(node); this.visitBoltDeclarationLike(node); } + protected visitBoltSourceElement(node: BoltSourceElement): void { } + protected visitBoltMacroCall(node: BoltMacroCall): void { this.visitBoltRecordMember(node); this.visitBoltSourceElement(node); this.visitBoltTraitOrImplElement(node); this.visitBoltFunctionBodyElement(node); } + protected visitJSSyntax(node: JSSyntax): void { } + protected visitJSToken(node: JSToken): void { this.visitJSSyntax(node); this.visitToken(node); } + protected visitJSIdentifier(node: JSIdentifier): void { this.visitJSToken(node); } + protected visitJSString(node: JSString): void { this.visitJSToken(node); } + protected visitJSInteger(node: JSInteger): void { this.visitJSToken(node); } + protected visitJSFromKeyword(node: JSFromKeyword): void { this.visitJSToken(node); } + protected visitJSReturnKeyword(node: JSReturnKeyword): void { this.visitJSToken(node); } + protected visitJSTryKeyword(node: JSTryKeyword): void { this.visitJSToken(node); } + protected visitJSFinallyKeyword(node: JSFinallyKeyword): void { this.visitJSToken(node); } + protected visitJSCatchKeyword(node: JSCatchKeyword): void { this.visitJSToken(node); } + protected visitJSImportKeyword(node: JSImportKeyword): void { this.visitJSToken(node); } + protected visitJSAsKeyword(node: JSAsKeyword): void { this.visitJSToken(node); } + protected visitJSConstKeyword(node: JSConstKeyword): void { this.visitJSToken(node); } + protected visitJSLetKeyword(node: JSLetKeyword): void { this.visitJSToken(node); } + protected visitJSExportKeyword(node: JSExportKeyword): void { this.visitJSToken(node); } + protected visitJSFunctionKeyword(node: JSFunctionKeyword): void { this.visitJSToken(node); } + protected visitJSWhileKeyword(node: JSWhileKeyword): void { this.visitJSToken(node); } + protected visitJSForKeyword(node: JSForKeyword): void { this.visitJSToken(node); } + protected visitJSOperatorLike(node: JSOperatorLike): void { } + protected visitJSOperator(node: JSOperator): void { this.visitJSToken(node); } + protected visitJSCloseBrace(node: JSCloseBrace): void { this.visitJSToken(node); } + protected visitJSCloseBracket(node: JSCloseBracket): void { this.visitJSToken(node); } + protected visitJSCloseParen(node: JSCloseParen): void { this.visitJSToken(node); } + protected visitJSOpenBrace(node: JSOpenBrace): void { this.visitJSToken(node); } + protected visitJSOpenBracket(node: JSOpenBracket): void { this.visitJSToken(node); } + protected visitJSOpenParen(node: JSOpenParen): void { this.visitJSToken(node); } + protected visitJSSemi(node: JSSemi): void { this.visitJSToken(node); } + protected visitJSComma(node: JSComma): void { this.visitJSToken(node); } + protected visitJSDot(node: JSDot): void { this.visitJSToken(node); } + protected visitJSDotDotDot(node: JSDotDotDot): void { this.visitJSToken(node); } + protected visitJSMulOp(node: JSMulOp): void { this.visitJSToken(node); this.visitJSOperatorLike(node); } + protected visitJSAddOp(node: JSAddOp): void { this.visitJSToken(node); this.visitJSOperatorLike(node); } + protected visitJSDivOp(node: JSDivOp): void { this.visitJSToken(node); this.visitJSOperatorLike(node); } + protected visitJSSubOp(node: JSSubOp): void { this.visitJSToken(node); this.visitJSOperatorLike(node); } + protected visitJSLtOp(node: JSLtOp): void { this.visitJSToken(node); this.visitJSOperatorLike(node); } + protected visitJSGtOp(node: JSGtOp): void { this.visitJSToken(node); this.visitJSOperatorLike(node); } + protected visitJSBOrOp(node: JSBOrOp): void { this.visitJSToken(node); this.visitJSOperatorLike(node); } + protected visitJSBXorOp(node: JSBXorOp): void { this.visitJSToken(node); this.visitJSOperatorLike(node); } + protected visitJSBAndOp(node: JSBAndOp): void { this.visitJSToken(node); this.visitJSOperatorLike(node); } + protected visitJSBNotOp(node: JSBNotOp): void { this.visitJSToken(node); this.visitJSOperatorLike(node); } + protected visitJSNotOp(node: JSNotOp): void { this.visitJSToken(node); this.visitJSOperatorLike(node); } + protected visitJSPattern(node: JSPattern): void { this.visitJSSyntax(node); } + protected visitJSBindPattern(node: JSBindPattern): void { this.visitJSPattern(node); } + protected visitJSExpression(node: JSExpression): void { this.visitJSSyntax(node); } + protected visitJSConstantExpression(node: JSConstantExpression): void { this.visitJSExpression(node); } + protected visitJSMemberExpression(node: JSMemberExpression): void { this.visitJSExpression(node); } + protected visitJSCallExpression(node: JSCallExpression): void { this.visitJSExpression(node); } + protected visitJSBinaryExpression(node: JSBinaryExpression): void { this.visitJSExpression(node); } + protected visitJSUnaryExpression(node: JSUnaryExpression): void { this.visitJSExpression(node); } + protected visitJSNewExpression(node: JSNewExpression): void { this.visitJSExpression(node); } + protected visitJSSequenceExpression(node: JSSequenceExpression): void { this.visitJSExpression(node); } + protected visitJSConditionalExpression(node: JSConditionalExpression): void { this.visitJSExpression(node); } + protected visitJSLiteralExpression(node: JSLiteralExpression): void { this.visitJSExpression(node); } + protected visitJSReferenceExpression(node: JSReferenceExpression): void { this.visitJSExpression(node); } + protected visitJSSourceElement(node: JSSourceElement): void { } + protected visitJSFunctionBodyElement(node: JSFunctionBodyElement): void { this.visitFunctionBodyElement(node); } + protected visitJSStatement(node: JSStatement): void { this.visitJSSyntax(node); this.visitJSSourceElement(node); this.visitJSFunctionBodyElement(node); } + protected visitJSCatchBlock(node: JSCatchBlock): void { this.visitJSSyntax(node); } + protected visitJSTryCatchStatement(node: JSTryCatchStatement): void { this.visitJSStatement(node); } + protected visitJSExpressionStatement(node: JSExpressionStatement): void { this.visitJSStatement(node); } + protected visitJSConditionalCase(node: JSConditionalCase): void { this.visitJSSyntax(node); } + protected visitJSConditionalStatement(node: JSConditionalStatement): void { this.visitJSStatement(node); } + protected visitJSReturnStatement(node: JSReturnStatement): void { this.visitReturnStatement(node); this.visitJSStatement(node); } + protected visitJSParameter(node: JSParameter): void { this.visitJSSyntax(node); } + protected visitJSDeclaration(node: JSDeclaration): void { this.visitJSSyntax(node); this.visitJSSourceElement(node); } + protected visitJSImportBinding(node: JSImportBinding): void { this.visitJSSyntax(node); } + protected visitJSImportStarBinding(node: JSImportStarBinding): void { this.visitJSImportBinding(node); } + protected visitJSImportAsBinding(node: JSImportAsBinding): void { this.visitJSImportBinding(node); } + protected visitJSImportDeclaration(node: JSImportDeclaration): void { this.visitJSDeclaration(node); this.visitJSFunctionBodyElement(node); } + protected visitJSFunctionDeclaration(node: JSFunctionDeclaration): void { this.visitJSDeclaration(node); this.visitJSFunctionBodyElement(node); } + protected visitJSArrowFunctionDeclaration(node: JSArrowFunctionDeclaration): void { this.visitJSDeclaration(node); this.visitJSFunctionBodyElement(node); } + protected visitJSLetDeclaration(node: JSLetDeclaration): void { this.visitJSDeclaration(node); this.visitJSFunctionBodyElement(node); } + protected visitJSSourceFile(node: JSSourceFile): void { this.visitJSSyntax(node); this.visitSourceFile(node); } +} + +export function kindToString(kind: SyntaxKind): string { if (SyntaxKind[kind] === undefined) + throw new Error("The SyntaxKind value that was passed in was not found."); return SyntaxKind[kind]; } + +export type Syntax = EndOfFile | BoltStringLiteral | BoltIntegerLiteral | BoltIdentifier | BoltOperator | BoltAssignment | BoltComma | BoltSemi | BoltColon | BoltColonColon | BoltDot | BoltDotDot | BoltRArrow | BoltRArrowAlt | BoltLArrow | BoltEqSign | BoltGtSign | BoltExMark | BoltLtSign | BoltVBar | BoltWhereKeyword | BoltQuoteKeyword | BoltFnKeyword | BoltForeignKeyword | BoltForKeyword | BoltLetKeyword | BoltReturnKeyword | BoltLoopKeyword | BoltYieldKeyword | BoltMatchKeyword | BoltImportKeyword | BoltExportKeyword | BoltPubKeyword | BoltModKeyword | BoltMutKeyword | BoltEnumKeyword | BoltStructKeyword | BoltTypeKeyword | BoltTraitKeyword | BoltImplKeyword | BoltParenthesized | BoltBraced | BoltBracketed | BoltSourceFile | BoltQualName | BoltTypeOfExpression | BoltReferenceTypeExpression | BoltFunctionTypeExpression | BoltLiftedTypeExpression | BoltTypeParameter | BoltBindPattern | BoltTypePattern | BoltExpressionPattern | BoltTuplePatternElement | BoltTuplePattern | BoltRecordFieldPattern | BoltRecordPattern | BoltQuoteExpression | BoltTupleExpression | BoltReferenceExpression | BoltMemberExpression | BoltFunctionExpression | BoltCallExpression | BoltYieldExpression | BoltMatchArm | BoltMatchExpression | BoltCase | BoltCaseExpression | BoltBlockExpression | BoltConstantExpression | BoltReturnStatement | BoltConditionalCase | BoltConditionalStatement | BoltResumeStatement | BoltExpressionStatement | BoltLoopStatement | BoltParameter | BoltModule | BoltFunctionDeclaration | BoltVariableDeclaration | BoltPlainImportSymbol | BoltImportDirective | BoltPlainExportSymbol | BoltExportDirective | BoltTraitDeclaration | BoltImplDeclaration | BoltTypeAliasDeclaration | BoltRecordField | BoltRecordDeclaration | BoltMacroCall | JSIdentifier | JSString | JSInteger | JSFromKeyword | JSReturnKeyword | JSTryKeyword | JSFinallyKeyword | JSCatchKeyword | JSImportKeyword | JSAsKeyword | JSConstKeyword | JSLetKeyword | JSExportKeyword | JSFunctionKeyword | JSWhileKeyword | JSForKeyword | JSOperator | JSCloseBrace | JSCloseBracket | JSCloseParen | JSOpenBrace | JSOpenBracket | JSOpenParen | JSSemi | JSComma | JSDot | JSDotDotDot | JSMulOp | JSAddOp | JSDivOp | JSSubOp | JSLtOp | JSGtOp | JSBOrOp | JSBXorOp | JSBAndOp | JSBNotOp | JSNotOp | JSBindPattern | JSConstantExpression | JSMemberExpression | JSCallExpression | JSBinaryExpression | JSUnaryExpression | JSNewExpression | JSSequenceExpression | JSConditionalExpression | JSLiteralExpression | JSReferenceExpression | JSCatchBlock | JSTryCatchStatement | JSExpressionStatement | JSConditionalCase | JSConditionalStatement | JSReturnStatement | JSParameter | JSImportStarBinding | JSImportAsBinding | JSImportDeclaration | JSFunctionDeclaration | JSArrowFunctionDeclaration | JSLetDeclaration | JSSourceFile; + +export enum SyntaxKind { + EndOfFile, + BoltStringLiteral, + BoltIntegerLiteral, + BoltIdentifier, + BoltOperator, + BoltAssignment, + BoltComma, + BoltSemi, + BoltColon, + BoltColonColon, + BoltDot, + BoltDotDot, + BoltRArrow, + BoltRArrowAlt, + BoltLArrow, + BoltEqSign, + BoltGtSign, + BoltExMark, + BoltLtSign, + BoltVBar, + BoltWhereKeyword, + BoltQuoteKeyword, + BoltFnKeyword, + BoltForeignKeyword, + BoltForKeyword, + BoltLetKeyword, + BoltReturnKeyword, + BoltLoopKeyword, + BoltYieldKeyword, + BoltMatchKeyword, + BoltImportKeyword, + BoltExportKeyword, + BoltPubKeyword, + BoltModKeyword, + BoltMutKeyword, + BoltEnumKeyword, + BoltStructKeyword, + BoltTypeKeyword, + BoltTraitKeyword, + BoltImplKeyword, + BoltParenthesized, + BoltBraced, + BoltBracketed, + BoltSourceFile, + BoltQualName, + BoltTypeOfExpression, + BoltReferenceTypeExpression, + BoltFunctionTypeExpression, + BoltLiftedTypeExpression, + BoltTypeParameter, + BoltBindPattern, + BoltTypePattern, + BoltExpressionPattern, + BoltTuplePatternElement, + BoltTuplePattern, + BoltRecordFieldPattern, + BoltRecordPattern, + BoltQuoteExpression, + BoltTupleExpression, + BoltReferenceExpression, + BoltMemberExpression, + BoltFunctionExpression, + BoltCallExpression, + BoltYieldExpression, + BoltMatchArm, + BoltMatchExpression, + BoltCase, + BoltCaseExpression, + BoltBlockExpression, + BoltConstantExpression, + BoltReturnStatement, + BoltConditionalCase, + BoltConditionalStatement, + BoltResumeStatement, + BoltExpressionStatement, + BoltLoopStatement, + BoltParameter, + BoltModule, + BoltFunctionDeclaration, + BoltVariableDeclaration, + BoltPlainImportSymbol, + BoltImportDirective, + BoltPlainExportSymbol, + BoltExportDirective, + BoltTraitDeclaration, + BoltImplDeclaration, + BoltTypeAliasDeclaration, + BoltRecordField, + BoltRecordDeclaration, + BoltMacroCall, + JSIdentifier, + JSString, + JSInteger, + JSFromKeyword, + JSReturnKeyword, + JSTryKeyword, + JSFinallyKeyword, + JSCatchKeyword, + JSImportKeyword, + JSAsKeyword, + JSConstKeyword, + JSLetKeyword, + JSExportKeyword, + JSFunctionKeyword, + JSWhileKeyword, + JSForKeyword, + JSOperator, + JSCloseBrace, + JSCloseBracket, + JSCloseParen, + JSOpenBrace, + JSOpenBracket, + JSOpenParen, + JSSemi, + JSComma, + JSDot, + JSDotDotDot, + JSMulOp, + JSAddOp, + JSDivOp, + JSSubOp, + JSLtOp, + JSGtOp, + JSBOrOp, + JSBXorOp, + JSBAndOp, + JSBNotOp, + JSNotOp, + JSBindPattern, + JSConstantExpression, + JSMemberExpression, + JSCallExpression, + JSBinaryExpression, + JSUnaryExpression, + JSNewExpression, + JSSequenceExpression, + JSConditionalExpression, + JSLiteralExpression, + JSReferenceExpression, + JSCatchBlock, + JSTryCatchStatement, + JSExpressionStatement, + JSConditionalCase, + JSConditionalStatement, + JSReturnStatement, + JSParameter, + JSImportStarBinding, + JSImportAsBinding, + JSImportDeclaration, + JSFunctionDeclaration, + JSArrowFunctionDeclaration, + JSLetDeclaration, + JSSourceFile +} + diff --git a/treegen/Makefile b/treegen/Makefile deleted file mode 100644 index 57d616e58..000000000 --- a/treegen/Makefile +++ /dev/null @@ -1,11 +0,0 @@ - -all: lib/parser.js - -lib/parser.js: src/parser.pegjs - @echo "Generating parser ..." - @mkdir -p lib/ - @if ! pegjs --output lib/parser.js src/parser.pegjs; then \ - rm -rf lib/parser.js; \ - exit 1; \ - fi - diff --git a/treegen/package-lock.json b/treegen/package-lock.json deleted file mode 100644 index fb8b31374..000000000 --- a/treegen/package-lock.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "treegen", - "version": "1.0.0", - "lockfileVersion": 1 -} diff --git a/treegen/package.json b/treegen/package.json deleted file mode 100644 index e6cfdafc4..000000000 --- a/treegen/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "treegen", - "version": "1.0.0", - "private": true, - "description": "An AST tree generator from a specification file.", - "main": "lib/index.js", - "bin": { - "treegen": "lib/cli.js" - }, - "scripts": { - "prepare": "tsc", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/samvv/BoltJS.git" - }, - "keywords": [ - "abstract-syntaxt-tree", - "specification-file", - "code-generator" - ], - "author": "Sam Vervaeck", - "license": "MIT", - "bugs": { - "url": "https://github.com/samvv/BoltJS/issues" - }, - "homepage": "https://github.com/samvv/BoltJS#readme" -} diff --git a/treegen/snippets/ast-after.d.ts b/treegen/snippets/ast-after.d.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/treegen/snippets/ast-after.js b/treegen/snippets/ast-after.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/treegen/snippets/ast-before.d.ts b/treegen/snippets/ast-before.d.ts deleted file mode 100644 index 7bc46c239..000000000 --- a/treegen/snippets/ast-before.d.ts +++ /dev/null @@ -1,28 +0,0 @@ - -import { Diagnostic } from "./diagnostics" -import { TextSpan } from "./text" - -import { Package } from "./package" -import { Type } from "./types" - -export function setParents(node: Syntax): void; - -export function isSyntax(value: any): value is Syntax; - -interface SyntaxBase { - id: number; - kind: SyntaxKind; - type?: Type; - errors: Diagnostic[] - parentNode: Syntax | null; - span: TextSpan | null; - visit(visitors: NodeVisitor[]): void; - preorder(): IterableIterator; - getParentOfKind(kind: K1): ResolveSyntaxKind | null; - getChildNodes(): IterableIterator, - findAllChildrenOfKind(kind: K1): IterableIterator>; -} - -export type ResolveSyntaxKind = Extract; - - diff --git a/treegen/snippets/ast-before.js b/treegen/snippets/ast-before.js deleted file mode 100644 index c29a5e6df..000000000 --- a/treegen/snippets/ast-before.js +++ /dev/null @@ -1,114 +0,0 @@ - -export class NodeVisitor { - visit(node) { - for (const child of node.preorder()) { - const key = `visit${kindToString(child.kind)}`; - if (this[key] !== undefined) { - this[key](child); - } - } - } -} - -let nextNodeId = 1; - -class SyntaxBase { - - constructor(span) { - this.id = nextNodeId++; - this.errors = []; - this.span = span; - } - - *getChildNodes() { - for (const key of Object.keys(this)) { - if (key === 'span' || key === 'parentNode' || key === 'type') { - continue - } - const value = this[key]; - if (Array.isArray(value)) { - for (const element of value) { - if (isSyntax(element)) { - yield element; - } - } - } else { - if (isSyntax(value)) { - yield value; - } - } - } - } - - visit(visitors) { - const stack = [this]; - while (stack.length > 0) { - const node = stack.pop(); - const kindName = kindToString(node.kind); - const kindNamesToVisit = [kindName, ...NODE_TYPES[kindName].parents]; - for (const visitor of visitors) { - for (const kindName of kindNamesToVisit) { - const key = `visit${kindName}` - if (visitor[key] !== undefined) { - visitor[key](node); - } - } - } - for (const childNode of node.getChildNodes()) { - stack.push(childNode); - } - } - } - - *preorder() { - const stack = [this]; - while (stack.length > 0) { - const node = stack.pop(); - yield node - for (const childNode of node.getChildNodes()) { - stack.push(childNode); - } - } - } - - mayContainKind(kind) { - // TODO - return true; - } - - getParentOfKind(kind) { - let currNode = this.parentNode; - while (currNode !== null) { - if (currNode.kind === kind) { - return currNode; - } - currNode = currNode.parentNode; - } - return null; - } - - *findAllChildrenOfKind(kind) { - for (const node of this.preorder()) { - if (!node.mayContainKind(kind)) { - break; - } - if (node.kind === kind) { - yield node - } - } - } - -} - -export function isSyntax(value) { - return typeof value === 'object' - && value !== null - && value instanceof SyntaxBase; -} - -export function setParents(node, parentNode = null) { - node.parentNode = parentNode; - for (const child of node.getChildNodes()) { - setParents(child, node) - } -} diff --git a/treegen/src/ast.ts b/treegen/src/ast.ts deleted file mode 100644 index a98239956..000000000 --- a/treegen/src/ast.ts +++ /dev/null @@ -1,75 +0,0 @@ - -export interface ReferenceTypeNode { - type: 'ReferenceTypeNode'; - name: string; - typeArgs: TypeNode[]; -} - -export interface UnionTypeNode { - type: 'UnionTypeNode'; - elements: TypeNode[]; -} - -export type TypeNode - = ReferenceTypeNode - | UnionTypeNode - -export interface NodeField { - name: string; - typeNode: TypeNode; -} - -export interface NodeDeclaration { - index?: number; - type: 'NodeDeclaration'; - name: string; - parents: string[]; - fields: NodeField[]; -} - -export interface EnumField { - name: string; - value: number | null; -} - -export interface EnumDeclaration { - index?: number; - type: 'EnumDeclaration'; - name: string; - fields: EnumField[]; -} - -export interface TypeDeclaration { - index?: number; - type: 'TypeDeclaration'; - name: string; - typeNode: TypeNode; -} - -export type Declaration - = NodeDeclaration - | TypeDeclaration - | EnumDeclaration - -export type Syntax - = Declaration - | TypeNode - | NodeField - | EnumField - -export function hasArrayType(typeNode: TypeNode) { - if (typeNode.type === 'ReferenceTypeNode') { - return typeNode.name === 'Vec' - } else if (typeNode.type === 'UnionTypeNode') { - return typeNode.elements.some(hasArrayType); - } -} - -export function isTypeOptional(typeNode: TypeNode) { - if (typeNode.type === 'ReferenceTypeNode') { - return typeNode.name === 'Option'; - } else if (typeNode.type === 'UnionTypeNode') { - return typeNode.elements.every(isTypeOptional); - } -} - diff --git a/treegen/src/cli.ts b/treegen/src/cli.ts deleted file mode 100755 index 7c5cf5dac..000000000 --- a/treegen/src/cli.ts +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env node - -import * as path from "path" -import * as fs from "fs" - -import { parse, SyntaxError } from "./parser" -import { Declaration } from "./ast" -import { generateAST } from "./index" -import { getFileStem } from "./util" -import minimist from "minimist" - -//const PACKAGE_ROOT = path.join(__dirname, '..', '..'); - -const argv = minimist(process.argv.slice(2)); - -const jsFilePath = argv['js-file'] ?? 'lib/ast.js'; -const dtsFilePath = argv['dts-file'] ?? 'src/ast.d.ts'; - -for (const filename of argv._) { - const contents = fs.readFileSync(filename, 'utf8'); - let decls: Declaration[]; - try { - decls = parse(contents, { prefix: getFileStem(filename) }); - } catch (e) { - if (e instanceof SyntaxError) { - console.error(`${filename}:${e.location.start.line}:${e.location.start.column}: ${e.message}`); - process.exit(1); - } else { - throw e; - } - } - const { jsFile, dtsFile } = generateAST(decls); - fs.writeFileSync(jsFilePath, jsFile, 'utf8'); - fs.writeFileSync(dtsFilePath, dtsFile, 'utf8'); -} - diff --git a/treegen/src/index.ts b/treegen/src/index.ts deleted file mode 100644 index 6c2fcc3fc..000000000 --- a/treegen/src/index.ts +++ /dev/null @@ -1,528 +0,0 @@ - -import * as fs from "fs" -import * as path from "path" - -const PACKAGE_ROOT = path.resolve(__dirname, '..'); - -const CUSTOM_TYPES = ['Package', 'BoltValue', 'JSValue']; - -import { Syntax, Declaration, NodeDeclaration, TypeDeclaration, EnumDeclaration, TypeNode, NodeField } from "./ast" -import { MapLike, FileWriter } from "./util" - -export function generateAST(decls: Declaration[]) { - - let jsFile = new FileWriter(); - let dtsFile = new FileWriter(); - let i; - - // Sort declarations by category - - const nodeDecls: NodeDeclaration[] = decls.filter(decl => decl.type === 'NodeDeclaration') as NodeDeclaration[]; - const typeDecls: TypeDeclaration[] = decls.filter(decl => decl.type === 'TypeDeclaration') as TypeDeclaration[]; - const enumDecls: EnumDeclaration[] = decls.filter(decl => decl.type === 'EnumDeclaration') as EnumDeclaration[]; - - const declByName: MapLike = Object.create(null); - i = 0; - for (const decl of decls) { - decl.index = i++; - declByName[decl.name] = decl; - } - - // Generate a mapping from parent node to child node - // This makes it easy to generate union types for the intermediate nodes. - - const childrenOf: MapLike = Object.create(null); - for (const nodeDecl of nodeDecls) { - for (const parentName of nodeDecl.parents) { - if (childrenOf[parentName] === undefined) { - childrenOf[parentName] = []; - } - childrenOf[parentName].push(nodeDecl.name); - } - } - - // After we're done mappping parents to children, we can use isLeafNode() - // to store the nodes we will be iterating most frequently on. - - const finalNodes: NodeDeclaration[] = nodeDecls.filter(decl => isFinalNode(decl.name)); - - // Write a JavaScript file that contains all AST definitions. - - jsFile.write(fs.readFileSync(path.join(PACKAGE_ROOT, 'snippets', 'ast-before.js'), 'utf8')); - - for (const decl of finalNodes) { - - jsFile.write(`class ${decl.name} extends SyntaxBase {\n\n`); - jsFile.indent(); - - jsFile.write(`kind = ${decl.index};\n\n`); - jsFile.write(`static parents = `); - jsFile.write(JSON.stringify([...getParentChain(decl.name), 'Syntax'], undefined, 2)); - jsFile.write(';\n\n') - //jsFile.write(`static fields = new Map([\n`); - //jsFile.indent(); - //jsFile.write(JSON.stringify([...getAllFields(decl)].map(field => [field.name, jsonify(field.typeNode)]), undefined, 2)), - //jsFile.dedent(); - - jsFile.write(`constructor(\n`); - jsFile.indent(); - for (const field of getAllFields(decl)) { - jsFile.write(`${field.name},\n`); - } - jsFile.write(`span = null,\n`) - jsFile.dedent(); - jsFile.write(`) {\n`); - jsFile.indent(); - jsFile.write(`super(span);\n`); - for (const field of getAllFields(decl)) { - jsFile.write(`this.${field.name} = ${field.name};\n`); - } - jsFile.write(`this.span = span\n`) - jsFile.dedent(); - jsFile.write('}\n\n') - - jsFile.dedent(); - jsFile.write('}\n'); - } - - jsFile.write(`const NODE_CLASSES = {\n`) - jsFile.indent(); - for (const node of finalNodes) { - jsFile.write(node.name + ',\n'); - } - jsFile.dedent(); - jsFile.write('}\n\n') - //jsFile.dedent(); - //jsFile.write('};\n\n'); - - jsFile.write(`export function kindToString (kind) {\n switch (kind) {\n`); - jsFile.indent(2); - for (const leafNode of finalNodes) { - jsFile.write(`case ${leafNode.index}: return '${leafNode.name}';\n`); - } - jsFile.dedent(2); - jsFile.write(` }\n}\n\n`); - - - - jsFile.write(`export const SyntaxKind = {\n`) - for (const leafNode of finalNodes) { - jsFile.write(` ${leafNode.name}: ${leafNode.index},\n`); - } - jsFile.write('}\n\n') - - for (const decl of nodeDecls) { - jsFile.write(`export function is${decl.name}(value) {\n`); - jsFile.indent(); - jsFile.write(`if (!isSyntax(value)) {\n return false;\n}\n`); - if (isFinalNode(decl.name)) { - jsFile.write(` return value.kind === ${decl.index};\n`); - } else { - jsFile.write('return ' + [...getFinalNodes(decl.name)].map(d => `value.kind === ${getDeclarationNamed(d).index}`).join(' || ') + '\n'); - } - jsFile.dedent(); - jsFile.write(`}\n`); - } - - for (const node of finalNodes) { - jsFile.write(`export function create${node.name}(...args) {\n`) - jsFile.indent() - jsFile.write(`return new ${node.name}(...args);\n`) - jsFile.dedent(); - jsFile.write('}\n\n') - } - - jsFile.write(fs.readFileSync(path.join(PACKAGE_ROOT, 'snippets', 'ast-after.js'), 'utf8')); - - // Write corresponding TypeScript declarations - - dtsFile.write(fs.readFileSync(path.join(PACKAGE_ROOT, 'snippets', 'ast-before.d.ts'), 'utf8')); - - dtsFile.write('export class NodeVisitor {\n'); - dtsFile.write(' public visit(node: Syntax): void;\n'); - for (const decl of finalNodes) { - dtsFile.write(` protected visit${decl.name}?(node: ${decl.name}): void;\n`); - } - dtsFile.write('}\n\n'); - - dtsFile.write(`\nexport const enum SyntaxKind {\n`); - for (const decl of finalNodes) { - dtsFile.write(` ${decl.name} = ${decl.index},\n`); - } - dtsFile.write(`}\n\n`); - - for (const decl of decls) { - if (decl.type === 'NodeDeclaration') { - if (isFinalNode(decl.name)) { - dtsFile.write(`export interface ${decl.name} extends SyntaxBase {\n`) - dtsFile.indent() - dtsFile.write(`kind: SyntaxKind.${decl.name};\n`); - for (const field of getAllFields(decl)) { - dtsFile.write(`${field.name}: ${emitTypeScriptType(field.typeNode)};\n`); - } - dtsFile.write(`parentNode: ${decl.name}Parent;\n`); - dtsFile.write(`getChildNodes(): IterableIterator<${decl.name}Child>\n`) - dtsFile.dedent(); - dtsFile.write(`}\n\n`); - { - dtsFile.write(`export type ${decl.name}Parent\n`) - let first = true; - for (const parentName of uniq(getNodesReferencingNode(decl.name))) { - dtsFile.write((first ? '=' : '|') + ' ' + parentName + '\n'); - first = false; - } - dtsFile.write((first ? '=' : '|') + ' never\n\n'); - } - { - dtsFile.write(`export type ${decl.name}AnyParent\n`) - let first = true; - for (const parentDecl of uniq(getNodesTransitivelyReferencingNode(decl))) { - dtsFile.write((first ? '=' : '|') + ' ' + parentDecl + '\n'); - first = false; - } - dtsFile.write((first ? '=' : '|') + ' never\n\n'); - } - { - dtsFile.write(`export type ${decl.name}Child\n`) - let first = true; - for (const childDecl of uniq(getFinalNodes(decl.name))) { - dtsFile.write((first ? '=' : '|') + ' ' + childDecl + '\n'); - first = false; - } - dtsFile.write((first ? '=' : '|') + ' never\n\n'); - } - } else { - dtsFile.write(`export type ${decl.name}\n`); - let first = true; - dtsFile.indent(); - for (const childDecl of uniq(getFinalNodes(decl.name))) { - dtsFile.write((first ? '=' : '|') + ' ' + childDecl + '\n'); - first = false; - } - dtsFile.dedent(); - dtsFile.write('\n\n'); - } - } else if (decl.type === 'EnumDeclaration') { - dtsFile.write(`export const enum ${decl.name} {\n`); - dtsFile.indent(); - for (const field of decl.fields) { - dtsFile.write(`${field.name} = ${field.value},`); - } - dtsFile.dedent(); - dtsFile.write('}\n\n'); - } - } - - //dtsFile.write('export type ResolveSyntaxKind\n'); - //{ - //let i = 0; - //for (const decl of leafNodes) { - //dtsFile.write(i === 0 ? ' =' : ' |'); - //dtsFile.write(` K extends SyntaxKind.${decl.name} ? ${decl.name}`); - //dtsFile.write(' :'); - //dtsFile.write('\n'); - //i++; - //} - //dtsFile.write(' never\n\n'); - //} - - dtsFile.write(`export type Syntax\n`); - let first = true; - dtsFile.indent(); - for (const decl of finalNodes) { - dtsFile.write((first ? '=' : '|') + ' ' + decl.name + '\n'); - first = false; - } - dtsFile.dedent(); - dtsFile.write('\n\n'); - - dtsFile.write('export function kindToString(kind: SyntaxKind): string;\n\n'); - - for (const decl of finalNodes) { - dtsFile.write(`export function create${decl.name}(`); - for (const field of getAllFields(decl)) { - dtsFile.write(`${field.name}: ${emitTypeScriptType(field.typeNode)}, `); - } - dtsFile.write(`span?: TextSpan | null): ${decl.name};\n`); - } - - dtsFile.write('\n'); - - for (const decl of nodeDecls) { - dtsFile.write(`export function is${decl.name}(value: any): value is ${decl.name};\n`); - } - - dtsFile.write(fs.readFileSync(path.join(PACKAGE_ROOT, 'snippets', 'ast-after.d.ts'), 'utf8')); - - return { - jsFile: jsFile.currentText, - dtsFile: dtsFile.currentText, - }; - - // Below are some useful functions - - function hasDeclarationNamed(name: string): boolean { - return name in declByName; - } - - function* getNodesTransitivelyReferencingNode(node: NodeDeclaration): IterableIterator { - const visited = new Set(); - const stack = [ node.name ]; - while (stack.length > 0) { - const nodeName = stack.pop()!; - visited.add(nodeName); - for (const parentName of getNodesReferencingNode(nodeName)) { - if (!visited.has(parentName)) { - yield parentName; - stack.push(parentName); - } - } - } - } - - function containsDeclarationInInheritanceChain(rootName: string, name: string): boolean { - const decl = getDeclarationNamed(name); - if (decl.type === 'NodeDeclaration') { - for (const childName of getNodesDirectlyInheritingFrom(rootName)) { - if (childName === name) { - return true; - } - if (containsDeclarationInInheritanceChain(childName, name)) { - return true; - } - } - return false; - } else { - throw new Error(`Checking membership of other types of declarations is not supported.`); - } - } - - function* getNodesReferencingNode(name: string): IterableIterator { - const decl = getDeclarationNamed(name) as NodeDeclaration; - for (const parentNode of finalNodes) { - inner: for (const field of getAllFields(parentNode)) { - if (typeReferencesDeclarationNamed(field.typeNode, name)) { - yield parentNode.name; - break inner; - } - for (const upperNodeName of getNodesDirectlyInheritingFrom(name)) { - if (containsDeclarationInInheritanceChain(upperNodeName, name)) { - yield parentNode.name; - break inner; - } - } - } - } - } - - function typeReferencesDeclarationNamed(type: TypeNode, name: string): boolean { - for (const declName of getAllDeclarationsInType(type)) { - const decl = getDeclarationNamed(declName); - if (decl.type === 'NodeDeclaration') { - return containsDeclarationInInheritanceChain(decl.name, name) - } else if (decl.type === 'TypeDeclaration') { - return typeReferencesDeclarationNamed(decl.typeNode, name); - } - } - return false; - } - - function* getAllDeclarationsInType(typeNode: TypeNode): IterableIterator { - if (typeNode.type === 'ReferenceTypeNode') { - if (typeNode.typeArgs === null) { - if (hasDeclarationNamed(typeNode.name)) { - yield typeNode.name; - } - } else { - for (const arg of typeNode.typeArgs) { - yield* getAllDeclarationsInType(arg); - } - } - } else if (typeNode.type === 'UnionTypeNode') { - for (const element of typeNode.elements) { - yield* getAllDeclarationsInType(element); - } - } else { - throw new Error(`Could not infer declarations inside ${typeNode}.`) - } - } - - function isDeclarationInType(typeNode: TypeNode, declName: string): boolean { - if (typeNode.type === 'ReferenceTypeNode') { - if (typeNode.typeArgs === null) { - return typeNode.name === declName; - } - return typeNode.typeArgs.some(arg => isDeclarationInType(arg, declName)); - } else if (typeNode.type === 'UnionTypeNode') { - return typeNode.elements.some(el => isDeclarationInType(el, declName)); - } - throw new Error(`Could not infer whether declaration ${declName} occurs in the given type node.`) - } - - function emitTypeScriptType(typeNode: TypeNode): string { - if (typeNode.type === 'ReferenceTypeNode') { - if (hasDeclarationNamed(typeNode.name)) { - return typeNode.name; - } else if (typeNode.name === 'Option') { - return `${emitTypeScriptType(typeNode.typeArgs[0])} | null`; - } else if (typeNode.name === 'Vec') { - return `${emitTypeScriptType(typeNode.typeArgs[0])}[]`; - } else if (CUSTOM_TYPES.indexOf(typeNode.name) !== -1) { - return typeNode.name; - } else if (typeNode.name === 'String') { - return `string`; - } else if (typeNode.name === 'Int') { - return `bigint`; - } else if (typeNode.name === 'usize') { - return `number`; - } else if (typeNode.name === 'bool') { - return `boolean`; - } else { - throw new Error(`Could not emit TypeScript type for reference type node named ${typeNode.name}`); - } - } else if (typeNode.type === 'UnionTypeNode') { - return '(' + typeNode.elements.map(emitTypeScriptType).join(' | ') + ')'; - } - throw new Error(`Could not emit TypeScript type for type node ${typeNode}`); - } - - function getNodesDirectlyInheritingFrom(declName: string) { - const children = childrenOf[declName]; - if (children === undefined) { - return [] - } - return children; - } - - function *getParentChain(nodeName: string): IterableIterator { - const stack = [ nodeName ]; - while (stack.length > 0) { - const nodeDecl = getDeclarationNamed(stack.pop()!) as NodeDeclaration; - for (const parentName of nodeDecl.parents) { - yield parentName; - stack.push(parentName); - } - } - } - - function* getFinalNodes(declName: string): IterableIterator { - const stack = [ declName ]; - while (stack.length > 0) { - const nodeName = stack.pop()!; - for (const childName of getNodesDirectlyInheritingFrom(nodeName)) { - //const childDecl = getDeclarationNamed(childName) - //if (childDecl.type !== 'NodeDeclaration') { - // throw new Error(`Node ${declName} has a child named '${childDecl.name}' that is not a node.`); - //} - if (isFinalNode(childName)) { - yield childName; - } else { - stack.push(childName); - } - } - } - } - - function* getAllFields(nodeDecl: NodeDeclaration): IterableIterator { - yield* nodeDecl.fields; - if (isFinalNode(nodeDecl.name)) { - for (const parentName of nodeDecl.parents) { - const parentDecl = getDeclarationNamed(parentName); - if (parentDecl.type !== 'NodeDeclaration') { - throw new Error(`Parent declaration '${parentName}' of '${nodeDecl.name}' must be a node declaration.`); - } - yield* parentDecl.fields; - } - } else { - for (const nodeName of getFinalNodes(nodeDecl.name)) { - yield* getAllFields(getDeclarationNamed(nodeName) as NodeDeclaration); - } - } - } - - function getDeclarationNamed(name: string): Declaration { - const decl = declByName[name]; - if (decl === undefined) { - throw new Error(`Declaration '${name}' was not found in any of the definition files.`); - } - return decl; - } - - function hasChildren(name: string): boolean { - return childrenOf[name] !== undefined && childrenOf[name].length !== 0; - } - - function isFinalNode(name: string): boolean { - const decl = getDeclarationNamed(name); - if (decl.type !== 'NodeDeclaration') { - return false; - } - return !hasChildren(name); - } - -} - -function pushAll(arr: T[], els: T[]): void { - for (const el of els) { - arr.push(el); - } -} - -function isNode(value: any): value is Syntax { - return typeof value === 'object' && value !== null && value.__IS_NODE; -} - -function jsonify(value: any) { - - function visitNode(node: any) { - - const obj: any = {}; - - for (const key of Object.keys(node)) { - if (key !== 'type' && key !== 'span' && key !== '__IS_NODE') { - const value = node[key]; - if (Array.isArray(value)) { - obj[key] = value.map(visit); - } else { - obj[key] = visit(value); - } - } - } - - return obj; - } - - function visit(value: any) { - if (isNode(value)) { - return visitNode(value); - } else { - return value; - } - } - - return visit(value); -} - -function stripSuffix(str: string, suffix: string): string { - if (!str.endsWith(suffix)) { - return str; - } - return str.substring(0, str.length-suffix.length); -} - -function getFileStem(filepath: string) { - return path.basename(filepath).split('.')[0]; -} - -function uniq(elements: Iterable): T[] { - const out: T[] = []; - const visited = new Set(); - for (const element of elements) { - if (visited.has(element)) { - continue; - } - visited.add(element); - out.push(element); - } - return out; -} diff --git a/treegen/src/parser.d.ts b/treegen/src/parser.d.ts deleted file mode 100644 index 96cc7360e..000000000 --- a/treegen/src/parser.d.ts +++ /dev/null @@ -1,29 +0,0 @@ - -export interface ParseOptions { - [key: string]: any; -} - -export function parse(input: string, opts?: ParseOptions): any; - -export interface Location { - line: number; - column: number; - offset: number; -} - -interface LocationRange { - start: Location, - end: Location -} - -export class SyntaxError { - line: number; - column: number; - offset: number; - location: LocationRange; - expected:any[]; - found:any; - name:string; - message:string; -} - diff --git a/treegen/src/parser.pegjs b/treegen/src/parser.pegjs deleted file mode 100644 index 1eb30a3d7..000000000 --- a/treegen/src/parser.pegjs +++ /dev/null @@ -1,255 +0,0 @@ -{ - - function liftArray(value) { - if (Array.isArray(value)) { - return value; - } - return value === null || value === undefined ? [] : [value] - } - - function createNode(type, props) { - return { - __IS_NODE: true, - type, - span: location(), - ...props, - } - } - -} - - -File - = __ @(@Declaration __)* - -Declaration - = NodeDeclaration - / EnumDeclaration - / TypeDeclaration - / LanguageDeclaration - -NodeDeclaration - = NodeToken __ name:Identifier parents:(__ '>' __ @ExtendsList)? fields:(__ '{' __ @(@NodeField __)* '}')? EOS { - return createNode('NodeDeclaration', { name, parents: liftArray(parents), fields: liftArray(fields) }); - } - -ExtendsList - = head:Identifier tail:(__ ',' __ @Identifier)* { - return [head, ...tail]; - } - -LanguageDeclaration - = '@' LanguageToken __ name:Identifier EOS { - return createNode('LanguageDeclaration', { name }); - } - -NodeField - = name:Identifier __ ':' __ typeNode:TypeNode EOD { - return createNode('NodeField', { name, typeNode }); - } - -TypeNode - = UnionTypeNode - -UnionTypeNode - = head:ReferenceTypeNode tail:(__ '|' __ @ReferenceTypeNode)* { - if (tail.length === 0) { - return head; - } - return createNode('UnionTypeNode', { elements: [head, ...tail] }); - } - -ReferenceTypeNode - = name:Identifier typeArgs:(__ '<' __ @TypeNodeList __ '>')? { - return createNode('ReferenceTypeNode', { name, typeArgs }); - } - -TypeNodeList - = parsed:(TypeNode (__ ',' __ @TypeNode)*)? { - return parsed !== null ? [parsed[0], ...parsed[1]] : []; - } - -EnumDeclaration - = EnumToken __ name:Identifier __ '{' __ fields:(@EnumField __)* '}' EOS { - return createNode('EnumDeclaration', { name, fields }); - } - -EnumField - = name:Identifier value:(__ '=' __ @Integer)? EOD { - return createNode('EnumField', { name, value }); - } - -TypeDeclaration - = TypeToken __ name:Identifier __ '=' __ typeNode:TypeNode EOS { - return createNode('TypeDeclaration', { name, typeNode }); - } - -Identifier "an identifier" - = $(IdentifierStart IdentifierPart*) - -Integer - = HexInteger - / DecimalInteger - -DecimalInteger - = digits:$([0-9]+) { - return parseInt(digits); - } - -HexInteger - = '0x' digits:$([0-9a-z]i+) { - return parseInt(digits, 16); - } - -EnumToken = 'enum' !IdentifierPart -NodeToken = 'node' !IdentifierPart -TypeToken = 'type' !IdentifierPart -LanguageToken = 'language' !IdentifierPart - -SourceCharacter - = . - -WhiteSpace "whitespace" - = "\t" - / "\v" - / "\f" - / " " - / "\u00A0" - / "\uFEFF" - / Zs - -LineTerminator - = [\n\r\u2028\u2029] - -LineTerminatorSequence "end of line" - = "\n" - / "\r\n" - / "\r" - / "\u2028" - / "\u2029" - -Comment "comment" - = MultiLineComment - / SingleLineComment - -MultiLineComment - = "/*" (!"*/" SourceCharacter)* "*/" - -MultiLineCommentNoLineTerminator - = "/*" (!("*/" / LineTerminator) SourceCharacter)* "*/" - -SingleLineComment - = "//" (!LineTerminator SourceCharacter)* - -__ - = (WhiteSpace / LineTerminatorSequence / Comment)* - -_ - = (WhiteSpace / MultiLineCommentNoLineTerminator)* - - -EOD - = __ "," - / _ SingleLineComment? LineTerminatorSequence - / _ &"}" - / __ EOF - -EOS - = __ ";" - / _ SingleLineComment? LineTerminatorSequence - / _ &"}" - / __ EOF - -EOF - = !. - - -IdentifierStart - = UnicodeLetter - / "$" - / "_" - -IdentifierPart - = IdentifierStart - / UnicodeCombiningMark - / UnicodeDigit - / UnicodeConnectorPunctuation - / "\u200C" - / "\u200D" - -UnicodeLetter - = Lu - / Ll - / Lt - / Lm - / Lo - / Nl - -UnicodeCombiningMark - = Mn - / Mc - -UnicodeDigit - = Nd - -UnicodeConnectorPunctuation - = Pc - - - -// Unicode Character Categories -// -// Extracted from the following Unicode Character Database file: -// -// http://www.unicode.org/Public/11.0.0/ucd/extracted/DerivedGeneralCategory.txt -// -// Unix magic used: -// -// grep "; $CATEGORY" DerivedGeneralCategory.txt | # Filter characters -// cut -f1 -d " " | # Extract code points -// grep -v '[0-9a-fA-F]\{5\}' | # Exclude non-BMP characters -// sed -e 's/\.\./-/' | # Adjust formatting -// sed -e 's/\([0-9a-fA-F]\{4\}\)/\\u\1/g' | # Adjust formatting -// tr -d '\n' # Join lines -// -// ECMA-262 allows using Unicode 3.0 or later, version 8.0.0 was the latest one -// at the time of writing. -// -// Non-BMP characters are completely ignored to avoid surrogate pair handling -// (detecting surrogate pairs isn't possible with a simple character class and -// other methods would degrade performance). I don't consider it a big deal as -// even parsers in JavaScript engines of common browsers seem to ignore them. - -// Letter, Lowercase -Ll = [\u0061-\u007A\u00B5\u00DF-\u00F6\u00F8-\u00FF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137-\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148-\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C-\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA-\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9-\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC-\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF-\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F-\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0-\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB-\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE-\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0560-\u0588\u10D0-\u10FA\u10FD-\u10FF\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6-\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FC7\u1FD0-\u1FD3\u1FD6-\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6-\u1FF7\u210A\u210E-\u210F\u2113\u212F\u2134\u2139\u213C-\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65-\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73-\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3-\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7AF\uA7B5\uA7B7\uA7B9\uA7FA\uAB30-\uAB5A\uAB60-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A] - -// Letter, Modifier -Lm = [\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5-\u06E6\u07F4-\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C-\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D-\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C-\uA69D\uA717-\uA71F\uA770\uA788\uA7F8-\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3-\uAAF4\uAB5C-\uAB5F\uFF70\uFF9E-\uFF9F] - -// Letter, Other -Lo = [\u00AA\u00BA\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05EF-\u05F2\u0620-\u063F\u0641-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u09FC\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0-\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60-\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0CF1-\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32-\u0E33\u0E40-\u0E45\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065-\u1066\u106E-\u1070\u1075-\u1081\u108E\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE-\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5-\u1CF6\u2135-\u2138\u2D30-\u2D67\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A-\uA62B\uA66E\uA6A0-\uA6E5\uA78F\uA7F7\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD-\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9E0-\uA9E4\uA9E7-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5-\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADC\uAAE0-\uAAEA\uAAF2\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC] - -// Letter, Titlecase -Lt = [\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC] - -// Letter, Uppercase -Lu = [\u0041-\u005A\u00C0-\u00D6\u00D8-\u00DE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A-\u023B\u023D-\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9-\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0-\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1C90-\u1CBA\u1CBD-\u1CBF\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E-\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D-\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uA7B8\uFF21-\uFF3A] - -// Mark, Spacing Combining -Mc = [\u0903\u093B\u093E-\u0940\u0949-\u094C\u094E-\u094F\u0982-\u0983\u09BE-\u09C0\u09C7-\u09C8\u09CB-\u09CC\u09D7\u0A03\u0A3E-\u0A40\u0A83\u0ABE-\u0AC0\u0AC9\u0ACB-\u0ACC\u0B02-\u0B03\u0B3E\u0B40\u0B47-\u0B48\u0B4B-\u0B4C\u0B57\u0BBE-\u0BBF\u0BC1-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD7\u0C01-\u0C03\u0C41-\u0C44\u0C82-\u0C83\u0CBE\u0CC0-\u0CC4\u0CC7-\u0CC8\u0CCA-\u0CCB\u0CD5-\u0CD6\u0D02-\u0D03\u0D3E-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D57\u0D82-\u0D83\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DF2-\u0DF3\u0F3E-\u0F3F\u0F7F\u102B-\u102C\u1031\u1038\u103B-\u103C\u1056-\u1057\u1062-\u1064\u1067-\u106D\u1083-\u1084\u1087-\u108C\u108F\u109A-\u109C\u17B6\u17BE-\u17C5\u17C7-\u17C8\u1923-\u1926\u1929-\u192B\u1930-\u1931\u1933-\u1938\u1A19-\u1A1A\u1A55\u1A57\u1A61\u1A63-\u1A64\u1A6D-\u1A72\u1B04\u1B35\u1B3B\u1B3D-\u1B41\u1B43-\u1B44\u1B82\u1BA1\u1BA6-\u1BA7\u1BAA\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2-\u1BF3\u1C24-\u1C2B\u1C34-\u1C35\u1CE1\u1CF2-\u1CF3\u1CF7\u302E-\u302F\uA823-\uA824\uA827\uA880-\uA881\uA8B4-\uA8C3\uA952-\uA953\uA983\uA9B4-\uA9B5\uA9BA-\uA9BB\uA9BD-\uA9C0\uAA2F-\uAA30\uAA33-\uAA34\uAA4D\uAA7B\uAA7D\uAAEB\uAAEE-\uAAEF\uAAF5\uABE3-\uABE4\uABE6-\uABE7\uABE9-\uABEA\uABEC] - -// Mark, Nonspacing -Mn = [\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962-\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2-\u09E3\u09FE\u0A01-\u0A02\u0A3C\u0A41-\u0A42\u0A47-\u0A48\u0A4B-\u0A4D\u0A51\u0A70-\u0A71\u0A75\u0A81-\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7-\u0AC8\u0ACD\u0AE2-\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62-\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55-\u0C56\u0C62-\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC-\u0CCD\u0CE2-\u0CE3\u0D00-\u0D01\u0D3B-\u0D3C\u0D41-\u0D44\u0D4D\u0D62-\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB-\u0EBC\u0EC8-\u0ECD\u0F18-\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86-\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039-\u103A\u103D-\u103E\u1058-\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17B4-\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885-\u1886\u18A9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193B\u1A17-\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABD\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80-\u1B81\u1BA2-\u1BA5\u1BA8-\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8-\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099-\u309A\uA66F\uA674-\uA67D\uA69E-\uA69F\uA6F0-\uA6F1\uA802\uA806\uA80B\uA825-\uA826\uA8C4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9E5\uAA29-\uAA2E\uAA31-\uAA32\uAA35-\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7-\uAAB8\uAABE-\uAABF\uAAC1\uAAEC-\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F] - -// Number, Decimal Digit -Nd = [\u0030-\u0039\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19] - -// Number, Letter -Nl = [\u16EE-\u16F0\u2160-\u2182\u2185-\u2188\u3007\u3021-\u3029\u3038-\u303A\uA6E6-\uA6EF] - -// Punctuation, Connector -Pc = [\u005F\u203F-\u2040\u2054\uFE33-\uFE34\uFE4D-\uFE4F\uFF3F] - -// Separator, Space -Zs = [\u0020\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000] - diff --git a/treegen/src/util.ts b/treegen/src/util.ts deleted file mode 100644 index ecbd35a7b..000000000 --- a/treegen/src/util.ts +++ /dev/null @@ -1,57 +0,0 @@ - -import * as path from "path" - -export function getFileStem(filepath: string): string { - return path.basename(filepath).split('.')[0]; -} - -export interface MapLike { [key: string]: T } - -function isWhiteSpace(ch: string) { - return /[\r\t ]/.test(ch); -} - -export interface FileWriterOptions { - indentStr?: string; - startIndent?: number; - indentWidth?: number; -} - -export class FileWriter { - - public currentText = ''; - - private atBlankLine = true; - private currentIndent: number; - private indentStr: string; - private indentWidth: number; - - constructor(opts: FileWriterOptions = {}) { - this.indentStr = opts.indentStr ?? ' '; - this.indentWidth = opts.indentWidth ?? 2; - this.currentIndent = (opts.startIndent ?? 0) * this.indentWidth; - } - - public indent(count = 1) { - this.currentIndent += this.indentWidth * count; - } - - public dedent(count = 1) { - this.currentIndent -= this.indentWidth * count; - } - - public write(str: string) { - for (const ch of str) { - if (ch === '\n') { - this.atBlankLine = true; - } else if (!(this.atBlankLine && isWhiteSpace(ch))) { - if (this.atBlankLine) { - this.currentText += this.indentStr.repeat(this.currentIndent) - } - this.atBlankLine = false; - } - this.currentText += ch; - } - } - -} diff --git a/treegen/tsconfig.json b/treegen/tsconfig.json deleted file mode 100644 index d54bb3257..000000000 --- a/treegen/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "compilerOptions": { - "target": "es2017", - "module": "commonjs", - "outDir": "./lib", - "strict": true, - "esModuleInterop": true, - "sourceMap": true - }, - "include": ["src/**/*"], - "exclude": ["node_modules"] -}