Posted to tcl by mjanssen at Fri Nov 21 18:37:25 GMT 2008view pretty

proc test_args {procname args variadic_description vars} {
    # observe this proc will fail to work if #288 passes
    foreach var $vars {
        upvar $var $var
   }
  if {[llength $args] < [llength $vars]} {
     return -code error -level 2 "wrong #args: should be \"$procname ?$variadic_description? $vars"
  } else {
     return [lassign $args {*}$vars]
}
} 

proc test {args} {
 set args [test_args test $args "options" {x y}]
 puts x:$x
 puts y:$y
 puts args:$args
}

(mjanssen) 15 % test
wrong #args: should be "test ?options? x y
(mjanssen) 16 % test 1
wrong #args: should be "test ?options? x y
(mjanssen) 17 % test 1 2
x:1
y:2
args:
(mjanssen) 18 % test 1 2 3 4
x:1
y:2
args:3 4