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 { 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,
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user