mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
cgen: fix error for cross assign of the reserved name variable (#13884)
This commit is contained in:
parent
a87cd9663e
commit
db3bbb58cf
@ -584,10 +584,10 @@ fn (mut g Gen) gen_cross_var_assign(node &ast.AssignStmt) {
|
||||
left_sym := g.table.sym(left_typ)
|
||||
if left_sym.kind == .function {
|
||||
g.write_fn_ptr_decl(left_sym.info as ast.FnType, '_var_$left.pos.pos')
|
||||
g.writeln(' = $left.name;')
|
||||
g.writeln(' = ${c_name(left.name)};')
|
||||
} else {
|
||||
styp := g.typ(left_typ)
|
||||
g.writeln('$styp _var_$left.pos.pos = $left.name;')
|
||||
g.writeln('$styp _var_$left.pos.pos = ${c_name(left.name)};')
|
||||
}
|
||||
}
|
||||
ast.IndexExpr {
|
||||
|
@ -168,3 +168,24 @@ fn test_cross_assign_of_big_int() {
|
||||
println(a)
|
||||
assert a == big.one_int
|
||||
}
|
||||
|
||||
fn test_cross_assign_of_reserved_name_variable() {
|
||||
mut small := 1
|
||||
mut big := 2
|
||||
mut sum := 2
|
||||
|
||||
for big < 4_000_000 {
|
||||
small, big = big, small + big
|
||||
if big % 2 == 0 {
|
||||
sum += big
|
||||
}
|
||||
}
|
||||
println(small)
|
||||
assert small == 3524578
|
||||
|
||||
println(big)
|
||||
assert big == 5702887
|
||||
|
||||
println(sum)
|
||||
assert sum == 4613732
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user