提交 3eea64f8 编写于 作者: 梦境迷离's avatar 梦境迷离

add @constructor

上级 ec543cf0
...@@ -61,7 +61,7 @@ object constructorMacro extends MacroCommon { ...@@ -61,7 +61,7 @@ object constructorMacro extends MacroCommon {
* *
* @param c * @param c
*/ */
def getClassMemberValDefOnlyVarAssign(): Seq[c.Tree] = { def getClassMemberVarDefOnlyAssignExpr(): Seq[c.Tree] = {
import c.universe._ import c.universe._
getClassMemberValDef(c)(annotteeClassDefinitions).filter(_ match { getClassMemberValDef(c)(annotteeClassDefinitions).filter(_ match {
case q"$mods var $tname: $tpt = $expr" if !excludeFields.contains(tname.asInstanceOf[TermName].decodedName.toString) => true case q"$mods var $tname: $tpt = $expr" if !excludeFields.contains(tname.asInstanceOf[TermName].decodedName.toString) => true
...@@ -71,9 +71,9 @@ object constructorMacro extends MacroCommon { ...@@ -71,9 +71,9 @@ object constructorMacro extends MacroCommon {
} }
} }
val annotteeClassFieldDefinitionsWithoutValAssign = getClassMemberValDefOnlyVarAssign() val annotteeClassFieldDefinitionsOnlyAssignExpr = getClassMemberVarDefOnlyAssignExpr()
if (annotteeClassFieldDefinitionsWithoutValAssign.isEmpty) { if (annotteeClassFieldDefinitionsOnlyAssignExpr.isEmpty) {
c.abort(c.enclosingPosition, s"Annotation is only supported on class when the internal field (declare as 'var') is nonEmpty. classDef: $classDecl") 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 { ...@@ -91,7 +91,7 @@ object constructorMacro extends MacroCommon {
def getConstructorTemplate(): c.universe.Tree = { def getConstructorTemplate(): c.universe.Tree = {
q""" q"""
def this(..${annotteeClassParamsOnlyAssignExpr ++ annotteeClassFieldDefinitionsWithoutValAssign}){ def this(..${annotteeClassParamsOnlyAssignExpr ++ annotteeClassFieldDefinitionsOnlyAssignExpr}){
this(..$ctorFieldNames) this(..$ctorFieldNames)
..${annotteeClassFieldNames.map(f => q"this.$f = $f")} ..${annotteeClassFieldNames.map(f => q"this.$f = $f")}
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册