@@ -17,12 +17,12 @@ func (*Pointer) Matches(_ *MethodContext, source, target *xtype.Type) bool {
1717func (p * Pointer ) Build (gen Generator , ctx * MethodContext , sourceID * xtype.JenID , source , target * xtype.Type , errPath ErrorPath ) ([]jen.Code , * xtype.JenID , * Error ) {
1818 ctx .SetErrorTargetVar (jen .Nil ())
1919 if ctx .UseConstructor && ctx .Conf .DefaultUpdate {
20- buildStmt , valueVar , err := buildTargetVar (gen , ctx , sourceID , source , target , errPath )
20+ buildStmt , valueAssign , err := buildTargetVar (gen , ctx , sourceID , source , target , errPath )
2121 if err != nil {
2222 return nil , nil , err
2323 }
2424
25- stmt , err := gen .Assign (ctx , AssignOf (jen .Parens (jen .Op ("*" ).Add (valueVar ))). IsUpdate ( ), sourceID .Deref (source ), source .PointerInner , target .PointerInner , errPath )
25+ stmt , err := gen .Assign (ctx , valueAssign . WithStmt (jen .Parens (jen .Op ("*" ).Add (valueAssign . Stmt . Clone ( )))), sourceID .Deref (source ), source .PointerInner , target .PointerInner , errPath )
2626 if err != nil {
2727 return nil , nil , err .Lift (& Path {
2828 SourceID : "*" ,
@@ -34,7 +34,7 @@ func (p *Pointer) Build(gen Generator, ctx *MethodContext, sourceID *xtype.JenID
3434
3535 buildStmt = append (buildStmt , jen .If (sourceID .Code .Clone ().Op ("!=" ).Nil ()).Block (stmt ... ))
3636
37- return buildStmt , xtype .VariableID (valueVar ), nil
37+ return buildStmt , xtype .VariableID (valueAssign . Stmt ), nil
3838 }
3939
4040 return BuildByAssign (p , gen , ctx , sourceID , source , target , errPath )
@@ -76,12 +76,12 @@ func (*SourcePointer) Matches(ctx *MethodContext, source, target *xtype.Type) bo
7676// Build creates conversion source code for the given source and target type.
7777func (s * SourcePointer ) Build (gen Generator , ctx * MethodContext , sourceID * xtype.JenID , source , target * xtype.Type , path ErrorPath ) ([]jen.Code , * xtype.JenID , * Error ) {
7878 if ctx .UseConstructor && ctx .Conf .DefaultUpdate {
79- buildStmt , valueVar , err := buildTargetVar (gen , ctx , sourceID , source , target , path )
79+ buildStmt , targetAssign , err := buildTargetVar (gen , ctx , sourceID , source , target , path )
8080 if err != nil {
8181 return nil , nil , err
8282 }
8383
84- stmt , err := gen .Assign (ctx , AssignOf ( valueVar ). IsUpdate () , sourceID .Deref (source ), source .PointerInner , target , path )
84+ stmt , err := gen .Assign (ctx , targetAssign , sourceID .Deref (source ), source .PointerInner , target , path )
8585 if err != nil {
8686 return nil , nil , err .Lift (& Path {
8787 SourceID : "*" ,
@@ -91,7 +91,7 @@ func (s *SourcePointer) Build(gen Generator, ctx *MethodContext, sourceID *xtype
9191
9292 buildStmt = append (buildStmt , jen .If (sourceID .Code .Clone ().Op ("!=" ).Nil ()).Block (stmt ... ))
9393
94- return buildStmt , xtype .VariableID (valueVar ), nil
94+ return buildStmt , xtype .VariableID (targetAssign . Stmt ), nil
9595 }
9696
9797 return BuildByAssign (s , gen , ctx , sourceID , source , target , path )
@@ -127,12 +127,12 @@ func (*TargetPointer) Build(gen Generator, ctx *MethodContext, sourceID *xtype.J
127127 ctx .SetErrorTargetVar (jen .Nil ())
128128
129129 if ctx .UseConstructor {
130- buildStmt , valueVar , err := buildTargetVar (gen , ctx , sourceID , source , target , path )
130+ buildStmt , targetAssign , err := buildTargetVar (gen , ctx , sourceID , source , target , path )
131131 if err != nil {
132132 return nil , nil , err
133133 }
134134
135- stmt , err := gen .Assign (ctx , AssignOf (jen .Parens (jen .Op ("*" ).Add (valueVar ))). IsUpdate ( ), sourceID , source , target .PointerInner , path )
135+ stmt , err := gen .Assign (ctx , targetAssign . WithStmt (jen .Parens (jen .Op ("*" ).Add (targetAssign . Stmt . Clone ( )))), sourceID , source , target .PointerInner , path )
136136 if err != nil {
137137 return nil , nil , err .Lift (& Path {
138138 TargetID : "*" ,
@@ -142,7 +142,7 @@ func (*TargetPointer) Build(gen Generator, ctx *MethodContext, sourceID *xtype.J
142142
143143 buildStmt = append (buildStmt , stmt ... )
144144
145- return buildStmt , xtype .VariableID (valueVar ), nil
145+ return buildStmt , xtype .VariableID (targetAssign . Stmt ), nil
146146 }
147147
148148 stmt , id , err := gen .Build (ctx , sourceID , source , target .PointerInner , path )
0 commit comments