Fix errors and make project work again
This commit is contained in:
parent
1659cfa7ec
commit
1659d722cc
5 changed files with 493 additions and 27 deletions
486
src/ast.ts
486
src/ast.ts
|
@ -2586,12 +2586,474 @@ export function isJSSourceFile(value: any): value is JSSourceFile { return value
|
||||||
export function isSyntax(value: any): value is Syntax { return typeof value === "object" && value !== null && value instanceof SyntaxBase; }
|
export function isSyntax(value: any): value is Syntax { return typeof value === "object" && value !== null && value instanceof SyntaxBase; }
|
||||||
|
|
||||||
export class Visitor {
|
export class Visitor {
|
||||||
|
visit(node: Syntax): void { switch (node.kind) {
|
||||||
|
case SyntaxKind.EndOfFile:
|
||||||
|
this.visitEndOfFile((node as EndOfFile));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltStringLiteral:
|
||||||
|
this.visitBoltStringLiteral((node as BoltStringLiteral));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltIntegerLiteral:
|
||||||
|
this.visitBoltIntegerLiteral((node as BoltIntegerLiteral));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltIdentifier:
|
||||||
|
this.visitBoltIdentifier((node as BoltIdentifier));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltOperator:
|
||||||
|
this.visitBoltOperator((node as BoltOperator));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltAssignment:
|
||||||
|
this.visitBoltAssignment((node as BoltAssignment));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltComma:
|
||||||
|
this.visitBoltComma((node as BoltComma));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltSemi:
|
||||||
|
this.visitBoltSemi((node as BoltSemi));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltColon:
|
||||||
|
this.visitBoltColon((node as BoltColon));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltColonColon:
|
||||||
|
this.visitBoltColonColon((node as BoltColonColon));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltDot:
|
||||||
|
this.visitBoltDot((node as BoltDot));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltDotDot:
|
||||||
|
this.visitBoltDotDot((node as BoltDotDot));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltRArrow:
|
||||||
|
this.visitBoltRArrow((node as BoltRArrow));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltRArrowAlt:
|
||||||
|
this.visitBoltRArrowAlt((node as BoltRArrowAlt));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltLArrow:
|
||||||
|
this.visitBoltLArrow((node as BoltLArrow));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltEqSign:
|
||||||
|
this.visitBoltEqSign((node as BoltEqSign));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltGtSign:
|
||||||
|
this.visitBoltGtSign((node as BoltGtSign));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltExMark:
|
||||||
|
this.visitBoltExMark((node as BoltExMark));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltLtSign:
|
||||||
|
this.visitBoltLtSign((node as BoltLtSign));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltVBar:
|
||||||
|
this.visitBoltVBar((node as BoltVBar));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltWhereKeyword:
|
||||||
|
this.visitBoltWhereKeyword((node as BoltWhereKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltQuoteKeyword:
|
||||||
|
this.visitBoltQuoteKeyword((node as BoltQuoteKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltFnKeyword:
|
||||||
|
this.visitBoltFnKeyword((node as BoltFnKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltForeignKeyword:
|
||||||
|
this.visitBoltForeignKeyword((node as BoltForeignKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltForKeyword:
|
||||||
|
this.visitBoltForKeyword((node as BoltForKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltLetKeyword:
|
||||||
|
this.visitBoltLetKeyword((node as BoltLetKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltReturnKeyword:
|
||||||
|
this.visitBoltReturnKeyword((node as BoltReturnKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltLoopKeyword:
|
||||||
|
this.visitBoltLoopKeyword((node as BoltLoopKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltYieldKeyword:
|
||||||
|
this.visitBoltYieldKeyword((node as BoltYieldKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltMatchKeyword:
|
||||||
|
this.visitBoltMatchKeyword((node as BoltMatchKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltImportKeyword:
|
||||||
|
this.visitBoltImportKeyword((node as BoltImportKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltExportKeyword:
|
||||||
|
this.visitBoltExportKeyword((node as BoltExportKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltPubKeyword:
|
||||||
|
this.visitBoltPubKeyword((node as BoltPubKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltModKeyword:
|
||||||
|
this.visitBoltModKeyword((node as BoltModKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltMutKeyword:
|
||||||
|
this.visitBoltMutKeyword((node as BoltMutKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltEnumKeyword:
|
||||||
|
this.visitBoltEnumKeyword((node as BoltEnumKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltStructKeyword:
|
||||||
|
this.visitBoltStructKeyword((node as BoltStructKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltTypeKeyword:
|
||||||
|
this.visitBoltTypeKeyword((node as BoltTypeKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltTraitKeyword:
|
||||||
|
this.visitBoltTraitKeyword((node as BoltTraitKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltImplKeyword:
|
||||||
|
this.visitBoltImplKeyword((node as BoltImplKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltParenthesized:
|
||||||
|
this.visitBoltParenthesized((node as BoltParenthesized));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltBraced:
|
||||||
|
this.visitBoltBraced((node as BoltBraced));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltBracketed:
|
||||||
|
this.visitBoltBracketed((node as BoltBracketed));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltSourceFile:
|
||||||
|
this.visitBoltSourceFile((node as BoltSourceFile));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltQualName:
|
||||||
|
this.visitBoltQualName((node as BoltQualName));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltTypeOfExpression:
|
||||||
|
this.visitBoltTypeOfExpression((node as BoltTypeOfExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltReferenceTypeExpression:
|
||||||
|
this.visitBoltReferenceTypeExpression((node as BoltReferenceTypeExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltFunctionTypeExpression:
|
||||||
|
this.visitBoltFunctionTypeExpression((node as BoltFunctionTypeExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltLiftedTypeExpression:
|
||||||
|
this.visitBoltLiftedTypeExpression((node as BoltLiftedTypeExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltTypeParameter:
|
||||||
|
this.visitBoltTypeParameter((node as BoltTypeParameter));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltBindPattern:
|
||||||
|
this.visitBoltBindPattern((node as BoltBindPattern));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltTypePattern:
|
||||||
|
this.visitBoltTypePattern((node as BoltTypePattern));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltExpressionPattern:
|
||||||
|
this.visitBoltExpressionPattern((node as BoltExpressionPattern));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltTuplePatternElement:
|
||||||
|
this.visitBoltTuplePatternElement((node as BoltTuplePatternElement));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltTuplePattern:
|
||||||
|
this.visitBoltTuplePattern((node as BoltTuplePattern));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltRecordFieldPattern:
|
||||||
|
this.visitBoltRecordFieldPattern((node as BoltRecordFieldPattern));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltRecordPattern:
|
||||||
|
this.visitBoltRecordPattern((node as BoltRecordPattern));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltQuoteExpression:
|
||||||
|
this.visitBoltQuoteExpression((node as BoltQuoteExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltTupleExpression:
|
||||||
|
this.visitBoltTupleExpression((node as BoltTupleExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltReferenceExpression:
|
||||||
|
this.visitBoltReferenceExpression((node as BoltReferenceExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltMemberExpression:
|
||||||
|
this.visitBoltMemberExpression((node as BoltMemberExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltFunctionExpression:
|
||||||
|
this.visitBoltFunctionExpression((node as BoltFunctionExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltCallExpression:
|
||||||
|
this.visitBoltCallExpression((node as BoltCallExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltYieldExpression:
|
||||||
|
this.visitBoltYieldExpression((node as BoltYieldExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltMatchArm:
|
||||||
|
this.visitBoltMatchArm((node as BoltMatchArm));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltMatchExpression:
|
||||||
|
this.visitBoltMatchExpression((node as BoltMatchExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltCase:
|
||||||
|
this.visitBoltCase((node as BoltCase));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltCaseExpression:
|
||||||
|
this.visitBoltCaseExpression((node as BoltCaseExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltBlockExpression:
|
||||||
|
this.visitBoltBlockExpression((node as BoltBlockExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltConstantExpression:
|
||||||
|
this.visitBoltConstantExpression((node as BoltConstantExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltReturnStatement:
|
||||||
|
this.visitBoltReturnStatement((node as BoltReturnStatement));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltConditionalCase:
|
||||||
|
this.visitBoltConditionalCase((node as BoltConditionalCase));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltConditionalStatement:
|
||||||
|
this.visitBoltConditionalStatement((node as BoltConditionalStatement));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltResumeStatement:
|
||||||
|
this.visitBoltResumeStatement((node as BoltResumeStatement));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltExpressionStatement:
|
||||||
|
this.visitBoltExpressionStatement((node as BoltExpressionStatement));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltLoopStatement:
|
||||||
|
this.visitBoltLoopStatement((node as BoltLoopStatement));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltParameter:
|
||||||
|
this.visitBoltParameter((node as BoltParameter));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltModule:
|
||||||
|
this.visitBoltModule((node as BoltModule));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltFunctionDeclaration:
|
||||||
|
this.visitBoltFunctionDeclaration((node as BoltFunctionDeclaration));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltVariableDeclaration:
|
||||||
|
this.visitBoltVariableDeclaration((node as BoltVariableDeclaration));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltPlainImportSymbol:
|
||||||
|
this.visitBoltPlainImportSymbol((node as BoltPlainImportSymbol));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltImportDirective:
|
||||||
|
this.visitBoltImportDirective((node as BoltImportDirective));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltPlainExportSymbol:
|
||||||
|
this.visitBoltPlainExportSymbol((node as BoltPlainExportSymbol));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltExportDirective:
|
||||||
|
this.visitBoltExportDirective((node as BoltExportDirective));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltTraitDeclaration:
|
||||||
|
this.visitBoltTraitDeclaration((node as BoltTraitDeclaration));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltImplDeclaration:
|
||||||
|
this.visitBoltImplDeclaration((node as BoltImplDeclaration));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltTypeAliasDeclaration:
|
||||||
|
this.visitBoltTypeAliasDeclaration((node as BoltTypeAliasDeclaration));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltRecordField:
|
||||||
|
this.visitBoltRecordField((node as BoltRecordField));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltRecordDeclaration:
|
||||||
|
this.visitBoltRecordDeclaration((node as BoltRecordDeclaration));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.BoltMacroCall:
|
||||||
|
this.visitBoltMacroCall((node as BoltMacroCall));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSIdentifier:
|
||||||
|
this.visitJSIdentifier((node as JSIdentifier));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSString:
|
||||||
|
this.visitJSString((node as JSString));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSInteger:
|
||||||
|
this.visitJSInteger((node as JSInteger));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSFromKeyword:
|
||||||
|
this.visitJSFromKeyword((node as JSFromKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSReturnKeyword:
|
||||||
|
this.visitJSReturnKeyword((node as JSReturnKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSTryKeyword:
|
||||||
|
this.visitJSTryKeyword((node as JSTryKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSFinallyKeyword:
|
||||||
|
this.visitJSFinallyKeyword((node as JSFinallyKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSCatchKeyword:
|
||||||
|
this.visitJSCatchKeyword((node as JSCatchKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSImportKeyword:
|
||||||
|
this.visitJSImportKeyword((node as JSImportKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSAsKeyword:
|
||||||
|
this.visitJSAsKeyword((node as JSAsKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSConstKeyword:
|
||||||
|
this.visitJSConstKeyword((node as JSConstKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSLetKeyword:
|
||||||
|
this.visitJSLetKeyword((node as JSLetKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSExportKeyword:
|
||||||
|
this.visitJSExportKeyword((node as JSExportKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSFunctionKeyword:
|
||||||
|
this.visitJSFunctionKeyword((node as JSFunctionKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSWhileKeyword:
|
||||||
|
this.visitJSWhileKeyword((node as JSWhileKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSForKeyword:
|
||||||
|
this.visitJSForKeyword((node as JSForKeyword));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSOperator:
|
||||||
|
this.visitJSOperator((node as JSOperator));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSCloseBrace:
|
||||||
|
this.visitJSCloseBrace((node as JSCloseBrace));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSCloseBracket:
|
||||||
|
this.visitJSCloseBracket((node as JSCloseBracket));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSCloseParen:
|
||||||
|
this.visitJSCloseParen((node as JSCloseParen));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSOpenBrace:
|
||||||
|
this.visitJSOpenBrace((node as JSOpenBrace));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSOpenBracket:
|
||||||
|
this.visitJSOpenBracket((node as JSOpenBracket));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSOpenParen:
|
||||||
|
this.visitJSOpenParen((node as JSOpenParen));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSSemi:
|
||||||
|
this.visitJSSemi((node as JSSemi));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSComma:
|
||||||
|
this.visitJSComma((node as JSComma));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSDot:
|
||||||
|
this.visitJSDot((node as JSDot));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSDotDotDot:
|
||||||
|
this.visitJSDotDotDot((node as JSDotDotDot));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSMulOp:
|
||||||
|
this.visitJSMulOp((node as JSMulOp));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSAddOp:
|
||||||
|
this.visitJSAddOp((node as JSAddOp));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSDivOp:
|
||||||
|
this.visitJSDivOp((node as JSDivOp));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSSubOp:
|
||||||
|
this.visitJSSubOp((node as JSSubOp));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSLtOp:
|
||||||
|
this.visitJSLtOp((node as JSLtOp));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSGtOp:
|
||||||
|
this.visitJSGtOp((node as JSGtOp));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSBOrOp:
|
||||||
|
this.visitJSBOrOp((node as JSBOrOp));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSBXorOp:
|
||||||
|
this.visitJSBXorOp((node as JSBXorOp));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSBAndOp:
|
||||||
|
this.visitJSBAndOp((node as JSBAndOp));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSBNotOp:
|
||||||
|
this.visitJSBNotOp((node as JSBNotOp));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSNotOp:
|
||||||
|
this.visitJSNotOp((node as JSNotOp));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSBindPattern:
|
||||||
|
this.visitJSBindPattern((node as JSBindPattern));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSConstantExpression:
|
||||||
|
this.visitJSConstantExpression((node as JSConstantExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSMemberExpression:
|
||||||
|
this.visitJSMemberExpression((node as JSMemberExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSCallExpression:
|
||||||
|
this.visitJSCallExpression((node as JSCallExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSBinaryExpression:
|
||||||
|
this.visitJSBinaryExpression((node as JSBinaryExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSUnaryExpression:
|
||||||
|
this.visitJSUnaryExpression((node as JSUnaryExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSNewExpression:
|
||||||
|
this.visitJSNewExpression((node as JSNewExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSSequenceExpression:
|
||||||
|
this.visitJSSequenceExpression((node as JSSequenceExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSConditionalExpression:
|
||||||
|
this.visitJSConditionalExpression((node as JSConditionalExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSLiteralExpression:
|
||||||
|
this.visitJSLiteralExpression((node as JSLiteralExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSReferenceExpression:
|
||||||
|
this.visitJSReferenceExpression((node as JSReferenceExpression));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSCatchBlock:
|
||||||
|
this.visitJSCatchBlock((node as JSCatchBlock));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSTryCatchStatement:
|
||||||
|
this.visitJSTryCatchStatement((node as JSTryCatchStatement));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSExpressionStatement:
|
||||||
|
this.visitJSExpressionStatement((node as JSExpressionStatement));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSConditionalCase:
|
||||||
|
this.visitJSConditionalCase((node as JSConditionalCase));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSConditionalStatement:
|
||||||
|
this.visitJSConditionalStatement((node as JSConditionalStatement));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSReturnStatement:
|
||||||
|
this.visitJSReturnStatement((node as JSReturnStatement));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSParameter:
|
||||||
|
this.visitJSParameter((node as JSParameter));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSImportStarBinding:
|
||||||
|
this.visitJSImportStarBinding((node as JSImportStarBinding));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSImportAsBinding:
|
||||||
|
this.visitJSImportAsBinding((node as JSImportAsBinding));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSImportDeclaration:
|
||||||
|
this.visitJSImportDeclaration((node as JSImportDeclaration));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSFunctionDeclaration:
|
||||||
|
this.visitJSFunctionDeclaration((node as JSFunctionDeclaration));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSArrowFunctionDeclaration:
|
||||||
|
this.visitJSArrowFunctionDeclaration((node as JSArrowFunctionDeclaration));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSLetDeclaration:
|
||||||
|
this.visitJSLetDeclaration((node as JSLetDeclaration));
|
||||||
|
break;
|
||||||
|
case SyntaxKind.JSSourceFile:
|
||||||
|
this.visitJSSourceFile((node as JSSourceFile));
|
||||||
|
break;
|
||||||
|
} }
|
||||||
|
protected visitSyntax(node: Syntax): void { }
|
||||||
protected visitEndOfFile(node: EndOfFile): void { this.visitBoltToken(node); this.visitJSToken(node); }
|
protected visitEndOfFile(node: EndOfFile): void { this.visitBoltToken(node); this.visitJSToken(node); }
|
||||||
protected visitToken(node: Token): void { }
|
protected visitToken(node: Token): void { this.visitSyntax(node); }
|
||||||
protected visitSourceFile(node: SourceFile): void { }
|
protected visitSourceFile(node: SourceFile): void { this.visitSyntax(node); }
|
||||||
protected visitFunctionBodyElement(node: FunctionBodyElement): void { }
|
protected visitFunctionBodyElement(node: FunctionBodyElement): void { this.visitSyntax(node); }
|
||||||
protected visitReturnStatement(node: ReturnStatement): void { }
|
protected visitReturnStatement(node: ReturnStatement): void { this.visitSyntax(node); }
|
||||||
protected visitBoltSyntax(node: BoltSyntax): void { }
|
protected visitBoltSyntax(node: BoltSyntax): void { this.visitSyntax(node); }
|
||||||
protected visitBoltToken(node: BoltToken): void { this.visitToken(node); this.visitBoltSyntax(node); }
|
protected visitBoltToken(node: BoltToken): void { this.visitToken(node); this.visitBoltSyntax(node); }
|
||||||
protected visitBoltStringLiteral(node: BoltStringLiteral): void { this.visitBoltToken(node); }
|
protected visitBoltStringLiteral(node: BoltStringLiteral): void { this.visitBoltToken(node); }
|
||||||
protected visitBoltIntegerLiteral(node: BoltIntegerLiteral): void { this.visitBoltToken(node); }
|
protected visitBoltIntegerLiteral(node: BoltIntegerLiteral): void { this.visitBoltToken(node); }
|
||||||
|
@ -2614,7 +3076,7 @@ export class Visitor {
|
||||||
protected visitBoltExMark(node: BoltExMark): 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 visitBoltLtSign(node: BoltLtSign): void { this.visitBoltToken(node); this.visitBoltOperatorLike(node); }
|
||||||
protected visitBoltVBar(node: BoltVBar): void { this.visitBoltToken(node); this.visitBoltOperatorLike(node); }
|
protected visitBoltVBar(node: BoltVBar): void { this.visitBoltToken(node); this.visitBoltOperatorLike(node); }
|
||||||
protected visitBoltKeyword(node: BoltKeyword): void { }
|
protected visitBoltKeyword(node: BoltKeyword): void { this.visitSyntax(node); }
|
||||||
protected visitBoltWhereKeyword(node: BoltWhereKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); }
|
protected visitBoltWhereKeyword(node: BoltWhereKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); }
|
||||||
protected visitBoltQuoteKeyword(node: BoltQuoteKeyword): 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 visitBoltFnKeyword(node: BoltFnKeyword): void { this.visitBoltToken(node); this.visitBoltKeyword(node); }
|
||||||
|
@ -2680,7 +3142,7 @@ export class Visitor {
|
||||||
protected visitBoltDeclaration(node: BoltDeclaration): void { this.visitBoltSyntax(node); this.visitBoltSourceElement(node); }
|
protected visitBoltDeclaration(node: BoltDeclaration): void { this.visitBoltSyntax(node); this.visitBoltSourceElement(node); }
|
||||||
protected visitBoltTypeDeclaration(node: BoltTypeDeclaration): 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 visitBoltModule(node: BoltModule): void { this.visitBoltSyntax(node); this.visitBoltSourceElement(node); }
|
||||||
protected visitBoltDeclarationLike(node: BoltDeclarationLike): void { }
|
protected visitBoltDeclarationLike(node: BoltDeclarationLike): void { this.visitSyntax(node); }
|
||||||
protected visitBoltFunctionBodyElement(node: BoltFunctionBodyElement): void { this.visitFunctionBodyElement(node); }
|
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 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 visitBoltVariableDeclaration(node: BoltVariableDeclaration): void { this.visitBoltFunctionBodyElement(node); this.visitBoltDeclaration(node); this.visitBoltDeclarationLike(node); }
|
||||||
|
@ -2690,16 +3152,16 @@ export class Visitor {
|
||||||
protected visitBoltExportSymbol(node: BoltExportSymbol): void { this.visitBoltSyntax(node); }
|
protected visitBoltExportSymbol(node: BoltExportSymbol): void { this.visitBoltSyntax(node); }
|
||||||
protected visitBoltPlainExportSymbol(node: BoltPlainExportSymbol): void { this.visitBoltExportSymbol(node); }
|
protected visitBoltPlainExportSymbol(node: BoltPlainExportSymbol): void { this.visitBoltExportSymbol(node); }
|
||||||
protected visitBoltExportDirective(node: BoltExportDirective): void { this.visitBoltSourceElement(node); }
|
protected visitBoltExportDirective(node: BoltExportDirective): void { this.visitBoltSourceElement(node); }
|
||||||
protected visitBoltTraitOrImplElement(node: BoltTraitOrImplElement): void { }
|
protected visitBoltTraitOrImplElement(node: BoltTraitOrImplElement): void { this.visitSyntax(node); }
|
||||||
protected visitBoltTraitDeclaration(node: BoltTraitDeclaration): void { this.visitBoltDeclarationLike(node); this.visitBoltTypeDeclaration(node); }
|
protected visitBoltTraitDeclaration(node: BoltTraitDeclaration): void { this.visitBoltDeclarationLike(node); this.visitBoltTypeDeclaration(node); }
|
||||||
protected visitBoltImplDeclaration(node: BoltImplDeclaration): void { this.visitBoltTypeDeclaration(node); this.visitBoltDeclarationLike(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 visitBoltTypeAliasDeclaration(node: BoltTypeAliasDeclaration): void { this.visitBoltDeclarationLike(node); this.visitBoltTypeDeclaration(node); this.visitBoltTraitOrImplElement(node); }
|
||||||
protected visitBoltRecordMember(node: BoltRecordMember): void { this.visitBoltSyntax(node); }
|
protected visitBoltRecordMember(node: BoltRecordMember): void { this.visitBoltSyntax(node); }
|
||||||
protected visitBoltRecordField(node: BoltRecordField): void { this.visitBoltRecordMember(node); }
|
protected visitBoltRecordField(node: BoltRecordField): void { this.visitBoltRecordMember(node); }
|
||||||
protected visitBoltRecordDeclaration(node: BoltRecordDeclaration): void { this.visitBoltDeclaration(node); this.visitBoltTypeDeclaration(node); this.visitBoltDeclarationLike(node); }
|
protected visitBoltRecordDeclaration(node: BoltRecordDeclaration): void { this.visitBoltDeclaration(node); this.visitBoltTypeDeclaration(node); this.visitBoltDeclarationLike(node); }
|
||||||
protected visitBoltSourceElement(node: BoltSourceElement): void { }
|
protected visitBoltSourceElement(node: BoltSourceElement): void { this.visitSyntax(node); }
|
||||||
protected visitBoltMacroCall(node: BoltMacroCall): void { this.visitBoltRecordMember(node); this.visitBoltSourceElement(node); this.visitBoltTraitOrImplElement(node); this.visitBoltFunctionBodyElement(node); }
|
protected visitBoltMacroCall(node: BoltMacroCall): void { this.visitBoltRecordMember(node); this.visitBoltSourceElement(node); this.visitBoltTraitOrImplElement(node); this.visitBoltFunctionBodyElement(node); }
|
||||||
protected visitJSSyntax(node: JSSyntax): void { }
|
protected visitJSSyntax(node: JSSyntax): void { this.visitSyntax(node); }
|
||||||
protected visitJSToken(node: JSToken): void { this.visitJSSyntax(node); this.visitToken(node); }
|
protected visitJSToken(node: JSToken): void { this.visitJSSyntax(node); this.visitToken(node); }
|
||||||
protected visitJSIdentifier(node: JSIdentifier): void { this.visitJSToken(node); }
|
protected visitJSIdentifier(node: JSIdentifier): void { this.visitJSToken(node); }
|
||||||
protected visitJSString(node: JSString): void { this.visitJSToken(node); }
|
protected visitJSString(node: JSString): void { this.visitJSToken(node); }
|
||||||
|
@ -2717,7 +3179,7 @@ export class Visitor {
|
||||||
protected visitJSFunctionKeyword(node: JSFunctionKeyword): void { this.visitJSToken(node); }
|
protected visitJSFunctionKeyword(node: JSFunctionKeyword): void { this.visitJSToken(node); }
|
||||||
protected visitJSWhileKeyword(node: JSWhileKeyword): void { this.visitJSToken(node); }
|
protected visitJSWhileKeyword(node: JSWhileKeyword): void { this.visitJSToken(node); }
|
||||||
protected visitJSForKeyword(node: JSForKeyword): void { this.visitJSToken(node); }
|
protected visitJSForKeyword(node: JSForKeyword): void { this.visitJSToken(node); }
|
||||||
protected visitJSOperatorLike(node: JSOperatorLike): void { }
|
protected visitJSOperatorLike(node: JSOperatorLike): void { this.visitSyntax(node); }
|
||||||
protected visitJSOperator(node: JSOperator): void { this.visitJSToken(node); }
|
protected visitJSOperator(node: JSOperator): void { this.visitJSToken(node); }
|
||||||
protected visitJSCloseBrace(node: JSCloseBrace): void { this.visitJSToken(node); }
|
protected visitJSCloseBrace(node: JSCloseBrace): void { this.visitJSToken(node); }
|
||||||
protected visitJSCloseBracket(node: JSCloseBracket): void { this.visitJSToken(node); }
|
protected visitJSCloseBracket(node: JSCloseBracket): void { this.visitJSToken(node); }
|
||||||
|
@ -2753,7 +3215,7 @@ export class Visitor {
|
||||||
protected visitJSConditionalExpression(node: JSConditionalExpression): void { this.visitJSExpression(node); }
|
protected visitJSConditionalExpression(node: JSConditionalExpression): void { this.visitJSExpression(node); }
|
||||||
protected visitJSLiteralExpression(node: JSLiteralExpression): void { this.visitJSExpression(node); }
|
protected visitJSLiteralExpression(node: JSLiteralExpression): void { this.visitJSExpression(node); }
|
||||||
protected visitJSReferenceExpression(node: JSReferenceExpression): void { this.visitJSExpression(node); }
|
protected visitJSReferenceExpression(node: JSReferenceExpression): void { this.visitJSExpression(node); }
|
||||||
protected visitJSSourceElement(node: JSSourceElement): void { }
|
protected visitJSSourceElement(node: JSSourceElement): void { this.visitSyntax(node); }
|
||||||
protected visitJSFunctionBodyElement(node: JSFunctionBodyElement): void { this.visitFunctionBodyElement(node); }
|
protected visitJSFunctionBodyElement(node: JSFunctionBodyElement): void { this.visitFunctionBodyElement(node); }
|
||||||
protected visitJSStatement(node: JSStatement): void { this.visitJSSyntax(node); this.visitJSSourceElement(node); this.visitJSFunctionBodyElement(node); }
|
protected visitJSStatement(node: JSStatement): void { this.visitJSSyntax(node); this.visitJSSourceElement(node); this.visitJSFunctionBodyElement(node); }
|
||||||
protected visitJSCatchBlock(node: JSCatchBlock): void { this.visitJSSyntax(node); }
|
protected visitJSCatchBlock(node: JSCatchBlock): void { this.visitJSSyntax(node); }
|
||||||
|
|
|
@ -1,16 +1,13 @@
|
||||||
import { BoltImportDirective, Syntax, BoltParameter, BoltReferenceExpression, BoltReferenceTypeExpression, BoltSourceFile, BoltCallExpression, BoltReturnKeyword, BoltReturnStatement, SyntaxKind, NodeVisitor, BoltSyntax, BoltIdentifier } from "./ast";
|
import { BoltImportDirective, Syntax, BoltReferenceExpression, BoltReferenceTypeExpression, SyntaxKind, Visitor, BoltSyntax, BoltIdentifier } from "./ast";
|
||||||
import { Program } from "./program";
|
import { Program } from "./program";
|
||||||
import { DiagnosticPrinter, E_FILE_NOT_FOUND, E_TYPE_MISMATCH, E_DECLARATION_NOT_FOUND, E_TYPE_DECLARATION_NOT_FOUND, E_MUST_RETURN_A_VALUE, E_MAY_NOT_RETURN_A_VALUE } from "./diagnostics";
|
import { DiagnosticPrinter, E_FILE_NOT_FOUND, E_DECLARATION_NOT_FOUND, E_TYPE_DECLARATION_NOT_FOUND} from "./diagnostics";
|
||||||
import { convertNodeToSymbolPath } from "./resolver"
|
import { convertNodeToSymbolPath } from "./resolver"
|
||||||
import { inject } from "./ioc";
|
import { inject } from "./ioc";
|
||||||
import { SymbolResolver, ScopeType } from "./resolver";
|
import { SymbolResolver, ScopeType } from "./resolver";
|
||||||
import { assert, every } from "./util";
|
import { assert, every } from "./util";
|
||||||
import { emitNode } from "./emitter";
|
import { emitNode } from "./emitter";
|
||||||
import { TypeChecker, Type, ErrorType } from "./types";
|
|
||||||
import { getReturnStatementsInFunctionBody } from "./common";
|
|
||||||
import { errorMonitor } from "events";
|
|
||||||
|
|
||||||
export class CheckInvalidFilePaths extends NodeVisitor {
|
export class CheckInvalidFilePaths extends Visitor {
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
@inject private program: Program,
|
@inject private program: Program,
|
||||||
|
@ -33,7 +30,7 @@ export class CheckInvalidFilePaths extends NodeVisitor {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export class CheckReferences extends NodeVisitor {
|
export class CheckReferences extends Visitor {
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
@inject private diagnostics: DiagnosticPrinter,
|
@inject private diagnostics: DiagnosticPrinter,
|
||||||
|
@ -132,7 +129,7 @@ export class CheckReferences extends NodeVisitor {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export class CheckTypeAssignments extends NodeVisitor {
|
export class CheckTypeAssignments extends Visitor {
|
||||||
|
|
||||||
constructor(@inject private diagnostics: DiagnosticPrinter) {
|
constructor(@inject private diagnostics: DiagnosticPrinter) {
|
||||||
super();
|
super();
|
||||||
|
|
|
@ -6,7 +6,7 @@ import { sync as globSync } from "glob"
|
||||||
|
|
||||||
import { Program } from "./program"
|
import { Program } from "./program"
|
||||||
import { emitNode } from "./emitter"
|
import { emitNode } from "./emitter"
|
||||||
import { Syntax, BoltSourceFile, SourceFile, NodeVisitor, createBoltConditionalCase, setParents, kindToString } from "./ast"
|
import { Syntax, BoltSourceFile, SourceFile, setParents, kindToString, Visitor } from "./ast"
|
||||||
import { getFileStem, MapLike, assert, FastStringMap, upsearchSync } from "./util"
|
import { getFileStem, MapLike, assert, FastStringMap, upsearchSync } from "./util"
|
||||||
import { verbose, memoize } from "./util"
|
import { verbose, memoize } from "./util"
|
||||||
import { Container, Newable } from "./ioc"
|
import { Container, Newable } from "./ioc"
|
||||||
|
@ -94,7 +94,7 @@ export class Frontend {
|
||||||
container.bindSelf(checker);
|
container.bindSelf(checker);
|
||||||
container.bindSelf(this.diagnostics);
|
container.bindSelf(this.diagnostics);
|
||||||
|
|
||||||
const checks: Newable<NodeVisitor>[] = [
|
const checks: Newable<Visitor>[] = [
|
||||||
CheckInvalidFilePaths,
|
CheckInvalidFilePaths,
|
||||||
CheckReferences,
|
CheckReferences,
|
||||||
CheckTypeAssignments,
|
CheckTypeAssignments,
|
||||||
|
@ -112,7 +112,11 @@ export class Frontend {
|
||||||
for (const pkg of program.getAllPackages()) {
|
for (const pkg of program.getAllPackages()) {
|
||||||
if (!pkg.isDependency) {
|
if (!pkg.isDependency) {
|
||||||
for (const sourceFile of pkg.getAllSourceFiles()) {
|
for (const sourceFile of pkg.getAllSourceFiles()) {
|
||||||
sourceFile.visit(checkers)
|
for (const node of sourceFile.preorder()) {
|
||||||
|
for (const checker of checkers) {
|
||||||
|
checker.visit(node);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
|
|
||||||
import * as path from "path"
|
import * as path from "path"
|
||||||
import { Package, getPackage } from "./common"
|
import { getPackage } from "./common"
|
||||||
|
import { Package } from "./package"
|
||||||
import { SourceFile, Syntax } from "./ast"
|
import { SourceFile, Syntax } from "./ast"
|
||||||
import { FastStringMap, assert, isInsideDirectory, stripExtensions } from "./util";
|
import { FastStringMap, assert, isInsideDirectory, stripExtensions } from "./util";
|
||||||
|
|
||||||
|
|
|
@ -103,6 +103,8 @@ function areTypesLexicallyLessThan(a: Type, b: Type): boolean {
|
||||||
return a.source.id < b.source.id;
|
return a.source.id < b.source.id;
|
||||||
}
|
}
|
||||||
if (a.kind === TypeKind.RecordType && b.kind === TypeKind.RecordType) {
|
if (a.kind === TypeKind.RecordType && b.kind === TypeKind.RecordType) {
|
||||||
|
assert(a.source.id !== undefined)
|
||||||
|
assert(b.source.id !== undefined)
|
||||||
return a.source.id < b.source.id;
|
return a.source.id < b.source.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -558,8 +560,8 @@ export class TypeChecker {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
narrowedType.node = node;
|
narrowedType.node = node;
|
||||||
if (node.type.solved !== narrowedType) {
|
if (node.type!.solved !== narrowedType) {
|
||||||
node.type.solved.nextType = narrowedType;
|
node.type!.solved.nextType = narrowedType;
|
||||||
}
|
}
|
||||||
for (const dependantNode of this.getParentsThatMightNeedUpdate(node)) {
|
for (const dependantNode of this.getParentsThatMightNeedUpdate(node)) {
|
||||||
nextQueue.add(dependantNode);
|
nextQueue.add(dependantNode);
|
||||||
|
@ -810,7 +812,7 @@ export class TypeChecker {
|
||||||
memberTypes.push(member.type!.solved as RecordFieldType);
|
memberTypes.push(member.type!.solved as RecordFieldType);
|
||||||
this.markNodeAsRequiringUpdate(member, node);
|
this.markNodeAsRequiringUpdate(member, node);
|
||||||
}
|
}
|
||||||
return new RecordType(node.name.type, memberTypes);
|
return new RecordType(node.name, memberTypes);
|
||||||
}
|
}
|
||||||
|
|
||||||
case SyntaxKind.BoltRecordFieldPattern:
|
case SyntaxKind.BoltRecordFieldPattern:
|
||||||
|
|
Loading…
Reference in a new issue