diff options
author | Jon Pretty <jon.pretty@propensive.com> | 2018-01-09 10:02:39 +0000 |
---|---|---|
committer | Jon Pretty <jon.pretty@propensive.com> | 2018-01-09 10:02:39 +0000 |
commit | 6431fba02b1663701564adacef07a292ff7c32d7 (patch) | |
tree | f4a56d098df94013bf8c8ea171c8dc7afc33825f /examples/shared/src/main/scala/default.scala | |
parent | 2353f9f1d3961a29a1d7b6173f5fd22d7acf0f47 (diff) | |
download | magnolia-6431fba02b1663701564adacef07a292ff7c32d7.tar.gz magnolia-6431fba02b1663701564adacef07a292ff7c32d7.tar.bz2 magnolia-6431fba02b1663701564adacef07a292ff7c32d7.zip |
Make access of combine and dispatch lazyvirtual-params-3
Diffstat (limited to 'examples/shared/src/main/scala/default.scala')
-rw-r--r-- | examples/shared/src/main/scala/default.scala | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/examples/shared/src/main/scala/default.scala b/examples/shared/src/main/scala/default.scala index 4b781a5..fb5966f 100644 --- a/examples/shared/src/main/scala/default.scala +++ b/examples/shared/src/main/scala/default.scala @@ -36,3 +36,19 @@ object Default { /** generates default instances of [[Default]] for case classes and sealed traits */ implicit def gen[T]: Default[T] = macro Magnolia.gen[T] } + +object DefaultNoCoproduct { + + type Typeclass[T] = Default[T] + + /** constructs a default for each parameter, using the constructor default (if provided), + * otherwise using a typeclass-provided default */ + def combine[T](ctx: CaseClass[Default, T]): Default[T] = new Default[T] { + def default = ctx.construct { param => + param.default.getOrElse(param.typeclass.default) + } + } + + /** generates default instances of [[Default]] for case classes and sealed traits */ + implicit def gen[T]: Default[T] = macro Magnolia.gen[T] +} |