Remove (de)serialization logic

This commit is contained in:
Sam Vervaeck 2023-06-26 19:02:23 +02:00
parent 650cecb707
commit 8d2f3c4977
Signed by: samvv
SSH key fingerprint: SHA256:dIg0ywU1OP+ZYifrYxy8c5esO72cIKB+4/9wkZj1VaY
4 changed files with 3 additions and 164 deletions

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;