Index: generic/xotcl.c =================================================================== diff -u -rc09536ecf46b5a272a87a42a7deb59b852df5ec8 -r1a2ed9fd48d2c4326e27378a9a8accae1c008bad --- generic/xotcl.c (.../xotcl.c) (revision c09536ecf46b5a272a87a42a7deb59b852df5ec8) +++ generic/xotcl.c (.../xotcl.c) (revision 1a2ed9fd48d2c4326e27378a9a8accae1c008bad) @@ -9667,7 +9667,33 @@ Tcl_Command importedCmd = GetOriginalCommand(cmd); return ListCmdParams(interp, importedCmd, methodName, 0); } + case InfomethodsubcmdPreIdx: + { + XOTclProcAssertion *procs; + if (withPer_object) { + procs = object->opt ? AssertionFindProcs(object->opt->assertions, methodName) : NULL; + } else { + XOTclClass *class = (XOTclClass *)object; + procs = class->opt ? AssertionFindProcs(class->opt->assertions, methodName) : NULL; + } + if (procs) Tcl_SetObjResult(interp, AssertionList(interp, procs->pre)); + return TCL_OK; + } + case InfomethodsubcmdPostIdx: + { + XOTclProcAssertion *procs; + if (withPer_object) { + procs = object->opt ? AssertionFindProcs(object->opt->assertions, methodName) : NULL; + } else { + XOTclClass *class = (XOTclClass *)object; + procs = class->opt ? AssertionFindProcs(class->opt->assertions, methodName) : NULL; + } + if (procs) Tcl_SetObjResult(interp, AssertionList(interp, procs->post)); + return TCL_OK; + } + } + /* * Subcommands different per type of method. The Converter in * InfoMethods defines the types: @@ -12679,22 +12705,6 @@ return TCL_OK; } -static int XOTclObjInfoPostMethod(Tcl_Interp *interp, XOTclObject *object, char *methodName) { - if (object->opt) { - XOTclProcAssertion *procs = AssertionFindProcs(object->opt->assertions, methodName); - if (procs) Tcl_SetObjResult(interp, AssertionList(interp, procs->post)); - } - return TCL_OK; -} - -static int XOTclObjInfoPreMethod(Tcl_Interp *interp, XOTclObject *object, char *methodName) { - if (object->opt) { - XOTclProcAssertion *procs = AssertionFindProcs(object->opt->assertions, methodName); - if (procs) Tcl_SetObjResult(interp, AssertionList(interp, procs->pre)); - } - return TCL_OK; -} - static int XOTclObjInfoPrecedenceMethod(Tcl_Interp *interp, XOTclObject *object, int withIntrinsicOnly, char *pattern) { XOTclClasses *precedenceList = NULL, *pl; @@ -12833,7 +12843,7 @@ return ListForward(interp, Tcl_Namespace_cmdTable(class->nsPtr), pattern, withDefinition); } -static int XOTclClassInfoInstinvarMethod(Tcl_Interp *interp, XOTclClass * class) { +static int XOTclClassInfoInvarMethod(Tcl_Interp *interp, XOTclClass * class) { XOTclClassOpt *opt = class->opt; if (opt && opt->assertions) { @@ -12896,22 +12906,6 @@ return TCL_OK; } -static int XOTclClassInfoInstpostMethod(Tcl_Interp *interp, XOTclClass * class, char * methodName) { - if (class->opt) { - XOTclProcAssertion *procs = AssertionFindProcs(class->opt->assertions, methodName); - if (procs) Tcl_SetObjResult(interp, AssertionList(interp, procs->post)); - } - return TCL_OK; -} - -static int XOTclClassInfoInstpreMethod(Tcl_Interp *interp, XOTclClass *class, char *methodName) { - if (class->opt) { - XOTclProcAssertion *procs = AssertionFindProcs(class->opt->assertions, methodName); - if (procs) Tcl_SetObjResult(interp, AssertionList(interp, procs->pre)); - } - return TCL_OK; -} - static int XOTclClassInfoMixinofMethod(Tcl_Interp *interp, XOTclClass * class, int withClosure, char *patternString, XOTclObject *patternObj) { XOTclClassOpt *opt = class->opt;