diff --git a/core/reflect/reflect.odin b/core/reflect/reflect.odin index 794f9668a..25d682cb8 100644 --- a/core/reflect/reflect.odin +++ b/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 }