fish-shell/tests/checks/for.fish
Fabian Boehm bf9e5583ba Push and pop for-block every run through the loop
We do the same in while loops. This clears the local variables every time.

Fixes #10525
2024-05-25 13:20:05 +02:00

55 lines
1,013 B
Fish

# RUN: %fish %s
# A for-loop-variable is a local variable in the enclosing scope.
set -g i global
# implicit set -l i $i
for i in local
end
set -ql i && echo $i
# CHECK: local
# The loop variable is initialized with any previous value.
set -g j global
for j in
end
set -ql j && echo $j
# CHECK: global
# Loop variables exist only locally in the enclosing local scope.
# They do not modify other local/global/universal variables.
set -g k global
begin
for k in local1
echo $k
# CHECK: local1
for k in local2
end
echo $k
# CHECK: local2
end
echo $k
# CHECK: local1
end
echo $k
# CHECK: global
function foo --on-variable foo
echo foo set
end
for foo in 1 2 3
true
end
# CHECK: foo set
# CHECK: foo set
# CHECK: foo set
for x in 1 2 3
test $x -eq 2 && set -l foo bar
echo foo value is $foo
end
# We keep the old value from outside the loop
# CHECK: foo value is 3
# CHECK: foo set
# CHECK: foo value is bar
# CHECK: foo value is 3