Standardize Call Interface to Tcl_Eval* FunctionsMiguel Sofer$Revision: 1.4 $
This TIP replaces Tcl_EvalTokens with Tcl_EvalTokensStandard, which obeys the standard result management conventions for script evaluation functions.
The standard call interface for Tcl_Eval* functions returns a Tcl completion code (TCL_OK, TCL_ERROR, TCL_RETURN, TCL_BREAK, or TCL_CONTINUE), and sets a result object in the interpreter. The single exception is the function Tcl_EvalTokens, that returns a pointer to the result object, or a NULL when an exception occurs. This effectively transforms all exceptions into errors. This TIP proposes to replace Tcl_EvalTokens with a new function Tcl_EvalTokensStandard that performs the same chores but adheres to the standard call interface.
There are two arguments for the replacement of Tcl_EvalTokens:
Present a consistent call interface to all Tcl_Eval* functions.Allow the return of non-error exceptional returns when evaluating tokens; the impossibility to do this is the cause of Bugs #455151 () and #219384 ()
The proposal is to deprecate the use of Tcl_EvalTokens and replace it with a new Tcl_EvalTokensStandard. The core should only use the new function, the old one remains only for backward compatibility with extensions.
The proposal is implemented in the patch included in [Bug: 455151]
This document has been placed in the public domain.