From: SourceForge.net <no...@so...> - 2007-09-08 23:08:37
|
Feature Requests item #1577492, was opened at 2006-10-15 00:02 Message generated for change (Settings changed) made by msofer You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=360894&aid=1577492&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: 17. Commands I-L Group: None Status: Open Resolution: None Priority: 8 Private: No Submitted By: miguel sofer (msofer) Assigned to: miguel sofer (msofer) Summary: reflect ensemble rewrites on error messages Initial Comment: Attached a patch that, while not touching [info level] itself, makes it aware of rewrites: the (objc,objv) fields in each CallFrame are not rewritten during ensemble calls. If the patch in [Bug 1574835] is accepted, it should be modified accordingly so that [interp alias] benefits from this too. ---------------------------------------------------------------------- Comment By: miguel sofer (msofer) Date: 2006-10-31 07:29 Message: Logged In: YES user_id=148712 This has led to breaking a relatively common idiom, used a lot in tcclib's struct an in Tkcon ([Bug 1587618 ] "important use of [info level 0] broken"). ISTM that breaking a common idiom that has no simple workaround is a relatively severe bug, and nicer error messages more like a WIBNI. Reverting the commit and reopening this FR with a new title. ---------------------------------------------------------------------- Comment By: miguel sofer (msofer) Date: 2006-10-24 20:13 Message: Logged In: YES user_id=148712 Added info-9.11-12 ---------------------------------------------------------------------- Comment By: miguel sofer (msofer) Date: 2006-10-23 21:36 Message: Logged In: YES user_id=148712 Add tests! Also specific for ensembles and aliases. ---------------------------------------------------------------------- Comment By: miguel sofer (msofer) Date: 2006-10-23 19:50 Message: Logged In: YES user_id=148712 The commit also fixed clock::format and clock::scan wrong # args messages, and their tests. ---------------------------------------------------------------------- Comment By: miguel sofer (msofer) Date: 2006-10-16 22:08 Message: Logged In: YES user_id=148712 Interesting side effect of this on toy oo systems based on ensembles (neo, eos): there is now no need to rewrite/reorder the cmd line. The name of the "object" (the calling ensemble) can be retrieved with set self [lindex [info level 0] 0] ---------------------------------------------------------------------- Comment By: miguel sofer (msofer) Date: 2006-10-15 15:54 Message: Logged In: YES user_id=148712 This has essentially the same behaviour as 1400572, which is already in HEAD. If we choose to go back to 8.4 behaviour, with [namespace inscope] having an empty [info level], that can be done easily here too: the caller of Tcl_PushCallFrame can rewrite those fields afterwards anyway - they are just being initialised differently than they were before. IOW, 1400572 breakage would be fixed in this patch by just adding 'iPtr->objc=0;' in [namespace inscope]'s code, should we choose to allow it to have an empty [info level]. ---------------------------------------------------------------------- Comment By: Don Porter (dgp) Date: 2006-10-15 15:23 Message: Logged In: YES user_id=80530 I'm pretty sure the 1400572 fix caused no Itcl test suite failures either. Still caused enough trouble with existing Itcl code that it had to go. ---------------------------------------------------------------------- Comment By: miguel sofer (msofer) Date: 2006-10-15 11:21 Message: Logged In: YES user_id=148712 Just checked: this patch has no effect on the itcl testsuite. It causes the same 4 testsuite errors and a seggie as HEAD. ---------------------------------------------------------------------- Comment By: miguel sofer (msofer) Date: 2006-10-15 09:26 Message: Logged In: YES user_id=148712 Remark that this patch does not really touch (objc, objv) any more than HEAD. Quite the contrary: it avoids touching it for ensemble calls. The fix for itcl or any other weirdo wanting to store things in there itself is to store them *after* pushing the stack frame. Note also: as the core uses TclPushStackFrame and itcl Tcl_PushCallFrame on frames it allocates itself (bwerk!), it is easy to make this patch only touch (objc, objv) on frames pushed on the stack: itcl should never see it. I think ... except if itcl wants to determine what non-itcl call frames do too? ---------------------------------------------------------------------- Comment By: Don Porter (dgp) Date: 2006-10-15 00:24 Message: Logged In: YES user_id=80530 Be careful here. As the attempt to fix 1400572 demonstrated, Itcl is sensitive in mysterious ways to what gets stored in those objc, objv fields. May even be storing things there itself? ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=360894&aid=1577492&group_id=10894 |