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

This commit is contained in:
Julien Valverdé
2024-02-15 21:00:12 +01:00
parent e928a11ee4
commit fe667e87fe
2 changed files with 16 additions and 8 deletions

View File

@@ -5,7 +5,7 @@ import { TraitExpression } from "./TraitExpression"
import { ExtendFn, SimplifyFn, StaticMembers } from "./util"
type SuperAbstract<SuperExpression, Abstract> = (
type ExtendAbstractSuper<SuperExpression, Abstract> = (
Pipe<SuperExpression, [
TraitExpression.TraitsFn,
Tuples.Map<Trait.OwnAbstractFn>,
@@ -15,7 +15,7 @@ type SuperAbstract<SuperExpression, Abstract> = (
]>
)
type SuperStaticAbstract<SuperExpression, StaticAbstract> = (
type ExtendStaticAbstractSuper<SuperExpression, StaticAbstract> = (
Pipe<SuperExpression, [
TraitExpression.TraitsFn,
Tuples.Map<Trait.OwnStaticAbstractFn>,
@@ -61,7 +61,7 @@ export class TraitBuilder<
private readonly traitApply: (Super: AbstractClass<object>) => ImplClass,
) {}
abstract<A extends SuperAbstract<SuperExpression, Abstract>>() {
abstract<A extends ExtendAbstractSuper<SuperExpression, Abstract>>() {
return new TraitBuilder(
this.traitSuperExpression,
{} as A,
@@ -70,10 +70,10 @@ export class TraitBuilder<
)
}
extendAbstract<A extends SuperAbstract<SuperExpression, Abstract>>(
extendAbstract<A extends ExtendAbstractSuper<SuperExpression, Abstract>>(
_: (
Super: AbstractClass<
SuperAbstract<SuperExpression, Abstract>
ExtendAbstractSuper<SuperExpression, Abstract>
>
) => AbstractClass<A, []>
) {
@@ -85,7 +85,7 @@ export class TraitBuilder<
)
}
staticAbstract<A extends SuperStaticAbstract<SuperExpression, StaticAbstract>>() {
staticAbstract<A extends ExtendStaticAbstractSuper<SuperExpression, StaticAbstract>>() {
return new TraitBuilder(
this.traitSuperExpression,
this.traitAbstract,
@@ -94,9 +94,9 @@ export class TraitBuilder<
)
}
extendStaticAbstract<A extends SuperStaticAbstract<SuperExpression, StaticAbstract>>(
extendStaticAbstract<A extends ExtendStaticAbstractSuper<SuperExpression, StaticAbstract>>(
_: (Super: AbstractClass<
SuperStaticAbstract<SuperExpression, StaticAbstract>
ExtendStaticAbstractSuper<SuperExpression, StaticAbstract>
>) => AbstractClass<A, []>
) {
return new TraitBuilder(

View File

@@ -98,3 +98,11 @@ export type ImplementsStatic<Exp extends TraitExpression<any, any>> = (
SimplifyFn,
]>
)
export type TraitExpressionClass<Exp extends TraitExpression<any, any>> = (
)
export type TraitExpressionInstance<Exp extends TraitExpression<any, any>> = (
)