Skip to content

Commit

Permalink
Create Either to Partial constructor lifting for 22 arities
Browse files Browse the repository at this point in the history
  • Loading branch information
MateuszKubuszok committed Apr 18, 2024
1 parent 9d200d3 commit c1fa2e0
Showing 1 changed file with 123 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@ package io.scalaland.chimney.internal.runtime

import io.scalaland.chimney.partial

// $COVERAGE-OFF$evidence used only within macro-generated expressions

/** Exists because there is no `f.andThen(g)` on a function of arbitrary arity.
*
* We use it for `.withConstructorEither` for lifting it into `partial.Result` constructor.
*
* @since 1.0.0
*/
trait FuncionEitherToResult[FnE] {
type FnR

Expand Down Expand Up @@ -32,4 +40,119 @@ object FuncionEitherToResult {
implicit def fn5[A, B, C, D, E, Out]
: Aux[(A, B, C, D, E) => Either[String, Out], (A, B, C, D, E) => partial.Result[Out]] =
make(fn => (a, b, c, d, e) => partial.Result.fromEitherString(fn(a, b, c, d, e)))
implicit def fn6[A, B, C, D, E, F, Out]
: Aux[(A, B, C, D, E, F) => Either[String, Out], (A, B, C, D, E, F) => partial.Result[Out]] =
make(fn => (a, b, c, d, e, f) => partial.Result.fromEitherString(fn(a, b, c, d, e, f)))
implicit def fn7[A, B, C, D, E, F, G, Out]
: Aux[(A, B, C, D, E, F, G) => Either[String, Out], (A, B, C, D, E, F, G) => partial.Result[Out]] =
make(fn => (a, b, c, d, e, f, g) => partial.Result.fromEitherString(fn(a, b, c, d, e, f, g)))
implicit def fn8[A, B, C, D, E, F, G, H, Out]: Aux[
(A, B, C, D, E, F, G, H) => Either[String, Out],
(A, B, C, D, E, F, G, H) => partial.Result[Out]
] =
make(fn => (a, b, c, d, e, f, g, h) => partial.Result.fromEitherString(fn(a, b, c, d, e, f, g, h)))
implicit def fn9[A, B, C, D, E, F, G, H, I, Out]: Aux[
(A, B, C, D, E, F, G, H, I) => Either[String, Out],
(A, B, C, D, E, F, G, H, I) => partial.Result[Out]
] =
make(fn => (a, b, c, d, e, f, g, h, i) => partial.Result.fromEitherString(fn(a, b, c, d, e, f, g, h, i)))
implicit def fn10[A, B, C, D, E, F, G, H, I, J, Out]: Aux[
(A, B, C, D, E, F, G, H, I, J) => Either[String, Out],
(A, B, C, D, E, F, G, H, I, J) => partial.Result[Out]
] =
make(fn => (a, b, c, d, e, f, g, h, i, j) => partial.Result.fromEitherString(fn(a, b, c, d, e, f, g, h, i, j)))
implicit def fn11[A, B, C, D, E, F, G, H, I, J, K, Out]: Aux[
(A, B, C, D, E, F, G, H, I, J, K) => Either[String, Out],
(A, B, C, D, E, F, G, H, I, J, K) => partial.Result[Out]
] =
make(fn =>
(a, b, c, d, e, f, g, h, i, j, k) => partial.Result.fromEitherString(fn(a, b, c, d, e, f, g, h, i, j, k))
)
implicit def fn12[A, B, C, D, E, F, G, H, I, J, K, L, Out]: Aux[
(A, B, C, D, E, F, G, H, I, J, K, L) => Either[String, Out],
(A, B, C, D, E, F, G, H, I, J, K, L) => partial.Result[Out]
] =
make(fn =>
(a, b, c, d, e, f, g, h, i, j, k, l) => partial.Result.fromEitherString(fn(a, b, c, d, e, f, g, h, i, j, k, l))
)
implicit def fn13[A, B, C, D, E, F, G, H, I, J, K, L, M, Out]: Aux[
(A, B, C, D, E, F, G, H, I, J, K, L, M) => Either[String, Out],
(A, B, C, D, E, F, G, H, I, J, K, L, M) => partial.Result[Out]
] =
make(fn =>
(a, b, c, d, e, f, g, h, i, j, k, l, m) =>
partial.Result.fromEitherString(fn(a, b, c, d, e, f, g, h, i, j, k, l, m))
)
implicit def fn14[A, B, C, D, E, F, G, H, I, J, K, L, M, N, Out]: Aux[
(A, B, C, D, E, F, G, H, I, J, K, L, M, N) => Either[String, Out],
(A, B, C, D, E, F, G, H, I, J, K, L, M, N) => partial.Result[Out]
] =
make(fn =>
(a, b, c, d, e, f, g, h, i, j, k, l, m, n) =>
partial.Result.fromEitherString(fn(a, b, c, d, e, f, g, h, i, j, k, l, m, n))
)
implicit def fn15[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, Out]: Aux[
(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) => Either[String, Out],
(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) => partial.Result[Out]
] =
make(fn =>
(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) =>
partial.Result.fromEitherString(fn(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o))
)
implicit def fn16[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Out]: Aux[
(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P) => Either[String, Out],
(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P) => partial.Result[Out]
] =
make(fn =>
(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) =>
partial.Result.fromEitherString(fn(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p))
)
implicit def fn17[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, Out]: Aux[
(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q) => Either[String, Out],
(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q) => partial.Result[Out]
] =
make(fn =>
(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) =>
partial.Result.fromEitherString(fn(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q))
)
implicit def fn18[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, Out]: Aux[
(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R) => Either[String, Out],
(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R) => partial.Result[Out]
] =
make(fn =>
(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) =>
partial.Result.fromEitherString(fn(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r))
)
implicit def fn19[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, Out]: Aux[
(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S) => Either[String, Out],
(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S) => partial.Result[Out]
] =
make(fn =>
(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) =>
partial.Result.fromEitherString(fn(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s))
)
implicit def fn20[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, Out]: Aux[
(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T) => Either[String, Out],
(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T) => partial.Result[Out]
] =
make(fn =>
(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) =>
partial.Result.fromEitherString(fn(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t))
)
implicit def fn21[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, Out]: Aux[
(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U) => Either[String, Out],
(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U) => partial.Result[Out]
] =
make(fn =>
(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) =>
partial.Result.fromEitherString(fn(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u))
)
implicit def fn22[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, Out]: Aux[
(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V) => Either[String, Out],
(A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V) => partial.Result[Out]
] =
make(fn =>
(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) =>
partial.Result.fromEitherString(fn(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v))
)
}

0 comments on commit c1fa2e0

Please sign in to comment.