From: SourceForge.net <no...@so...> - 2013-04-09 18:59:07
|
Bugs item #3610393, was opened at 2013-04-09 10:12 Message generated for change (Comment added) made by dgp You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=3610393&group_id=10894 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: 35. TclOO Package Group: current: 8.6.0 Status: Open Resolution: None >Priority: 5 Private: No Submitted By: Don Porter (dgp) Assigned to: Donal K. Fellows (dkf) Summary: forwards clash with execution traces Initial Comment: oo::object create foo oo::objdefine foo { method target {} {puts Hit!} forward bar my target } proc harness {} { foo target foo bar } proc handle {cmd args} { puts "Command [lindex $cmd 0] resolves to:" puts "\t'[uplevel 1 [list ::namespace which -command [lindex $cmd 0]]]'" puts "\t\tResolved at level [uplevel 1 {info level}]" } trace add execution harness enterstep handle harness Output: Command foo resolves to: '::foo' Resolved at level 1 Command puts resolves to: '::puts' Resolved at level 2 Hit! Command foo resolves to: '::foo' Resolved at level 1 Command my resolves to: '' Resolved at level 1 Command puts resolves to: '::puts' Resolved at level 2 Hit! The problem is that [my] is an execution-trace-able command, but the context in which it is executed does not match the expectations of execution trace handlers. The CallFrame establishing the namespace context for command resolution is missing. ---------------------------------------------------------------------- >Comment By: Don Porter (dgp) Date: 2013-04-09 11:59 Message: Potential defects in the TclNREvalObjv interface is exactly the issue I'm investigating. ---------------------------------------------------------------------- Comment By: Donal K. Fellows (dkf) Date: 2013-04-09 11:50 Message: The bug is in the implementation of the specific execution trace; it is assuming that it can resolve the command simply. This is not necessarily true of any command that is invoked via TclNREvalObjv, as that interface allows the supply of the resolved command. Pushing an extra frame just to make your traces happy is very expensive for everything else (and likely to run into all sorts of problems with the extra frame to pass over in [uplevel]/[upvar]). Very tempted to close as a Wont Fix. It's certainly not a high priority to tinker with. ---------------------------------------------------------------------- Comment By: Don Porter (dgp) Date: 2013-04-09 10:40 Message: Alternative approach might be to declare that forwards are special in some way, and ought to be invisible to execution tracing, and that's the real bug to fix. Would want to check how ensemble and alias redirection behave on that matter. ---------------------------------------------------------------------- Comment By: Don Porter (dgp) Date: 2013-04-09 10:38 Message: The simple-minded fix -- put in the missing push/pop of a stack frame -- makes the oo part of the test suite *very* unhappy. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=3610393&group_id=10894 |