Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦境迷离
Scala Macro Tools
提交
d9df483c
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 搜索 >>
提交
d9df483c
编写于
8月 04, 2021
作者:
梦境迷离
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor
上级
83a835c8
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
35 addition
and
18 deletion
+35
-18
src/main/scala/io/github/dreamylost/macros/constructorMacro.scala
.../scala/io/github/dreamylost/macros/constructorMacro.scala
+8
-4
src/main/scala/io/github/dreamylost/macros/equalsAndHashCodeMacro.scala
.../io/github/dreamylost/macros/equalsAndHashCodeMacro.scala
+9
-6
src/main/scala/io/github/dreamylost/macros/jacksonEnumMacro.scala
.../scala/io/github/dreamylost/macros/jacksonEnumMacro.scala
+10
-5
src/main/scala/io/github/dreamylost/macros/toStringMacro.scala
...ain/scala/io/github/dreamylost/macros/toStringMacro.scala
+8
-3
未找到文件。
src/main/scala/io/github/dreamylost/macros/constructorMacro.scala
浏览文件 @
d9df483c
...
...
@@ -102,7 +102,11 @@ object constructorMacro {
val
resTree
=
appendClassBody
(
classDecl
,
classInfo
=>
Seq
(
getThisMethodWithCurrying
(
classInfo
.
classParamss
,
classInfo
.
body
)))
c
.
Expr
(
resTree
)
c
.
Expr
(
q
"""
${compDeclOpt.fold(EmptyTree)(x => x)}
$resTree
"""
)
}
override
def
impl
(
annottees
:
c.universe.Expr
[
Any
]*)
:
c.universe.Expr
[
Any
]
=
{
...
...
@@ -110,9 +114,9 @@ object constructorMacro {
if
(
isCaseClass
(
annotateeClass
))
{
c
.
abort
(
c
.
enclosingPosition
,
ErrorMessage
.
ONLY_CLASS
)
}
val
res
=
returnWithCompanionObject
(
collectCustomExpr
(
annottees
)(
createCustomExpr
).
tree
,
annottees
)
printTree
(
force
=
extractArgumentsDetail
.
_1
,
res
)
c
.
Expr
(
res
)
val
res
=
collectCustomExpr
(
annottees
)(
createCustomExpr
)
printTree
(
force
=
extractArgumentsDetail
.
_1
,
res
.
tree
)
res
}
}
...
...
src/main/scala/io/github/dreamylost/macros/equalsAndHashCodeMacro.scala
浏览文件 @
d9df483c
...
...
@@ -49,9 +49,8 @@ object equalsAndHashCodeMacro {
c
.
abort
(
c
.
enclosingPosition
,
ErrorMessage
.
ONLY_CLASS
)
}
val
resTree
=
collectCustomExpr
(
annottees
)(
createCustomExpr
)
val
res
=
returnWithCompanionObject
(
resTree
.
tree
,
annottees
)
printTree
(
force
=
extractArgumentsDetail
.
_1
,
res
)
c
.
Expr
(
res
)
printTree
(
force
=
extractArgumentsDetail
.
_1
,
resTree
.
tree
)
resTree
}
/**
...
...
@@ -120,11 +119,15 @@ object equalsAndHashCodeMacro {
}
val
classDefinition
=
mapToClassDeclInfo
(
classDecl
)
val
res
=
appendClassBody
(
classDecl
,
classInfo
=>
getEqualsMethod
(
classDefinition
.
className
,
map
(
classInfo
),
classDefinition
.
superClasses
,
classDefinition
.
body
)
++
getEqualsMethod
(
classDefinition
.
className
,
map
(
classInfo
),
classDefinition
.
superClasses
,
classDefinition
.
body
)
++
List
(
getHashcodeMethod
(
map
(
classInfo
),
classDefinition
.
superClasses
))
)
c
.
Expr
(
res
)
c
.
Expr
(
q
"""
${compDeclOpt.fold(EmptyTree)(x => x)}
$res
"""
)
}
}
...
...
src/main/scala/io/github/dreamylost/macros/jacksonEnumMacro.scala
浏览文件 @
d9df483c
...
...
@@ -81,10 +81,9 @@ object jacksonEnumMacro {
}
override
def
impl
(
annottees
:
c.universe.Expr
[
Any
]*)
:
c.universe.Expr
[
Any
]
=
{
val
newClassExpr
=
collectCustomExpr
(
annottees
)(
createCustomExpr
)
val
res
=
returnWithCompanionObject
(
newClassExpr
.
tree
,
annottees
)
printTree
(
force
=
extractArgumentsDetail
.
_1
,
res
)
c
.
Expr
(
res
)
val
res
=
collectCustomExpr
(
annottees
)(
createCustomExpr
)
printTree
(
force
=
extractArgumentsDetail
.
_1
,
res
.
tree
)
res
}
override
def
createCustomExpr
(
classDecl
:
c.universe.ClassDef
,
compDeclOpt
:
Option
[
c.universe.ModuleDef
])
:
Any
=
{
...
...
@@ -95,11 +94,17 @@ object jacksonEnumMacro {
val
q
"$mods class $tpname[..$tparams] $ctorMods(...$paramss) extends ..$bases { ..$body }"
=
classDecl
val
newFieldss
=
paramss
.
asInstanceOf
[
List
[
List
[
Tree
]]].
map
(
_
.
map
(
replaceAnnotation
))
val
newClass
=
q
"$mods class $tpname[..$tparams] $ctorMods(...$newFieldss) extends ..$bases { ..$body }"
c
.
Expr
(
val
res
=
q
"""
..$typeReferClasses
$newClass
"""
c
.
Expr
(
q
"""
${compDeclOpt.fold(EmptyTree)(x => x)}
$res
"""
)
}
}
...
...
src/main/scala/io/github/dreamylost/macros/toStringMacro.scala
浏览文件 @
d9df483c
...
...
@@ -74,9 +74,14 @@ object toStringMacro {
// Check the type of the class, which can only be defined on the ordinary class
val
annotateeClass
:
ClassDef
=
checkAndGetClassDef
(
annottees
)
val
resTree
=
appendClassBody
(
annotateeClass
,
_
=>
Seq
(
toStringTemplateImpl
(
argument
,
annotateeClass
)))
val
res
=
returnWithCompanionObject
(
resTree
,
annottees
)
printTree
(
argument
.
verbose
,
res
)
c
.
Expr
[
Any
](
res
)
val
compDeclOpt
=
getCompanionObject
(
annottees
)
val
res
=
c
.
Expr
(
q
"""
${compDeclOpt.fold(EmptyTree)(x => x)}
$resTree
"""
)
printTree
(
force
=
extractArgumentsDetail
.
_1
,
res
.
tree
)
res
}
private
def
printField
(
argument
:
Argument
,
lastParam
:
Option
[
String
],
field
:
Tree
)
:
Tree
=
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录