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