Index: generic/nsf.c =================================================================== diff -u -ree150b909ae4c3f60ef65a0fbe25a17fc3385836 -r4f17631ecd74cd12f18168931a93b46908cec01b --- generic/nsf.c (.../nsf.c) (revision ee150b909ae4c3f60ef65a0fbe25a17fc3385836) +++ generic/nsf.c (.../nsf.c) (revision 4f17631ecd74cd12f18168931a93b46908cec01b) @@ -19650,7 +19650,7 @@ AssertionAppendPrePost(interp, dsPtr, procs); } #endif - Tcl_EvalEx(interp, Tcl_DStringValue(dsPtr), Tcl_DStringLength(dsPtr), 0); + result = Tcl_EvalEx(interp, Tcl_DStringValue(dsPtr), Tcl_DStringLength(dsPtr), 0); DSTRING_FREE(dsPtr); } else { @@ -19684,9 +19684,25 @@ AssertionAppendPrePost(interp, dsPtr, procs); } #endif - Tcl_EvalEx(interp, Tcl_DStringValue(dsPtr), Tcl_DStringLength(dsPtr), 0); + result = Tcl_EvalEx(interp, Tcl_DStringValue(dsPtr), Tcl_DStringLength(dsPtr), 0); DSTRING_FREE(dsPtr); } + if (result == TCL_OK) { + NsfParamDefs *paramDefs; + paramDefs = ParamDefsGet(cmd); + + if (paramDefs && paramDefs->returns) { + Tcl_DString ds2, *dsPtr2 = &ds2; + DSTRING_INIT(dsPtr2); + Tcl_DStringAppendElement(dsPtr2, "::nsf::method::property"); + Tcl_DStringAppendElement(dsPtr2, cl ? NSCutNsfClasses(toNsPtr->fullName) : toNsPtr->fullName); + Tcl_DStringAppendElement(dsPtr2, ObjStr(Tcl_GetObjResult(interp))); + Tcl_DStringAppendElement(dsPtr2, "returns"); + Tcl_DStringAppendElement(dsPtr2, ObjStr(paramDefs->returns)); + Tcl_EvalEx(interp, Tcl_DStringValue(dsPtr2), Tcl_DStringLength(dsPtr2), 0); + DSTRING_FREE(dsPtr2); + } + } DECR_REF_COUNT(arglistObj); } else { /* Tcl Proc */