TraitBuilder work
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Julien Valverdé
2024-02-16 01:30:04 +01:00
parent 9f2c42db14
commit f37f15e466
2 changed files with 11 additions and 9 deletions

View File

@@ -1,6 +1,6 @@
import { Pipe, Tuples } from "hotscript" import { Pipe, Tuples } from "hotscript"
import { AbstractClass, Class } from "type-fest" import { AbstractClass, Class } from "type-fest"
import { Trait } from "./Trait" import { Trait, TraitClass, TraitConcreteClass, TraitInstance } from "./Trait"
import { TraitExpression } from "./TraitExpression" import { TraitExpression } from "./TraitExpression"
import { ExtendFn, SimplifyFn, StaticMembers } from "./util" import { ExtendFn, SimplifyFn, StaticMembers } from "./util"
@@ -109,15 +109,17 @@ export class TraitBuilder<
implement< implement<
ImplClassWithAbstract extends ( ImplClassWithAbstract extends (
Class<Abstract, []> & TraitConcreteClass<
SuperStaticAbstract<SuperExpression, StaticAbstract> & Trait<SuperExpression, Abstract, StaticAbstract, ImplClass>
> &
{ _tag: TraitApplierSuperTag } { _tag: TraitApplierSuperTag }
) )
>( >(
apply: ( apply: (
Super: ( Super: (
AbstractClass<Abstract> & TraitClass<
StaticAbstract & Trait<SuperExpression, Abstract, StaticAbstract, ImplClass>
> &
{ _tag: TraitApplierSuperTag } { _tag: TraitApplierSuperTag }
) )
) => ImplClassWithAbstract ) => ImplClassWithAbstract

View File

@@ -1,4 +1,4 @@
import { Trait } from "./Trait" import { TraitClass } from "./Trait"
import { trait } from "./TraitBuilder" import { trait } from "./TraitBuilder"
import { Implements, ImplementsStatic } from "./TraitExpression" import { Implements, ImplementsStatic } from "./TraitExpression"
import { expression } from "./TraitExpressionBuilder" import { expression } from "./TraitExpressionBuilder"
@@ -15,7 +15,7 @@ const PrintsHelloOnNew = trait
}) })
.build() .build()
type PrintsHelloOnNewClass = Trait.Class<typeof PrintsHelloOnNew> type PrintsHelloOnNewClass = TraitClass<typeof PrintsHelloOnNew>
const Identifiable = <ID>() => trait const Identifiable = <ID>() => trait
.abstract<{ readonly id: ID }>() .abstract<{ readonly id: ID }>()
@@ -45,7 +45,7 @@ const StatefulSubscription = trait
}) })
.build() .build()
type StatefulSubscriptionClass = Trait.Class<typeof StatefulSubscription> type StatefulSubscriptionClass = TraitClass<typeof StatefulSubscription>
const ActiveStatefulSubscription = expression const ActiveStatefulSubscription = expression
.expresses(StatefulSubscription) .expresses(StatefulSubscription)
@@ -57,7 +57,7 @@ const ActiveStatefulSubscription = expression
}) })
.build() .build()
type ActiveStatefulSubscriptionClass = Trait.Class<typeof ActiveStatefulSubscription> type ActiveStatefulSubscriptionClass = TraitClass<typeof ActiveStatefulSubscription>
class TestSuperclass { class TestSuperclass {