Index: generic/nsf.c =================================================================== diff -u -re530487c1945b471b745838c3168e1b3788d48c5 -ree150b909ae4c3f60ef65a0fbe25a17fc3385836 --- generic/nsf.c (.../nsf.c) (revision e530487c1945b471b745838c3168e1b3788d48c5) +++ generic/nsf.c (.../nsf.c) (revision ee150b909ae4c3f60ef65a0fbe25a17fc3385836) @@ -16958,6 +16958,18 @@ } } +static void +AppendReturnsClause(Tcl_Interp *interp, Tcl_Obj *listObj, Tcl_Command cmd) { + NsfParamDefs *paramDefs; + + paramDefs = ParamDefsGet(cmd); + if (paramDefs && paramDefs->returns) { + /* TODO: avoid hard-coding the script-level/NX-specific keyword "returns" */ + Tcl_ListObjAppendElement(interp, listObj, Tcl_NewStringObj("-returns", -1)); + Tcl_ListObjAppendElement(interp, listObj, paramDefs->returns); + } +} + static int ListMethod(Tcl_Interp *interp, NsfObject *regObject, @@ -17101,6 +17113,9 @@ regObject, methodName, cmd, 0, outputPerObject, 1); ListCmdParams(interp, cmd, methodName, NSF_PARAMS_PARAMETER); Tcl_ListObjAppendElement(interp, resultObj, Tcl_GetObjResult(interp)); + + AppendReturnsClause(interp, resultObj, cmd); + ListProcBody(interp, GetTclProcFromCommand(cmd), methodName); Tcl_ListObjAppendElement(interp, resultObj, Tcl_GetObjResult(interp)); @@ -17141,6 +17156,8 @@ /* todo: don't hard-code registering command name "forward" / NSF_FORWARD*/ AppendMethodRegistration(interp, resultObj, NsfGlobalStrings[NSF_FORWARD], regObject, methodName, cmd, 0, outputPerObject, 1); + AppendReturnsClause(interp, resultObj, cmd); + AppendForwardDefinition(interp, resultObj, clientData); Tcl_SetObjResult(interp, resultObj); break; @@ -17241,13 +17258,15 @@ { int nrElements; Tcl_Obj **listElements; + resultObj = Tcl_NewListObj(0, NULL); Tcl_ListObjGetElements(interp, entryObj, &nrElements, &listElements); /* todo: don't hard-code registering command name "alias" / NSF_ALIAS */ AppendMethodRegistration(interp, resultObj, NsfGlobalStrings[NSF_ALIAS], regObject, methodName, cmd, procPtr == NsfObjscopedMethod, outputPerObject, 1); + AppendReturnsClause(interp, resultObj, cmd); Tcl_ListObjAppendElement(interp, resultObj, listElements[nrElements-1]); Tcl_SetObjResult(interp, resultObj); break;