Static abstract
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Julien Valverdé
2024-02-09 14:30:10 +01:00
parent 1a88ceb296
commit e31ddeaa6e
4 changed files with 81 additions and 50 deletions

View File

@@ -5,7 +5,7 @@ import { TraitExpression, emptyTraitExpression } from "./TraitExpression"
import { ExtendableFn, StaticMembersFn } from "./util"
type SpreadSupertraits<Traits extends Trait<any, any, any>[]> = (
type SpreadSupertraits<Traits extends Trait<any, any, any, any>[]> = (
Call<
Tuples.FlatMap<PrependTraitSupertraitsFn>,
Traits
@@ -18,7 +18,7 @@ interface PrependTraitSupertraitsFn extends Fn {
type AbstractMembersExtendable<
Superclass extends AbstractClass<{}>,
Traits extends Trait<any, any, any>[],
Traits extends Trait<any, any, any, any>[],
> = (
Pipe<Traits, [
Tuples.Map<Trait.OwnAbstractFn>,
@@ -28,7 +28,7 @@ type AbstractMembersExtendable<
type ImplInstanceExtendable<
Superclass extends AbstractClass<{}>,
Traits extends Trait<any, any, any>[],
Traits extends Trait<any, any, any, any>[],
> = (
Pipe<Traits, [
Tuples.Map<Trait.OwnImplInstanceFn>,
@@ -38,7 +38,7 @@ type ImplInstanceExtendable<
type ImplStaticMembersExtendable<
Superclass extends AbstractClass<{}>,
Traits extends Trait<any, any, any>[],
Traits extends Trait<any, any, any, any>[],
> = (
Pipe<Traits, [
Tuples.Map<Trait.OwnImplClassFn>,
@@ -50,8 +50,8 @@ type ImplStaticMembersExtendable<
type BuildTraitExpression<
Superclass extends AbstractClass<{}>,
OwnTraits extends Trait<any, any, any>[],
AllTraits extends Trait<any, any, any>[],
OwnTraits extends Trait<any, any, any, any>[],
AllTraits extends Trait<any, any, any, any>[],
> = (
AbstractMembersExtendable<Superclass, AllTraits> extends false
? "Type conflict between the traits abstract members and/or the superclass instance."
@@ -65,8 +65,8 @@ type BuildTraitExpression<
class TraitExpressionBuilder<
Superclass extends AbstractClass<{}>,
const OwnTraits extends Trait<any, any, any>[],
const AllTraits extends Trait<any, any, any>[],
const OwnTraits extends Trait<any, any, any, any>[],
const AllTraits extends Trait<any, any, any, any>[],
> {
constructor(private expression: TraitExpression<Superclass, OwnTraits, AllTraits>) {}
@@ -85,7 +85,7 @@ class TraitExpressionBuilder<
}
expresses<
const Traits extends Trait<any, any, any>[]
const Traits extends Trait<any, any, any, any>[]
>(
...traits: Traits
): TraitExpressionBuilder<
@@ -104,7 +104,8 @@ class TraitExpressionBuilder<
private spreadSupertraits<
const Traits extends Trait<
TraitExpression<any, any, Trait<any, any, any>[]>,
TraitExpression<any, any, Trait<any, any, any, any>[]>,
any,
any,
any
>[]