Fixed SpreadSupertraits
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Julien Valverdé
2024-02-20 00:12:19 +01:00
parent 94c4307ad2
commit 50e360d7ff

View File

@@ -1,4 +1,3 @@
import { Call, Fn, Tuples } from "hotscript"
import { uniq } from "lodash-es"
import { AbstractClass } from "type-fest"
import { Trait, TraitTuple } from "./Trait"
@@ -6,15 +5,15 @@ import { TraitExpression } from "./TraitExpression"
import { Extendable, StaticMembers } from "./util"
type SpreadSupertraits<Traits extends Trait<any, any, any, any>[]> = (
Call<
Tuples.FlatMap<PrependTraitSupertraitsFn>,
Traits
>
type SpreadSupertraits<T> = (
T extends [infer Trait, ...infer Rest]
? [
...Trait.Supertraits<Trait>,
Trait,
...SpreadSupertraits<Rest>,
]
: []
)
interface PrependTraitSupertraitsFn extends Fn {
return: [...Trait.Supertraits<this["arg0"]>, this["arg0"]]
}
type InstanceExtendable<
@@ -81,10 +80,7 @@ class TraitExpressionBuilder<
>[]
>(
...traits: T
): TraitExpressionBuilder<
Superclass,
[...Traits, ...SpreadSupertraits<T>]
> {
) {
return new TraitExpressionBuilder(
this.expressionSuperclass,