@shd101wyy/yo 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import type { EvaluatorContext } from "./evaluator/context";
2
2
  import type { Token } from "./token";
3
- import type { SomeType, TraitType, Type } from "./types/definitions";
3
+ import type { SomeType, TraitType, Type, TypeApplicationType } from "./types/definitions";
4
4
  import { type Value } from "./value";
5
5
  export interface Variable {
6
6
  id: string;
@@ -54,6 +54,16 @@ export declare function getWhereClauseConstraintsForSomeType(env: Environment, s
54
54
  requiredTraits: TraitType[];
55
55
  negativeTraits: TraitType[];
56
56
  } | undefined;
57
+ export declare function addWhereClauseConstraintForTypeApplication({ env, typeApp, traitType, isNegated, }: {
58
+ env: Environment;
59
+ typeApp: TypeApplicationType;
60
+ traitType: TraitType;
61
+ isNegated: boolean;
62
+ }): Environment;
63
+ export declare function getWhereClauseConstraintsForTypeApplication(env: Environment, typeApp: TypeApplicationType): {
64
+ requiredTraits: TraitType[];
65
+ negativeTraits: TraitType[];
66
+ } | undefined;
57
67
  export declare function setEnvContainingPrelude(env: Environment): void;
58
68
  export declare function clearEnvContainingPrelude(): void;
59
69
  export declare function createEnvContainingPrelude(): Environment;
@@ -1,4 +1,4 @@
1
- import type { Environment } from "../../env";
1
+ import { type Environment } from "../../env";
2
2
  import { type FnCallExpr } from "../../expr";
3
3
  import type { EvaluatorContext } from "../context";
4
4
  export declare function evaluateEnumType({ expr, env, context, }: {
@@ -1,6 +1,11 @@
1
1
  import { type Environment } from "../../env";
2
+ import { type Token } from "../../token";
2
3
  import type { Type } from "../../types/definitions";
3
4
  export declare function canAssignTypeHierarchy(expected: Type, given: Type): boolean;
5
+ export interface SynthesizeTypesOptions {
6
+ setResolvedConcreteType?: boolean;
7
+ token?: Token;
8
+ }
4
9
  export declare function synthesizeTypes(expected: {
5
10
  type: Type;
6
11
  env: Environment;
@@ -10,7 +15,7 @@ export declare function synthesizeTypes(expected: {
10
15
  }, checkedTypePairs?: {
11
16
  expected: Type;
12
17
  given: Type;
13
- }[]): {
18
+ }[], options?: SynthesizeTypesOptions): {
14
19
  expectedEnv: Environment;
15
20
  givenEnv: Environment;
16
21
  };
@@ -13,4 +13,4 @@ export declare function areFunctionTypesCompatible(expected: {
13
13
  }, given: {
14
14
  type: FunctionType;
15
15
  env: Environment;
16
- }, requireExactMatch?: boolean): boolean;
16
+ }, requireExactMatch?: boolean, visitedPairs?: Set<string>): boolean;
@@ -3,7 +3,7 @@ import type { EvaluatorContext } from "../evaluator/context";
3
3
  import type { Expr } from "../expr";
4
4
  import type { FunctionValue } from "../function-value";
5
5
  import { type Value } from "../value";
6
- import type { ArcType, ArrayType, ComptimeListType, DynType, EffectsRowType, EnumType, FnTraitType, FunctionForallParameter, FunctionImplicitParameter, FunctionParameter, FunctionParameterExprs, FunctionReturn, FunctionType, FutureTraitType, IsoType, ModuleType, PtrType, SliceType, SomeType, StructType, TraitType, TupleType, Type, TypeField, TypeHierarchyType, UnionType, VoidType } from "./definitions";
6
+ import type { ArcType, ArrayType, ComptimeListType, DynType, EffectsRowType, EnumType, FnTraitType, FunctionForallParameter, FunctionImplicitParameter, FunctionParameter, FunctionParameterExprs, FunctionReturn, FunctionType, FutureTraitType, IsoType, ModuleType, PtrType, SliceType, SomeType, StructType, TraitType, TupleType, Type, TypeApplicationType, TypeField, TypeHierarchyType, UnionType, VoidType } from "./definitions";
7
7
  export declare function createComptimeIntType(): Type;
8
8
  export declare function createComptimeFloatType(): Type;
9
9
  export declare function createComptimeStringType(): Type;
@@ -90,4 +90,5 @@ export declare function createDynType({ requiredTraits, env, negativeTraits, }:
90
90
  env: Environment;
91
91
  negativeTraits?: TraitType[];
92
92
  }): DynType;
93
+ export declare function createTypeApplicationType(constructor: SomeType, args: Type[], resultKind: Type, env: Environment): TypeApplicationType;
93
94
  export declare function clearAllCachedTypes(): void;
@@ -54,12 +54,20 @@ export interface SomeType extends Type {
54
54
  argValues: Value[];
55
55
  };
56
56
  isEffectsRow?: boolean;
57
+ kindFunctionType?: FunctionType;
57
58
  }
58
59
  export interface EffectsRowType extends Type {
59
60
  tag: TypeTag.EffectsRow;
60
61
  implicitParameters: FunctionImplicitParameter[];
61
62
  trait: TraitType;
62
63
  }
64
+ export interface TypeApplicationType extends Type {
65
+ tag: TypeTag.TypeApplication;
66
+ constructor: SomeType;
67
+ args: Type[];
68
+ resultKind: Type;
69
+ trait: TraitType;
70
+ }
63
71
  export interface ArrayType extends Type {
64
72
  tag: TypeTag.Array;
65
73
  childType: Type;
@@ -194,6 +202,7 @@ export interface EnumVariant {
194
202
  name: string;
195
203
  fields?: TypeField[];
196
204
  discriminant?: bigint;
205
+ gadtReturnTypeArgs?: Type[];
197
206
  }
198
207
  export interface EnumType extends Type {
199
208
  tag: TypeTag.Enum;
@@ -203,6 +212,8 @@ export interface EnumType extends Type {
203
212
  env: Environment;
204
213
  selectedVariantName?: string;
205
214
  requiredVariantNames?: string[];
215
+ typeConstructorArgs?: Type[];
216
+ isGadt?: boolean;
206
217
  }
207
218
  export interface UnionType extends Type {
208
219
  tag: TypeTag.Union;
@@ -1,5 +1,5 @@
1
1
  import { FunctionValue } from "../function-value";
2
- import type { ArcType, ArrayType, ComptimeListType, ConcreteModuleType, DynType, EffectsRowType, EnumType, FnTraitType, FunctionType, FutureTraitType, IsoType, ModuleType, PtrType, SliceType, SomeType, StructType, TraitType, TupleType, Type, TypeHierarchyType, UnionType, VoidType } from "./definitions";
2
+ import type { ArcType, ArrayType, ComptimeListType, ConcreteModuleType, DynType, EffectsRowType, EnumType, FnTraitType, FunctionType, FutureTraitType, IsoType, ModuleType, PtrType, SliceType, SomeType, StructType, TraitType, TupleType, Type, TypeApplicationType, TypeHierarchyType, UnionType, VoidType } from "./definitions";
3
3
  export declare function isPrimitiveType(type: Type): boolean;
4
4
  export declare function isUnitType(type?: Type): boolean;
5
5
  export declare function isComptimeIntType(type?: Type): boolean;
@@ -47,6 +47,7 @@ export declare function isPtrType(type?: Type): type is PtrType;
47
47
  export declare function isIsoType(type?: Type): type is IsoType;
48
48
  export declare function isArcType(type?: Type): type is ArcType;
49
49
  export declare function isDynType(type?: Type): type is DynType;
50
+ export declare function isTypeApplicationType(type?: Type): type is TypeApplicationType;
50
51
  export declare function isRcType(type?: Type): boolean;
51
52
  export declare function isIntegerType(type?: Type): boolean;
52
53
  export declare function isFloatType(type?: Type): boolean;
@@ -44,5 +44,6 @@ export declare enum TypeTag {
44
44
  Dyn = "Dyn",
45
45
  Expr = "Expr",
46
46
  ComptimeList = "ComptimeList",
47
- EffectsRow = "EffectsRow"
47
+ EffectsRow = "EffectsRow",
48
+ TypeApplication = "TypeApplication"
48
49
  }