a special `last` variable in for loops (experimental)
parent
d279cedd28
commit
425c9ce401
|
@ -479,3 +479,17 @@ fn test_eq() {
|
||||||
assert [5,6,7].eq([6,7]) == false
|
assert [5,6,7].eq([6,7]) == false
|
||||||
assert [`a`,`b`].eq([`a`,`b`]) == true
|
assert [`a`,`b`].eq([`a`,`b`]) == true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn test_for_last() {
|
||||||
|
numbers := [1, 2, 3, 4]
|
||||||
|
mut s := '['
|
||||||
|
for num in numbers {
|
||||||
|
s += '$num'
|
||||||
|
if !last {
|
||||||
|
s += ', '
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
s += ']'
|
||||||
|
assert s == '[1, 2, 3, 4]'
|
||||||
|
}
|
||||||
|
|
|
@ -3377,6 +3377,15 @@ fn (p mut Parser) for_st() {
|
||||||
else if is_arr {
|
else if is_arr {
|
||||||
typ = typ[6..]// all after `array_`
|
typ = typ[6..]// all after `array_`
|
||||||
p.gen_for_header(i, tmp, typ, val)
|
p.gen_for_header(i, tmp, typ, val)
|
||||||
|
p.register_var(Var {
|
||||||
|
name: 'last'
|
||||||
|
typ: 'bool'
|
||||||
|
is_mut: false
|
||||||
|
is_used: true
|
||||||
|
})
|
||||||
|
// TODO don't generate if it's not used.
|
||||||
|
// Otherwise it's a C warning + perf.
|
||||||
|
p.genln('bool last = $i == $tmp . len - 1;')
|
||||||
}
|
}
|
||||||
else if is_str {
|
else if is_str {
|
||||||
typ = 'byte'
|
typ = 'byte'
|
||||||
|
|
Loading…
Reference in New Issue