Skip to content

Commit 3f793f3

Browse files
committed
Dict tests
1 parent 9a2ba0f commit 3f793f3

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

integration_tests/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -573,16 +573,16 @@ RUN(NAME test_list_concat LABELS cpython llvm llvm_jit c NOFAST)
573573
RUN(NAME test_dict_01 LABELS cpython llvm llvm_jit c) # post sync
574574
RUN(NAME test_dict_02 LABELS cpython llvm llvm_jit c NOFAST)
575575
# RUN(NAME test_dict_03 LABELS cpython llvm llvm_jit NOFAST)
576-
# RUN(NAME test_dict_04 LABELS cpython llvm llvm_jit NOFAST)
576+
RUN(NAME test_dict_04 LABELS cpython llvm llvm_jit NOFAST)
577577
RUN(NAME test_dict_05 LABELS cpython llvm llvm_jit c)
578578
RUN(NAME test_dict_06 LABELS cpython llvm llvm_jit c)
579579
# RUN(NAME test_dict_07 LABELS cpython llvm llvm_jit c)
580580
RUN(NAME test_dict_08 LABELS cpython llvm llvm_jit c)
581581
RUN(NAME test_dict_09 LABELS cpython llvm llvm_jit c)
582582
# RUN(NAME test_dict_10 LABELS cpython llvm llvm_jit) # renable c # post sync
583583
# RUN(NAME test_dict_11 LABELS cpython llvm llvm_jit c) # post sync
584-
# RUN(NAME test_dict_12 LABELS cpython llvm llvm_jit) # renable c # post sync
585-
# RUN(NAME test_dict_13 LABELS cpython llvm llvm_jit c)
584+
RUN(NAME test_dict_12 LABELS cpython llvm) # renable c, jit
585+
RUN(NAME test_dict_13 LABELS cpython llvm c) # renable jit
586586
# RUN(NAME test_dict_bool LABELS cpython llvm llvm_jit) # post sync
587587
# RUN(NAME test_dict_increment LABELS cpython llvm llvm_jit) # post sync
588588
# RUN(NAME test_dict_keys_values LABELS cpython llvm llvm_jit)

libasr

src/lpython/semantics/python_ast_to_asr.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)