Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package io.scalaland.chimney.dsl
import io.scalaland.chimney.Codec
import io.scalaland.chimney.internal.compiletime.derivation.codec.CodecMacros
import io.scalaland.chimney.internal.compiletime.dsl.CodecDefinitionMacros
import io.scalaland.chimney.internal.runtime.{TransformerFlags, TransformerOverrides}
import io.scalaland.chimney.internal.runtime.{ChimneySelector, TransformerFlags, TransformerOverrides}
import scala.annotation.nowarn

/** Allows customization of [[io.scalaland.chimney.Codec]] derivation.
Expand Down Expand Up @@ -36,6 +36,8 @@ final class CodecDefinition[
Flags
] {

private given ChimneySelector = null.asInstanceOf[ChimneySelector]

/** Use `selectorDomain` field in `Domain` to obtain the value of `selectorDto` field in `Dto`.
*
* By default, if `Domain` is missing field picked by `selectorDto` (or reverse) the compilation fails.
Expand All @@ -58,8 +60,8 @@ final class CodecDefinition[
* @since 1.2.0
*/
transparent inline def withFieldRenamed[T, U](
inline selectorDomain: Domain => T,
inline selectorDto: Dto => U
inline selectorDomain: ChimneySelector ?=> Domain => T,
inline selectorDto: ChimneySelector ?=> Dto => U
): CodecDefinition[Domain, Dto, ? <: TransformerOverrides, ? <: TransformerOverrides, Flags] =
${ CodecDefinitionMacros.withFieldRenamedImpl('this, 'selectorDomain, 'selectorDto) }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package io.scalaland.chimney.dsl
import io.scalaland.chimney.Iso
import io.scalaland.chimney.internal.compiletime.derivation.iso.IsoMacros
import io.scalaland.chimney.internal.compiletime.dsl.IsoDefinitionMacros
import io.scalaland.chimney.internal.runtime.{TransformerFlags, TransformerOverrides}
import io.scalaland.chimney.internal.runtime.{ChimneySelector, TransformerFlags, TransformerOverrides}
import scala.annotation.nowarn

/** Allows customization of [[io.scalaland.chimney.Iso]] derivation.
Expand Down Expand Up @@ -36,6 +36,8 @@ final class IsoDefinition[
Flags
] {

private given ChimneySelector = null.asInstanceOf[ChimneySelector]

/** Use `selectorFirst` field in `First` to obtain the value of `selectorSecond` field in `Second`.
*
* By default, if `First` is missing field picked by `selectorSecond` (or reverse) the compilation fails.
Expand All @@ -58,8 +60,8 @@ final class IsoDefinition[
* @since 1.2.0
*/
transparent inline def withFieldRenamed[T, U](
inline selectorFirst: First => T,
inline selectorSecond: Second => U
inline selectorFirst: ChimneySelector ?=> First => T,
inline selectorSecond: ChimneySelector ?=> Second => U
): IsoDefinition[First, Second, ? <: TransformerOverrides, ? <: TransformerOverrides, Flags] =
${ IsoDefinitionMacros.withFieldRenamedImpl('this, 'selectorFirst, 'selectorSecond) }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import io.scalaland.chimney.internal.compiletime.derivation.transformer.Transfor
import io.scalaland.chimney.{partial, PartialTransformer}
import io.scalaland.chimney.internal.compiletime.dsl.*
import io.scalaland.chimney.internal.runtime.{
ChimneySelector,
IsFunction,
Path,
TransformerFlags,
Expand Down Expand Up @@ -37,6 +38,8 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
]
with WithRuntimeDataStore {

private given ChimneySelector = null.asInstanceOf[ChimneySelector]

/** Use provided `value` for field picked using `selector`.
*
* By default, if `From` is missing field picked by `selector`, compilation fails.
Expand All @@ -59,7 +62,7 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
* @since 0.7.0
*/
transparent inline def withFieldConst[T, U](
inline selector: To => T,
inline selector: ChimneySelector ?=> To => T,
inline value: U
)(using U <:< T): PartialTransformerDefinition[From, To, ? <: TransformerOverrides, Flags] =
${ PartialTransformerDefinitionMacros.withFieldConstImpl('this, 'selector, 'value) }
Expand All @@ -86,7 +89,7 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
* @since 0.7.0
*/
transparent inline def withFieldConstPartial[T, U](
inline selector: To => T,
inline selector: ChimneySelector ?=> To => T,
inline value: partial.Result[U]
)(using U <:< T): PartialTransformerDefinition[From, To, ? <: TransformerOverrides, Flags] =
${ PartialTransformerDefinitionMacros.withFieldConstPartialImpl('this, 'selector, 'value) }
Expand All @@ -113,7 +116,7 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
* @since 0.7.0
*/
transparent inline def withFieldComputed[T, U](
inline selector: To => T,
inline selector: ChimneySelector ?=> To => T,
inline f: From => U
)(using U <:< T): PartialTransformerDefinition[From, To, ? <: TransformerOverrides, Flags] =
${ PartialTransformerDefinitionMacros.withFieldComputedImpl('this, 'selector, 'f) }
Expand Down Expand Up @@ -144,8 +147,8 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
*
* @since 1.6.0
*/
transparent inline def withFieldComputedFrom[S, T, U](inline selectorFrom: From => S)(
inline selectorTo: To => T,
transparent inline def withFieldComputedFrom[S, T, U](inline selectorFrom: ChimneySelector ?=> From => S)(
inline selectorTo: ChimneySelector ?=> To => T,
inline f: S => U
)(using U <:< T): PartialTransformerDefinition[From, To, ? <: TransformerOverrides, Flags] =
${ PartialTransformerDefinitionMacros.withFieldComputedFromImpl('this, 'selectorFrom, 'selectorTo, 'f) }
Expand All @@ -172,7 +175,7 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
* @since 0.7.0
*/
transparent inline def withFieldComputedPartial[T, U](
inline selector: To => T,
inline selector: ChimneySelector ?=> To => T,
inline f: From => partial.Result[U]
)(using U <:< T): PartialTransformerDefinition[From, To, ? <: TransformerOverrides, Flags] =
${ PartialTransformerDefinitionMacros.withFieldComputedPartialImpl('this, 'selector, 'f) }
Expand Down Expand Up @@ -201,7 +204,7 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
* @since 1.10.0
*/
transparent inline def withFieldComputedPartialFailFast[T, U](
inline selector: To => T,
inline selector: ChimneySelector ?=> To => T,
inline f: (From, Boolean) => partial.Result[U]
)(using U <:< T): PartialTransformerDefinition[From, To, ? <: TransformerOverrides, Flags] =
${ PartialTransformerDefinitionMacros.withFieldComputedPartialFailFastImpl('this, 'selector, 'f) }
Expand Down Expand Up @@ -232,8 +235,8 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
*
* @since 1.6.0
*/
transparent inline def withFieldComputedPartialFrom[S, T, U](inline selectorFrom: From => S)(
inline selectorTo: To => T,
transparent inline def withFieldComputedPartialFrom[S, T, U](inline selectorFrom: ChimneySelector ?=> From => S)(
inline selectorTo: ChimneySelector ?=> To => T,
inline f: S => partial.Result[U]
)(using U <:< T): PartialTransformerDefinition[From, To, ? <: TransformerOverrides, Flags] =
${ PartialTransformerDefinitionMacros.withFieldComputedPartialFromImpl('this, 'selectorFrom, 'selectorTo, 'f) }
Expand Down Expand Up @@ -266,8 +269,10 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
*
* @since 1.10.0
*/
transparent inline def withFieldComputedPartialFromFailFast[S, T, U](inline selectorFrom: From => S)(
inline selectorTo: To => T,
transparent inline def withFieldComputedPartialFromFailFast[S, T, U](
inline selectorFrom: ChimneySelector ?=> From => S
)(
inline selectorTo: ChimneySelector ?=> To => T,
inline f: (S, Boolean) => partial.Result[U]
)(using U <:< T): PartialTransformerDefinition[From, To, ? <: TransformerOverrides, Flags] =
${
Expand Down Expand Up @@ -301,8 +306,8 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
* @since 0.7.0
*/
transparent inline def withFieldRenamed[T, U](
inline selectorFrom: From => T,
inline selectorTo: To => U
inline selectorFrom: ChimneySelector ?=> From => T,
inline selectorTo: ChimneySelector ?=> To => U
): PartialTransformerDefinition[From, To, ? <: TransformerOverrides, Flags] =
${ PartialTransformerDefinitionMacros.withFieldRenamedImpl('this, 'selectorFrom, 'selectorTo) }

Expand All @@ -322,7 +327,7 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
* @since 1.7.0
*/
transparent inline def withFieldUnused[T](
inline selectorFrom: From => T
inline selectorFrom: ChimneySelector ?=> From => T
): PartialTransformerDefinition[From, To, ? <: TransformerOverrides, Flags] =
${ PartialTransformerDefinitionMacros.withFieldUnusedImpl('this, 'selectorFrom) }

Expand Down Expand Up @@ -494,7 +499,7 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
* @since 1.7.0
*/
transparent inline def withSealedSubtypeUnmatched[T](
inline selectorTo: To => T
inline selectorTo: ChimneySelector ?=> To => T
): PartialTransformerDefinition[From, To, ? <: TransformerOverrides, Flags] =
${
PartialTransformerDefinitionMacros.withSealedSubtypeUnmatchedImpl[From, To, Overrides, Flags, T](
Expand All @@ -508,7 +513,7 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
* @since 1.7.0
*/
transparent inline def withEnumCaseUnmatched[T](
inline selectorTo: To => T
inline selectorTo: ChimneySelector ?=> To => T
): PartialTransformerDefinition[From, To, ? <: TransformerOverrides, Flags] =
${
PartialTransformerDefinitionMacros.withSealedSubtypeUnmatchedImpl[From, To, Overrides, Flags, T](
Expand Down Expand Up @@ -560,7 +565,7 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
*
* @since 1.7.0
*/
transparent inline def withFallbackFrom[T, FromFallback](inline selectorFrom: From => T)(
transparent inline def withFallbackFrom[T, FromFallback](inline selectorFrom: ChimneySelector ?=> From => T)(
inline fallback: FromFallback
): PartialTransformerDefinition[From, To, ? <: TransformerOverrides, Flags] =
${ PartialTransformerDefinitionMacros.withFallbackFromImpl('this, 'selectorFrom, 'fallback) }
Expand Down Expand Up @@ -612,7 +617,7 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
*
* @since 1.6.0
*/
transparent inline def withConstructorTo[T, Ctor](inline selector: To => T)(
transparent inline def withConstructorTo[T, Ctor](inline selector: ChimneySelector ?=> To => T)(
inline f: Ctor
)(using IsFunction.Of[Ctor, T]): PartialTransformerDefinition[From, To, ? <: TransformerOverrides, Flags] =
${ PartialTransformerDefinitionMacros.withConstructorToImpl('this, 'selector, 'f) }
Expand Down Expand Up @@ -666,7 +671,7 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
*
* @since 1.6.0
*/
transparent inline def withConstructorPartialTo[T, Ctor](inline selector: To => T)(
transparent inline def withConstructorPartialTo[T, Ctor](inline selector: ChimneySelector ?=> To => T)(
inline f: Ctor
)(using
IsFunction.Of[Ctor, partial.Result[T]]
Expand Down Expand Up @@ -726,7 +731,7 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
*
* @since 1.10.0
*/
transparent inline def withConstructorPartialToFailFast[T, Ctor](inline selector: To => T)(
transparent inline def withConstructorPartialToFailFast[T, Ctor](inline selector: ChimneySelector ?=> To => T)(
inline f: Ctor
)(using
IsFunction.Of[Ctor, Boolean => partial.Result[T]]
Expand Down Expand Up @@ -783,7 +788,7 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
*
* @since 1.6.0
*/
transparent inline def withConstructorEitherTo[T, Ctor](inline selector: To => T)(
transparent inline def withConstructorEitherTo[T, Ctor](inline selector: ChimneySelector ?=> To => T)(
inline f: Ctor
)(using
IsFunction.Of[Ctor, Either[String, T]]
Expand All @@ -805,7 +810,7 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
* @since 1.6.0
*/
transparent inline def withSourceFlag[T](
inline selectorFrom: From => T
inline selectorFrom: ChimneySelector ?=> From => T
): TransformerSourceFlagsDsl.OfPartialTransformerDefinition[From, To, Overrides, Flags, ? <: Path] =
${ PartialTransformerDefinitionMacros.withSourceFlagImpl[From, To, Overrides, Flags, T]('this, 'selectorFrom) }

Expand All @@ -824,7 +829,7 @@ final class PartialTransformerDefinition[From, To, Overrides <: TransformerOverr
* @since 1.6.0
*/
transparent inline def withTargetFlag[T](
inline selectorTo: To => T
inline selectorTo: ChimneySelector ?=> To => T
): TransformerTargetFlagsDsl.OfPartialTransformerDefinition[From, To, Overrides, Flags, ? <: Path] =
${ PartialTransformerDefinitionMacros.withTargetFlagImpl[From, To, Overrides, Flags, T]('this, 'selectorTo) }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package io.scalaland.chimney.dsl

import io.scalaland.chimney.internal.compiletime.dsl.PartialTransformerDefinitionForAllMacros
import io.scalaland.chimney.internal.runtime.{
ChimneySelector,
IsFunction,
Path,
TransformerFlags,
Expand Down Expand Up @@ -38,13 +39,15 @@ final class PartialTransformerDefinitionForAll[
val runtimeData: TransformerDefinitionCommons.RuntimeDataStore
) extends WithRuntimeDataStore {

private given ChimneySelector = null.asInstanceOf[ChimneySelector]

/** Use the `selectorFrom` field in `FromMatch` to obtain the value of the `selectorTo` field in `ToMatch`.
*
* @since 1.10.0
*/
transparent inline def withFieldRenamed[T, U](
inline selectorFrom: FromMatch => T,
inline selectorTo: ToMatch => U
inline selectorFrom: ChimneySelector ?=> FromMatch => T,
inline selectorTo: ChimneySelector ?=> ToMatch => U
): PartialTransformerDefinition[From, To, ? <: TransformerOverrides, Flags] =
${
PartialTransformerDefinitionForAllMacros
Expand All @@ -56,7 +59,7 @@ final class PartialTransformerDefinitionForAll[
* @since 1.10.0
*/
transparent inline def withFieldConst[T, U](
inline selector: ToMatch => T,
inline selector: ChimneySelector ?=> ToMatch => T,
inline value: U
)(using U <:< T): PartialTransformerDefinition[From, To, ? <: TransformerOverrides, Flags] =
${
Expand All @@ -72,7 +75,7 @@ final class PartialTransformerDefinitionForAll[
* @since 1.10.0
*/
transparent inline def withFieldComputed[T, U](
inline selector: ToMatch => T,
inline selector: ChimneySelector ?=> ToMatch => T,
inline f: FromMatch => U
)(using U <:< T): PartialTransformerDefinition[From, To, ? <: TransformerOverrides, Flags] =
${
Expand All @@ -85,7 +88,7 @@ final class PartialTransformerDefinitionForAll[
* @since 1.10.0
*/
transparent inline def withFieldComputedPartial[T, U](
inline selector: ToMatch => T,
inline selector: ChimneySelector ?=> ToMatch => T,
inline f: FromMatch => partial.Result[U]
)(using U <:< T): PartialTransformerDefinition[From, To, ? <: TransformerOverrides, Flags] =
${
Expand Down
Loading