summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--generic/tclCompCmdsSZ.c3
-rw-r--r--tests/error.test7
2 files changed, 10 insertions, 0 deletions
diff --git a/generic/tclCompCmdsSZ.c b/generic/tclCompCmdsSZ.c
index 8828b59..4c325c2 100644
--- a/generic/tclCompCmdsSZ.c
+++ b/generic/tclCompCmdsSZ.c
@@ -2931,6 +2931,9 @@ TclCompileTryCmd(
goto failedToCompile;
}
finallyToken = TokenAfter(tokenPtr);
+ if (finallyToken->type != TCL_TOKEN_SIMPLE_WORD) {
+ goto failedToCompile;
+ }
} else {
goto failedToCompile;
}
diff --git a/tests/error.test b/tests/error.test
index a111c80..d5ce528 100644
--- a/tests/error.test
+++ b/tests/error.test
@@ -351,6 +351,13 @@ test error-9.4 {try (ok, non-empty result) with on handler} {
test error-9.5 {try (ok, non-empty result) with on ok handler} {
try { list a b c } on ok {} { list d e f }
} {d e f}
+test error-9.6 {try (compilation of simple finaly token only, bug [27520c9b17])} -body {
+ set b {}; set l {}
+ try {lappend l error} finally [lappend l set b]
+ list $l $b
+} -cleanup {
+ unset -nocomplain b l
+} -result {{set b error} {}}
# simple try tests - "on" handler matching