aboutsummaryrefslogtreecommitdiff
path: root/examples/shared/src
diff options
context:
space:
mode:
Diffstat (limited to 'examples/shared/src')
-rw-r--r--examples/shared/src/main/scala/default.scala3
-rw-r--r--examples/shared/src/main/scala/typename.scala19
2 files changed, 22 insertions, 0 deletions
diff --git a/examples/shared/src/main/scala/default.scala b/examples/shared/src/main/scala/default.scala
index 4c1b634..4b781a5 100644
--- a/examples/shared/src/main/scala/default.scala
+++ b/examples/shared/src/main/scala/default.scala
@@ -30,6 +30,9 @@ object Default {
/** default value for ints; 0 */
implicit val int: Default[Int] = new Default[Int] { def default = 0 }
+ /** default value for sequences; the empty sequence */
+ implicit def seq[A]: Default[Seq[A]] = new Typeclass[Seq[A]] { def default = Seq.empty }
+
/** generates default instances of [[Default]] for case classes and sealed traits */
implicit def gen[T]: Default[T] = macro Magnolia.gen[T]
}
diff --git a/examples/shared/src/main/scala/typename.scala b/examples/shared/src/main/scala/typename.scala
new file mode 100644
index 0000000..c1e1fd2
--- /dev/null
+++ b/examples/shared/src/main/scala/typename.scala
@@ -0,0 +1,19 @@
+package magnolia.examples
+
+import language.experimental.macros
+
+import magnolia._
+
+trait TypeName[T] { def name: String }
+
+object TypeName {
+ type Typeclass[T] = TypeName[T]
+ def combine[T](ctx: CaseClass[TypeName, T]): TypeName[T] =
+ new TypeName[T] { def name: String = ctx.typeName }
+
+ def dispatch[T](ctx: SealedTrait[TypeName, T]): TypeName[T] =
+ new TypeName[T] { def name: String = ctx.typeName }
+
+ implicit def gen[T]: TypeName[T] = macro Magnolia.gen[T]
+}
+