Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦境迷离
Scala Macro Tools
提交
67d95192
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 搜索 >>
提交
67d95192
编写于
6月 18, 2022
作者:
梦境迷离
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
check field size
上级
4c5fd03e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
24 addition
and
2 deletion
+24
-2
smt-common/src/main/scala/org/bitlap/common/TransformerMacro.scala
...n/src/main/scala/org/bitlap/common/TransformerMacro.scala
+8
-0
smt-common/src/test/scala/org/bitlap/common/TransformableTest.scala
.../src/test/scala/org/bitlap/common/TransformableTest.scala
+16
-2
未找到文件。
smt-common/src/main/scala/org/bitlap/common/TransformerMacro.scala
浏览文件 @
67d95192
...
...
@@ -114,8 +114,16 @@ class TransformerMacro(override val c: whitebox.Context) extends AbstractMacroPr
private
def
getTransformBody
[
From:
WeakTypeTag
,
To:
WeakTypeTag
]
:
Tree
=
{
val
toClassName
=
resolveClassTypeName
[
To
]
val
fromClassName
=
resolveClassTypeName
[
From
]
val
toClassInfo
=
getCaseClassFieldInfo
[
To
]()
val
fromClassInfo
=
getCaseClassFieldInfo
[
From
]()
if
(
fromClassInfo
.
size
<
toClassInfo
.
size
)
{
c
.
abort
(
c
.
enclosingPosition
,
s
"From type: `$fromClassName` has fewer fields than To type: `$toClassName` and cannot be transformed"
)
}
val
customFieldNameMapping
=
MacroCache
.
classFieldNameMapping
.
getOrElse
(
getBuilderId
(
annoBuilderPrefix
),
mutable
.
Map
.
empty
)
val
customFieldValueMapping
=
...
...
smt-common/src/test/scala/org/bitlap/common/TransformableTest.scala
浏览文件 @
67d95192
...
...
@@ -156,8 +156,6 @@ class TransformableTest extends AnyFlatSpec with Matchers {
| val a1 = A1("hello", 1, 2, None)
| val a2 = Transformer[A1, A2].transform(a1)
| a2.toString shouldBe "A2(hello,1,2,None)"
|
|
|"""
.
stripMargin
shouldNot
compile
}
...
...
@@ -182,4 +180,20 @@ class TransformableTest extends AnyFlatSpec with Matchers {
actualToQueryResult
shouldBe
expectToQueryResult
}
"TransformableTest From have fewer fields than To"
should
"compile error"
in
{
"""
| case class B1(a: List[String])
| case class B2(a: List[String], b: Int)
| val b2 = Transformable[B1, B2].instance.transform(B1(List.empty))
| println(b2)
|"""
.
stripMargin
shouldNot
compile
}
"TransformableTest From have more fields than To"
should
"ok"
in
{
case
class
B1
(
a
:
List
[
String
],
b
:
Int
)
case
class
B2
(
a
:
List
[
String
])
val
b2
=
Transformable
[
B1
,
B2
].
instance
.
transform
(
B1
(
List
.
empty
,
1
))
println
(
b2
)
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录