PokéRogue
    Preparing search index...

    Type Alias PrivateNegativeIntRange<Start, End, Step, StepTuple, Remaining, Magnitude, Result>

    PrivateNegativeIntRange: Remaining extends []
        ? Result
        : Magnitude extends [
            ...StepTuple,
            ...(infer NextMagnitude extends UnknownArray),
        ]
            ? PrivateNegativeIntRange<
                Start,
                End,
                Step,
                StepTuple,
                DropStep<Remaining, StepTuple>,
                NextMagnitude,
                Result | ReverseSign<Magnitude["length"]>,
            >
            : StepTuple extends [
                ...Magnitude,
                ...(infer Crossover extends UnknownArray),
            ]
                ?
                    | Result
                    | ReverseSign<Magnitude["length"]>
                    | PrivateIntRange<Crossover["length"], End, Step>
                : never

    The implementation of IntRange for a negative Start.

    A tuple length can never be negative, so instead of counting up to the value, Magnitude counts down from -Start and the value is -Magnitude['length']. Once Magnitude is too short to step again, the range has crossed zero and the rest is delegated to PrivateIntRange.

    Type Parameters