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 10 additions and 6 deletions
Showing only changes of commit 781567a3bd - Show all commits

View File

@@ -63,10 +63,12 @@ export class TraitExpression<
export const emptyTraitExpression = new TraitExpression(TraitExpressionNullSuperclass, [] as const) export const emptyTraitExpression = new TraitExpression(TraitExpressionNullSuperclass, [] as const)
interface PrependTraitSupertraitsFn extends Fn { interface PrependTraitSupertraitsFn extends Fn {
return: [ return: this["arg0"] extends Trait<any, any, any>
...Call<TraitSupertraitsFn, this["arg0"]>, ? [
this["arg0"], ...Call<TraitSupertraitsFn, this["arg0"]>,
] this["arg0"],
]
: never
} }
export interface TraitExpressionTraitsFn extends Fn { export interface TraitExpressionTraitsFn extends Fn {
return: this["arg0"] extends TraitExpression<any, infer Traits> return: this["arg0"] extends TraitExpression<any, infer Traits>

View File

@@ -1,4 +1,5 @@
import { Implements, abstract, expression, trait } from "." import { Call } from "hotscript"
import { Implements, TraitExpressionTraitsFn, abstract, expression, trait } from "."
const PrintsHelloOnNew = trait( const PrintsHelloOnNew = trait(
@@ -54,10 +55,11 @@ const builder = expression
PrintsHelloOnNew, PrintsHelloOnNew,
Identifiable<bigint>(), Identifiable<bigint>(),
// Identifiable<number>(), // Identifiable<number>(),
StatefulSubscription,
) )
const exp = builder.get() const exp = builder.get()
type Abs = Implements<typeof exp> type Abs = Call<TraitExpressionTraitsFn, typeof exp>
class User extends exp.extends implements Implements<typeof exp> { class User extends exp.extends implements Implements<typeof exp> {
id: bigint = -1n id: bigint = -1n