From 8d2f3c4977d6991fbad0c86fe472a4c80975080c Mon Sep 17 00:00:00 2001 From: Sam Vervaeck Date: Mon, 26 Jun 2023 19:02:23 +0200 Subject: [PATCH] Remove (de)serialization logic --- compiler/src/cst.ts | 105 +----------------------------------- compiler/src/diagnostics.ts | 12 +---- compiler/src/types.ts | 15 +----- compiler/src/util.ts | 35 ------------ 4 files changed, 3 insertions(+), 164 deletions(-) diff --git a/compiler/src/cst.ts b/compiler/src/cst.ts index a5db2b93c..079b79d41 100644 --- a/compiler/src/cst.ts +++ b/compiler/src/cst.ts @@ -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; diff --git a/compiler/src/diagnostics.ts b/compiler/src/diagnostics.ts index 124ffe8c1..08b29fde9 100644 --- a/compiler/src/diagnostics.ts +++ b/compiler/src/diagnostics.ts @@ -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; diff --git a/compiler/src/types.ts b/compiler/src/types.ts index 0cfd1b372..7da7f5031 100644 --- a/compiler/src/types.ts +++ b/compiler/src/types.ts @@ -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(); 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; diff --git a/compiler/src/util.ts b/compiler/src/util.ts index e89115763..027ede410 100644 --- a/compiler/src/util.ts +++ b/compiler/src/util.ts @@ -242,41 +242,6 @@ export class MultiMap { } -export const classes = new Map; - -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 { - 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;