diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2010-03-18 14:35:03 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2010-03-18 14:35:03 (GMT) |
commit | 334db97a72461fd68bc9574ff8f6fc628cd40650 (patch) | |
tree | 95118ae8af0bcf92d867700bd2cd3b8d5c29792c /tests | |
parent | 29b735fa6d45d36e552be123a3704a9a84b60d97 (diff) | |
download | tcl-334db97a72461fd68bc9574ff8f6fc628cd40650.zip tcl-334db97a72461fd68bc9574ff8f6fc628cd40650.tar.gz tcl-334db97a72461fd68bc9574ff8f6fc628cd40650.tar.bz2 |
Fix silly error in bytecode generation for [try].
Diffstat (limited to 'tests')
-rw-r--r-- | tests/error.test | 61 |
1 files changed, 55 insertions, 6 deletions
diff --git a/tests/error.test b/tests/error.test index 86e52c2..95cd4c2 100644 --- a/tests/error.test +++ b/tests/error.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution of # this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: error.test,v 1.26 2010/03/18 10:59:48 dkf Exp $ +# RCS: @(#) $Id: error.test,v 1.27 2010/03/18 14:35:04 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 @@ -803,11 +803,11 @@ test error-19.5 {multiple unrelated fallthroughs #2} { } set RES } {err} +proc addmsg msg { + variable RES + lappend RES $msg +} test error-19.6 {compiled try executes all clauses} -setup { - proc addmsg msg { - variable RES - lappend RES $msg - } set RES {} } -body { apply {{} { @@ -822,9 +822,58 @@ test error-19.6 {compiled try executes all clauses} -setup { addmsg d } ::tcl::test::error} } -cleanup { - rename addmsg {} unset RES } -result {a b c d} +test error-19.7 {compiled try executes all clauses} -setup { + set RES {} +} -body { + apply {{} { + try { + addmsg a + } on error {res opt} { + addmsg b + } on ok {} { + addmsg c + } finally { + addmsg d + } + addmsg e + } ::tcl::test::error} +} -cleanup { + unset RES +} -result {a c d e} +test error-19.8 {compiled try executes all clauses} -setup { + set RES {} +} -body { + apply {{} { + try { + addmsg a + throw bar hello + } trap bar {res opt} { + addmsg b + } + addmsg c + } ::tcl::test::error} +} -cleanup { + unset RES +} -result {a b c} +test error-19.9 {compiled try executes all clauses} -setup { + set RES {} +} -body { + apply {{} { + try { + addmsg a + } on error {res opt} { + addmsg b + } on ok {} { + addmsg c + } + addmsg d + } ::tcl::test::error} +} -cleanup { + unset RES +} -result {a c d} +rename addmsg {} # FIXME test what vars get set on fallthough ... what is the correct behavior? # It would seem appropriate to set at least those for the matching handler and |