diff options
author | Jakob Odersky <jakob@odersky.com> | 2018-03-29 12:20:31 -0700 |
---|---|---|
committer | Jakob Odersky <jakob@odersky.com> | 2018-06-30 01:49:16 -0700 |
commit | 55542796c030974f0e5fb32fcb24bf99f468532d (patch) | |
tree | 97a8e30700ba60015626ecbfacaee85a7a638646 /core/shared | |
parent | 831ad878b7df9edfa05476a9f33d448d7907bec9 (diff) | |
download | magnolia-55542796c030974f0e5fb32fcb24bf99f468532d.tar.gz magnolia-55542796c030974f0e5fb32fcb24bf99f468532d.tar.bz2 magnolia-55542796c030974f0e5fb32fcb24bf99f468532d.zip |
Add option flag to parameters
Diffstat (limited to 'core/shared')
-rw-r--r-- | core/shared/src/main/scala/interface.scala | 3 | ||||
-rw-r--r-- | core/shared/src/main/scala/magnolia.scala | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/core/shared/src/main/scala/interface.scala b/core/shared/src/main/scala/interface.scala index af4fb51..ba65fb6 100644 --- a/core/shared/src/main/scala/interface.scala +++ b/core/shared/src/main/scala/interface.scala @@ -63,6 +63,9 @@ trait Param[Typeclass[_], Type] extends Serializable { /** the name of the parameter */ def label: String + /** flag indicating a parameter of type scala.Option */ + def option: Boolean + /** flag indicating a repeated (aka. vararg) parameter * * For example, for a case class, diff --git a/core/shared/src/main/scala/magnolia.scala b/core/shared/src/main/scala/magnolia.scala index c2dbf0a..2a15573 100644 --- a/core/shared/src/main/scala/magnolia.scala +++ b/core/shared/src/main/scala/magnolia.scala @@ -296,6 +296,7 @@ object Magnolia { q"""$paramsVal($idx) = $magnoliaPkg.Magnolia.param[$typeConstructor, $genericType, $paramType]( ${param.name.decodedName.toString}, + ${param.returnType.typeConstructor =:= typeOf[Option[_]].typeConstructor}, $repeated, $ref, $defaultVal, @@ -439,6 +440,7 @@ object Magnolia { * This method is intended to be called only from code generated by the Magnolia macro, and * should not be called directly from users' code. */ def param[Tc[_], T, P](name: String, + isOption: Boolean, isRepeated: Boolean, typeclassParam: => Tc[P], defaultVal: => Option[P], @@ -447,6 +449,7 @@ object Magnolia { ): Param[Tc, T] = new Param[Tc, T] { type PType = P def label: String = name + def option: Boolean = isOption def repeated: Boolean = isRepeated def default: Option[PType] = defaultVal def typeclass: Tc[PType] = typeclassParam |