This commit is contained in:
@@ -52,22 +52,11 @@ export class TraitExpression<
|
||||
implementsStatic(target: ImplementsStatic<typeof this>, context: any) {}
|
||||
|
||||
subtrait<
|
||||
This extends TraitExpression<typeof TraitExpression.NullSuperclass, any, any>,
|
||||
SubtraitAbstract extends Implements<This>,
|
||||
SubtraitStaticAbstract extends ImplementsStatic<This>,
|
||||
SubtraitImplClassWithAbstract extends Class<SubtraitAbstract, []> & SubtraitStaticAbstract & { _tag: TraitApplierSuperTag },
|
||||
This extends TraitExpression<typeof TraitExpression.NullSuperclass, any, any>
|
||||
>(
|
||||
this: This,
|
||||
abstract: (expression: This) => Opaque<SubtraitAbstract, AbstractTag>,
|
||||
staticAbstract: (expression: This) => Opaque<SubtraitStaticAbstract, AbstractTag>,
|
||||
apply: (Super: AbstractClass<SubtraitAbstract> & SubtraitStaticAbstract & { _tag: TraitApplierSuperTag }) => SubtraitImplClassWithAbstract,
|
||||
this: This
|
||||
) {
|
||||
return new Trait(
|
||||
this,
|
||||
// {} as RemoveSupertraitsAbstractFromAbstract<SubtraitAbstract, Implements<typeof this>>,
|
||||
{} as SubtraitAbstract, // TODO: find a way to cleanly substract Implements<typeof this> from this.
|
||||
{} as SubtraitStaticAbstract, // TODO: find a way to cleanly substract StaticImplements<typeof this> from this.
|
||||
apply as any as (Super: AbstractClass<{}>) => RemoveAbstractFromImplClass<SubtraitImplClassWithAbstract, SubtraitAbstract, SubtraitStaticAbstract>,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user