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

add @constructor

上级 ec543cf0
......@@ -61,7 +61,7 @@ object constructorMacro extends MacroCommon {
*
* @param c
*/
def getClassMemberValDefOnlyVarAssign(): Seq[c.Tree] = {
def getClassMemberVarDefOnlyAssignExpr(): 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 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")
}
......@@ -91,7 +91,7 @@ object constructorMacro extends MacroCommon {
def getConstructorTemplate(): c.universe.Tree = {
q"""
def this(..${annotteeClassParamsOnlyAssignExpr ++ annotteeClassFieldDefinitionsWithoutValAssign}){
def this(..${annotteeClassParamsOnlyAssignExpr ++ annotteeClassFieldDefinitionsOnlyAssignExpr}){
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.
先完成此消息的编辑!
想要评论请 注册