File tree Expand file tree Collapse file tree 2 files changed +28
-26
lines changed Expand file tree Collapse file tree 2 files changed +28
-26
lines changed Original file line number Diff line number Diff line change @@ -420,17 +420,25 @@ Set every field of `tree` equal to the corresponding field of `new_tree`.
420420function set_node! (tree:: AbstractExpressionNode , new_tree:: AbstractExpressionNode )
421421 tree. degree = new_tree. degree
422422 if new_tree. degree == 0
423- tree. constant = new_tree. constant
424- if new_tree. constant
425- tree. val = new_tree. val:: eltype (new_tree)
426- else
427- tree. feature = new_tree. feature
428- end
423+ set_leaf! (tree, new_tree)
429424 else
430- tree. op = new_tree. op
431- set_children! (tree, get_children (new_tree))
425+ set_branch! (tree, new_tree)
432426 end
433427 return nothing
434428end
429+ function set_leaf! (tree:: AbstractExpressionNode , new_leaf:: AbstractExpressionNode )
430+ tree. constant = new_leaf. constant
431+ if new_leaf. constant
432+ tree. val = new_leaf. val:: eltype (new_leaf)
433+ else
434+ tree. feature = new_leaf. feature
435+ end
436+ return nothing
437+ end
438+ function set_branch! (tree:: AbstractExpressionNode , new_branch:: AbstractExpressionNode )
439+ tree. op = new_branch. op
440+ set_children! (tree, get_children (new_branch))
441+ return nothing
442+ end
435443
436444end
Original file line number Diff line number Diff line change @@ -21,7 +21,7 @@ import ..NodeModule:
2121 leaf_convert,
2222 leaf_hash,
2323 leaf_equal,
24- set_node !,
24+ set_leaf !,
2525 @make_accessors
2626import .. NodePreallocationModule: copy_into!, allocate_container
2727import .. NodeUtilsModule:
@@ -145,24 +145,18 @@ function leaf_copy(t::ParametricNode{T}) where {T}
145145 return n
146146 end
147147end
148- function set_node! (tree:: ParametricNode , new_tree:: ParametricNode )
149- tree. degree = (deg = new_tree. degree)
150- if deg == 0
151- if new_tree. constant
152- tree. constant = true
153- tree. val = new_tree. val
154- elseif ! new_tree. is_parameter
155- tree. constant = false
156- tree. is_parameter = false
157- tree. feature = new_tree. feature
158- else
159- tree. constant = false
160- tree. is_parameter = true
161- tree. parameter = new_tree. parameter
162- end
148+ function set_leaf! (tree:: ParametricNode , new_leaf:: ParametricNode )
149+ if new_leaf. constant
150+ tree. constant = true
151+ tree. val = new_leaf. val
152+ elseif ! new_leaf. is_parameter
153+ tree. constant = false
154+ tree. is_parameter = false
155+ tree. feature = new_leaf. feature
163156 else
164- tree. op = new_tree. op
165- set_children! (tree, get_children (new_tree))
157+ tree. constant = false
158+ tree. is_parameter = true
159+ tree. parameter = new_leaf. parameter
166160 end
167161 return nothing
168162end
You can’t perform that action at this time.
0 commit comments