Fix all TypeScript type errors

This commit is contained in:
Sam Vervaeck 2022-09-15 16:56:02 +02:00
parent 9d28d47d6f
commit fe4cc61819
2 changed files with 12 additions and 11 deletions

View file

@ -1,10 +1,12 @@
import { import {
EnumDeclaration, EnumDeclaration,
EnumDeclarationStructElement,
Expression, Expression,
LetDeclaration, LetDeclaration,
Pattern, Pattern,
Scope, Scope,
SourceFile, SourceFile,
StructDeclaration,
Symkind, Symkind,
Syntax, Syntax,
SyntaxKind, SyntaxKind,
@ -21,15 +23,10 @@ import {
KindMismatchDiagnostic, KindMismatchDiagnostic,
} from "./diagnostics"; } from "./diagnostics";
import { assert, isEmpty, MultiMap } from "./util"; import { assert, isEmpty, MultiMap } from "./util";
import { LabeledDirectedHashGraph, LabeledGraph, strongconnect } from "yagl"
import { Analyser } from "./analysis"; import { Analyser } from "./analysis";
const MAX_TYPE_ERROR_COUNT = 5; const MAX_TYPE_ERROR_COUNT = 5;
type NodeWithBindings = SourceFile | LetDeclaration;
type ReferenceGraph = LabeledGraph<NodeWithBindings, boolean>;
export enum TypeKind { export enum TypeKind {
Arrow, Arrow,
Var, Var,
@ -280,7 +277,7 @@ export class TRecord extends TypeBase {
public readonly kind = TypeKind.Record; public readonly kind = TypeKind.Record;
public constructor( public constructor(
public decl: Syntax, public decl: StructDeclaration | EnumDeclarationStructElement,
public kindArgs: TVar[], public kindArgs: TVar[],
public fields: Map<string, Type>, public fields: Map<string, Type>,
public node: Syntax | null = null, public node: Syntax | null = null,
@ -380,7 +377,7 @@ export class TVariant extends TypeBase {
public readonly kind = TypeKind.Variant; public readonly kind = TypeKind.Variant;
public constructor( public constructor(
public decl: Syntax, public decl: EnumDeclaration,
public kindArgs: Type[], public kindArgs: Type[],
public elementTypes: Type[], public elementTypes: Type[],
public node: Syntax | null = null, public node: Syntax | null = null,
@ -710,7 +707,7 @@ class Forall extends SchemeBase {
} }
type Scheme export type Scheme
= Forall = Forall
export class TypeEnv { export class TypeEnv {
@ -1298,7 +1295,7 @@ export class Checker {
return this.createTypeVar(); return this.createTypeVar();
} }
assert(decl.kind === SyntaxKind.StructDeclaration || decl.kind === SyntaxKind.EnumDeclarationStructElement); assert(decl.kind === SyntaxKind.StructDeclaration || decl.kind === SyntaxKind.EnumDeclarationStructElement);
const scheme = decl.scheme; const scheme = decl.scheme!;
const declType = this.instantiate(scheme, node); const declType = this.instantiate(scheme, node);
const kindArgs = []; const kindArgs = [];
const varExps = decl.kind === SyntaxKind.StructDeclaration const varExps = decl.kind === SyntaxKind.StructDeclaration
@ -1435,7 +1432,7 @@ export class Checker {
} }
public inferBindings(pattern: Pattern, typeVars: TVar[], constraints: Constraint[]): Type { public inferBindings(pattern: Pattern, typeVars: Iterable<TVar>, constraints: Iterable<Constraint>): Type {
switch (pattern.kind) { switch (pattern.kind) {

View file

@ -1,5 +1,5 @@
import { JSONObject, JSONValue, MultiMap } from "./util"; import { JSONObject, JSONValue, MultiMap } from "./util";
import type { InferContext, Type, TypeEnv } from "./checker" import type { InferContext, Scheme, Type, TypeEnv } from "./checker"
export type TextSpan = [number, number]; export type TextSpan = [number, number];
@ -1713,6 +1713,8 @@ export class EnumDeclarationStructElement extends SyntaxBase {
public readonly kind = SyntaxKind.EnumDeclarationStructElement; public readonly kind = SyntaxKind.EnumDeclarationStructElement;
public scheme?: Scheme;
public constructor( public constructor(
public name: IdentifierAlt, public name: IdentifierAlt,
public blockStart: BlockStart, public blockStart: BlockStart,
@ -1821,6 +1823,7 @@ export class StructDeclaration extends SyntaxBase {
public readonly kind = SyntaxKind.StructDeclaration; public readonly kind = SyntaxKind.StructDeclaration;
public typeEnv?: TypeEnv; public typeEnv?: TypeEnv;
public scheme?: Scheme;
public constructor( public constructor(
public pubKeyword: PubKeyword | null, public pubKeyword: PubKeyword | null,
@ -1948,6 +1951,7 @@ export class TypeDeclaration extends SyntaxBase {
public readonly kind = SyntaxKind.TypeDeclaration; public readonly kind = SyntaxKind.TypeDeclaration;
public scheme?: Scheme;
public typeEnv?: TypeEnv; public typeEnv?: TypeEnv;
public constructor( public constructor(