aboutsummaryrefslogtreecommitdiff
path: root/examples/shared/src/main/scala/typename.scala
diff options
context:
space:
mode:
authorJon Pretty <jon.pretty@propensive.com>2017-12-02 16:55:09 +0000
committerJon Pretty <jon.pretty@propensive.com>2017-12-02 16:55:09 +0000
commitbd5f2dc411b1d63b9ee4dfec6476ba27d8410e2a (patch)
tree035718067cb0ba32a3fc5f31453d40e510e09348 /examples/shared/src/main/scala/typename.scala
parentbf5fbc0373ffdff5bd7b269e2c0709fd92819641 (diff)
parentfba0c1cb94d4d67c48db8fb283c5dc1fedbf215a (diff)
downloadmagnolia-bd5f2dc411b1d63b9ee4dfec6476ba27d8410e2a.tar.gz
magnolia-bd5f2dc411b1d63b9ee4dfec6476ba27d8410e2a.tar.bz2
magnolia-bd5f2dc411b1d63b9ee4dfec6476ba27d8410e2a.zip
Merge branch 'master' into virtual-params
Diffstat (limited to 'examples/shared/src/main/scala/typename.scala')
-rw-r--r--examples/shared/src/main/scala/typename.scala19
1 files changed, 19 insertions, 0 deletions
diff --git a/examples/shared/src/main/scala/typename.scala b/examples/shared/src/main/scala/typename.scala
new file mode 100644
index 0000000..aaa40f7
--- /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]
+}
+