From ff1f38a4a26a462b4cf720ca12b2427375c21713 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Tue, 6 Feb 2024 02:52:04 +0100 Subject: [PATCH] Fixed helpers --- src/Trait.ts | 21 +++++++++++++++++---- src/tests.ts | 4 +++- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/Trait.ts b/src/Trait.ts index 6d91e3b..39c8d26 100644 --- a/src/Trait.ts +++ b/src/Trait.ts @@ -1,7 +1,7 @@ import { Fn, Pipe, Tuples } from "hotscript" import { AbstractClass, Class, Opaque } from "type-fest" import { AbstractTag, TraitExpression, emptyTraitExpression } from "." -import { ExtendFn, SimplifyFn, StaticMembers } from "./util" +import { ExtendFn, SimplifyFn, StaticMembers, StaticMembersFn } from "./util" export type AddAbstractToImplClass< @@ -110,20 +110,33 @@ export namespace Trait { Trait.Instance, any[] > & - Pipe, [ - Tuples.Map, + Pipe<[ + ...Trait.Supertraits, + T, + ], [ + Tuples.Map, + Tuples.Map, ExtendFn, SimplifyFn, ]> ) + export interface ClassFn extends Fn { + return: Trait.Class + } export type Instance = ( - Pipe, [ + Pipe<[ + ...Trait.Supertraits, + T, + ], [ Tuples.Map, ExtendFn, SimplifyFn, ]> ) + export interface InstanceFn extends Fn { + return: Trait.Instance + } } diff --git a/src/tests.ts b/src/tests.ts index c285337..f8bede5 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -1,4 +1,6 @@ +import { Simplify } from "type-fest" import { Implements, Trait, abstract, expression, trait } from "." +import { Pipe } from "hotscript" const PrintsHelloOnNew = trait( @@ -49,7 +51,7 @@ const ActiveStatefulSubscription = expression Super => class ActiveStatefulSubscription extends Super {}, ) -type T = Trait.OwnAbstract +type T = Trait.Instance class TestSuperclass {