Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 04de1f1

Browse files
authored
Fix logical comparsion for string (#2699)
* Fix logical comparsion for string * Uncomment test * Add comment about test
1 parent 714389e commit 04de1f1

File tree

4 files changed

+21
-23
lines changed

4 files changed

+21
-23
lines changed

integration_tests/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -765,8 +765,8 @@ RUN(NAME test_platform LABELS cpython llvm llvm_jit c)
765765
RUN(NAME test_vars_01 LABELS cpython llvm llvm_jit)
766766
RUN(NAME test_version LABELS cpython llvm llvm_jit)
767767
RUN(NAME logical_binop1 LABELS cpython llvm llvm_jit)
768-
RUN(NAME test_logical_compare LABELS cpython llvm llvm_jit)
769-
RUN(NAME test_logical_assignment LABELS cpython llvm llvm_jit)
768+
RUN(NAME test_logical_compare LABELS cpython llvm llvm_jit) # TODO: Add C backend after fixing issue #2708
769+
RUN(NAME test_logical_assignment LABELS cpython llvm llvm_jit) # TODO: Add C backend after fixing issue #2708
770770
RUN(NAME vec_01 LABELS cpython llvm llvm_jit c NOFAST)
771771
RUN(NAME test_str_comparison LABELS cpython llvm llvm_jit c wasm)
772772
RUN(NAME test_bit_length LABELS cpython llvm llvm_jit c)

integration_tests/test_logical_assignment.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22

33

44
def test_logical_assignment():
5-
# Can be uncommented after fixing the segfault
6-
# _LPYTHON: str = "LPython"
7-
# s_var: str = "" or _LPYTHON
8-
# assert s_var == "LPython"
9-
# print(s_var)
5+
_LPYTHON: str = "LPython"
6+
s_var: str = "" or _LPYTHON
7+
assert s_var == "LPython"
8+
print(s_var)
109

1110
_MAX_VAL: i32 = 100
1211
i_var: i32 = 0 and 100

integration_tests/test_logical_compare.py

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -102,28 +102,27 @@ def test_logical_compare_variable():
102102
print(f_a - 3.0 and f_a + 3.0 or f_b - 3.0 and f_b + 3.0)
103103
assert (f_a - 3.0 and f_a + 3.0 or f_b - 3.0 and f_b + 3.0) == 4.67
104104

105-
# Can be uncommented after fixing the segfault
106105
# Strings
107-
# s_a: str = "a"
108-
# s_b: str = "b"
106+
s_a: str = "a"
107+
s_b: str = "b"
109108

110-
# print(s_a or s_b)
111-
# assert (s_a or s_b) == s_a
109+
print(s_a or s_b)
110+
assert (s_a or s_b) == s_a
112111

113-
# print(s_a and s_b)
114-
# assert (s_a and s_b) == s_b
112+
print(s_a and s_b)
113+
assert (s_a and s_b) == s_b
115114

116-
# print(s_a + s_b or s_b + s_a)
117-
# assert (s_a + s_b or s_b + s_a) == "ab"
115+
print(s_a + s_b or s_b + s_a)
116+
assert (s_a + s_b or s_b + s_a) == "ab"
118117

119-
# print(s_a[0] or s_b[-1])
120-
# assert (s_a[0] or s_b[-1]) == "a"
118+
print(s_a[0] or s_b[-1])
119+
assert (s_a[0] or s_b[-1]) == "a"
121120

122-
# print(s_a[0] and s_b[-1])
123-
# assert (s_a[0] and s_b[-1]) == "b"
121+
print(s_a[0] and s_b[-1])
122+
assert (s_a[0] and s_b[-1]) == "b"
124123

125-
# print(s_a + s_b or s_b + s_a + s_a[0] and s_b[-1])
126-
# assert (s_a + s_b or s_b + s_a + s_a[0] and s_b[-1]) == "ab"
124+
print(s_a + s_b or s_b + s_a + s_a[0] and s_b[-1])
125+
assert (s_a + s_b or s_b + s_a + s_a[0] and s_b[-1]) == "ab"
127126

128127

129128
test_logical_compare_literal()

src/libasr/codegen/asr_to_llvm.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5897,7 +5897,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
58975897
}
58985898
cond = builder->CreateFCmpUEQ(left_val, zero);
58995899
} else if (ASRUtils::is_character(*x.m_type)) {
5900-
zero = llvm::Constant::getNullValue(character_type);
5900+
zero = builder->CreateGlobalStringPtr("");
59015901
cond = lfortran_str_cmp(left_val, zero, "_lpython_str_compare_eq");
59025902
} else if (ASRUtils::is_logical(*x.m_type)) {
59035903
zero = llvm::ConstantInt::get(context,

0 commit comments

Comments
 (0)