0.1.0 #1

Merged
Thilawyn merged 65 commits from next into master 2024-02-06 03:15:40 +01:00
Showing only changes of commit 11335f10cd - Show all commits

View File

@@ -1,6 +1,6 @@
import { Fn, Pipe, Tuples } from "hotscript" import { Call, Fn, Pipe, Tuples } from "hotscript"
import { AbstractClass, Opaque, Simplify } from "type-fest" import { AbstractClass, Opaque, Simplify } from "type-fest"
import { Trait, TraitAbstractMembersFn, TraitApplierSuperTag } from "." import { Trait, TraitAbstractMembersFn, TraitApplierSuperTag, TraitImplInstanceFn } from "."
import { ExtendFn } from "./util" import { ExtendFn } from "./util"
@@ -13,7 +13,16 @@ class TraitsExpression<
readonly traits: Traits, readonly traits: Traits,
) {} ) {}
extends() { extends(): (
AbstractClass<
Call<ExtendFn, [
InstanceType<Super>,
...Call<Tuples.Map<TraitImplInstanceFn>, Traits>,
]>,
ConstructorParameters<Super>
>
) {
return this.traits.reduce( return this.traits.reduce(
(previous, trait) => trait.apply(previous), (previous, trait) => trait.apply(previous),
this.superclass as Opaque<Super, TraitApplierSuperTag>, this.superclass as Opaque<Super, TraitApplierSuperTag>,