0.1.4 #4

Merged
Thilawyn merged 68 commits from next into master 2024-02-20 01:39:38 +01:00
Showing only changes of commit 50e360d7ff - Show all commits

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,