Index: generic/xotcl.c =================================================================== diff -u -r62913a6c49e78801642a5d974c30ec1100831c2f -rb187bc23ce51a3c8a3f99010d1088dd3d3330fff --- generic/xotcl.c (.../xotcl.c) (revision 62913a6c49e78801642a5d974c30ec1100831c2f) +++ generic/xotcl.c (.../xotcl.c) (revision b187bc23ce51a3c8a3f99010d1088dd3d3330fff) @@ -10155,7 +10155,22 @@ } } - if (((Command *)cmd)->objProc == XOTclForwardMethod) { + if (((Command *)cmd)->objProc == XOTclSetterMethod) { + SetterCmdClientData *cd = (SetterCmdClientData *)Tcl_Command_objClientData(cmd); + if (cd->paramsPtr) { + Tcl_Obj *list; + XOTclParamDefs paramDefs; + paramDefs.paramsPtr = cd->paramsPtr; + paramDefs.nrParams = 1; + paramDefs.slotObj = NULL; + list = withVarnames ? ParamDefsList(interp, ¶mDefs) : ParamDefsFormat(interp, ¶mDefs); + Tcl_SetObjResult(interp, list); + return TCL_OK; + } else { + Tcl_SetObjResult(interp, Tcl_NewStringObj(methodName, -1)); + return TCL_OK; + } + } else if (((Command *)cmd)->objProc == XOTclForwardMethod) { return XOTclVarErrMsg(interp, "info params: could not obtain parameter definition for forwarder '", methodName, "'", (char *) NULL); } else { @@ -10358,14 +10373,19 @@ case InfomethodsubcmdTypeIdx: Tcl_SetObjResult(interp, XOTclGlobalObjects[XOTE_SETTER]); break; - case InfomethodsubcmdDefinitionIdx: + case InfomethodsubcmdDefinitionIdx: { + SetterCmdClientData *cd = (SetterCmdClientData *)Tcl_Command_objClientData(cmd); + resultObj = Tcl_NewListObj(0, NULL); /* todo: don't hard-code registering command name "setter" / XOTE_SETTER */ - AppendMethodRegistration(interp, resultObj, XOTclGlobalStrings[XOTE_SETTER], - object, methodName, cmd, 0, outputPerObject); + + AppendMethodRegistration(interp, resultObj, XOTclGlobalStrings[XOTE_SETTER], object, + cd->paramsPtr ? ObjStr(cd->paramsPtr->paramObj) : methodName, + cmd, 0, outputPerObject); Tcl_SetObjResult(interp, resultObj); break; } + } } else { /* must be an alias */