Browse Source

Add `reflect.get_union_variant`

gingerBill 3 years ago
parent
commit
b50b6b9f33
1 changed files with 11 additions and 0 deletions
  1. 11 0
      core/reflect/reflect.odin

+ 11 - 0
core/reflect/reflect.odin

@@ -729,6 +729,17 @@ get_union_variant_raw_tag :: proc(a: any) -> i64 {
 	panic("expected a union to reflect.get_union_variant_raw_tag")
 }
 
+get_union_variant :: proc(a: any) -> any {
+	if a == nil {
+		return nil
+	}
+	id := union_variant_typeid(a)
+	if id == nil {
+		return nil
+	}
+	return any{a.data, id}
+}
+
 
 set_union_variant_raw_tag :: proc(a: any, tag: i64) {
 	if a == nil { return }