aboutsummaryrefslogtreecommitdiff
path: root/src/check_type.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/check_type.cpp')
-rw-r--r--src/check_type.cpp8
1 files changed, 7 insertions, 1 deletions
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);
+ }
}
}