diff --git a/src/TraitExpression.ts b/src/TraitExpression.ts index 31cc311..a069f95 100644 --- a/src/TraitExpression.ts +++ b/src/TraitExpression.ts @@ -1,6 +1,6 @@ import { Call, Pipe, Tuples } from "hotscript" import { AbstractClass, Class, Opaque } from "type-fest" -import { AbstractTag, Trait, TraitAbstractMembersFn, TraitApplierSuperTag, TraitImplClassFn, TraitImplInstanceFn } from "." +import { AbstractTag, Trait, TraitApplierSuperTag, TraitOwnAbstractFn, TraitOwnImplClassFn, TraitOwnImplInstanceFn } from "." import { ExtendFn, ExtendableFn, SimplifyFn, StaticMembersFn } from "./util" @@ -17,7 +17,7 @@ export class TraitExpression< AbstractClass< Pipe<[ InstanceType, - ...Call, Traits>, + ...Call, Traits>, ], [ ExtendFn, SimplifyFn, @@ -28,7 +28,7 @@ export class TraitExpression< Pipe<[ Super, - ...Call, Traits>, + ...Call, Traits>, ], [ Tuples.Map, ExtendFn, @@ -47,7 +47,7 @@ export class TraitExpression< >( abstract: ( abstract: Pipe, + Tuples.Map, SimplifyFn, ]> ) => Opaque, @@ -58,10 +58,12 @@ export class TraitExpression< } } + + export type Implements> = ( Exp extends TraitExpression ? Pipe, + Tuples.Map, ExtendFn, SimplifyFn, ]> @@ -71,7 +73,7 @@ export type Implements> = ( class TraitExpressionBuilder< Super extends AbstractClass<{}>, - Traits extends Trait[], + Traits extends Trait[], > { constructor(public expression: TraitExpression) {} @@ -87,7 +89,7 @@ class TraitExpressionBuilder< } expresses< - AppendTraits extends Trait[] + AppendTraits extends Trait[] >(...traits: AppendTraits) { return new TraitExpressionBuilder( new TraitExpression( @@ -109,31 +111,31 @@ class TraitExpressionBuilder< type AbstractMembersExtendable< Super extends AbstractClass<{}>, - Traits extends Trait[], + Traits extends Trait[], > = ( Call, - ...Call, Traits>, + ...Call, Traits>, ]> ) type ImplInstanceExtendable< Super extends AbstractClass<{}>, - Traits extends Trait[], + Traits extends Trait[], > = ( Call, - ...Call, Traits>, + ...Call, Traits>, ]> ) type ImplStaticMembersExtendable< Super extends AbstractClass<{}>, - Traits extends Trait[], + Traits extends Trait[], > = ( Pipe<[ Super, - ...Call, Traits>, + ...Call, Traits>, ], [ Tuples.Map, ExtendableFn, @@ -142,7 +144,7 @@ type ImplStaticMembersExtendable< type GetTraitExpression< Super extends AbstractClass<{}>, - Traits extends Trait[], + Traits extends Trait[], > = ( Call extends true ? "Cannot express an empty list of traits."