This commit is contained in:
@@ -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
|
||||
>[]
|
||||
|
||||
Reference in New Issue
Block a user