Super -> Superclass
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Julien Valverdé
2024-02-04 22:58:42 +01:00
parent f6f56b74cd
commit 56e4af7302
2 changed files with 16 additions and 14 deletions

View File

@@ -7,12 +7,12 @@ import { ExtendFn, SimplifyFn, StaticMembersFn } from "./util"
export class TraitExpressionNullSuperclass {}
export class TraitExpression<
Super extends AbstractClass<{}>,
OwnTraits extends Trait<any, any, any>[],
AllTraits extends Trait<any, any, any>[],
Superclass extends AbstractClass<{}>,
OwnTraits extends Trait<any, any, any>[],
AllTraits extends Trait<any, any, any>[],
> {
constructor(
readonly superclass: Super,
readonly superclass: Superclass,
readonly ownTraits: OwnTraits,
readonly allTraits: AllTraits,
) {}
@@ -20,18 +20,18 @@ export class TraitExpression<
get extends(): (
AbstractClass<
Pipe<[
InstanceType<Super>,
InstanceType<Superclass>,
...Call<Tuples.Map<Trait.OwnImplInstanceFn>, OwnTraits>,
], [
ExtendFn,
SimplifyFn,
]>,
ConstructorParameters<Super>
ConstructorParameters<Superclass>
> &
Pipe<[
Super,
Superclass,
...Call<Tuples.Map<Trait.OwnImplClassFn>, OwnTraits>,
], [
Tuples.Map<StaticMembersFn>,
@@ -41,7 +41,7 @@ export class TraitExpression<
) {
return this.allTraits.reduce(
(previous, trait) => trait.apply(previous),
this.superclass as Opaque<Super, TraitApplierSuperTag>,
this.superclass as Opaque<Superclass, TraitApplierSuperTag>,
) as any
}
@@ -62,13 +62,13 @@ export class TraitExpression<
}
export namespace TraitExpression {
export type Super<T> = (
T extends TraitExpression<infer Super, any, any>
? Super
export type Superclass<T> = (
T extends TraitExpression<infer Superclass, any, any>
? Superclass
: never
)
export interface SuperFn extends Fn {
return: TraitExpression.Super<this["arg0"]>
export interface SuperclassFn extends Fn {
return: TraitExpression.Superclass<this["arg0"]>
}
export type OwnTraits<T> = (

View File

@@ -1,4 +1,4 @@
import { Implements, Trait, abstract, expression, trait } from "."
import { Implements, Trait, TraitExpression, abstract, expression, trait } from "."
const PrintsHelloOnNew = trait(
@@ -57,6 +57,8 @@ const builder = expression
StatefulSubscription,
)
type T = TraitExpression.OwnTraits<typeof builder.expression>
const exp = builder.get()
type Abs = Implements<typeof exp>