1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
#
# Test for placement of return expressions
#
errors = false
########################################################################
# return within foreach.
#
# This one will generate a warning, "statement not reached".
#
f() =
foreach(x => ..., 1 2 3)
return $x
i = $f
if $(equal $i, 1)
println($"f() = $i [SUCCESS]")
else
eprintln($"f() = $i [FAILURE]")
errors = true
export
########################################################################
# Another version, should not generate a warning.
#
f() =
foreach(x => ..., 1 2 3)
if $(ge $x, 2)
return $x
i = $f
if $(equal $i, 2)
println($"f() = $i [SUCCESS]")
else
eprintln($"f() = $i [FAILURE]")
errors = true
export
########################################################################
# Follow by another return.
#
f() =
foreach(x => ..., 1 2 3)
if $(ge $x, 2)
return $x
return 0
i = $f
if $(equal $i, 2)
println($"f() = $i [SUCCESS]")
else
eprintln($"f() = $i [FAILURE]")
errors = true
export
########################################################################
# Nathan's example
#
a: b
section
targs[] = 1 2 3
any-output-file(targs) =
foreach(x => ..., $(targs))
if $(ge $x, 2)
return $x
return 0
i = $(any-output-file $(targs))
if $(equal $i, 2)
println($"f() = $i [SUCCESS]")
else
eprintln($"f() = $i [FAILURE]")
errors = true
export
########################################################################
# Exit code
#
if $(errors)
exit 1
|