aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2019-12-13 11:22:26 +1000
committerSteve Bennett <steveb@workware.net.au>2019-12-13 11:23:33 +1000
commit1f0f424fe611611251694502655b9330fc6c9e7d (patch)
tree5898969357e47c4cb7e9c72cb7bc395dd1da1208
parentdecb1fb49f6578a6fc47348fae618482d5d23bb4 (diff)
downloadjimtcl-1f0f424fe611611251694502655b9330fc6c9e7d.zip
jimtcl-1f0f424fe611611251694502655b9330fc6c9e7d.tar.gz
jimtcl-1f0f424fe611611251694502655b9330fc6c9e7d.tar.bz2
return: fix -level 0 -code xxx
Should return the given return code, not JIM_RETURN (2) Reported-by: dbohdan <dbohdan@dbohdan.com> Signed-off-by: Steve Bennett <steveb@workware.net.au>
-rw-r--r--jim.c2
-rw-r--r--tests/return.test11
2 files changed, 10 insertions, 3 deletions
diff --git a/jim.c b/jim.c
index 9ddf4e5..8bb5a20 100644
--- a/jim.c
+++ b/jim.c
@@ -12981,7 +12981,7 @@ static int Jim_ReturnCoreCommand(Jim_Interp *interp, int argc, Jim_Obj *const *a
if (i == argc - 1) {
Jim_SetResult(interp, argv[i]);
}
- return JIM_RETURN;
+ return level == 0 ? returnCode : JIM_RETURN;
}
/* [tailcall] */
diff --git a/tests/return.test b/tests/return.test
index 94e38a3..9ef6d79 100644
--- a/tests/return.test
+++ b/tests/return.test
@@ -1,5 +1,7 @@
source [file dirname [info script]]/testing.tcl
+set testpath [file dirname [info script]]
+
# return -code
test return-1.1 {return -code} {
@@ -8,11 +10,11 @@ test return-1.1 {return -code} {
} {2 result}
test return-1.2 {source file with break} {
- list [catch {source break.tcl} msg] $msg
+ list [catch {source $testpath/break.tcl} msg] $msg
} {3 {}}
test return-1.3 {source file with break} {
- list [catch {source return-break.tcl} msg] $msg
+ list [catch {source $testpath/return-break.tcl} msg] $msg
} {3 result}
proc a {level code msg} {
@@ -47,4 +49,9 @@ test return-2.6 {return -level 2} {
list [catch {b 2 20 text} msg] $msg
} {20 text}
+test return-2.7 {return -level 0 -code break} {
+ list [catch {return -level 0 -code break text} msg] $msg
+} {3 text}
+
+
testreport