# file : libbuild2/build/script/parser+for.test.testscript # license : MIT; see accompanying LICENSE file : form-1 : : for x: ... : { : for : { : no-var : $* <>EOE != 0 for cmd end EOI buildfile:11:1: error: for: missing variable name EOE : untyped : $* <>EOO for x: a b cmd $x end EOI cmd a cmd b EOO : null : $* <:'' for x: [null] cmd $x end EOI : empty : $* <:'' for x: cmd $x end EOI : expansion : $* <>EOO vs = a b for x: $vs cmd $x end EOI cmd a cmd b EOO : typed-values : $* <>~%EOO% for x: [dir_paths] a b cmd $x end EOI %cmd (a/|'a\\')% %cmd (b/|'b\\')% EOO : typed-elem : $* <>~%EOO% for x [dir_path]: a b cmd $x end EOI %cmd (a/|'a\\')% %cmd (b/|'b\\')% EOO : typed-elem-value : $* <>~%EOO% for x [dir_path]: [strings] a b cmd $x end EOI %cmd (a/|'a\\')% %cmd (b/|'b\\')% EOO : defined-var : $* <>EOO x = x for x: a b cmd $x end cmd $x EOI cmd a cmd b cmd b EOO } : end : { : without-end : $* <>EOE != 0 for x: a b cmd EOI buildfile:13:1: error: expected closing 'end' EOE } : elif : { : without-if : $* <>EOE != 0 for x: a b elif true cmd end end EOI buildfile:12:3: error: 'elif' without preceding 'if' EOE } : nested : { $* -l -r <>EOO for x: a b cmd1 $x # 1 if ($x == "a") # 2 cmd2 # 3 for y: x y cmd3 # 4 end else cmd4 # 5 end cmd5 # 6 end cmd6 # 7 EOI cmd1 a # 1 i1 ? true # 2 i1 cmd2 # 3 i1 cmd3 # 4 i1 i1 cmd3 # 4 i1 i2 cmd5 # 6 i1 cmd1 b # 1 i2 ? false # 2 i2 cmd4 # 5 i2 cmd5 # 6 i2 cmd6 # 7 EOO } : contained : { : eos : $* <>EOE != 0 for x: EOI buildfile:12:1: error: expected closing 'end' EOE } } : form-2 : : ... | for x : { : for : { : status : $* <>EOE != 0 echo 'a b' | for x != 0 cmd end EOI buildfile:11:20: error: for-loop exit code cannot be checked EOE : not-last : $* <>EOE != 0 echo 'a b' | for x | echo x cmd end EOI buildfile:11:20: error: for-loop must be last command in a pipe EOE : not-last-relex : $* <>EOE != 0 echo 'a b' | for x|echo x cmd end EOI buildfile:11:19: error: for-loop must be last command in a pipe EOE : expression-after : $* <>EOE != 0 echo 'a b' | for x && echo x cmd end EOI buildfile:11:20: error: command expression involving for-loop EOE : expression-after-relex : $* <>EOE != 0 echo 'a b' | for x&&echo x cmd end EOI buildfile:11:19: error: command expression involving for-loop EOE : expression-before : $* <>EOE != 0 echo 'a b' && echo x | for x cmd end EOI buildfile:11:24: error: command expression involving for-loop EOE : expression-before-relex : $* <>EOE != 0 echo 'a b' && echo x|for x cmd end EOI buildfile:11:22: error: command expression involving for-loop EOE : cleanup : $* <>EOE != 0 echo 'a b' | for x &f cmd end EOI buildfile:11:20: error: cleanup in for-loop EOE : cleanup-relex : $* <>EOE != 0 echo 'a b' | for x&f cmd end EOI buildfile:11:19: error: cleanup in for-loop EOE : stdout-redirect : $* <>EOE != 0 echo 'a b' | for x >a cmd end EOI buildfile:11:20: error: output redirect in for-loop EOE : stdout-redirect-relex : $* <>EOE != 0 echo 'a b' | for x>a cmd end EOI buildfile:11:19: error: output redirect in for-loop EOE : stdin-redirect : $* <>EOE != 0 echo 'a b' | for x >EOE != 0 echo 'a b' | for cmd end EOI buildfile:11:1: error: for: missing variable name EOE : untyped : $* <>EOO echo 'a b' | for -w x cmd $x end EOI echo 'a b' | for -w x EOO : expansion : $* <>EOO vs = a b echo $vs | for x cmd $x end EOI echo a b | for x EOO : typed-elem : $* <>EOO echo 'a b' | for -w x [dir_path] cmd $x end EOI echo 'a b' | for -w x [dir_path] EOO } : end : { : without-end : $* <>EOE != 0 echo 'a b' | for x cmd EOI buildfile:13:1: error: expected closing 'end' EOE } : elif : { : without-if : $* <>EOE != 0 echo 'a b' | for x elif true cmd end end EOI buildfile:12:3: error: 'elif' without preceding 'if' EOE } : nested : { $* -l -r <>EOO echo 'a b' | for x # 1 cmd1 $x # 2 if ($x == "a") # 3 cmd2 # 4 echo x y | for y # 5 cmd3 # 6 end else cmd4 # 7 end cmd5 # 8 end cmd6 # 9 EOI echo 'a b' | for x # 1 cmd6 # 9 EOO } } : form-3 : : for x <... : { : for : { : status : $* <>EOE != 0 for x >EOE != 0 for x >EOE != 0 for >EOE != 0 for x >EOE != 0 for >EOE != 0 echo 'a b' && for x >EOE != 0 for x >EOE != 0 for &f x >EOE != 0 for >EOE != 0 for x >a cmd end EOI buildfile:11:7: error: output redirect in for-loop EOE : stdout-redirect-before-var : $* <>EOE != 0 for >a x cmd end EOI buildfile:11:5: error: output redirect in for-loop EOE : stdout-redirect-relex : $* <>EOE != 0 for x>a cmd end EOI buildfile:11:6: error: output redirect in for-loop EOE : no-var : $* <>EOE != 0 for >EOO o = -w for "$o" x <'a b' cmd $x end for "($o)" x <'a b' cmd $x end EOI for -w x <'a b' for -w x <'a b' EOO : untyped : $* <>EOO for -w x <'a b' cmd $x end EOI for -w x <'a b' EOO : expansion : $* <>EOO vs = a b for x <$vs cmd $x end EOI for x b >EOO for -w x [dir_path] <'a b' cmd $x end EOI for -w x [dir_path] <'a b' EOO } : end : { : without-end : $* <>EOE != 0 for x <'a b' cmd EOI buildfile:13:1: error: expected closing 'end' EOE } : elif : { : without-if : $* <>EOE != 0 for x <'a b' elif true cmd end end EOI buildfile:12:3: error: 'elif' without preceding 'if' EOE } : nested : { $* -l -r <>EOO for -w x <'a b' # 1 cmd1 $x # 2 if ($x == "a") # 3 cmd2 # 4 for -w y <'x y' # 5 cmd3 # 6 end else cmd4 # 7 end cmd5 # 8 end cmd6 # 9 EOI for -w x <'a b' # 1 cmd6 # 9 EOO } : contained : { : eos : $* <>EOE != 0 for x <'a b' EOI buildfile:12:1: error: expected closing 'end' EOE } }