Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions integration_tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -529,7 +529,7 @@ RUN(NAME test_types_01 LABELS cpython llvm llvm_jit c)
RUN(NAME test_types_02 LABELS cpython llvm llvm_jit c wasm)
# RUN(NAME test_str_01 LABELS cpython llvm llvm_jit c)
RUN(NAME test_str_02 LABELS cpython llvm llvm_jit) # renable c
RUN(NAME test_str_03 LABELS cpython llvm llvm_jit) # renable c # post sync
# RUN(NAME test_str_03 LABELS cpython llvm llvm_jit) # renable c # str negative indexing
RUN(NAME test_str_04 LABELS cpython llvm llvm_jit) # renable c, wasm
RUN(NAME test_str_05 LABELS cpython llvm llvm_jit) # renable c
# RUN(NAME test_str_06 LABELS cpython llvm llvm_jit c)
Expand All @@ -542,7 +542,7 @@ RUN(NAME test_list_04 LABELS cpython llvm llvm_jit NOFAST) # renable c
RUN(NAME test_list_06 LABELS cpython llvm llvm_jit c)
RUN(NAME test_list_07 LABELS cpython llvm llvm_jit c NOFAST)
RUN(NAME test_list_08 LABELS cpython llvm llvm_jit c NOFAST)
# RUN(NAME test_list_09 LABELS cpython llvm llvm_jit c NOFAST)
RUN(NAME test_list_09 LABELS cpython llvm llvm_jit NOFAST) # renable c
# RUN(NAME test_list_10 LABELS cpython llvm llvm_jit c NOFAST)
# RUN(NAME test_list_11 LABELS cpython llvm llvm_jit c)
# RUN(NAME test_list_section LABELS cpython llvm llvm_jit c NOFAST)
Expand Down
23 changes: 13 additions & 10 deletions integration_tests/test_list_09.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from lpython import i32


def test_list_concat():
x: list[i32] = []
y: list[i32] = []
Expand All @@ -10,39 +11,41 @@ def test_list_concat():
x = [1, 2, 3]
z = x + y
for i in range(1, 4):
assert z[i-1] == i
assert z[i - 1] == i

x.clear()
y = [6, 7, 8]
z = x + y
for i in range(1, 4):
assert z[i-1] == i + 5
assert z[i - 1] == i + 5

x = [1, 2, 3, 4, 5]
z = x + y
for i in range(1, 9):
assert z[i-1] == i
assert z[i - 1] == i

x.clear(); y.clear()
x.clear()
y.clear()
for i in range(9, 51):
x.append(i)
for i in range(51, 101):
y.append(i)

z = z + x + y
x[0] = 0; x[1] = 0
x[0] = 0
x[1] = 0
y.clear()
for i in range(1, 100):
assert z[i-1] == i
assert z[i - 1] == i

c: list[str]
d: list[str]
c = ['a', 'b']
d = ['c', 'd', 'e']
c = ["a", "b"]
d = ["c", "d", "e"]
c += d
assert len(c) == 5
for i in range(5):
assert ord(c[i]) - ord('a') == i
assert ord(c[i]) - ord("a") == i


test_list_concat()
2 changes: 1 addition & 1 deletion libasr
Submodule libasr updated 1187 files
7 changes: 6 additions & 1 deletion src/bin/lpython.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1844,6 +1844,7 @@ int main(int argc, char *argv[])
bool separate_compilation = false;
bool to_jit = false;
bool disable_warnings = false;
bool hide_error_banner = false;

std::string arg_fmt_file;
// int arg_fmt_indent = 4;
Expand Down Expand Up @@ -1911,7 +1912,7 @@ int main(int argc, char *argv[])
app.add_flag("--time-report", time_report, "Show compilation time report");
app.add_flag("--static", static_link, "Create a static executable");
app.add_flag("--no-warnings", disable_warnings, "Turn off all warnings");
app.add_flag("--no-error-banner", compiler_options.no_error_banner, "Turn off error banner");
app.add_flag("--no-error-banner", hide_error_banner, "Turn off error banner");
app.add_option("--backend", arg_backend, "Select a backend (llvm, cpp, x86, wasm, wasm_x86, wasm_x64)")->capture_default_str();
app.add_flag("--enable-bounds-checking", compiler_options.bounds_checking, "Turn on index bounds checking");
app.add_flag("--openmp", compiler_options.openmp, "Enable openmp");
Expand Down Expand Up @@ -1993,6 +1994,10 @@ int main(int argc, char *argv[])
compiler_options.show_warnings = false;
}

if (hide_error_banner) {
compiler_options.show_error_banner = false;
}

if (arg_version) {
std::string version = LFORTRAN_VERSION;
std::cout << "LPython version: " << version << std::endl;
Expand Down
39 changes: 20 additions & 19 deletions src/lpython/semantics/python_ast_to_asr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1084,7 +1084,7 @@ class CommonVisitor : public AST::BaseVisitor<StructType> {
ASR::symbol_t* variable_sym = ASR::down_cast<ASR::symbol_t>(variable_asr);
current_scope->add_symbol(dummy_ret_name, variable_sym);
ASR::expr_t* variable_var = ASRUtils::EXPR(ASR::make_Var_t(al, expr->base.loc, variable_sym));
return ASR::make_Assignment_t(al, expr->base.loc, variable_var, expr, nullptr, false);
return ASRUtils::make_Assignment_t_util(al, expr->base.loc, variable_var, expr, nullptr, false, false);
}

// Function to create appropriate call based on symbol type. If it is external
Expand Down Expand Up @@ -2609,8 +2609,8 @@ class CommonVisitor : public AST::BaseVisitor<StructType> {
is_runtime_expression) && !is_variable_const) {
ASR::expr_t* v_expr = ASRUtils::EXPR(ASR::make_Var_t(al, loc, v_sym));
cast_helper(v_expr, init_expr, true);
ASR::asr_t* assign = ASR::make_Assignment_t(al, loc, v_expr,
init_expr, nullptr, false);
ASR::asr_t* assign = ASRUtils::make_Assignment_t_util(al, loc, v_expr,
init_expr, nullptr, false, false);
if (current_body) {
current_body->push_back(al, ASRUtils::STMT(assign));
} else if (ASR::is_a<ASR::List_t>(*type) || is_runtime_expression) {
Expand Down Expand Up @@ -2705,7 +2705,7 @@ class CommonVisitor : public AST::BaseVisitor<StructType> {
dims.push_back(al, dim);
ASR::ttype_t* type = ASRUtils::make_Array_t_util(al, loc,
ASRUtils::expr_type(lbs[0]), dims.p, dims.size(), ASR::abiType::Source,
false, ASR::array_physical_typeType::PointerToDataArray, true);
false, ASR::array_physical_typeType::PointerArray, true);
return ASRUtils::EXPR(ASRUtils::make_ArrayConstructor_t_util(al,
loc, lbs.p, lbs.size(), type,
ASR::arraystorageType::RowMajor));
Expand Down Expand Up @@ -5706,8 +5706,8 @@ class BodyVisitor : public CommonVisitor<BodyVisitor> {
x.base.base.loc);
}
tmp = nullptr;
tmp_vec.push_back(ASR::make_Assignment_t(al, x.base.base.loc, target,
tmp_value, nullptr, false));
tmp_vec.push_back(ASRUtils::make_Assignment_t_util(al, x.base.base.loc, target,
tmp_value, nullptr, false, false));
continue;
}
if( ASRUtils::is_const(target) ) {
Expand Down Expand Up @@ -5748,8 +5748,8 @@ class BodyVisitor : public CommonVisitor<BodyVisitor> {
throw SemanticError("Only Class constructor is allowed in the object assignment for now", target->base.loc);
}
}
tmp_vec.push_back(ASR::make_Assignment_t(al, x.base.base.loc, target, tmp_value,
overloaded, false));
tmp_vec.push_back(ASRUtils::make_Assignment_t_util(al, x.base.base.loc, target, tmp_value,
overloaded, false, false));
if ( target->type == ASR::exprType::Var &&
tmp_value->type == ASR::exprType::StructConstructor ) {
AST::Call_t* call = AST::down_cast<AST::Call_t>(x.m_value);
Expand Down Expand Up @@ -6042,9 +6042,9 @@ class BodyVisitor : public CommonVisitor<BodyVisitor> {
current_scope->add_symbol(tmp_assign_name, tmp_assign_variable_sym);

// Assign the Subscript expr to temporary variable
ASR::asr_t* assign = ASR::make_Assignment_t(al, x.base.base.loc,
ASR::asr_t* assign = ASRUtils::make_Assignment_t_util(al, x.base.base.loc,
ASRUtils::EXPR(ASR::make_Var_t(al, x.base.base.loc, tmp_assign_variable_sym)),
target, nullptr, false);
target, nullptr, false, false);
if (current_body != nullptr) {
current_body->push_back(al, ASRUtils::STMT(assign));
} else {
Expand Down Expand Up @@ -6080,9 +6080,9 @@ class BodyVisitor : public CommonVisitor<BodyVisitor> {
current_scope->add_symbol(tmp_assign_name, tmp_assign_variable_sym);

// Assign the List expr to temporary variable
ASR::asr_t* assign = ASR::make_Assignment_t(al, x.base.base.loc,
ASR::asr_t* assign = ASRUtils::make_Assignment_t_util(al, x.base.base.loc,
ASRUtils::EXPR(ASR::make_Var_t(al, x.base.base.loc, tmp_assign_variable_sym)),
target, nullptr, false);
target, nullptr, false, false);
if (current_body != nullptr) {
current_body->push_back(al, ASRUtils::STMT(assign));
} else {
Expand Down Expand Up @@ -6135,7 +6135,8 @@ class BodyVisitor : public CommonVisitor<BodyVisitor> {
al, x.base.base.loc, loop_src_var,
ASRUtils::EXPR(explicit_iter_var), ASRUtils::get_contained_type(loop_src_var_ttype), nullptr);
}
auto loop_target_assignment = ASR::make_Assignment_t(al, x.base.base.loc, target, ASRUtils::EXPR(loop_src_var_element), nullptr, false);
auto loop_target_assignment = ASRUtils::make_Assignment_t_util(al, x.base.base.loc, target,
ASRUtils::EXPR(loop_src_var_element), nullptr, false, false);
body.push_back(al, ASRUtils::STMT(loop_target_assignment));

head.m_v = ASRUtils::EXPR(explicit_iter_var);
Expand Down Expand Up @@ -6260,7 +6261,7 @@ class BodyVisitor : public CommonVisitor<BodyVisitor> {

ASR::stmt_t* a_overloaded = nullptr;
ASR::expr_t *tmp2 = ASR::down_cast<ASR::expr_t>(tmp);
tmp = ASR::make_Assignment_t(al, x.base.base.loc, left, tmp2, a_overloaded, false);
tmp = ASRUtils::make_Assignment_t_util(al, x.base.base.loc, left, tmp2, a_overloaded, false, false);

}

Expand Down Expand Up @@ -7244,8 +7245,8 @@ class BodyVisitor : public CommonVisitor<BodyVisitor> {
}
cast_helper(target, value, true);
ASR::stmt_t *overloaded=nullptr;
tmp = ASR::make_Assignment_t(al, x.base.base.loc, target, value,
overloaded, false);
tmp = ASRUtils::make_Assignment_t_util(al, x.base.base.loc, target, value,
overloaded, false, false);
// if( ASR::is_a<ASR::Const_t>(*ASRUtils::symbol_type(return_var)) ) {
// ASR::Variable_t* return_variable = ASR::down_cast<ASR::Variable_t>(return_var);
// return_variable->m_symbolic_value = value;
Expand Down Expand Up @@ -7346,8 +7347,8 @@ class BodyVisitor : public CommonVisitor<BodyVisitor> {
ASR::expr_t* cptr = ASRUtils::EXPR(tmp);
ASR::asr_t* pp = ASR::make_PointerToCPtr_t(al, x.base.base.loc, pptr,
ASRUtils::expr_type(cptr), nullptr);
return ASR::make_Assignment_t(al, x.base.base.loc,
cptr, ASR::down_cast<ASR::expr_t>(pp), nullptr, false);
return ASRUtils::make_Assignment_t_util(al, x.base.base.loc,
cptr, ASR::down_cast<ASR::expr_t>(pp), nullptr, false, false);
}

void handle_string_attributes(ASR::expr_t *s_var,
Expand Down Expand Up @@ -8896,7 +8897,7 @@ we will have to use something else.
make_Integer_t, 0, 4, dim.loc);
dims.push_back(al, dim);
type = ASRUtils::make_Array_t_util(al, x.base.base.loc, type, dims.p, dims.size(),
ASR::abiType::Source, false, ASR::array_physical_typeType::PointerToDataArray, true);
ASR::abiType::Source, false, ASR::array_physical_typeType::PointerArray, true);
for( size_t i = 0; i < n_args; i++ ) {
m_args[i] = CastingUtil::perform_casting(m_args[i], ASRUtils::type_get_past_array(type),
al, x.base.base.loc);
Expand Down
2 changes: 1 addition & 1 deletion tests/reference/asr-array_01_decl-39cf894.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"outfile": null,
"outfile_hash": null,
"stdout": "asr-array_01_decl-39cf894.stdout",
"stdout_hash": "195a4d1ca41ba5c8ed64f7af675a59ef0100f236e0f63fcbb6c771aa",
"stdout_hash": "f54b7c055fdbd2c0cf1b0a7a9ab3d0a8483a6a89525474f88a4fdd80",
"stderr": null,
"stderr_hash": null,
"returncode": 0
Expand Down
17 changes: 17 additions & 0 deletions tests/reference/asr-array_01_decl-39cf894.stdout
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
)
()
.false.
.false.
)
(Assignment
(Var 229 _lpython_return_variable)
Expand All @@ -214,6 +215,7 @@
)
()
.false.
.false.
)
(Return)]
(Var 229 _lpython_return_variable)
Expand Down Expand Up @@ -313,6 +315,7 @@
)
()
.false.
.false.
)
(Assignment
(Var 230 _lpython_return_variable)
Expand All @@ -327,6 +330,7 @@
)
()
.false.
.false.
)
(Return)]
(Var 230 _lpython_return_variable)
Expand Down Expand Up @@ -428,6 +432,7 @@
)
()
.false.
.false.
)
(Assignment
(Var 226 _lpython_return_variable)
Expand All @@ -442,6 +447,7 @@
)
()
.false.
.false.
)
(Return)]
(Var 226 _lpython_return_variable)
Expand Down Expand Up @@ -538,6 +544,7 @@
(IntegerConstant 32 (Integer 4) Decimal)
()
.false.
.false.
)
(Assignment
(Var 227 _lpython_return_variable)
Expand All @@ -552,6 +559,7 @@
)
()
.false.
.false.
)
(Return)]
(Var 227 _lpython_return_variable)
Expand Down Expand Up @@ -653,6 +661,7 @@
)
()
.false.
.false.
)
(Assignment
(Var 228 _lpython_return_variable)
Expand All @@ -667,6 +676,7 @@
)
()
.false.
.false.
)
(Return)]
(Var 228 _lpython_return_variable)
Expand Down Expand Up @@ -917,6 +927,7 @@
)
()
.false.
.false.
)
(Assignment
(Var 231 ai32)
Expand Down Expand Up @@ -951,6 +962,7 @@
)
()
.false.
.false.
)
(Assignment
(Var 231 ai64)
Expand Down Expand Up @@ -985,6 +997,7 @@
)
()
.false.
.false.
)
(Assignment
(Var 231 af32)
Expand Down Expand Up @@ -1019,6 +1032,7 @@
)
()
.false.
.false.
)
(Assignment
(Var 231 af64)
Expand Down Expand Up @@ -1053,6 +1067,7 @@
)
()
.false.
.false.
)
(Assignment
(Var 231 ac32)
Expand Down Expand Up @@ -1087,6 +1102,7 @@
)
()
.false.
.false.
)
(Assignment
(Var 231 ac64)
Expand Down Expand Up @@ -1121,6 +1137,7 @@
)
()
.false.
.false.
)
(Print
(StringFormat
Expand Down
2 changes: 1 addition & 1 deletion tests/reference/asr-array_02_decl-e8f6874.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"outfile": null,
"outfile_hash": null,
"stdout": "asr-array_02_decl-e8f6874.stdout",
"stdout_hash": "4476d6d9afeb815f77c878127aeb852c2c7a9ad4e4e105e5b5762e82",
"stdout_hash": "4c1ccfa9e114dce8411d0d22a776ae686fe1f0248d0e9505117ed8dc",
"stderr": null,
"stderr_hash": null,
"returncode": 0
Expand Down
Loading
Loading