From b468cf141bdec09369ff8d2c28097ec7ead3c2f6 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 11 Sep 2018 11:14:46 +0100 Subject: [PATCH] Fix are_types_identical for bit_set --- src/types.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/types.cpp b/src/types.cpp index 14b2e449e..82744cedf 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -1325,7 +1325,10 @@ bool are_types_identical(Type *x, Type *y) { case Type_BitSet: if (y->kind == Type_BitSet) { - return are_types_identical(x->BitSet.elem, y->BitSet.elem); + return are_types_identical(x->BitSet.elem, y->BitSet.elem) && + are_types_identical(x->BitSet.underlying, y->BitSet.underlying) && + x->BitSet.lower == y->BitSet.lower && + x->BitSet.upper == y->BitSet.upper; } break; @@ -1358,6 +1361,9 @@ bool are_types_identical(Type *x, Type *y) { for_array(i, x->Struct.fields) { Entity *xf = x->Struct.fields[i]; Entity *yf = y->Struct.fields[i]; + if (xf->kind != yf->kind) { + return false; + } if (!are_types_identical(xf->type, yf->type)) { return false; }