Index: tests/methods.test =================================================================== diff -u -rb97fe27792607e6e3d6b89d3e012760e641a90df -r56bee72be0878f8f9e7ccab05058ec15a89dbbbe --- tests/methods.test (.../methods.test) (revision b97fe27792607e6e3d6b89d3e012760e641a90df) +++ tests/methods.test (.../methods.test) (revision 56bee72be0878f8f9e7ccab05058ec15a89dbbbe) @@ -1905,7 +1905,54 @@ ? {uplevel #0 {objekt foo}} "#0" } +nx::test case upvar-method-signature { + Object create objekt + objekt public object method foo {} { + :upvar #1; + } + + ? {uplevel #0 {objekt foo}} \ + {wrong # args: should be "::objekt upvar ?level? otherVar localVar ?otherVar localVar ...?"} + + objekt public object method foo {} { + :upvar 1; + } + + ? {uplevel #0 {objekt foo}} \ + {wrong # args: should be "::objekt upvar ?level? otherVar localVar ?otherVar localVar ...?"} + + objekt public object method foo {} { + :upvar; + } + + ? {uplevel #0 {objekt foo}} \ + {wrong # args: should be "::objekt upvar ?level? otherVar localVar ?otherVar localVar ...?"} + + objekt public object method foo {} { + :upvar x z; + set z 5 + } + + ? {uplevel #0 {objekt foo; set x}} 5 + + objekt public object method foo {} { + :upvar #5 x z; + } + + ? {uplevel #0 {objekt foo}} \ + {bad level "#5"} + + objekt public object method foo {} { + :upvar #5 x z y; + set x 1 + } + + ? {uplevel #0 {apply {{} {objekt foo; info exists "#5"}}}} 1 +} + + + # Local variables: # mode: tcl # tcl-indent-level: 2