0.1.0 #1

Merged
Thilawyn merged 65 commits from next into master 2024-02-06 03:15:40 +01:00
2 changed files with 20 additions and 5 deletions
Showing only changes of commit ff1f38a4a2 - Show all commits

View File

@@ -1,7 +1,7 @@
import { Fn, Pipe, Tuples } from "hotscript" import { Fn, Pipe, Tuples } from "hotscript"
import { AbstractClass, Class, Opaque } from "type-fest" import { AbstractClass, Class, Opaque } from "type-fest"
import { AbstractTag, TraitExpression, emptyTraitExpression } from "." import { AbstractTag, TraitExpression, emptyTraitExpression } from "."
import { ExtendFn, SimplifyFn, StaticMembers } from "./util" import { ExtendFn, SimplifyFn, StaticMembers, StaticMembersFn } from "./util"
export type AddAbstractToImplClass< export type AddAbstractToImplClass<
@@ -110,20 +110,33 @@ export namespace Trait {
Trait.Instance<T>, Trait.Instance<T>,
any[] any[]
> & > &
Pipe<Trait.Supertraits<T>, [ Pipe<[
Tuples.Map<Trait.OwnAbstractFn>, ...Trait.Supertraits<T>,
T,
], [
Tuples.Map<Trait.OwnClassFn>,
Tuples.Map<StaticMembersFn>,
ExtendFn, ExtendFn,
SimplifyFn, SimplifyFn,
]> ]>
) )
export interface ClassFn extends Fn {
return: Trait.Class<this["arg0"]>
}
export type Instance<T> = ( export type Instance<T> = (
Pipe<Trait.Supertraits<T>, [ Pipe<[
...Trait.Supertraits<T>,
T,
], [
Tuples.Map<Trait.OwnInstanceFn>, Tuples.Map<Trait.OwnInstanceFn>,
ExtendFn, ExtendFn,
SimplifyFn, SimplifyFn,
]> ]>
) )
export interface InstanceFn extends Fn {
return: Trait.Instance<this["arg0"]>
}
} }

View File

@@ -1,4 +1,6 @@
import { Simplify } from "type-fest"
import { Implements, Trait, abstract, expression, trait } from "." import { Implements, Trait, abstract, expression, trait } from "."
import { Pipe } from "hotscript"
const PrintsHelloOnNew = trait( const PrintsHelloOnNew = trait(
@@ -49,7 +51,7 @@ const ActiveStatefulSubscription = expression
Super => class ActiveStatefulSubscription extends Super {}, Super => class ActiveStatefulSubscription extends Super {},
) )
type T = Trait.OwnAbstract<typeof ActiveStatefulSubscription> type T = Trait.Instance<typeof ActiveStatefulSubscription>
class TestSuperclass { class TestSuperclass {