From f37f15e466a36817c21e8c710093f25fd594e1f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Fri, 16 Feb 2024 01:30:04 +0100 Subject: [PATCH] TraitBuilder work --- src/TraitBuilder.ts | 12 +++++++----- src/tests.ts | 8 ++++---- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/TraitBuilder.ts b/src/TraitBuilder.ts index b19aa8b..55d3663 100644 --- a/src/TraitBuilder.ts +++ b/src/TraitBuilder.ts @@ -1,6 +1,6 @@ import { Pipe, Tuples } from "hotscript" import { AbstractClass, Class } from "type-fest" -import { Trait } from "./Trait" +import { Trait, TraitClass, TraitConcreteClass, TraitInstance } from "./Trait" import { TraitExpression } from "./TraitExpression" import { ExtendFn, SimplifyFn, StaticMembers } from "./util" @@ -109,15 +109,17 @@ export class TraitBuilder< implement< ImplClassWithAbstract extends ( - Class & - SuperStaticAbstract & + TraitConcreteClass< + Trait + > & { _tag: TraitApplierSuperTag } ) >( apply: ( Super: ( - AbstractClass & - StaticAbstract & + TraitClass< + Trait + > & { _tag: TraitApplierSuperTag } ) ) => ImplClassWithAbstract diff --git a/src/tests.ts b/src/tests.ts index 1863fce..eb3f498 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -1,4 +1,4 @@ -import { Trait } from "./Trait" +import { TraitClass } from "./Trait" import { trait } from "./TraitBuilder" import { Implements, ImplementsStatic } from "./TraitExpression" import { expression } from "./TraitExpressionBuilder" @@ -15,7 +15,7 @@ const PrintsHelloOnNew = trait }) .build() -type PrintsHelloOnNewClass = Trait.Class +type PrintsHelloOnNewClass = TraitClass const Identifiable = () => trait .abstract<{ readonly id: ID }>() @@ -45,7 +45,7 @@ const StatefulSubscription = trait }) .build() -type StatefulSubscriptionClass = Trait.Class +type StatefulSubscriptionClass = TraitClass const ActiveStatefulSubscription = expression .expresses(StatefulSubscription) @@ -57,7 +57,7 @@ const ActiveStatefulSubscription = expression }) .build() -type ActiveStatefulSubscriptionClass = Trait.Class +type ActiveStatefulSubscriptionClass = TraitClass class TestSuperclass {