Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦境迷离
Scala Macro Tools
提交
3eea64f8
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 搜索 >>
提交
3eea64f8
编写于
7月 03, 2021
作者:
梦境迷离
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add @constructor
上级
ec543cf0
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
4 addition
and
4 deletion
+4
-4
src/main/scala/io/github/dreamylost/constructor.scala
src/main/scala/io/github/dreamylost/constructor.scala
+4
-4
未找到文件。
src/main/scala/io/github/dreamylost/constructor.scala
浏览文件 @
3eea64f8
...
...
@@ -61,7 +61,7 @@ object constructorMacro extends MacroCommon {
*
* @param c
*/
def
getClassMemberVa
lDefOnlyVarAssign
()
:
Seq
[
c.Tree
]
=
{
def
getClassMemberVa
rDefOnlyAssignExpr
()
:
Seq
[
c.Tree
]
=
{
import
c.universe._
getClassMemberValDef
(
c
)(
annotteeClassDefinitions
).
filter
(
_
match
{
case
q
"$mods var $tname: $tpt = $expr"
if
!
excludeFields
.
contains
(
tname
.
asInstanceOf
[
TermName
].
decodedName
.
toString
)
=>
true
...
...
@@ -71,9 +71,9 @@ object constructorMacro extends MacroCommon {
}
}
val
annotteeClassFieldDefinitions
WithoutValAssign
=
getClassMemberValDefOnlyVarAssign
()
val
annotteeClassFieldDefinitions
OnlyAssignExpr
=
getClassMemberVarDefOnlyAssignExpr
()
if
(
annotteeClassFieldDefinitions
WithoutValAssign
.
isEmpty
)
{
if
(
annotteeClassFieldDefinitions
OnlyAssignExpr
.
isEmpty
)
{
c
.
abort
(
c
.
enclosingPosition
,
s
"Annotation is only supported on class when the internal field (declare as 'var') is nonEmpty. classDef: $classDecl"
)
}
...
...
@@ -91,7 +91,7 @@ object constructorMacro extends MacroCommon {
def
getConstructorTemplate
()
:
c.universe.Tree
=
{
q
"""
def this(..${annotteeClassParamsOnlyAssignExpr ++ annotteeClassFieldDefinitions
WithoutValAssign
}){
def this(..${annotteeClassParamsOnlyAssignExpr ++ annotteeClassFieldDefinitions
OnlyAssignExpr
}){
this(..$ctorFieldNames)
..${annotteeClassFieldNames.map(f => q"this.$f = $f")}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录