From 2f32b8fb3d80eb835da2a3e63c7549edc30ea88c Mon Sep 17 00:00:00 2001 From: Joseph Battelle Date: Sun, 13 Sep 2020 22:58:05 -0700 Subject: [PATCH] Fix issue #515 Modify `check_type_specialization_to` to require exact values to be equal when called with constant basic types. This also now allows procedure group members to differ only by constant value specializations. See the further example in the issue. --- src/check_type.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/check_type.cpp b/src/check_type.cpp index e71a1b102..24434dba0 100644 --- a/src/check_type.cpp +++ b/src/check_type.cpp @@ -1253,7 +1253,13 @@ bool check_type_specialization_to(CheckerContext *ctx, Type *specialization, Typ e->type = t_e->type; } } else { - bool ok = is_polymorphic_type_assignable(ctx, st, tt, true, modify_type); + if (st->kind == Type_Basic && tt->kind == Type_Basic && + s_e->kind == Entity_Constant && t_e->kind == Entity_Constant) { + if (!compare_exact_values(Token_CmpEq, s_e->Constant.value, t_e->Constant.value)) + return false; + } else { + bool ok = is_polymorphic_type_assignable(ctx, st, tt, true, modify_type); + } } }