From f5248a8d9d397622e5ae7fa240f1e3ef75d06d22 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 5 Aug 2020 23:33:35 +0100 Subject: Fix #705 --- src/checker.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/checker.cpp') diff --git a/src/checker.cpp b/src/checker.cpp index ed26c6d70..b8962ed63 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -1377,8 +1377,11 @@ void add_type_info_type(CheckerContext *c, Type *t) { break; case Type_Union: - add_type_info_type(c, t_int); - add_type_info_type(c, t_type_info_ptr); + if (union_tag_size(t) > 0) { + add_type_info_type(c, union_tag_type(t)); + } else { + add_type_info_type(c, t_type_info_ptr); + } for_array(i, bt->Union.variants) { add_type_info_type(c, bt->Union.variants[i]); } @@ -1589,8 +1592,11 @@ void add_min_dep_type_info(Checker *c, Type *t) { break; case Type_Union: - add_min_dep_type_info(c, t_int); - add_min_dep_type_info(c, t_type_info_ptr); + if (union_tag_size(t) > 0) { + add_min_dep_type_info(c, union_tag_type(t)); + } else { + add_min_dep_type_info(c, t_type_info_ptr); + } for_array(i, bt->Union.variants) { add_min_dep_type_info(c, bt->Union.variants[i]); } -- cgit v1.2.3