Remove (de)serialization logic
This commit is contained in:
parent
650cecb707
commit
8d2f3c4977
4 changed files with 3 additions and 164 deletions
|
@ -2,7 +2,7 @@
|
|||
import type stream from "stream";
|
||||
import path from "path"
|
||||
|
||||
import { assert, deserializable, implementationLimitation, IndentWriter, JSONObject, JSONValue, nonenumerable, unreachable } from "./util";
|
||||
import { assert, implementationLimitation, IndentWriter, JSONObject, JSONValue, nonenumerable, unreachable } from "./util";
|
||||
import { isNodeWithScope, Scope } from "./scope"
|
||||
import type { InferContext, Kind, KindEnv, Scheme, TypeEnv } from "./checker"
|
||||
import type { Type } from "./types";
|
||||
|
@ -14,7 +14,6 @@ export type Value
|
|||
= bigint
|
||||
| string
|
||||
|
||||
@deserializable()
|
||||
export class TextPosition {
|
||||
|
||||
public constructor(
|
||||
|
@ -47,7 +46,6 @@ export class TextPosition {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TextRange {
|
||||
|
||||
constructor(
|
||||
|
@ -66,7 +64,6 @@ export class TextRange {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TextFile {
|
||||
|
||||
public constructor(
|
||||
|
@ -519,7 +516,6 @@ abstract class VirtualTokenBase extends TokenBase {
|
|||
}
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class EndOfFile extends VirtualTokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.EndOfFile;
|
||||
|
@ -530,7 +526,6 @@ export class EndOfFile extends VirtualTokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class BlockEnd extends VirtualTokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.BlockEnd;
|
||||
|
@ -541,7 +536,6 @@ export class BlockEnd extends VirtualTokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class BlockStart extends VirtualTokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.BlockStart;
|
||||
|
@ -552,7 +546,6 @@ export class BlockStart extends VirtualTokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class LineFoldEnd extends VirtualTokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.LineFoldEnd;
|
||||
|
@ -563,7 +556,6 @@ export class LineFoldEnd extends VirtualTokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class Integer extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.Integer;
|
||||
|
@ -605,7 +597,6 @@ export class Integer extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class StringLiteral extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.StringLiteral;
|
||||
|
@ -646,7 +637,6 @@ export class StringLiteral extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class IdentifierAlt extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.IdentifierAlt;
|
||||
|
@ -667,7 +657,6 @@ export class IdentifierAlt extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class Identifier extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.Identifier;
|
||||
|
@ -688,7 +677,6 @@ export class Identifier extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class CustomOperator extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.CustomOperator;
|
||||
|
@ -718,7 +706,6 @@ export function isExprOperator(node: Syntax): node is ExprOperator {
|
|||
|| node.kind === SyntaxKind.VBar
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class Assignment extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.Assignment;
|
||||
|
@ -739,7 +726,6 @@ export class Assignment extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class LParen extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.LParen;
|
||||
|
@ -754,7 +740,6 @@ export class LParen extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class RParen extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.RParen;
|
||||
|
@ -769,7 +754,6 @@ export class RParen extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class LBrace extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.LBrace;
|
||||
|
@ -784,7 +768,6 @@ export class LBrace extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class RBrace extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.RBrace;
|
||||
|
@ -799,7 +782,6 @@ export class RBrace extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class LBracket extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.LBracket;
|
||||
|
@ -814,7 +796,6 @@ export class LBracket extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class RBracket extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.RBracket;
|
||||
|
@ -829,7 +810,6 @@ export class RBracket extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class Dot extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.Dot;
|
||||
|
@ -844,7 +824,6 @@ export class Dot extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class Comma extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.Comma;
|
||||
|
@ -859,7 +838,6 @@ export class Comma extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class DotDot extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.DotDot;
|
||||
|
@ -874,7 +852,6 @@ export class DotDot extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class Colon extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.Colon;
|
||||
|
@ -889,7 +866,6 @@ export class Colon extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class Equals extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.Equals;
|
||||
|
@ -904,7 +880,6 @@ export class Equals extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class Backslash extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.Equals;
|
||||
|
@ -919,7 +894,6 @@ export class Backslash extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class IfKeyword extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.IfKeyword;
|
||||
|
@ -934,7 +908,6 @@ export class IfKeyword extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class ElseKeyword extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ElseKeyword;
|
||||
|
@ -949,7 +922,6 @@ export class ElseKeyword extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class ElifKeyword extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ElifKeyword;
|
||||
|
@ -964,7 +936,6 @@ export class ElifKeyword extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class StructKeyword extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.StructKeyword;
|
||||
|
@ -979,7 +950,6 @@ export class StructKeyword extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class EnumKeyword extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.EnumKeyword;
|
||||
|
@ -994,7 +964,6 @@ export class EnumKeyword extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class ReturnKeyword extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ReturnKeyword;
|
||||
|
@ -1009,7 +978,6 @@ export class ReturnKeyword extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class MatchKeyword extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.MatchKeyword;
|
||||
|
@ -1024,7 +992,6 @@ export class MatchKeyword extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class ForeignKeyword extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ForeignKeyword;
|
||||
|
@ -1039,7 +1006,6 @@ export class ForeignKeyword extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class ModKeyword extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ModKeyword;
|
||||
|
@ -1054,7 +1020,6 @@ export class ModKeyword extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class MutKeyword extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.MutKeyword;
|
||||
|
@ -1069,7 +1034,6 @@ export class MutKeyword extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class ImportKeyword extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ImportKeyword;
|
||||
|
@ -1084,7 +1048,6 @@ export class ImportKeyword extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class ClassKeyword extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ClassKeyword;
|
||||
|
@ -1099,7 +1062,6 @@ export class ClassKeyword extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class InstanceKeyword extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.InstanceKeyword;
|
||||
|
@ -1115,7 +1077,6 @@ export class InstanceKeyword extends TokenBase {
|
|||
}
|
||||
|
||||
|
||||
@deserializable()
|
||||
export class TypeKeyword extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.TypeKeyword;
|
||||
|
@ -1130,7 +1091,6 @@ export class TypeKeyword extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class PubKeyword extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.PubKeyword;
|
||||
|
@ -1145,7 +1105,6 @@ export class PubKeyword extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class LetKeyword extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.LetKeyword;
|
||||
|
@ -1160,7 +1119,6 @@ export class LetKeyword extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class RArrow extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.RArrow;
|
||||
|
@ -1175,7 +1133,6 @@ export class RArrow extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class RArrowAlt extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.RArrowAlt;
|
||||
|
@ -1190,7 +1147,6 @@ export class RArrowAlt extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class VBar extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.VBar;
|
||||
|
@ -1205,7 +1161,6 @@ export class VBar extends TokenBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class ForallKeyword extends TokenBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ForallKeyword;
|
||||
|
@ -1267,7 +1222,6 @@ export type Token
|
|||
export type TokenKind
|
||||
= Token['kind']
|
||||
|
||||
@deserializable()
|
||||
export class ForallTypeExpression extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ForallTypeExpression;
|
||||
|
@ -1300,7 +1254,6 @@ export class ForallTypeExpression extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TypeExpressionWithConstraints extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.TypeExpressionWithConstraints;
|
||||
|
@ -1334,7 +1287,6 @@ export class TypeExpressionWithConstraints extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class ArrowTypeExpression extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ArrowTypeExpression;
|
||||
|
@ -1366,7 +1318,6 @@ export class ArrowTypeExpression extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TupleTypeExpression extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.TupleTypeExpression;
|
||||
|
@ -1397,7 +1348,6 @@ export class TupleTypeExpression extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class ReferenceTypeExpression extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ReferenceTypeExpression;
|
||||
|
@ -1429,7 +1379,6 @@ export class ReferenceTypeExpression extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class AppTypeExpression extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.AppTypeExpression;
|
||||
|
@ -1461,7 +1410,6 @@ export class AppTypeExpression extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class VarTypeExpression extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.VarTypeExpression;
|
||||
|
@ -1486,7 +1434,6 @@ export class VarTypeExpression extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class NestedTypeExpression extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.NestedTypeExpression;
|
||||
|
@ -1527,7 +1474,6 @@ export type TypeExpression
|
|||
| ForallTypeExpression
|
||||
| TypeExpressionWithConstraints
|
||||
|
||||
@deserializable()
|
||||
export class NamedPattern extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.NamedPattern;
|
||||
|
@ -1556,7 +1502,6 @@ export class NamedPattern extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TuplePattern extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.TuplePattern;
|
||||
|
@ -1587,7 +1532,6 @@ export class TuplePattern extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class NamedTuplePattern extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.NamedTuplePattern;
|
||||
|
@ -1619,7 +1563,6 @@ export class NamedTuplePattern extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class StructPatternField extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.StructPatternField;
|
||||
|
@ -1650,7 +1593,6 @@ export class StructPatternField extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class VariadicStructPatternElement extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.VariadicStructPatternElement;
|
||||
|
@ -1682,7 +1624,6 @@ export class VariadicStructPatternElement extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class PunnedStructPatternField extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.PunnedStructPatternField;
|
||||
|
@ -1712,7 +1653,6 @@ export type StructPatternElement
|
|||
| PunnedStructPatternField
|
||||
| StructPatternField
|
||||
|
||||
@deserializable()
|
||||
export class StructPattern extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.StructPattern;
|
||||
|
@ -1743,7 +1683,6 @@ export class StructPattern extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class NestedPattern extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.NestedPattern;
|
||||
|
@ -1774,7 +1713,6 @@ export class NestedPattern extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class DisjunctivePattern extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.DisjunctivePattern;
|
||||
|
@ -1806,7 +1744,6 @@ export class DisjunctivePattern extends SyntaxBase {
|
|||
}
|
||||
|
||||
|
||||
@deserializable()
|
||||
export class LiteralPattern extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.LiteralPattern;
|
||||
|
@ -1840,7 +1777,6 @@ export type Pattern
|
|||
| DisjunctivePattern
|
||||
| LiteralPattern
|
||||
|
||||
@deserializable()
|
||||
export class TupleExpression extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.TupleExpression;
|
||||
|
@ -1871,7 +1807,6 @@ export class TupleExpression extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class NestedExpression extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.NestedExpression;
|
||||
|
@ -1902,7 +1837,6 @@ export class NestedExpression extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class ConstantExpression extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ConstantExpression;
|
||||
|
@ -1927,7 +1861,6 @@ export class ConstantExpression extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class CallExpression extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.CallExpression;
|
||||
|
@ -1959,7 +1892,6 @@ export class CallExpression extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class StructExpressionField extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.StructExpressionField;
|
||||
|
@ -1990,7 +1922,6 @@ export class StructExpressionField extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class PunnedStructExpressionField extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.PunnedStructExpressionField;
|
||||
|
@ -2019,7 +1950,6 @@ export type StructExpressionElement
|
|||
= StructExpressionField
|
||||
| PunnedStructExpressionField;
|
||||
|
||||
@deserializable()
|
||||
export class StructExpression extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.StructExpression;
|
||||
|
@ -2050,7 +1980,6 @@ export class StructExpression extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class MatchArm extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.MatchArm;
|
||||
|
@ -2081,7 +2010,6 @@ export class MatchArm extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class FunctionExpression extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.FunctionExpression;
|
||||
|
@ -2113,7 +2041,6 @@ export class FunctionExpression extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class MatchExpression extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.MatchExpression;
|
||||
|
@ -2150,7 +2077,6 @@ export class MatchExpression extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class ReferenceExpression extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ReferenceExpression;
|
||||
|
@ -2182,7 +2108,6 @@ export class ReferenceExpression extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class MemberExpression extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.MemberExpression;
|
||||
|
@ -2211,7 +2136,6 @@ export class MemberExpression extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class PrefixExpression extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.PrefixExpression;
|
||||
|
@ -2240,7 +2164,6 @@ export class PrefixExpression extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class PostfixExpression extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.PostfixExpression;
|
||||
|
@ -2269,7 +2192,6 @@ export class PostfixExpression extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class InfixExpression extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.InfixExpression;
|
||||
|
@ -2314,7 +2236,6 @@ export type Expression
|
|||
| PostfixExpression
|
||||
| FunctionExpression
|
||||
|
||||
@deserializable()
|
||||
export class IfStatementCase extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.IfStatementCase;
|
||||
|
@ -2350,7 +2271,6 @@ export class IfStatementCase extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class IfStatement extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.IfStatement;
|
||||
|
@ -2377,7 +2297,6 @@ export class IfStatement extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class ReturnStatement extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ReturnStatement;
|
||||
|
@ -2409,7 +2328,6 @@ export class ReturnStatement extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class AssignStatement extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.AssignStatement;
|
||||
|
@ -2440,7 +2358,6 @@ export class AssignStatement extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class ExpressionStatement extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ExpressionStatement;
|
||||
|
@ -2471,7 +2388,6 @@ export type Statement
|
|||
| IfStatement
|
||||
| AssignStatement
|
||||
|
||||
@deserializable()
|
||||
export class Param extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.Param;
|
||||
|
@ -2498,7 +2414,6 @@ export class Param extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class EnumDeclarationStructElement extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.EnumDeclarationStructElement;
|
||||
|
@ -2534,7 +2449,6 @@ export class EnumDeclarationStructElement extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class EnumDeclarationTupleElement extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.EnumDeclarationTupleElement;
|
||||
|
@ -2570,7 +2484,6 @@ export type EnumDeclarationElement
|
|||
= EnumDeclarationStructElement
|
||||
| EnumDeclarationTupleElement
|
||||
|
||||
@deserializable()
|
||||
export class EnumDeclaration extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.EnumDeclaration;
|
||||
|
@ -2614,7 +2527,6 @@ export class EnumDeclaration extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class StructDeclarationField extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.StructDeclarationField;
|
||||
|
@ -2645,7 +2557,6 @@ export class StructDeclarationField extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class StructDeclaration extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.StructDeclaration;
|
||||
|
@ -2689,7 +2600,6 @@ export class StructDeclaration extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TypeAssert extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.TypeAssert;
|
||||
|
@ -2722,7 +2632,6 @@ export type Body
|
|||
= ExprBody
|
||||
| BlockBody
|
||||
|
||||
@deserializable()
|
||||
export class ExprBody extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ExprBody;
|
||||
|
@ -2755,7 +2664,6 @@ export type LetBodyElement
|
|||
= LetDeclaration
|
||||
| Statement
|
||||
|
||||
@deserializable()
|
||||
export class BlockBody extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.BlockBody;
|
||||
|
@ -2787,7 +2695,6 @@ export class BlockBody extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class WrappedOperator extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.WrappedOperator;
|
||||
|
@ -2818,7 +2725,6 @@ export class WrappedOperator extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TypeDeclaration extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.TypeDeclaration;
|
||||
|
@ -2861,7 +2767,6 @@ export class TypeDeclaration extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class LetDeclaration extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.LetDeclaration;
|
||||
|
@ -2940,7 +2845,6 @@ export class LetDeclaration extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class ImportDeclaration extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ImportDeclaration;
|
||||
|
@ -2976,7 +2880,6 @@ export type Declaration
|
|||
| EnumDeclaration
|
||||
| TypeDeclaration
|
||||
|
||||
@deserializable()
|
||||
export class Initializer extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.Initializer;
|
||||
|
@ -3005,7 +2908,6 @@ export class Initializer extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class ClassConstraint extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ClassConstraint;
|
||||
|
@ -3034,7 +2936,6 @@ export class ClassConstraint extends SyntaxBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class ClassConstraintClause extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ClassConstraintClause;
|
||||
|
@ -3070,7 +2971,6 @@ export type ClassDeclarationElement
|
|||
= LetDeclaration
|
||||
| TypeDeclaration
|
||||
|
||||
@deserializable()
|
||||
export class ClassDeclaration extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ClassDeclaration;
|
||||
|
@ -3175,7 +3075,6 @@ export type InstanceDeclarationElement
|
|||
= LetDeclaration
|
||||
| TypeDeclaration
|
||||
|
||||
@deserializable()
|
||||
export class InstanceDeclaration extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.InstanceDeclaration;
|
||||
|
@ -3223,7 +3122,6 @@ export class InstanceDeclaration extends SyntaxBase {
|
|||
}
|
||||
|
||||
}
|
||||
@deserializable()
|
||||
export class ModuleDeclaration extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.ModuleDeclaration;
|
||||
|
@ -3276,7 +3174,6 @@ export type SourceFileElement
|
|||
| InstanceDeclaration
|
||||
| ModuleDeclaration
|
||||
|
||||
@deserializable()
|
||||
export class SourceFile extends SyntaxBase {
|
||||
|
||||
public readonly kind = SyntaxKind.SourceFile;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
import { Kind, KindType } from "./checker";
|
||||
import { type Type, TypeKind } from "./types"
|
||||
import { ClassConstraint, ClassDeclaration, IdentifierAlt, InstanceDeclaration, Syntax, SyntaxKind, TextFile, TextPosition, TextRange, Token } from "./cst";
|
||||
import { assertNever, countDigits, deserializable, IndentWriter } from "./util";
|
||||
import { assertNever, countDigits, IndentWriter } from "./util";
|
||||
|
||||
const ANSI_RESET = "\u001b[0m"
|
||||
const ANSI_BOLD = "\u001b[1m"
|
||||
|
@ -57,7 +57,6 @@ abstract class DiagnosticBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class UnexpectedCharDiagnostic extends DiagnosticBase {
|
||||
|
||||
public readonly kind = DiagnosticKind.UnexpectedChar;
|
||||
|
@ -75,7 +74,6 @@ export class UnexpectedCharDiagnostic extends DiagnosticBase {
|
|||
}
|
||||
|
||||
|
||||
@deserializable()
|
||||
export class UnexpectedTokenDiagnostic extends DiagnosticBase {
|
||||
|
||||
public readonly kind = DiagnosticKind.UnexpectedToken;
|
||||
|
@ -92,7 +90,6 @@ export class UnexpectedTokenDiagnostic extends DiagnosticBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TypeclassDeclaredTwiceDiagnostic extends DiagnosticBase {
|
||||
|
||||
public readonly kind = DiagnosticKind.TypeclassDecaredTwice;
|
||||
|
@ -108,7 +105,6 @@ export class TypeclassDeclaredTwiceDiagnostic extends DiagnosticBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TypeclassNotFoundDiagnostic extends DiagnosticBase {
|
||||
|
||||
public readonly kind = DiagnosticKind.TypeclassNotFound;
|
||||
|
@ -125,7 +121,6 @@ export class TypeclassNotFoundDiagnostic extends DiagnosticBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TypeclassNotImplementedDiagnostic extends DiagnosticBase {
|
||||
|
||||
public readonly kind = DiagnosticKind.TypeclassNotImplemented;
|
||||
|
@ -142,7 +137,6 @@ export class TypeclassNotImplementedDiagnostic extends DiagnosticBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class BindingNotFoundDiagnostic extends DiagnosticBase {
|
||||
|
||||
public readonly kind = DiagnosticKind.BindingNotFound;
|
||||
|
@ -159,7 +153,6 @@ export class BindingNotFoundDiagnostic extends DiagnosticBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TypeMismatchDiagnostic extends DiagnosticBase {
|
||||
|
||||
public readonly kind = DiagnosticKind.TypeMismatch;
|
||||
|
@ -177,7 +170,6 @@ export class TypeMismatchDiagnostic extends DiagnosticBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class FieldNotFoundDiagnostic extends DiagnosticBase {
|
||||
|
||||
public readonly kind = DiagnosticKind.FieldNotFound;
|
||||
|
@ -195,7 +187,6 @@ export class FieldNotFoundDiagnostic extends DiagnosticBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class KindMismatchDiagnostic extends DiagnosticBase {
|
||||
|
||||
public readonly kind = DiagnosticKind.KindMismatch;
|
||||
|
@ -212,7 +203,6 @@ export class KindMismatchDiagnostic extends DiagnosticBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class ModuleNotFoundDiagnostic extends DiagnosticBase {
|
||||
|
||||
public readonly kind = DiagnosticKind.ModuleNotFound;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { InspectOptions } from "util";
|
||||
import { ClassDeclaration, EnumDeclaration, StructDeclaration, Syntax } from "./cst";
|
||||
import { deserializable, ignore, InspectFn, toStringTag } from "./util";
|
||||
import { InspectFn, toStringTag } from "./util";
|
||||
|
||||
export enum TypeKind {
|
||||
Arrow,
|
||||
|
@ -18,10 +18,8 @@ export enum TypeKind {
|
|||
|
||||
export abstract class TypeBase {
|
||||
|
||||
@ignore
|
||||
public abstract readonly kind: TypeKind;
|
||||
|
||||
@ignore
|
||||
public next: Type = this as any;
|
||||
|
||||
public abstract node: Syntax | null;
|
||||
|
@ -93,13 +91,10 @@ export class TRigidVar extends TypeBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TUniVar extends TypeBase {
|
||||
|
||||
public readonly kind = TypeKind.UniVar;
|
||||
|
||||
@ignore
|
||||
|
||||
public context = new Set<ClassDeclaration>();
|
||||
|
||||
public constructor(
|
||||
|
@ -157,7 +152,6 @@ export class TNil extends TypeBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TAbsent extends TypeBase {
|
||||
|
||||
public readonly kind = TypeKind.Absent;
|
||||
|
@ -186,7 +180,6 @@ export class TAbsent extends TypeBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TPresent extends TypeBase {
|
||||
|
||||
public readonly kind = TypeKind.Present;
|
||||
|
@ -216,7 +209,6 @@ export class TPresent extends TypeBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TArrow extends TypeBase {
|
||||
|
||||
public readonly kind = TypeKind.Arrow;
|
||||
|
@ -269,7 +261,6 @@ export class TArrow extends TypeBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TCon extends TypeBase {
|
||||
|
||||
public readonly kind = TypeKind.Con;
|
||||
|
@ -317,7 +308,6 @@ export class TCon extends TypeBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TTuple extends TypeBase {
|
||||
|
||||
public readonly kind = TypeKind.Tuple;
|
||||
|
@ -361,7 +351,6 @@ export class TTuple extends TypeBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TField extends TypeBase {
|
||||
|
||||
public readonly kind = TypeKind.Field;
|
||||
|
@ -425,7 +414,6 @@ export class TField extends TypeBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TApp extends TypeBase {
|
||||
|
||||
public readonly kind = TypeKind.App;
|
||||
|
@ -477,7 +465,6 @@ export class TApp extends TypeBase {
|
|||
|
||||
}
|
||||
|
||||
@deserializable()
|
||||
export class TNominal extends TypeBase {
|
||||
|
||||
public readonly kind = TypeKind.Nominal;
|
||||
|
|
|
@ -242,41 +242,6 @@ export class MultiMap<K, V> {
|
|||
|
||||
}
|
||||
|
||||
export const classes = new Map<string, any>;
|
||||
|
||||
export function deserializable() {
|
||||
return (constructor: Function) => {
|
||||
if (classes.has(constructor.name)) {
|
||||
throw new Error(`A class with the name '${constructor.name}' has already been registered.`);
|
||||
}
|
||||
classes.set(constructor.name, constructor);
|
||||
}
|
||||
}
|
||||
|
||||
export function getIgnoredFields(target: any): Set<string> {
|
||||
const fields = Reflect.getOwnMetadata('ignoredFields', target) ?? new Set;
|
||||
for (;;) {
|
||||
target = Object.getPrototypeOf(target);
|
||||
if (target === null) {
|
||||
break;
|
||||
}
|
||||
const otherFields = Reflect.getOwnMetadata('ignoredFields', target);
|
||||
if (otherFields !== undefined) {
|
||||
for (const field of otherFields) {
|
||||
fields.add(field);
|
||||
}
|
||||
}
|
||||
}
|
||||
return fields;
|
||||
}
|
||||
|
||||
export function ignore(target: any, propertyKey: string) {
|
||||
if (!Reflect.hasOwnMetadata('ignoredFields', target.constructor)) {
|
||||
Reflect.defineMetadata('ignoredFields', new Set([ propertyKey ]), target.constructor);
|
||||
}
|
||||
Reflect.getOwnMetadata('ignoredFields', target.constructor).add(propertyKey);
|
||||
}
|
||||
|
||||
export const nonenumerable: {
|
||||
(target: any, name: string): void;
|
||||
(target: any, name: string, desc: PropertyDescriptor): PropertyDescriptor;
|
||||
|
|
Loading…
Reference in a new issue