aboutsummaryrefslogtreecommitdiff
path: root/stdlib.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib.tcl')
-rw-r--r--stdlib.tcl25
1 files changed, 25 insertions, 0 deletions
diff --git a/stdlib.tcl b/stdlib.tcl
index b4a9a69..3f3a6e5 100644
--- a/stdlib.tcl
+++ b/stdlib.tcl
@@ -38,6 +38,14 @@ proc function {value} {
return $value
}
+# Tcl 8.5 lassign
+proc lassign {list args} {
+ # in case the list is empty...
+ lappend list {}
+ uplevel 1 [list foreach $args $list break]
+ lrange $list [llength $args] end-1
+}
+
# Returns a list of proc filename line ...
# with 3 entries for each stack frame (proc),
# (deepest level first)
@@ -71,3 +79,20 @@ proc stackdump {stacktrace} {
}
return $result
}
+
+# Sort of replacement for $::errorInfo
+# Usage: errorInfo error ?stacktrace?
+proc errorInfo {msg {stacktrace ""}} {
+ if {$stacktrace eq ""} {
+ set stacktrace [info stacktrace]
+ }
+ lassign $stacktrace p f l
+ if {$f ne ""} {
+ set result "$f:$l "
+ }
+ append result "Runtime Error: $msg\n"
+ append result [stackdump $stacktrace]
+
+ # Remove the trailing newline
+ string trim $result
+}