This commit is contained in:
@@ -19,9 +19,9 @@ type AbstractMembersExtendable<
|
|||||||
Superclass extends AbstractClass<{}>,
|
Superclass extends AbstractClass<{}>,
|
||||||
Traits extends Trait<any, any, any>[],
|
Traits extends Trait<any, any, any>[],
|
||||||
> = (
|
> = (
|
||||||
Call<ExtendableFn, [
|
Pipe<Traits, [
|
||||||
InstanceType<Superclass>,
|
Tuples.Map<Trait.OwnAbstractFn>,
|
||||||
...Call<Tuples.Map<Trait.OwnAbstractFn>, Traits>,
|
Tuples.Prepend<InstanceType<Superclass>>,
|
||||||
]>
|
]>
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -29,9 +29,9 @@ type ImplInstanceExtendable<
|
|||||||
Superclass extends AbstractClass<{}>,
|
Superclass extends AbstractClass<{}>,
|
||||||
Traits extends Trait<any, any, any>[],
|
Traits extends Trait<any, any, any>[],
|
||||||
> = (
|
> = (
|
||||||
Call<ExtendableFn, [
|
Pipe<Traits, [
|
||||||
InstanceType<Superclass>,
|
Tuples.Map<Trait.OwnImplInstanceFn>,
|
||||||
...Call<Tuples.Map<Trait.OwnImplInstanceFn>, Traits>,
|
Tuples.Prepend<InstanceType<Superclass>>,
|
||||||
]>
|
]>
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -39,10 +39,9 @@ type ImplStaticMembersExtendable<
|
|||||||
Superclass extends AbstractClass<{}>,
|
Superclass extends AbstractClass<{}>,
|
||||||
Traits extends Trait<any, any, any>[],
|
Traits extends Trait<any, any, any>[],
|
||||||
> = (
|
> = (
|
||||||
Pipe<[
|
Pipe<Traits, [
|
||||||
Superclass,
|
Tuples.Map<Trait.OwnImplClassFn>,
|
||||||
...Call<Tuples.Map<Trait.OwnImplClassFn>, Traits>,
|
Tuples.Prepend<Superclass>,
|
||||||
], [
|
|
||||||
Tuples.Map<StaticMembersFn>,
|
Tuples.Map<StaticMembersFn>,
|
||||||
ExtendableFn,
|
ExtendableFn,
|
||||||
]>
|
]>
|
||||||
@@ -53,15 +52,13 @@ type BuildTraitExpression<
|
|||||||
OwnTraits extends Trait<any, any, any>[],
|
OwnTraits extends Trait<any, any, any>[],
|
||||||
AllTraits extends Trait<any, any, any>[],
|
AllTraits extends Trait<any, any, any>[],
|
||||||
> = (
|
> = (
|
||||||
Call<Tuples.IsEmpty, AllTraits> extends true
|
AbstractMembersExtendable<Superclass, AllTraits> extends false
|
||||||
? "Cannot express an empty list of traits."
|
? "Type conflict between the traits abstract members and/or the superclass instance."
|
||||||
: AbstractMembersExtendable<Superclass, AllTraits> extends false
|
: ImplInstanceExtendable<Superclass, AllTraits> extends false
|
||||||
? "Type conflict between the traits abstract members and/or the superclass instance."
|
? "Type conflict between the traits implementation instances and/or the superclass instance."
|
||||||
: ImplInstanceExtendable<Superclass, AllTraits> extends false
|
: ImplStaticMembersExtendable<Superclass, AllTraits> extends false
|
||||||
? "Type conflict between the traits implementation instances and/or the superclass instance."
|
? "Type conflict between the traits implementation static members and/or the superclass static members."
|
||||||
: ImplStaticMembersExtendable<Superclass, AllTraits> extends false
|
: TraitExpression<Superclass, OwnTraits, AllTraits>
|
||||||
? "Type conflict between the traits implementation static members and/or the superclass static members."
|
|
||||||
: TraitExpression<Superclass, OwnTraits, AllTraits>
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user