diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/tailcall.test | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/tests/tailcall.test b/tests/tailcall.test index a3cf88e..0c91488 100644 --- a/tests/tailcall.test +++ b/tests/tailcall.test @@ -9,7 +9,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: tailcall.test,v 1.1 2009/03/19 23:31:37 msofer Exp $ +# RCS: @(#) $Id: tailcall.test,v 1.2 2009/03/21 01:23:38 msofer Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -221,7 +221,7 @@ test tailcall-9 {tailcall factorial} -setup { rename fact {} } -result {1 120 3628800 1307674368000} -test tailcall-10 {tailcall and eval} -constraints {knownBug} -setup { +test tailcall-10a {tailcall and eval} -constraints {knownBug} -setup { proc a {} { eval [list tailcall lappend ::x 2] set ::x 1 @@ -230,9 +230,20 @@ test tailcall-10 {tailcall and eval} -constraints {knownBug} -setup { list [a] $::x } -cleanup { unset -nocomplain ::x -} -result {1 2} +} -result {{1 2} {1 2}} -test tailcall-11 {tailcall and uplevel} -constraints {knownBug} -setup { +test tailcall-10b {tailcall and eval} -setup { + proc a {} { + eval {tailcall lappend ::x 2} + set ::x 1 + } +} -body { + list [a] $::x +} -cleanup { + unset -nocomplain ::x +} -result {{1 2} {1 2}} + +test tailcall-11a {tailcall and uplevel} -setup { proc a {} { uplevel 1 [list tailcall set ::x 2] set ::x 1 @@ -241,7 +252,18 @@ test tailcall-11 {tailcall and uplevel} -constraints {knownBug} -setup { list [a] $::x } -cleanup { unset -nocomplain ::x -} -result {1 2} +} -match glob -result *tailcall* -returnCodes error + +test tailcall-11b {tailcall and uplevel} -setup { + proc a {} { + uplevel 1 {tailcall set ::x 2} + set ::x 1 + } +} -body { + list [a] $::x +} -cleanup { + unset -nocomplain ::x +} -match glob -result *tailcall* -returnCodes error # cleanup ::tcltest::cleanupTests |