From 781567a3bd8035748a6173142151b2b21ac02c73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sun, 4 Feb 2024 02:53:47 +0100 Subject: [PATCH] TraitExpressionTraitsFn --- src/TraitExpression.ts | 10 ++++++---- src/tests.ts | 6 ++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/TraitExpression.ts b/src/TraitExpression.ts index c0ea010..a20ca73 100644 --- a/src/TraitExpression.ts +++ b/src/TraitExpression.ts @@ -63,10 +63,12 @@ export class TraitExpression< export const emptyTraitExpression = new TraitExpression(TraitExpressionNullSuperclass, [] as const) interface PrependTraitSupertraitsFn extends Fn { - return: [ - ...Call, - this["arg0"], - ] + return: this["arg0"] extends Trait + ? [ + ...Call, + this["arg0"], + ] + : never } export interface TraitExpressionTraitsFn extends Fn { return: this["arg0"] extends TraitExpression diff --git a/src/tests.ts b/src/tests.ts index 710a660..421b746 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -1,4 +1,5 @@ -import { Implements, abstract, expression, trait } from "." +import { Call } from "hotscript" +import { Implements, TraitExpressionTraitsFn, abstract, expression, trait } from "." const PrintsHelloOnNew = trait( @@ -54,10 +55,11 @@ const builder = expression PrintsHelloOnNew, Identifiable(), // Identifiable(), + StatefulSubscription, ) const exp = builder.get() -type Abs = Implements +type Abs = Call class User extends exp.extends implements Implements { id: bigint = -1n