From: <no...@so...> - 2000-11-15 14:47:25
|
Bug #119384, was updated on 2000-Oct-25 22:12 Here is a current snapshot of the bug. Project: Tcl Category: Commands Status: Open Resolution: None Bug Group: 8.3.1 Priority: 5 Summary: inconsistent [return] at level #0 Details: OriginalBugID: 6103 Bug Version: 8.3.1 SubmitDate: '2000-08-09' LastModified: '2000-10-25' Severity: SER Status: UnAssn Submitter: techsupp OS: All FixedDate: '2000-10-25' ClosedDate: '2000-10-25' Name: Don Porter Comments: The source of the problem is in tclParse.c, in the routine Tcl_EvalTokens(): case TCL_TOKEN_COMMAND: code = Tcl_EvalEx(interp, tokenPtr->start+1, tokenPtr->size+2, 0); if (code != TCL_OK) { goto error; } This code effectively converts all non-TCL_OK return codes into a TCL_ERROR return code, which is not correct. I don't see an immediate fix, though, since Tcl_EvalTokens() returns a Tcl_Obj, not a Tcl return code. There doesn't seem to be any channel for passing back the return code to the caller. This same problem is the cause of bug report #2136, and it may be related to other bug reports linked to #2136. BTW, the status of ticket #2136 is "Assigned". Any way to find out to whom it was assigned? ReproducibleScript: $ cat demo1.tcl # FILE: demo1.tcl puts [info patchlevel] return $ cat demo2.tcl # FILE: demo1.tcl puts [info patchlevel] list [return] ObservedBehavior: $ tclsh8.0 demo1.tcl 8.0.5 $ tclsh8.0 demo2.tcl 8.0.5 $ tclsh demo1.tcl 8.3.1 $ tclsh demo2.tcl 8.3.1 while executing "list [return] " (file "demo2.tcl" line 3) DesiredBehavior: I expect the [return] command at level #0 of evaluation to behave the same whether it is invoked directly, or as part of a command substitution. Tcl 8.0.5 gets it right. Tcl 8.1.0 and every Tcl since gets it wrong, as demonstrated above using Tcl 8.3.1. For detailed info, follow this link: http://sourceforge.net/bugs/?func=detailbug&bug_id=119384&group_id=10894 |