Skip to content

Commit 8f557cb

Browse files
Fix: prevent assignment to literal (semantic error)
1 parent a3b62cb commit 8f557cb

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

src/lpython/semantics/python_ast_to_asr.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5654,6 +5654,11 @@ class BodyVisitor : public CommonVisitor<BodyVisitor> {
56545654
assign_value = ASRUtils::EXPR(tmp);
56555655
}
56565656
for (size_t i=0; i<x.n_targets; i++) {
5657+
if (AST::is_a<AST::Constant_t>(*x.m_targets[i]) ||
5658+
AST::is_a<AST::Set_t>(*x.m_targets[i]) ||
5659+
AST::is_a<AST::Dict_t>(*x.m_targets[i])) {
5660+
throw SemanticError("SyntaxError: cannot assign to literal", x.m_targets[i]->base.loc);
5661+
}
56575662
tmp_value = assign_value;
56585663
check_is_assign_to_input_param(x.m_targets[i]);
56595664
if (AST::is_a<AST::Subscript_t>(*x.m_targets[i])) {

0 commit comments

Comments
 (0)