Ticket UUID: | d8589a4ec50d0423caa0ee5e0f9603223f08b4e5 | |||
Title: | Uplevel Failure in Itcl 4.0 | |||
Type: | Bug | Version: | 4.0b7 | |
Submitter: | tomkiti | Created on: | 2013-11-30 15:42:08 | |
Subsystem: | 81. Bundled Packages | Assigned To: | dgp | |
Priority: | 5 Medium | Severity: | Critical | |
Status: | Closed | Last Modified: | 2014-02-11 13:12:19 | |
Resolution: | Duplicate | Closed By: | dgp | |
Closed on: | 2014-02-11 13:12:19 | |||
Description: |
When "uplevel" is used to call a method in a different class, it reports that the only available methods are from the calling class, not the target class. In the following example, class A calls a method in class B, which uses "uplevel" to call a method in class A: if {[package vsatisfies [package require Tcl] 8.6]} { package require Itcl 4.0 } else { package require Itcl } namespace import itcl::* class A { variable b constructor {} { set b [B #auto] } public method m1 {} { $b m3 } public method m2 {} { puts m2 } } class B { public method m3 {} { uplevel m2 ;# <--------- Fails in Itcl 4.0 } } set a [A #auto] $a m1 When the above code is run in Tcl8.5.15/Itcl3.4, it correctly displays: m2 When run in Tcl8.6.1/Itcl4.0b7, it throws an error: bad option "m2": should be one of... b0 cget -option b0 configure ?-option? ?value -option value...? b0 isa className b0 m3 The list of available methods are from class B, not class A. "Uplevel" works correctly with TclOO 1.0.1. | |||
User Comments: |
dgp added on 2014-02-11 13:10:59:
This bug is still buggy. It is not a dup of the issue reported on clt. Please test claimed fixes before closing tickets. That said, the ticket belongs in an Itcl tracker, not the Tcl one, and it is there. https://sourceforge.net/p/incrtcl/bugs/250/ Track further progress on the issue there. oehhar added on 2014-02-11 07:34:00: Following info of Don Porter on this clt post: https://groups.google.com/forum/#!topic/comp.lang.tcl/kLJ8OMl1egk this bug is a dublicate of itcl bug 244: https://sourceforge.net/p/incrtcl/bugs/244/ which is fixed in this commit: http://core.tcl.tk/itcl/info/0e02e7b014 tomkiti added on 2013-12-03 18:04:18: Sorry, I'm just a user, so I was using the version that came with ActiveTcl 8.6.1 (4.0b7). I tried 4.0.0 and 4.0.1 from dede279b1e and they both did the same thing. dgp added on 2013-12-03 15:15:03: Please do not continue to use Itcl 4.0b7. At least test the released Itcl 4.0.0. Even more helpful would be to use the tip of Itcl development. http://core.tcl.tk/itcl/timeline dkf added on 2013-12-01 17:06:50: Looks like either things are resolved in the wrong context, or there is an extra “invisible” stack frame. |