diff --git a/src/main/scala/io/github/dreamylost/logs/BaseLog.scala b/src/main/scala/io/github/dreamylost/logs/BaseLog.scala index 39f19b21e9946456b67dc683acd611e988e5e6e8..c392cd48f118474645e68fe4b0dedb17195c5584 100644 --- a/src/main/scala/io/github/dreamylost/logs/BaseLog.scala +++ b/src/main/scala/io/github/dreamylost/logs/BaseLog.scala @@ -26,6 +26,7 @@ import io.github.dreamylost.logs.LogType.LogType import scala.reflect.macros.whitebox trait BaseLog { + val typ: LogType def getTemplate(c: whitebox.Context)(logTransferArgument: LogTransferArgument): c.Tree diff --git a/src/main/scala/io/github/dreamylost/macros/builderMacro.scala b/src/main/scala/io/github/dreamylost/macros/builderMacro.scala index 597754e642c40b6fd8d007e357713f51a53bf608..ef479be8b1056df9f5d6fa47f8e23751a5c8e4dc 100644 --- a/src/main/scala/io/github/dreamylost/macros/builderMacro.scala +++ b/src/main/scala/io/github/dreamylost/macros/builderMacro.scala @@ -67,15 +67,15 @@ object builderMacro { val builderMethod = q"def builder[..$classTypeParams](): $builderClassName[..$returnTypeParams] = new $builderClassName()" val buulderClass = q""" - class $builderClassName[..$classTypeParams] { + class $builderClassName[..$classTypeParams] { - ..$builderFieldDefinitions + ..$builderFieldDefinitions - ..$builderFieldMethods + ..$builderFieldMethods - def build(): $typeName[..$returnTypeParams] = ${getConstructorWithCurrying(typeName, fieldss, isCase)} - } - """ + def build(): $typeName[..$returnTypeParams] = ${getConstructorWithCurrying(typeName, fieldss, isCase)} + } + """ List(builderMethod, buulderClass) } diff --git a/src/main/scala/io/github/dreamylost/macros/constructorMacro.scala b/src/main/scala/io/github/dreamylost/macros/constructorMacro.scala index a57a942c687986790c5d417bc2805865e753ff9f..499a20d8bb34ff7cfe4a58ec7a959e732adebb7b 100644 --- a/src/main/scala/io/github/dreamylost/macros/constructorMacro.scala +++ b/src/main/scala/io/github/dreamylost/macros/constructorMacro.scala @@ -84,7 +84,7 @@ object constructorMacro { this(..${allFieldsTermName.flatten}) ..${annotteeClassFieldNames.map(f => q"this.$f = $f")} } - """ + """ } else { // NOTE: currying constructor overload must be placed in the first bracket block. val allClassCtorParamsNameWithType = annotteeClassParams.map(cc => getConstructorParamsNameWithType(cc)) diff --git a/src/main/scala/io/github/dreamylost/macros/elapsedMacro.scala b/src/main/scala/io/github/dreamylost/macros/elapsedMacro.scala index 836f4b2e3e1fbc760a519e9aa2b6c3f42d6965a5..6181e5cd46f035c0a1f51ef2326983325987a24f 100644 --- a/src/main/scala/io/github/dreamylost/macros/elapsedMacro.scala +++ b/src/main/scala/io/github/dreamylost/macros/elapsedMacro.scala @@ -54,7 +54,7 @@ object elapsedMacro { } private val extractArgumentsDetail: (Duration, LogLevel) = extractArgumentsTuple2 { - case q"new elapsed(limit=$limit, logLevel=$logLevel)" => (evalTree[Duration](limit.asInstanceOf[Tree]), getLogLevel(logLevel.asInstanceOf[Tree])) + case q"new elapsed(limit=$limit, logLevel=$logLevel)" => (evalTree(limit.asInstanceOf[Tree]), getLogLevel(logLevel.asInstanceOf[Tree])) case _ => c.abort(c.enclosingPosition, ErrorMessage.UNEXPECTED_PATTERN) } @@ -63,12 +63,13 @@ object elapsedMacro { } private def getLog(methodName: TermName, logBy: Tree): c.universe.Tree = { + // CI will fail when use lambda. implicit val durationApply: c.universe.Liftable[Duration] = new Liftable[Duration] { override def apply(value: Duration): c.universe.Tree = q"${value._1}" } q""" - val $valDef = _root_.scala.concurrent.duration.Duration.fromNanos(System.nanoTime()) - $start - if ($valDef._1 >= ${extractArgumentsDetail._1}) $logBy(StringContext("slow invoked: [", "] elapsed [", "]").s(${methodName.toString}, $valDef.toMillis)) + val $valDef = _root_.scala.concurrent.duration.Duration.fromNanos(System.nanoTime()) - $start + if ($valDef._1 >= ${extractArgumentsDetail._1}) $logBy(StringContext("slow invoked: [", "] elapsed [", "]").s(${methodName.toString}, $valDef.toMillis)) """ } @@ -152,7 +153,7 @@ object elapsedMacro { mapToNewMethod(defDef, defDef => { q""" $getStartExpr - ${Try.apply(defDef.rhs, Nil, getPrintlnLog(defDef.name))} + ${Try(defDef.rhs, Nil, getPrintlnLog(defDef.name))} """ }) } diff --git a/src/main/scala/io/github/dreamylost/macros/equalsAndHashCodeMacro.scala b/src/main/scala/io/github/dreamylost/macros/equalsAndHashCodeMacro.scala index abbe10d1ab343e7104a93195754f3eca96a6ae79..15777634926cf18f357eb89a872700222dd2eea1 100644 --- a/src/main/scala/io/github/dreamylost/macros/equalsAndHashCodeMacro.scala +++ b/src/main/scala/io/github/dreamylost/macros/equalsAndHashCodeMacro.scala @@ -78,12 +78,12 @@ object equalsAndHashCodeMacro { val canEqual = if (existsCanEqual) q"" else q"$modifiers def canEqual(that: Any) = that.isInstanceOf[$className]" val equalsMethod = q""" - override def equals(that: Any): Boolean = - that match { - case t: $className => t.canEqual(this) && Seq(..$equalsExprs).forall(f => f) && ${if (existsSuperClassExcludeSdkClass(superClasses)) q"super.equals(that)" else q"true"} - case _ => false - } - """ + override def equals(that: Any): Boolean = + that match { + case t: $className => t.canEqual(this) && Seq(..$equalsExprs).forall(f => f) && ${if (existsSuperClassExcludeSdkClass(superClasses)) q"super.equals(that)" else q"true"} + case _ => false + } + """ List(canEqual, equalsMethod) } diff --git a/src/main/scala/io/github/dreamylost/macros/macros.scala b/src/main/scala/io/github/dreamylost/macros/macros.scala index d87a7ef506e8f1ca84da72b98a40215205005041..81dcee8f402506a93e9c7cb9c96a9751aefa654c 100644 --- a/src/main/scala/io/github/dreamylost/macros/macros.scala +++ b/src/main/scala/io/github/dreamylost/macros/macros.scala @@ -31,10 +31,10 @@ package object macros { object ErrorMessage { // common error msg - final lazy val ONLY_CLASS = "Annotation is only supported on class." - final lazy val ONLY_CASE_CLASS = "Annotation is only supported on case class." - final lazy val ONLY_OBJECT_CLASS = "Annotation is only supported on class or object." - final lazy val UNEXPECTED_PATTERN = "Unexpected annotation pattern!" + final lazy val ONLY_CLASS: String = "Annotation is only supported on class." + final lazy val ONLY_CASE_CLASS: String = "Annotation is only supported on case class." + final lazy val ONLY_OBJECT_CLASS: String = "Annotation is only supported on class or object." + final lazy val UNEXPECTED_PATTERN: String = "Unexpected annotation pattern!" } }