Index: generic/nsf.c =================================================================== diff -u -r4d1efbac0cfc34dc7f0bfcb13749182050db26a6 -r9f51576de17e47b9495ae7ceea1340bc8d200507 --- generic/nsf.c (.../nsf.c) (revision 4d1efbac0cfc34dc7f0bfcb13749182050db26a6) +++ generic/nsf.c (.../nsf.c) (revision 9f51576de17e47b9495ae7ceea1340bc8d200507) @@ -10174,19 +10174,11 @@ INCR_REF_COUNT(paramPtr->converterArg); } else { - /* option identifies a user-defined converter, implemented as a method; - user-defined converters are not permitted under the parameter types - alias, forward, and initcmd */ - - if ((paramPtr->flags & NSF_ARG_METHOD_INVOCATION)) { - NsfPrintError(interp, "Parameter option '%s' not allowed for parameter type '%s'", - option, - paramPtr->flags & NSF_ARG_ALIAS ? "alias" : - paramPtr->flags & NSF_ARG_FORWARD ? "forward" : - "initcmd"); - return TCL_ERROR; - } - + /* + * The parameter option is still unknown. We assume that the parameter + * option identifies a user-defined argument checker, implemented as a + * method. + */ paramPtr->converterName = ParamCheckObj(option, optionLength); INCR_REF_COUNT(paramPtr->converterName); result = ParamOptionSetConverter(interp, paramPtr, ObjStr(paramPtr->converterName), ConvertViaCmd);