Fix ast.clone_node

This commit is contained in:
gingerBill
2022-03-03 23:10:38 +00:00
parent 2944969ca0
commit 913d802e33

View File

@@ -88,16 +88,20 @@ clone_node :: proc(node: ^Node) -> ^Node {
src = (^rawptr)(&node.derived)^
}
mem.copy(res, src, size)
res_any: any
res_any.data = res
res_any.id = ti.id
res_ptr_any: any
res_ptr_any.data = &res
res_ptr_any.id = ti.id
reflect.set_union_value(res.derived, res_any)
reflect.set_union_value(res.derived, res_ptr_any)
derived_expr := reflect.struct_field_value_by_name(res_any, "derived_expr", true)
derived_stmt := reflect.struct_field_value_by_name(res_any, "derived_stmt", true)
reflect.set_union_value(res.derived, derived_expr)
reflect.set_union_value(res.derived, derived_stmt)
res_ptr := reflect.deref(res_ptr_any)
if de := reflect.struct_field_value_by_name(res_ptr, "derived_expr", true); de != nil {
reflect.set_union_value(de, res_ptr_any)
}
if ds := reflect.struct_field_value_by_name(res_ptr, "derived_stmt", true); ds != nil {
reflect.set_union_value(ds, res_ptr_any)
}
if res.derived != nil do switch r in res.derived {
case ^Package, ^File: