From 8c3f01fbfa73f707e9150b0dbe2629d7d5ac2f8d Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 22 Sep 2022 00:05:11 +0100 Subject: Correct parapoly determination of generated internal type of a `map` --- src/check_expr.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/check_expr.cpp') diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 196982084..3f4f11813 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -1360,7 +1360,13 @@ bool is_polymorphic_type_assignable(CheckerContext *c, Type *poly, Type *source, if (source->kind == Type_Map) { bool key = is_polymorphic_type_assignable(c, poly->Map.key, source->Map.key, true, modify_type); bool value = is_polymorphic_type_assignable(c, poly->Map.value, source->Map.value, true, modify_type); - return key || value; + if (key || value) { + poly->Map.entry_type = nullptr; + poly->Map.internal_type = nullptr; + poly->Map.lookup_result_type = nullptr; + init_map_internal_types(poly); + return true; + } } return false; -- cgit v1.2.3