aboutsummaryrefslogtreecommitdiff
path: root/tests/case.test
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2010-01-27 14:22:43 +1000
committerSteve Bennett <steveb@workware.net.au>2010-10-15 11:02:47 +1000
commit8819f3aecc3496ab20237689a252ac46255b0477 (patch)
tree622205cb8a932b8dedda47e72046defd8e0c34cd /tests/case.test
parentc9324c18e63eb67b1d3f7418c345d1dd1e6d3bdb (diff)
downloadjimtcl-8819f3aecc3496ab20237689a252ac46255b0477.zip
jimtcl-8819f3aecc3496ab20237689a252ac46255b0477.tar.gz
jimtcl-8819f3aecc3496ab20237689a252ac46255b0477.tar.bz2
Enhance catch and 'info returncodes'
*: Add optional arg to catch, opts, like Tcl 8.5 to allow access to the code given by 'return -code' *: Use -- to signify end of options to catch *: 'info returncodes' can give the name of a single code *: Fix 'case' to handle 'return -code' properly
Diffstat (limited to 'tests/case.test')
-rw-r--r--tests/case.test15
1 files changed, 9 insertions, 6 deletions
diff --git a/tests/case.test b/tests/case.test
index ce6075a..a74f265 100644
--- a/tests/case.test
+++ b/tests/case.test
@@ -6,8 +6,11 @@ proc control {cond code} {
set iscond [uplevel 1 expr $cond]
#puts "$cond -> $iscond"
if {$iscond} {
- set rc [catch [list uplevel 1 $code] error]
- #puts "$code -> rc=$rc, error=$error"
+ set rc [catch [list uplevel 1 $code] error opts]
+ #puts "$code -> rc=$rc, error=$error, opts=$opts"
+ if {$rc == 2 && $opts(-code) != 0} {
+ set rc $opts(-code)
+ }
return -code $rc $error
}
}
@@ -52,19 +55,19 @@ proc do_case {var} {
return one
}
2 {
- return two
+ return -code ok two
}
3 {
- continue
+ return -code continue three
}
4 {
return 44
}
5 {
- break
+ return -code break five
}
6 {
- return six
+ return eight
}
}
return zero