diff options
author | Jon Pretty <jon.pretty@propensive.com> | 2017-11-30 19:47:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-30 19:47:19 +0100 |
commit | d4bd8d7c5605d1889be5c82ff475cfb53c9deed9 (patch) | |
tree | a8f9ae506a8cdf675949c4f0716ad45aec66b74b /examples/shared/src/main/scala/typename.scala | |
parent | d8fb2f5ca2edc1a34ed7831f06d5eca08ba4989c (diff) | |
parent | d88b15e99e2727558bb901fcc08398862f633c11 (diff) | |
download | magnolia-d4bd8d7c5605d1889be5c82ff475cfb53c9deed9.tar.gz magnolia-d4bd8d7c5605d1889be5c82ff475cfb53c9deed9.tar.bz2 magnolia-d4bd8d7c5605d1889be5c82ff475cfb53c9deed9.zip |
Merge branch 'master' into existentials
Diffstat (limited to 'examples/shared/src/main/scala/typename.scala')
-rw-r--r-- | examples/shared/src/main/scala/typename.scala | 19 |
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..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] +} + |