Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦境迷离
Scala Macro Tools
提交
6708f5e3
S
Scala Macro Tools
项目概览
梦境迷离
/
Scala Macro Tools
上一次同步 1 年多
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Scala Macro Tools
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
6708f5e3
编写于
8月 10, 2021
作者:
梦境迷离
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix some
上级
dad7294f
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
23 addition
and
21 deletion
+23
-21
src/main/scala/io/github/dreamylost/logs/BaseLog.scala
src/main/scala/io/github/dreamylost/logs/BaseLog.scala
+1
-0
src/main/scala/io/github/dreamylost/macros/builderMacro.scala
...main/scala/io/github/dreamylost/macros/builderMacro.scala
+6
-6
src/main/scala/io/github/dreamylost/macros/constructorMacro.scala
.../scala/io/github/dreamylost/macros/constructorMacro.scala
+1
-1
src/main/scala/io/github/dreamylost/macros/elapsedMacro.scala
...main/scala/io/github/dreamylost/macros/elapsedMacro.scala
+5
-4
src/main/scala/io/github/dreamylost/macros/equalsAndHashCodeMacro.scala
.../io/github/dreamylost/macros/equalsAndHashCodeMacro.scala
+6
-6
src/main/scala/io/github/dreamylost/macros/macros.scala
src/main/scala/io/github/dreamylost/macros/macros.scala
+4
-4
未找到文件。
src/main/scala/io/github/dreamylost/logs/BaseLog.scala
浏览文件 @
6708f5e3
...
...
@@ -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
...
...
src/main/scala/io/github/dreamylost/macros/builderMacro.scala
浏览文件 @
6708f5e3
...
...
@@ -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
)
}
...
...
src/main/scala/io/github/dreamylost/macros/constructorMacro.scala
浏览文件 @
6708f5e3
...
...
@@ -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
))
...
...
src/main/scala/io/github/dreamylost/macros/elapsedMacro.scala
浏览文件 @
6708f5e3
...
...
@@ -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))}
"""
})
}
...
...
src/main/scala/io/github/dreamylost/macros/equalsAndHashCodeMacro.scala
浏览文件 @
6708f5e3
...
...
@@ -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
)
}
...
...
src/main/scala/io/github/dreamylost/macros/macros.scala
浏览文件 @
6708f5e3
...
...
@@ -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!"
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录