Fixed SpreadSupertraits
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -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,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user