@@ -6768,6 +6768,19 @@ class BodyVisitor : public CommonVisitor<BodyVisitor> {
67686768 values.push_back (al, value);
67696769 }
67706770 raise_error_when_dict_key_is_float_or_complex (key_type, x.base .base .loc );
6771+
6772+ if (ASRUtils::is_character (*key_type) && !ASRUtils::is_allocatable (key_type))
6773+ key_type = ASRUtils::TYPE (ASR::make_Allocatable_t (al, x.base .base .loc ,
6774+ ASRUtils::TYPE (ASR::make_String_t (al, x.base .base .loc , 1 , nullptr ,
6775+ ASR::string_length_kindType::DeferredLength,
6776+ ASR::string_physical_typeType::DescriptorString))));
6777+
6778+ if (ASRUtils::is_character (*value_type) && !ASRUtils::is_allocatable (value_type))
6779+ value_type = ASRUtils::TYPE (ASR::make_Allocatable_t (al, x.base .base .loc ,
6780+ ASRUtils::TYPE (ASR::make_String_t (al, x.base .base .loc , 1 , nullptr ,
6781+ ASR::string_length_kindType::DeferredLength,
6782+ ASR::string_physical_typeType::DescriptorString))));
6783+
67716784 ASR::ttype_t * type = ASRUtils::TYPE (ASR::make_Dict_t (al, x.base .base .loc ,
67726785 key_type, value_type));
67736786 tmp = ASR::make_DictConstant_t (al, x.base .base .loc , keys.p , keys.size (),
0 commit comments